8月份需求修改
Some checks failed
自动部署测试 / build-and-deploy (push) Has been cancelled

This commit is contained in:
dev 2025-08-26 16:58:59 +08:00
parent d57670c7d2
commit 9a33b4c5fc
29 changed files with 2472 additions and 212 deletions

View File

@ -142,6 +142,8 @@ export interface InquiryRequestForm extends BaseEntity {
* *
*/ */
effectiveEndTime?: string; effectiveEndTime?: string;
type?: string;
} }
export interface InquiryRequestQuery extends PageQuery { export interface InquiryRequestQuery extends PageQuery {
@ -204,4 +206,6 @@ export interface InquiryRequestQuery extends PageQuery {
* *
*/ */
params?: any; params?: any;
type?: any;
} }

View File

@ -62,7 +62,14 @@ export interface LogisticsOrderDetailVO {
/** /**
* KG * KG
*/ */
logisticsWeight: number; logisticsWeight: string;
totalPrice?: number;
length?: string;
width?: string;
height?: string;
totalVolume?: number;
/** /**
* - - * - -

View File

@ -149,12 +149,17 @@ export interface LogisticsQuoteForm extends BaseEntity {
*/ */
isDdp?: string; isDdp?: string;
customsDeclarationFee?: number;
backLogisticsType?: string;
/** /**
* *
*/ */
unit?: string; unit?: string;
type: string; type: string;
volumeRatio?: string;
shipmentId: string | number; shipmentId: string | number;
totalPrice: number; totalPrice: number;

View File

@ -521,6 +521,8 @@ export interface PurchaseOrderForm extends BaseEntity {
*/ */
divTime?: string; divTime?: string;
type?: string;
/** /**
* *
*/ */

View File

@ -64,6 +64,10 @@ export interface OrderOutItemVO {
ratio?: number; ratio?: number;
order?: PurchaseOrderVO; order?: PurchaseOrderVO;
forwardType?: string;
quantityForward?: number;
} }
export interface OrderOutItemForm extends BaseEntity { export interface OrderOutItemForm extends BaseEntity {

View File

@ -117,6 +117,11 @@ export interface ShipForwardForm extends BaseEntity {
*/ */
quantitySend?: number; quantitySend?: number;
/**
*
*/
quantityPlan?: number;
/** /**
* *
*/ */

View File

@ -488,6 +488,8 @@ export interface ShipmentPlanForm extends BaseEntity {
channelName?: string; channelName?: string;
linkType?: string; linkType?: string;
customsFlag?: string;
} }
export interface ShipmentPlanQuery extends PageQuery { export interface ShipmentPlanQuery extends PageQuery {

View File

@ -77,15 +77,15 @@ export const usePermissionStore = defineStore('permission', () => {
if (type && route.children) { if (type && route.children) {
route.children = filterChildren(route.children, undefined); route.children = filterChildren(route.children, undefined);
} }
if (route.path === '/demand') { // if (route.path === '/demand') {
route.children.forEach((child) => { // route.children.forEach((child) => {
if (child.path === 'purchaseOrderConfirm') { // if (child.path === 'purchaseOrderConfirm') {
if (useUserStore().roles.includes('gengdan')) { // if (useUserStore().roles.includes('gengdan')) {
child.meta.title = '创建发货'; // child.meta.title = '创建发货';
} // }
} // }
}); // });
} // }
// Layout ParentView 组件特殊处理 // Layout ParentView 组件特殊处理
if (route.component?.toString() === 'Layout') { if (route.component?.toString() === 'Layout') {
route.component = Layout; route.component = Layout;

View File

@ -74,10 +74,12 @@
<el-table v-loading="loading" :data="amazonStoreList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="amazonStoreList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="店铺名称" align="center" prop="storeName" />
<el-table-column label="用户名称" align="center" prop="nickName" />
<el-table-column label="登录名" align="center" prop="userName" />
<el-table-column label="领星ERP店铺标识ID" align="center" prop="sid" /> <el-table-column label="领星ERP店铺标识ID" align="center" prop="sid" />
<el-table-column label="所属用户ID" align="center" prop="userId" /> <el-table-column label="所属用户ID" align="center" prop="userId" />
<el-table-column label="站点ID" align="center" prop="mid" /> <el-table-column label="站点ID" align="center" prop="mid" />
<el-table-column label="店铺名称" align="center" prop="storeName" />
<el-table-column label="亚马逊店铺ID" align="center" prop="sellerId" /> <el-table-column label="亚马逊店铺ID" align="center" prop="sellerId" />
<el-table-column label="店铺账户名称" align="center" prop="accountName" /> <el-table-column label="店铺账户名称" align="center" prop="accountName" />
<el-table-column label="店铺账号ID" align="center" prop="sellerAccountId" /> <el-table-column label="店铺账号ID" align="center" prop="sellerAccountId" />

View File

@ -175,11 +175,11 @@
</el-table-column> </el-table-column>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="询价单号" align="center" prop="inquiryNo" /> <el-table-column label="询价单号" align="center" prop="inquiryNo" />
<el-table-column label="询价类型" align="center" prop="inquiryNo"> <!-- <el-table-column label="询价类型" align="center" prop="inquiryNo">-->
<template #default="scope"> <!-- <template #default="scope">-->
<dict-tag :options="request_type" :value="scope.row.type" /> <!-- <dict-tag :options="request_type" :value="scope.row.type" />-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<!-- <el-table-column label="发起人" align="center" prop="requesterName" />--> <!-- <el-table-column label="发起人" align="center" prop="requesterName" />-->
<!-- <el-table-column label="目标物流商ID列表" align="center" prop="targetProviders" />--> <!-- <el-table-column label="目标物流商ID列表" align="center" prop="targetProviders" />-->
<el-table-column label="目的地" align="center" prop="destination" /> <el-table-column label="目的地" align="center" prop="destination" />
@ -305,24 +305,34 @@
<el-form-item label="是否需要报关" prop="channelName"> <el-form-item label="是否需要报关" prop="channelName">
<el-input v-model="quoteForm.customsFlag" placeholder="请输入是否需要报关" disabled /> <el-input v-model="quoteForm.customsFlag" placeholder="请输入是否需要报关" disabled />
</el-form-item> </el-form-item>
<el-form-item v-if="quoteForm.type === 'general'" label="基础价格" prop="price" required> <el-form-item label="报价类型" prop="type">
<el-select v-model="quoteForm.type" placeholder="报价类型" @change="typeChange">
<el-option v-for="dict in biz_quote_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="体积比" prop="type">
<el-select v-model="quoteForm.volumeRatio" placeholder="体积比" @change="typeChange">
<el-option v-for="dict in biz_volume_ratio" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="报价价格" prop="price" required>
<div class="kgprice"> <div class="kgprice">
<el-input-number controls-position="right" v-model="quoteForm.price" :precision="2" :step="0.1" :min="0" :max="10000"> <el-input-number controls-position="right" v-model="quoteForm.price" :precision="2" :step="0.1" :min="0" :max="10000">
<template #suffix> <template #suffix>
<span>/kg</span> <span>{{ typeUnit }}</span>
</template>
</el-input-number>
</div>
</el-form-item>
<el-form-item v-else label="货件总价" prop="totalPrice" required>
<div class="kgprice">
<el-input-number controls-position="right" v-model="quoteForm.totalPrice" :precision="2" :step="0.1" :min="0" :max="10000000">
<template #suffix>
<span></span>
</template> </template>
</el-input-number> </el-input-number>
</div> </div>
</el-form-item> </el-form-item>
<!-- <el-form-item v-else label="货件总价" prop="totalPrice" required>-->
<!-- <div class="kgprice">-->
<!-- <el-input-number controls-position="right" v-model="quoteForm.totalPrice" :precision="2" :step="0.1" :min="0" :max="10000000">-->
<!-- <template #suffix>-->
<!-- <span></span>-->
<!-- </template>-->
<!-- </el-input-number>-->
<!-- </div>-->
<!-- </el-form-item>-->
<el-row> <el-row>
<el-col :span="6"></el-col> <el-col :span="6"></el-col>
<el-col :span="12"> <el-col :span="12">
@ -351,6 +361,14 @@
</template> </template>
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="报关费" prop="customsDeclarationFee">
<el-input-number controls-position="right" v-model="quoteForm.customsDeclarationFee" :precision="2" :step="0.1" :min="0" :max="1000000">
<template #suffix>
<span></span>
</template>
</el-input-number>
</el-form-item>
<el-form-item label="报价生效起止日期" prop="quoteDate"> <el-form-item label="报价生效起止日期" prop="quoteDate">
<el-date-picker <el-date-picker
v-model="quoteForm.quoteDate" v-model="quoteForm.quoteDate"
@ -379,7 +397,7 @@
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitQuoteForm"> </el-button> <el-button :loading="buttonLoading" type="primary" @click="submitQuoteForm"> </el-button>
<el-button :loading="buttonLoading" type="primary" @click="saveQuoteForm"> </el-button> <!-- <el-button :loading="buttonLoading" type="primary" @click="saveQuoteForm"> </el-button>-->
<el-button @click="quoteDialog.visible = false"> </el-button> <el-button @click="quoteDialog.visible = false"> </el-button>
</div> </div>
</template> </template>
@ -413,6 +431,9 @@ const { back_logistics_type } = toRefs<any>(proxy?.useDict('back_logistics_type'
const { sys_yes_no } = toRefs<any>(proxy?.useDict('sys_yes_no')); const { sys_yes_no } = toRefs<any>(proxy?.useDict('sys_yes_no'));
const { biz_quote_type } = toRefs<any>(proxy?.useDict('biz_quote_type'));
const { biz_volume_ratio } = toRefs<any>(proxy?.useDict('biz_volume_ratio'));
const inquiryRequestList = ref<InquiryRequestVO[]>([]); const inquiryRequestList = ref<InquiryRequestVO[]>([]);
const buttonLoading = ref(false); const buttonLoading = ref(false);
const loading = ref(true); const loading = ref(true);
@ -424,6 +445,8 @@ const total = ref(0);
const minDay = ref(0); const minDay = ref(0);
const typeUnit = ref('元/KG');
const queryFormRef = ref<ElFormInstance>(); const queryFormRef = ref<ElFormInstance>();
const inquiryRequestFormRef = ref<ElFormInstance>(); const inquiryRequestFormRef = ref<ElFormInstance>();
const logisticsQuoteFormRef = ref<ElFormInstance>({}); const logisticsQuoteFormRef = ref<ElFormInstance>({});
@ -435,7 +458,7 @@ const dialog = reactive<DialogOption>({
const quoteDialog = reactive<DialogOption>({ const quoteDialog = reactive<DialogOption>({
visible: false, visible: false,
title: '' title: '提交报价'
}); });
const validatePrice = (rule, value, callback) => { const validatePrice = (rule, value, callback) => {
@ -446,6 +469,20 @@ const validatePrice = (rule, value, callback) => {
} }
}; };
const typeChange = (value: string) => {
console.log('value', value);
if (value === 'weight') {
typeUnit.value = '元/KG';
} else if (value === 'total') {
typeUnit.value = '元';
} else if (value === 'volume') {
typeUnit.value = '元/m³';
} else {
typeUnit.value = '元/KG';
}
};
const initFormData: InquiryRequestForm = { const initFormData: InquiryRequestForm = {
id: undefined, id: undefined,
inquiryNo: undefined, inquiryNo: undefined,
@ -458,7 +495,8 @@ const initFormData: InquiryRequestForm = {
channelId: undefined, channelId: undefined,
channelName: undefined, channelName: undefined,
effectiveStartTime: undefined, effectiveStartTime: undefined,
effectiveEndTime: undefined effectiveEndTime: undefined,
type: undefined
}; };
const data = reactive<PageData<InquiryRequestForm, InquiryRequestQuery>>({ const data = reactive<PageData<InquiryRequestForm, InquiryRequestQuery>>({
@ -477,6 +515,7 @@ const data = reactive<PageData<InquiryRequestForm, InquiryRequestQuery>>({
channelName: undefined, channelName: undefined,
effectiveStartTime: undefined, effectiveStartTime: undefined,
effectiveEndTime: undefined, effectiveEndTime: undefined,
type: undefined,
params: {} params: {}
}, },
rules: { rules: {
@ -492,7 +531,9 @@ const data = reactive<PageData<InquiryRequestForm, InquiryRequestQuery>>({
effectiveEndTime: [{ required: true, message: '报价有效的结束日期不能为空', trigger: 'blur' }], effectiveEndTime: [{ required: true, message: '报价有效的结束日期不能为空', trigger: 'blur' }],
price: [{ validator: validatePrice, trigger: 'blur' }], price: [{ validator: validatePrice, trigger: 'blur' }],
totalPrice: [{ validator: validatePrice, trigger: 'blur' }], totalPrice: [{ validator: validatePrice, trigger: 'blur' }],
customsDeclarationFee: [{ validator: validatePrice, trigger: 'blur' }],
leadTime: [{ required: true, message: '时效不能为空', trigger: 'blur' }], leadTime: [{ required: true, message: '时效不能为空', trigger: 'blur' }],
type: [{ required: true, message: '报价类型不能为空', trigger: 'blur' }],
surcharge: [{ required: true, message: '附加费不能为空', trigger: 'blur' }], surcharge: [{ required: true, message: '附加费不能为空', trigger: 'blur' }],
quoteDate: [{ required: true, message: '报价生效日期不能为空', trigger: 'blur' }], quoteDate: [{ required: true, message: '报价生效日期不能为空', trigger: 'blur' }],
isSubmitted: [{ required: true, message: '提交状态不能为空', trigger: 'blur' }], isSubmitted: [{ required: true, message: '提交状态不能为空', trigger: 'blur' }],
@ -536,8 +577,10 @@ const quoteForm = ref<LogisticsQuoteForm>({
isDdp: 'Y', isDdp: 'Y',
unit: 'kg', unit: 'kg',
backLogisticsType: '快递', backLogisticsType: '快递',
type: 'general', type: 'weight',
shipmentId: undefined, shipmentId: undefined,
volumeRatio: '6000',
customsDeclarationFee: 0,
totalPrice: 0 totalPrice: 0
}); });
@ -662,6 +705,7 @@ const submitQuoteForm = async () => {
if (res.code === 200) { if (res.code === 200) {
ElMessage.success('提交成功'); ElMessage.success('提交成功');
quoteDialog.visible = false; quoteDialog.visible = false;
getList();
} }
} else { } else {
ElMessageBox.confirm('价格没有竞争力,是否需要修改价格?', '提示', { ElMessageBox.confirm('价格没有竞争力,是否需要修改价格?', '提示', {
@ -727,8 +771,10 @@ const handleSubmit = async (row?: InquiryRequestVO) => {
isDdp: 'Y', isDdp: 'Y',
unit: 'kg', unit: 'kg',
backLogisticsType: '快递', backLogisticsType: '快递',
type: 'general', type: 'weight',
shipmentId: undefined, shipmentId: undefined,
volumeRatio: '6000',
customsDeclarationFee: 0,
totalPrice: 0 totalPrice: 0
}; };
quoteForm.value.id = row.id; quoteForm.value.id = row.id;
@ -740,6 +786,8 @@ const handleSubmit = async (row?: InquiryRequestVO) => {
quoteForm.value.type = row.type; quoteForm.value.type = row.type;
quoteForm.value.shipmentId = row.shipmentId; quoteForm.value.shipmentId = row.shipmentId;
typeUnit.value = '元/KG';
quoteDialog.visible = true; quoteDialog.visible = true;
console.log(row.effectiveStartTime); console.log(row.effectiveStartTime);
// quoteForm.quoteDate[0] = row.effectiveStartTime; // quoteForm.quoteDate[0] = row.effectiveStartTime;
@ -767,6 +815,10 @@ onMounted(() => {
getList(); getList();
queryTodayQuoteStatus(); queryTodayQuoteStatus();
}); });
onActivated(() => {
getList();
// queryTodayQuoteStatus();
});
</script> </script>
<style scoped> <style scoped>
.kgprice .el-input-number { .kgprice .el-input-number {

View File

@ -56,11 +56,83 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="FBA货件编号" align="center" prop="fbaShipmentId" /> <el-table-column label="FBA货件编号" align="center" prop="fbaShipmentId" />
<el-table-column label="订单编号" align="center" prop="orderId" /> <el-table-column label="订单编号" align="center" prop="orderId" />
<el-table-column label="店铺名称" align="center" prop="storeName" />
<el-table-column label="商品详情" align="center">
<template #default="scope">
<el-popover placement="top" :width="950" trigger="hover">
<template #reference>
<el-button size="small" plain style="margin-right: 16px">查看</el-button>
</template>
<el-table :data="scope.row.shipmentItems">
<el-table-column width="200" property="productName" label="品名" />
<el-table-column width="150" property="sku" label="sku" />
<el-table-column width="150" property="asin" label="asin" />
<el-table-column width="80" property="quantityShipped" label="申报量" />
<el-table-column width="150" property="fnsku" label="fnsku" />
<el-table-column width="200" property="msku" label="msku" />
</el-table>
</el-popover>
</template>
</el-table-column>
<el-table-column label="物流商称重" align="center" prop="logisticsWeight">
<template #default="scope">
<span>{{ scope.row.logisticsWeight + ' KG' }}</span>
</template>
</el-table-column>
<el-table-column label="物流商体积" align="center" prop="logisticsWeight">
<template #default="scope">
<span>{{ scope.row.totalVolume + ' cm³' }}</span>
</template>
</el-table-column>
<el-table-column label="创建日期" align="center" prop="createTime" /> <el-table-column label="创建日期" align="center" prop="createTime" />
<el-table-column label="物流商名称" align="center" prop="logisticsProviderName" /> <el-table-column label="物流商名称" align="center" prop="logisticsProviderName" />
<el-table-column label="物流渠道" align="center" prop="channelName" /> <el-table-column label="物流渠道" align="center" prop="channelName" />
<el-table-column label="目的地仓库名称或编码" align="center" prop="destination" /> <el-table-column label="目的地仓库名称或编码" align="center" prop="destination" />
<el-table-column label="总箱子数量" align="center" prop="boxQuantity" /> <el-table-column label="总箱子数量" align="center" prop="boxQuantity" />
<el-table-column width="150" label="报价详情" align="center" prop="quote">
<template #default="scope">
<!-- <el-button @click="openAddressDialog(row.shipToAddress)"> 查看详情</el-button>-->
<el-popover placement="left" :width="800" trigger="click">
<template #reference>
<!-- <el-button style="margin-right: 16px">Click to activate</el-button>-->
<el-button plain size="small" type="success"> 点击查看详情</el-button>
</template>
<div v-if="scope.row.quote">
<el-descriptions title="基本信息" :column="2" border>
<el-descriptions-item label="报价类型">
<dict-tag :options="biz_quote_type" :value="scope.row.quote.type" />
</el-descriptions-item>
<el-descriptions-item label="渠道名称">{{ scope.row.quote.channelName }}</el-descriptions-item>
<el-descriptions-item label="目的地">{{ scope.row.quote.destination }}</el-descriptions-item>
<!-- <el-descriptions-item label="ID">{{ scope.row.quote.id }}</el-descriptions-item>-->
<el-descriptions-item label="物流公司">{{ scope.row.quote.logisticsName }}</el-descriptions-item>
<el-descriptions-item label="货运ID">{{ scope.row.quote.shipmentId }}</el-descriptions-item>
<el-descriptions-item label="体积比">{{ scope.row.quote.volumeRatio }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="时间信息" :column="2" border class="mt-4">
<el-descriptions-item label="运输时间">{{ scope.row.quote.leadTime }} </el-descriptions-item>
<el-descriptions-item label="最小运输时间">{{ scope.row.quote.minLeadTime }} </el-descriptions-item>
<el-descriptions-item label="报价日期">{{ scope.row.quote.quoteDate }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="费用信息" :column="2" border class="mt-4">
<el-descriptions-item label="报关费">{{ scope.row.quote.customsDeclarationFee + ' 元' }} </el-descriptions-item>
<el-descriptions-item label="价格">{{ scope.row.quote.price }} {{ scope.row.quote.unit }} </el-descriptions-item>
<el-descriptions-item label="附加费">{{ scope.row.quote.surcharge + ' 元' }}</el-descriptions-item>
<el-descriptions-item label="物流商称重">{{ scope.row.logisticsWeight + ' KG' }} </el-descriptions-item>
<el-descriptions-item label="物流商体积">{{ scope.row.totalVolume + ' cm³' }}</el-descriptions-item>
<el-descriptions-item label="体积重">{{ scope.row.volumeWeight + ' KG' }}</el-descriptions-item>
<el-descriptions-item label-class-name="my-total" label="结算总价">{{ scope.row.settlementPrice + ' 元' }} </el-descriptions-item>
</el-descriptions>
</div>
<div v-else>
<p>暂无报价信息</p>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="总货件数量" align="center" prop="shipmentQuantity" /> <el-table-column label="总货件数量" align="center" prop="shipmentQuantity" />
<el-table-column label="订单状态" align="center" prop="status"> <el-table-column label="订单状态" align="center" prop="status">
<template #default="scope"> <template #default="scope">
@ -175,7 +247,7 @@
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<file-custom-upload <file-custom-upload
:title-name="'上传POD单号'" :title-name="'上传IEN文件'"
v-model="fileList" v-model="fileList"
:limit="1" :limit="1"
:file-size="1" :file-size="1"
@ -215,12 +287,14 @@ import { LogisticsOrderDetailVO } from '@/api/amz/logisticsOrderDetail/types';
import { listLogisticsOrderDetail, updateList } from '@/api/amz/logisticsOrderDetail'; import { listLogisticsOrderDetail, updateList } from '@/api/amz/logisticsOrderDetail';
import 'handsontable/dist/handsontable.full.min.css'; import 'handsontable/dist/handsontable.full.min.css';
import { InfoFilled } from '@element-plus/icons-vue'; import { InfoFilled } from '@element-plus/icons-vue';
import { ElTable } from 'element-plus';
// import 'handsontable/styles/ht-theme-horizon.css'; // import 'handsontable/styles/ht-theme-horizon.css';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { biz_logistics_status } = toRefs<any>(proxy?.useDict('biz_logistics_status')); const { biz_logistics_status } = toRefs<any>(proxy?.useDict('biz_logistics_status'));
const { logic_order_status } = toRefs<any>(proxy?.useDict('logic_order_status')); const { logic_order_status } = toRefs<any>(proxy?.useDict('logic_order_status'));
const { biz_quote_type } = toRefs<any>(proxy?.useDict('biz_quote_type'));
// //
registerAllModules(); registerAllModules();
@ -330,11 +404,19 @@ const hotSettings = ref({
logisticsOrderDetailList.value[row].logisticsStatus = labelTovalueMap.value[newVal]; logisticsOrderDetailList.value[row].logisticsStatus = labelTovalueMap.value[newVal];
} }
if (prop === 'logisticsWeight' || prop === 'pricePerKg' || prop === 'otherFee') { // if (prop === 'logisticsWeight' || prop === 'pricePerKg' || prop === 'otherFee') {
console.log('计算总价'); // console.log('');
logisticsOrderDetailList.value[row].totalFee = // logisticsOrderDetailList.value[row].totalFee =
(logisticsOrderDetailList.value[row].logisticsWeight ?? 0) * (logisticsOrderDetailList.value[row].pricePerKg ?? 0) + // (parseFloat(logisticsOrderDetailList.value[row].logisticsWeight) ?? 0) * (parseFloat(logisticsOrderDetailList.value[row].pricePerKg) ?? 0) +
(logisticsOrderDetailList.value[row].otherFee ?? 0); // (parseFloat(logisticsOrderDetailList.value[row].otherFee) ?? 0) +
// (parseFloat(logisticsOrderDetailList.value[row].totalPrice) ?? 0);
// }
if (prop === 'length' || prop === 'width' || prop === 'height') {
console.log('计算体积');
logisticsOrderDetailList.value[row].totalVolume =
(parseFloat(logisticsOrderDetailList.value[row].length) ?? 0) *
(parseFloat(logisticsOrderDetailList.value[row].width) ?? 0) *
(parseFloat(logisticsOrderDetailList.value[row].height) ?? 0);
} }
}); });
console.log('logisticsOrderDetailList.value:', logisticsOrderDetailList.value); console.log('logisticsOrderDetailList.value:', logisticsOrderDetailList.value);
@ -350,12 +432,17 @@ const hotSettings = ref({
'数量', '数量',
// '', // '',
'物流追踪号', '物流追踪号',
'物流商计重', '物流商计重(KG)',
'长(CM)',
'宽(CM)',
'高(CM)',
'体积',
// '', // '',
'物流单价', // '',
// '',
// '', // '',
'其他物流费用', // '',
'费用合计', // '',
'物流状态', '物流状态',
'预计签收日期', '预计签收日期',
'实际签收日期', '实际签收日期',
@ -389,12 +476,86 @@ const hotSettings = ref({
// //
if (typeof value === 'number' && !isNaN(value)) { if (typeof value === 'number' && !isNaN(value)) {
td.textContent = value.toLocaleString() + ' kg'; // td.textContent = value.toLocaleString() + ' kg'; //
} else if (typeof value === 'string') {
td.textContent = value + ' kg';
} }
// className // className
return td; return td;
} }
}, // }, //
{
data: 'length',
className: 'htCenter',
readOnly: false,
type: 'numeric',
renderer: function (instance, td, row, col, prop, value, cellProperties) {
//
//
if (typeof value === 'number' && !isNaN(value)) {
td.textContent = value.toLocaleString() + ' cm'; //
} else if (typeof value === 'string') {
td.textContent = value + ' cm';
}
// className
return td;
}
}, //
{
data: 'width',
className: 'htCenter',
readOnly: false,
type: 'numeric',
renderer: function (instance, td, row, col, prop, value, cellProperties) {
//
//
if (typeof value === 'number' && !isNaN(value)) {
td.textContent = value.toLocaleString() + ' cm'; //
} else if (typeof value === 'string') {
td.textContent = value + ' cm';
}
// className
return td;
}
}, //
{
data: 'height',
className: 'htCenter',
readOnly: false,
type: 'numeric',
renderer: function (instance, td, row, col, prop, value, cellProperties) {
//
//
if (typeof value === 'number' && !isNaN(value)) {
td.textContent = value.toLocaleString() + ' cm'; //
} else if (typeof value === 'string') {
td.textContent = value + ' cm';
}
// className
return td;
}
}, //
{
data: 'totalVolume',
className: 'htCenter',
readOnly: true,
type: 'numeric',
renderer: function (instance, td, row, col, prop, value, cellProperties) {
//
//
if (typeof value === 'number' && !isNaN(value)) {
td.textContent = value.toLocaleString() + ' cm³'; //
} else if (typeof value === 'string') {
td.textContent = value + ' cm³';
}
// className
return td;
}
}, //
// { // {
// data: 'weightDiff', // // data: 'weightDiff', //
// className: 'htCenter', // className: 'htCenter',
@ -408,40 +569,56 @@ const hotSettings = ref({
// return td; // return td;
// } // }
// }, // },
{ // {
data: 'pricePerKg', // data: 'pricePerKg',
className: 'htCenter', // className: 'htCenter',
type: 'numeric', // type: 'numeric',
readOnly: true, // readOnly: true,
renderer: function (instance, td, row, col, prop, value, cellProperties) { // renderer: function (instance, td, row, col, prop, value, cellProperties) {
// // //
// // //
if (typeof value === 'number' && !isNaN(value)) { // if (typeof value === 'number' && !isNaN(value)) {
td.textContent = value.toLocaleString() + ' 元/kg'; // // td.textContent = value.toLocaleString() + ' /kg'; //
} // }
//
// className // // className
return td; // return td;
} // }
}, // // }, //
// {
// data: 'totalPrice',
// className: 'htCenter',
// type: 'numeric',
// readOnly: true,
// renderer: function (instance, td, row, col, prop, value, cellProperties) {
// //
// //
// if (typeof value === 'number' && !isNaN(value)) {
// td.textContent = value.toLocaleString() + ' '; //
// }
//
// // className
// return td;
// }
// }, //
// { data: 'logisticsBillingWeight', className: 'htCenter', type: 'numeric', readOnly: true }, // // { data: 'logisticsBillingWeight', className: 'htCenter', type: 'numeric', readOnly: true }, //
{ // {
data: 'otherFee', // data: 'otherFee',
className: 'htCenter', // className: 'htCenter',
type: 'numeric', // type: 'numeric',
readOnly: false, // readOnly: false,
renderer: function (instance, td, row, col, prop, value, cellProperties) { // renderer: function (instance, td, row, col, prop, value, cellProperties) {
// // //
// // //
if (typeof value === 'number' && !isNaN(value)) { // if (typeof value === 'number' && !isNaN(value)) {
td.textContent = value.toLocaleString() + ' 元'; // // td.textContent = value.toLocaleString() + ' '; //
} // }
//
// className // // className
return td; // return td;
} // }
}, // // }, //
{ data: 'totalFee', className: 'htCenter', readOnly: true }, // // { data: 'totalFee', className: 'htCenter', readOnly: true }, //
{ {
data: 'logisticsStatus', data: 'logisticsStatus',
className: 'htCenter', className: 'htCenter',
@ -671,6 +848,8 @@ const updateCheckDatas = async () => {
} else { } else {
ElMessage.error('更新失败'); ElMessage.error('更新失败');
} }
hotTableDrawer.value = false;
getList();
}; };
/** 取消按钮 */ /** 取消按钮 */
@ -801,4 +980,12 @@ const handleExportDetail = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>
<style scoped>
:deep(.my-total) {
background: var(--el-color-success-light-9) !important;
}
</style>

View File

@ -705,9 +705,13 @@ const handleExport = () => {
); );
}; };
onMounted(() => { // onMounted(() => {
console.log('组件已挂载hotInstance:', hotTable.value?.hotInstance); // console.log('hotInstance:', hotTable.value?.hotInstance);
//
// getList();
// });
onActivated(() => {
getList(); getList();
}); });
</script> </script>

View File

@ -75,13 +75,68 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="FBA货件编号" align="center" prop="fbaShipmentId" /> <el-table-column label="FBA货件编号" align="center" prop="fbaShipmentId" />
<el-table-column label="订单编号" align="center" prop="orderId" /> <el-table-column label="订单编号" align="center" prop="orderId" />
<el-table-column label="店铺名称" align="center" prop="storeName" />
<el-table-column label="商品详情" align="center">
<template #default="scope">
<el-popover placement="top" :width="950" trigger="hover">
<template #reference>
<el-button size="small" plain style="margin-right: 16px">查看</el-button>
</template>
<el-table :data="scope.row.shipmentItems">
<el-table-column width="200" property="productName" label="品名" />
<el-table-column width="150" property="sku" label="sku" />
<el-table-column width="150" property="asin" label="asin" />
<el-table-column width="80" property="quantityShipped" label="申报量" />
<el-table-column width="150" property="fnsku" label="fnsku" />
<el-table-column width="200" property="msku" label="msku" />
</el-table>
</el-popover>
</template>
</el-table-column>
<!-- <el-table-column label="物流商ID" align="center" prop="logisticsProviderId" />--> <!-- <el-table-column label="物流商ID" align="center" prop="logisticsProviderId" />-->
<!-- <el-table-column label="物流商名称" align="center" prop="logisticsProviderName" />--> <!-- <el-table-column label="物流商名称" align="center" prop="logisticsProviderName" />-->
<el-table-column label="物流渠道" align="center" prop="channelName" /> <el-table-column label="物流渠道" align="center" prop="channelName" />
<el-table-column label="目的地仓库名称或编码" align="center" prop="destination" /> <el-table-column label="目的地仓库名称或编码" align="center" prop="destination" />
<el-table-column label="总箱子数量" align="center" prop="boxQuantity" /> <el-table-column label="总箱子数量" align="center" prop="boxQuantity" />
<el-table-column label="总货件数量" align="center" prop="shipmentQuantity" /> <el-table-column label="总货件数量" align="center" prop="shipmentQuantity" />
<el-table-column label="报价单" align="center" prop="quoteOrderId" /> <!-- <el-table-column label="报价单" align="center" prop="quoteOrderId" />-->
<el-table-column width="150" label="报价详情" align="center" prop="quote">
<template #default="scope">
<!-- <el-button @click="openAddressDialog(row.shipToAddress)"> 查看详情</el-button>-->
<el-popover placement="left" :width="800" trigger="click">
<template #reference>
<!-- <el-button style="margin-right: 16px">Click to activate</el-button>-->
<el-button plain size="small" type="success"> 点击查看详情</el-button>
</template>
<div v-if="scope.row.quote">
<el-descriptions title="基本信息" :column="2" border>
<el-descriptions-item label="渠道名称">{{ scope.row.quote.channelName }}</el-descriptions-item>
<el-descriptions-item label="目的地">{{ scope.row.quote.destination }}</el-descriptions-item>
<!-- <el-descriptions-item label="ID">{{ scope.row.quote.id }}</el-descriptions-item>-->
<el-descriptions-item label="物流公司">{{ scope.row.quote.logisticsName }}</el-descriptions-item>
<el-descriptions-item label="货运ID">{{ scope.row.quote.shipmentId }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="时间信息" :column="2" border class="mt-4">
<el-descriptions-item label="运输时间">{{ scope.row.quote.leadTime }} </el-descriptions-item>
<el-descriptions-item label="最小运输时间">{{ scope.row.quote.minLeadTime }} </el-descriptions-item>
<el-descriptions-item label="报价日期">{{ scope.row.quote.quoteDate }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="费用信息" :column="2" border class="mt-4">
<el-descriptions-item label="报关费">{{ scope.row.quote.customsDeclarationFee }} </el-descriptions-item>
<el-descriptions-item label="价格">{{ scope.row.quote.price }} {{ scope.row.quote.unit }} </el-descriptions-item>
<el-descriptions-item label="附加费">{{ scope.row.quote.surcharge }}</el-descriptions-item>
<!-- <el-descriptions-item label="总价格">{{ scope.row.quote.totalPrice }}</el-descriptions-item>-->
</el-descriptions>
</div>
<div v-else>
<p>暂无报价信息</p>
</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="是否已经确认" align="center" prop="isSta"> <el-table-column label="是否已经确认" align="center" prop="isSta">
<template #default="scope"> <template #default="scope">
<dict-tag :options="sys_zero_one" :value="scope.row.confirm" /> <dict-tag :options="sys_zero_one" :value="scope.row.confirm" />
@ -172,6 +227,7 @@ import {
createLogisticsOrderQuotation createLogisticsOrderQuotation
} from '@/api/amz/logisticsOrderQuotation'; } from '@/api/amz/logisticsOrderQuotation';
import { LogisticsOrderQuotationVO, LogisticsOrderQuotationQuery, LogisticsOrderQuotationForm } from '@/api/amz/logisticsOrderQuotation/types'; import { LogisticsOrderQuotationVO, LogisticsOrderQuotationQuery, LogisticsOrderQuotationForm } from '@/api/amz/logisticsOrderQuotation/types';
import { ElTable } from 'element-plus';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@ -344,7 +400,9 @@ const handleExport = () => {
`logisticsOrderQuotation_${new Date().getTime()}.xlsx` `logisticsOrderQuotation_${new Date().getTime()}.xlsx`
); );
}; };
onActivated(() => {
getList();
});
onMounted(() => { onMounted(() => {
getList(); getList();
}); });

View File

@ -86,9 +86,14 @@
<el-table-column label="物流商" align="center" prop="logisticsName" /> <el-table-column label="物流商" align="center" prop="logisticsName" />
<el-table-column label="目的地" align="center" prop="destination" /> <el-table-column label="目的地" align="center" prop="destination" />
<el-table-column label="渠道名称" align="center" prop="channelName" /> <el-table-column label="渠道名称" align="center" prop="channelName" />
<el-table-column label="报价类型" align="center" prop="remark">
<template #default="scope">
<dict-tag :options="biz_quote_type" :value="scope.row.type" />
</template>
</el-table-column>
<el-table-column label="基础价格" align="center" sortable prop="price"> <el-table-column label="基础价格" align="center" sortable prop="price">
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.price + '元/kg' }}</span> <span>{{ scope.row.price + scope.row.unit }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="时效" align="center" sortable prop="leadTime"> <el-table-column label="时效" align="center" sortable prop="leadTime">
@ -101,16 +106,26 @@
<span>{{ scope.row.surcharge + '元' }}</span> <span>{{ scope.row.surcharge + '元' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报关费" align="center" prop="customsDeclarationFee">
<template #default="scope">
<span>{{ scope.row.customsDeclarationFee + '元' }}</span>
</template>
</el-table-column>
<el-table-column label="体积比" align="center" prop="customsDeclarationFee">
<template #default="scope">
<span>{{ scope.row.volumeRatio }}</span>
</template>
</el-table-column>
<el-table-column label="报价生效日期" align="center" prop="quoteDate" width="180"> <el-table-column label="报价生效日期" align="center" prop="quoteDate" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.quoteDate, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.quoteDate, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="提交状态" align="center" prop="isSubmitted"> <!-- <el-table-column label="提交状态" align="center" prop="isSubmitted">-->
<template #default="scope"> <!-- <template #default="scope">-->
<dict-tag :options="sys_yes_no" :value="scope.row.isSubmitted" /> <!-- <dict-tag :options="sys_yes_no" :value="scope.row.isSubmitted" />-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column label="报价备注" align="center" prop="remark" /> <el-table-column label="报价备注" align="center" prop="remark" />
<el-table-column label="渠道类型" align="center" prop="channelType"> <el-table-column label="渠道类型" align="center" prop="channelType">
<template #default="scope"> <template #default="scope">
@ -122,7 +137,7 @@
<dict-tag :options="sys_yes_no" :value="scope.row.isDdp" /> <dict-tag :options="sys_yes_no" :value="scope.row.isDdp" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位" align="center" prop="unit" /> <!-- <el-table-column label="单位" align="center" prop="unit" />-->
<el-table-column label="操作" align="center" v-hasRoles="['wuliu']" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" v-hasRoles="['wuliu']" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-tooltip content="修改" placement="top"> <el-tooltip content="修改" placement="top">
@ -211,6 +226,8 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { biz_channel_type } = toRefs<any>(proxy?.useDict('biz_channel_type')); const { biz_channel_type } = toRefs<any>(proxy?.useDict('biz_channel_type'));
const { biz_quote_type } = toRefs<any>(proxy?.useDict('biz_quote_type'));
const { sys_yes_no } = toRefs<any>(proxy?.useDict('sys_yes_no')); const { sys_yes_no } = toRefs<any>(proxy?.useDict('sys_yes_no'));
const logisticsQuoteList = ref<LogisticsQuoteVO[]>([]); const logisticsQuoteList = ref<LogisticsQuoteVO[]>([]);
@ -384,7 +401,11 @@ const handleExport = () => {
); );
}; };
onMounted(() => { // onMounted(() => {
// getList();
// });
onActivated(() => {
getList(); getList();
}); });
</script> </script>

View File

@ -67,7 +67,7 @@
<!-- <el-table-column label="采购计划号" align="center" prop="planSn" />--> <!-- <el-table-column label="采购计划号" align="center" prop="planSn" />-->
<!-- <el-table-column label="本地产品ID" align="center" prop="productId" />--> <!-- <el-table-column label="本地产品ID" align="center" prop="productId" />-->
<el-table-column label="品名" align="center" prop="productName" /> <el-table-column label="品名" align="center" prop="productName" />
<!-- <el-table-column label="SKU" align="center" prop="sku" width="200px" />--> <el-table-column label="SKU" align="center" prop="sku" width="200px" />
<!-- <el-table-column label="FNSKU" align="center" prop="fnsku" width="90px" />--> <!-- <el-table-column label="FNSKU" align="center" prop="fnsku" width="90px" />-->
<!-- <el-table-column label="店铺ID" align="center" prop="sid" width="70px" />--> <!-- <el-table-column label="店铺ID" align="center" prop="sid" width="70px" />-->
<!-- <el-table-column label="型号" align="center" prop="model" />--> <!-- <el-table-column label="型号" align="center" prop="model" />-->
@ -103,7 +103,7 @@
<!-- <el-table-column label="供应商ID" align="center" prop="supplierId" />--> <!-- <el-table-column label="供应商ID" align="center" prop="supplierId" />-->
<el-table-column label="订单类型" align="center" prop="sendStatus"> <el-table-column label="订单类型" align="center" prop="sendStatus">
<template #default="scope"> <template #default="scope">
<dict-tag :options="send_order_type" :value="scope.row.type" /> <dict-tag :options="pur_order_type" :value="scope.row.type" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="供应商名称" align="center" prop="supplierName" /> <el-table-column label="供应商名称" align="center" prop="supplierName" />
@ -406,7 +406,7 @@ const { vendor_order_status } = toRefs<any>(proxy?.useDict('vendor_order_status'
const { purchase_order_status } = toRefs<any>(proxy?.useDict('purchase_order_status')); const { purchase_order_status } = toRefs<any>(proxy?.useDict('purchase_order_status'));
const { send_order_type } = toRefs<any>(proxy?.useDict('send_order_type')); const { pur_order_type } = toRefs<any>(proxy?.useDict('pur_order_type'));
const purchaseOrderList = ref<PurchaseOrderVO[]>([]); const purchaseOrderList = ref<PurchaseOrderVO[]>([]);
const buttonLoading = ref(false); const buttonLoading = ref(false);
@ -763,7 +763,10 @@ watch(
{ immediate: true } // { immediate: true } //
); );
onMounted(() => { // onMounted(() => {
// getList();
// });
onActivated(() => {
getList(); getList();
}); });
</script> </script>

View File

@ -10,10 +10,13 @@
<el-form-item label="店铺名称" prop="customOrderSn"> <el-form-item label="店铺名称" prop="customOrderSn">
<el-input v-model="queryParams.storeName" placeholder="请输入店铺名称" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.storeName" placeholder="请输入店铺名称" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="订单状态" prop="orderStatus"> <!-- <el-form-item label="订单状态" prop="orderStatus">-->
<el-select multiple collapse-tags collapse-tags-tooltip v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable> <!-- <el-select multiple collapse-tags collapse-tags-tooltip v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable>-->
<el-option v-for="dict in vendor_order_status" :key="dict.value" :label="dict.label" :value="dict.value" /> <!-- <el-option v-for="dict in vendor_order_status" :key="dict.value" :label="dict.label" :value="dict.value" />-->
</el-select> <!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="供应商" prop="supplierName">
<el-input v-model="queryParams.supplierName" placeholder="请输入供应商名称" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="SKU" prop="customOrderSn"> <el-form-item label="SKU" prop="customOrderSn">
<el-input v-model="queryParams.sku" placeholder="请输入sku" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.sku" placeholder="请输入sku" clearable @keyup.enter="handleQuery" />
@ -78,10 +81,11 @@
<!-- <el-table-column label="价税合计" align="center" prop="amount" />--> <!-- <el-table-column label="价税合计" align="center" prop="amount" />-->
<!-- <el-table-column label="计划采购量" align="center" prop="quantityPlan" />--> <!-- <el-table-column label="计划采购量" align="center" prop="quantityPlan" />-->
<el-table-column label="实际采购量" align="center" prop="quantityReal" width="90px" /> <!-- <el-table-column label="实际采购量" align="center" prop="quantityReal" width="90px" />-->
<el-table-column label="已下单数量" align="center" prop="quantityShipped" /> <!-- <el-table-column label="已下单数量" align="center" prop="quantityShipped" />-->
<el-table-column label="剩余数量" align="center" prop="quantityLeft" /> <!-- <el-table-column label="剩余数量" align="center" prop="quantityLeft" />-->
<el-table-column label="半成品可发货数量" align="center" prop="sfgAvlQty" width="100px" /> <el-table-column label="转发数量" align="center" prop="quantityForward" />
<!-- <el-table-column label="半成品可发货数量" align="center" prop="sfgAvlQty" width="100px" />-->
<!-- <el-table-column label="到货入库量" align="center" prop="quantityEntry" />--> <!-- <el-table-column label="到货入库量" align="center" prop="quantityEntry" />-->
<!-- <el-table-column label="待到货量" align="center" prop="quantityReceive" />--> <!-- <el-table-column label="待到货量" align="center" prop="quantityReceive" />-->
@ -114,16 +118,16 @@
</el-timeline> </el-timeline>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="是否有半成品转发" align="center" prop="hasForward"> <!-- <el-table-column label="是否有半成品转发" align="center" prop="hasForward">-->
<template #default="scope"> <!-- <template #default="scope">-->
<dict-tag :options="sys_yes_no" :value="scope.row.hasForward" /> <!-- <dict-tag :options="sys_yes_no" :value="scope.row.hasForward" />-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column label="是否有成品发货" align="center" prop="hasSendOrder"> <!-- <el-table-column label="是否有成品发货" align="center" prop="hasSendOrder">-->
<template #default="scope"> <!-- <template #default="scope">-->
<dict-tag :options="sys_yes_no" :value="scope.row.hasSendOrder" /> <!-- <dict-tag :options="sys_yes_no" :value="scope.row.hasSendOrder" />-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<!-- <el-table-column label="单箱数量" align="center" prop="quantityPerCase" />--> <!-- <el-table-column label="单箱数量" align="center" prop="quantityPerCase" />-->
<!-- <el-table-column label="是否删除0 否1 是" align="center" prop="isDelete" />--> <!-- <el-table-column label="是否删除0 否1 是" align="center" prop="isDelete" />-->
<!-- <el-table-column label="税率" align="center" prop="taxRate" />--> <!-- <el-table-column label="税率" align="center" prop="taxRate" />-->
@ -131,17 +135,17 @@
<!-- <el-table-column label="款名" align="center" prop="spuName" />--> <!-- <el-table-column label="款名" align="center" prop="spuName" />-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-button <!-- <el-button-->
size="small" <!-- size="small"-->
link <!-- link-->
type="primary" <!-- type="primary"-->
@click="handleForward(scope.row, props.row)" <!-- @click="handleForward(scope.row, props.row)"-->
v-hasRoles="['superadmin', 'gengdan']" <!-- v-hasRoles="['superadmin', 'gengdan']"-->
v-hasPermi="['amz:purchaseOrder:remove']" <!-- v-hasPermi="['amz:purchaseOrder:remove']"-->
v-if="props.row.type == 'com'" <!-- v-if="props.row.type == 'com'"-->
> <!-- >-->
半成品转发 <!-- 半成品转发-->
</el-button> <!-- </el-button>-->
<el-button <el-button
size="small" size="small"
link link
@ -152,17 +156,17 @@
> >
编辑 编辑
</el-button> </el-button>
<el-button <!-- <el-button-->
size="small" <!-- size="small"-->
link <!-- link-->
type="primary" <!-- type="primary"-->
@click="handleShip(scope.row, props.row)" <!-- @click="handleShip(scope.row, props.row)"-->
v-hasRoles="['superadmin', 'gengdan']" <!-- v-hasRoles="['superadmin', 'gengdan']"-->
v-hasPermi="['amz:purchaseOrder:remove']" <!-- v-hasPermi="['amz:purchaseOrder:remove']"-->
v-if="props.row.type == 'ord'" <!-- v-if="props.row.type == 'ord'"-->
> <!-- >-->
成品发货 <!-- 成品发货-->
</el-button> <!-- </el-button>-->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -172,9 +176,9 @@
<!-- <el-table-column type="selection" width="55" align="center" />--> <!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="采购单号" align="center" prop="orderSn" /> <el-table-column label="采购单号" align="center" prop="orderSn" />
<el-table-column label="订单类型" align="center" prop="sendStatus"> <el-table-column label="订单类型" align="center" prop="sendStatus" v-hasRoles="['superadmin', 'gengdan']">
<template #default="scope"> <template #default="scope">
<dict-tag :options="send_order_type" :value="scope.row.type" /> <dict-tag :options="pur_order_type" :value="scope.row.type" />
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="自定义单号" align="center" prop="customOrderSn" />--> <!-- <el-table-column label="自定义单号" align="center" prop="customOrderSn" />-->
@ -342,14 +346,14 @@
<el-form-item label="实际采购量" prop="quantityReal"> <el-form-item label="实际采购量" prop="quantityReal">
<el-input v-model="detailForm.quantityReal" placeholder="实际采购量" disabled /> <el-input v-model="detailForm.quantityReal" placeholder="实际采购量" disabled />
</el-form-item> </el-form-item>
<el-form-item label="半成品可发货数量" prop="sfgAvlQty"> <!-- <el-form-item label="半成品可发货数量" prop="sfgAvlQty">-->
<!-- <el-input v-model="detailForm.sfgAvlQty" placeholder="请输入半成品可发货数量" />--> <!-- &lt;!&ndash; <el-input v-model="detailForm.sfgAvlQty" placeholder="请输入半成品可发货数量" />&ndash;&gt;-->
<el-input-number v-model="detailForm.sfgAvlQty" :min="0" :max="detailForm.quantityReal"> <!-- <el-input-number v-model="detailForm.sfgAvlQty" :min="0" :max="detailForm.quantityReal">-->
<template #suffix> <!-- <template #suffix>-->
<span></span> <!-- <span></span>-->
</template> <!-- </template>-->
</el-input-number> <!-- </el-input-number>-->
</el-form-item> <!-- </el-form-item>-->
<!-- <el-form-item label="交货天数" prop="estDlvDays">--> <!-- <el-form-item label="交货天数" prop="estDlvDays">-->
<!-- &lt;!&ndash; <el-input v-model="form.estDlvDays" placeholder="请输入交货天数" />&ndash;&gt;--> <!-- &lt;!&ndash; <el-input v-model="form.estDlvDays" placeholder="请输入交货天数" />&ndash;&gt;-->
@ -413,9 +417,9 @@
<el-form-item label="产品全称" prop="productName"> <el-form-item label="产品全称" prop="productName">
<el-input v-model="forwardForm.productName" placeholder="请输入产品全称" disabled /> <el-input v-model="forwardForm.productName" placeholder="请输入产品全称" disabled />
</el-form-item> </el-form-item>
<el-form-item label="半成品可发货数量" prop="sfgAvlQty"> <!-- <el-form-item label="半成品可发货数量" prop="sfgAvlQty">-->
<el-input v-model="forwardForm.sfgAvlQty" placeholder="请输入半成品可发货数量" disabled /> <!-- <el-input v-model="forwardForm.sfgAvlQty" placeholder="请输入半成品可发货数量" disabled />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="发货数量" prop="quantitySend"> <el-form-item label="发货数量" prop="quantitySend">
<el-input-number v-model="forwardForm.quantitySend" :min="1" :max="maxQuality"> <el-input-number v-model="forwardForm.quantitySend" :min="1" :max="maxQuality">
<template #suffix> <template #suffix>
@ -640,7 +644,7 @@ const { vendor_order_status } = toRefs<any>(proxy?.useDict('vendor_order_status'
const { sys_yes_no } = toRefs<any>(proxy?.useDict('sys_yes_no')); const { sys_yes_no } = toRefs<any>(proxy?.useDict('sys_yes_no'));
const { forward_status } = toRefs<any>(proxy?.useDict('forward_status')); const { forward_status } = toRefs<any>(proxy?.useDict('forward_status'));
const { send_order_type } = toRefs<any>(proxy?.useDict('send_order_type')); const { pur_order_type } = toRefs<any>(proxy?.useDict('pur_order_type'));
const route = useRoute(); const route = useRoute();
@ -1473,5 +1477,8 @@ watch(
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>
<style scoped></style> <style scoped></style>

View File

@ -19,7 +19,7 @@
<el-date-picker clearable v-model="queryParams.deliveryTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择交货时间" /> <el-date-picker clearable v-model="queryParams.deliveryTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择交货时间" />
</el-form-item> </el-form-item>
<el-form-item label="供应商名称" prop="supplierName"> <el-form-item label="供应商" prop="supplierName">
<el-input v-model="queryParams.supplierName" placeholder="请输入供应商名称" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.supplierName" placeholder="请输入供应商名称" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="SKU" prop="customOrderSn"> <el-form-item label="SKU" prop="customOrderSn">
@ -143,7 +143,7 @@
<el-table-column label="采购单号" align="center" prop="orderSn" /> <el-table-column label="采购单号" align="center" prop="orderSn" />
<el-table-column label="订单类型" align="center" prop="sendStatus"> <el-table-column label="订单类型" align="center" prop="sendStatus">
<template #default="scope"> <template #default="scope">
<dict-tag :options="send_order_type" :value="scope.row.type" /> <dict-tag :options="pur_order_type" :value="scope.row.type" />
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="自定义单号" align="center" prop="customOrderSn" />--> <!-- <el-table-column label="自定义单号" align="center" prop="customOrderSn" />-->
@ -379,7 +379,7 @@ import { roleSelectPost } from '@/api/system/user';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { vendor_order_status } = toRefs<any>(proxy?.useDict('vendor_order_status')); const { vendor_order_status } = toRefs<any>(proxy?.useDict('vendor_order_status'));
const { forward_status } = toRefs<any>(proxy?.useDict('forward_status')); const { forward_status } = toRefs<any>(proxy?.useDict('forward_status'));
const { send_order_type } = toRefs<any>(proxy?.useDict('send_order_type')); const { pur_order_type } = toRefs<any>(proxy?.useDict('pur_order_type'));
const purchaseOrderList = ref<PurchaseOrderVO[]>([]); const purchaseOrderList = ref<PurchaseOrderVO[]>([]);
const shipForwardList = ref<ShipForwardVO[]>([]); const shipForwardList = ref<ShipForwardVO[]>([]);
@ -890,5 +890,8 @@ const handleExport = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>
<style scoped></style> <style scoped></style>

File diff suppressed because it is too large Load Diff

View File

@ -120,21 +120,81 @@
<dict-tag :options="purchase_order_status" :value="scope.row.order?.status" /> <dict-tag :options="purchase_order_status" :value="scope.row.order?.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="转发完成数量" align="center" prop="quantityForward" />
<el-table-column label="采购数量" align="center" prop="quantityReal" /> <el-table-column label="采购数量" align="center" prop="quantityReal" />
<el-table-column label="已下单数量" align="center" prop="quantityShipped" /> <!-- <el-table-column label="已出货数量(最终仓库出货)" align="center" prop="quantityShipped" />-->
<el-table-column label="剩余数量" align="center" prop="quantityLeft" /> <el-table-column align="center" prop="quantityShipped">
<!-- 使用 #header 插槽自定义表头 -->
<template #header>
<div class="custom-header">
<span>已出货数量</span>
<el-tooltip effect="dark" content="表示从最终仓库实际发出的货物数量,不包括订单内部的半成品转发" placement="top">
<!-- <i class="el-icon-question header-icon"></i>-->
<!-- <el-button type="danger" size="small" :icon="Delete" circle />-->
<el-icon color="#FB9700FF" style="font-size: 15px">
<Warning />
</el-icon>
</el-tooltip>
</div>
</template>
<!-- 使用 #default 插槽自定义单元格内容 -->
<template #default="scope">
{{ scope.row.quantityShipped }}
</template>
</el-table-column>
<el-table-column label="剩余数量" align="center" prop="quantityLeft">
<template #header>
<div class="custom-header">
<span>剩余数量</span>
<el-tooltip effect="dark" content="表示从最终仓库实际的剩余货物数量,不包括订单内部的半成品转发" placement="top">
<!-- <i class="el-icon-question header-icon"></i>-->
<!-- <el-button type="danger" size="small" :icon="Delete" circle />-->
<el-icon color="#FB9700FF" style="font-size: 15px">
<Warning />
</el-icon>
</el-tooltip>
</div>
</template>
<!-- 使用 #default 插槽自定义单元格内容 -->
<template #default="scope">
{{ scope.row.quantityLeft }}
</template>
</el-table-column>
<el-table-column label="订单状态" align="center" prop="item.orderStatus"> <el-table-column label="订单状态" align="center" prop="item.orderStatus">
<template #default="scope"> <template #default="scope">
<dict-tag :options="vendor_order_status" :value="scope.row.item?.orderStatus" /> <dict-tag :options="vendor_order_status" :value="scope.row.item?.orderStatus" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="order.remark" /> <el-table-column label="备注" align="center" prop="order.remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button
size="small"
link
type="primary"
@click="handleForward(scope.row.item, scope.row.order, scope.row, props.row)"
v-hasRoles="['superadmin', 'gengdan']"
v-hasPermi="['amz:purchaseOrder:remove']"
v-if="scope.row.forwardType == 'other'"
>
半成品转发
</el-button>
</template>
</el-table-column>
</el-table> </el-table>
</el-card> </el-card>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="组合订单号" align="center" prop="orderSn" /> <el-table-column label="组合订单号" align="center" prop="orderSn" />
<el-table-column label="订单状态" align="center" prop="orderSn">
<template #default="scope">
<el-tag>{{ scope.row.statusText }}</el-tag>
</template>
</el-table-column>
<el-table-column label="仓库" align="center" prop="warehouseName" /> <el-table-column label="仓库" align="center" prop="warehouseName" />
<!-- <el-table-column label="外包仓库名称" align="center" prop="outsourceWarehouseName" />--> <!-- <el-table-column label="外包仓库名称" align="center" prop="outsourceWarehouseName" />-->
<el-table-column label="供应商名称" align="center" prop="supplierName" /> <el-table-column label="供应商名称" align="center" prop="supplierName" />
@ -310,6 +370,7 @@
<el-table-column label="采购店铺名称" align="center" prop="storeName" /> <el-table-column label="采购店铺名称" align="center" prop="storeName" />
<el-table-column label="SKU" align="center" prop="sku" /> <el-table-column label="SKU" align="center" prop="sku" />
<el-table-column label="产品全称" align="center" prop="productName" /> <el-table-column label="产品全称" align="center" prop="productName" />
<el-table-column label="计划发货数量" align="center" prop="quantityPlan" />
<el-table-column label="实际发货数量" align="center" prop="quantitySend" /> <el-table-column label="实际发货数量" align="center" prop="quantitySend" />
<el-table-column label="发货方" align="center" prop="outSupplierName" /> <el-table-column label="发货方" align="center" prop="outSupplierName" />
<!-- <el-table-column label="发货供应商系统ID" align="center" prop="outSupplierId" />--> <!-- <el-table-column label="发货供应商系统ID" align="center" prop="outSupplierId" />-->
@ -356,6 +417,64 @@
<!-- </div>--> <!-- </div>-->
<!-- </template>--> <!-- </template>-->
</el-dialog> </el-dialog>
<el-dialog :title="forwardDialog.title" v-model="forwardDialog.visible" width="800px" append-to-body>
<el-form ref="shipForwardFormRef" :model="forwardForm" :rules="rules2" label-width="130px">
<el-form-item label="采购单号" prop="orderSn">
<el-input v-model="forwardForm.orderSn" placeholder="请输入采购单号" disabled />
</el-form-item>
<el-form-item label="店铺名称" prop="storeName">
<el-input v-model="forwardForm.storeName" placeholder="请输入采购店铺名称" disabled />
</el-form-item>
<el-form-item label="SKU" prop="sku">
<el-input v-model="forwardForm.sku" placeholder="请输入产品唯一标识码" disabled />
</el-form-item>
<el-form-item label="产品全称" prop="productName">
<el-input v-model="forwardForm.productName" placeholder="请输入产品全称" disabled />
</el-form-item>
<!-- <el-form-item label="半成品可发货数量" prop="sfgAvlQty">-->
<!-- <el-input v-model="forwardForm.sfgAvlQty" placeholder="请输入半成品可发货数量" disabled />-->
<!-- </el-form-item>-->
<el-form-item label="计划发货数量" prop="quantitySend">
<el-input-number controls-position="right" v-model="forwardForm.quantityPlan" :min="1" :max="maxQuality">
<template #suffix>
<span></span>
</template>
</el-input-number>
</el-form-item>
<el-form-item label="发货方" prop="outSupplierName">
<el-input v-model="forwardForm.outSupplierName" placeholder="请输入发货供应商名称" disabled />
</el-form-item>
<!-- <el-form-item label="发货方ID" prop="outSupplierId">-->
<!-- <el-input v-model="forwardForm.outSupplierId" placeholder="请输入发货供应商系统ID" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="收货方" prop="inSupplierName">-->
<!-- &lt;!&ndash; <el-input v-model="forwardForm.inSupplierName" placeholder="请输入收货供应商名称" />&ndash;&gt;-->
<!-- <el-select v-model="selectUser" placeholder="请选择供应商" @change="selectAction">-->
<!-- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.rawData" :disabled="item.disabled">-->
<!-- &lt;!&ndash; 自定义选项内容 &ndash;&gt;-->
<!-- <span>{{ item.label }}</span>-->
<!-- &lt;!&ndash; <span style="float: right; color: #8492a6; font-size: 13px">&ndash;&gt;-->
<!-- &lt;!&ndash; {{ item.rawData.userName }}&ndash;&gt;-->
<!-- &lt;!&ndash; </span>&ndash;&gt;-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="收货方" prop="inSupplierName">
<el-input v-model="forwardForm.inSupplierName" placeholder="请输入收货方" disabled />
</el-form-item>
<el-form-item label="收货方采购单" prop="inOrderSn">
<el-input v-model="forwardForm.inOrderSn" placeholder="请输入收货方采购单" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="forwardSubmitForm"> </el-button>
<el-button @click="forwardDialog.visible = false"> </el-button>
</div>
</template>
</el-dialog>
</div> </div>
</template> </template>
@ -373,7 +492,10 @@ import { VxeTable, VxeColumn } from 'vxe-table';
import type { VxeTablePropTypes } from 'vxe-table'; import type { VxeTablePropTypes } from 'vxe-table';
import 'vxe-table/lib/style.css'; import 'vxe-table/lib/style.css';
import { ShipForwardVO } from '@/api/amz/shipForward/types'; import { ShipForwardForm, ShipForwardVO } from '@/api/amz/shipForward/types';
import { QuestionFilled } from '@element-plus/icons-vue';
import { roleSelectPost } from '@/api/system/user';
import { addShipForward, updateShipForward } from '@/api/amz/shipForward';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@ -406,11 +528,49 @@ const dialog = reactive<DialogOption>({
title: '' title: ''
}); });
const forwardDialog = reactive<DialogOption>({
visible: false,
title: ''
});
const editConfig: VxeTablePropTypes.EditConfig = { const editConfig: VxeTablePropTypes.EditConfig = {
trigger: 'dblclick', trigger: 'dblclick',
mode: 'cell' mode: 'cell'
}; };
const forwardForm = ref<ShipForwardForm>({
id: undefined,
orderSn: undefined,
storeName: undefined,
sku: undefined,
productName: undefined,
quantitySend: undefined,
outSupplierName: undefined,
outSupplierId: undefined,
inSupplierName: undefined,
inSupplierId: undefined,
shipmentStart: undefined,
shipmentEnd: undefined,
trackerName: undefined,
trackerId: undefined,
fwdStatus: undefined,
sendTime: undefined,
sfgAvlQty: 0
});
const options = ref([]);
const roleSelectAction = async () => {
const res = await roleSelectPost([5]);
console.log('res', res);
options.value = res.data.map((user) => ({
value: user.userId, // userId
label: user.nickName || '', // nickName
rawData: user //
}));
};
const initFormData: PurchaseOutOrderForm = { const initFormData: PurchaseOutOrderForm = {
orderSn: undefined, orderSn: undefined,
warehouseName: undefined, warehouseName: undefined,
@ -478,12 +638,100 @@ const data = reactive<PageData<PurchaseOutOrderForm, PurchaseOutOrderQuery>>({
// msku: [{ required: true, message: 'MSKU ()', trigger: 'blur' }], // msku: [{ required: true, message: 'MSKU ()', trigger: 'blur' }],
// planSn: [{ required: true, message: ' ()', trigger: 'blur' }], // planSn: [{ required: true, message: ' ()', trigger: 'blur' }],
sellerName: [{ required: true, message: '销售商名称不能为空', trigger: 'blur' }] sellerName: [{ required: true, message: '销售商名称不能为空', trigger: 'blur' }]
},
rules2: {
id: [{ required: true, message: '$comment不能为空', trigger: 'blur' }],
orderSn: [{ required: true, message: '采购单号不能为空', trigger: 'blur' }],
inOrderSn: [{ required: true, message: '收货方采购单号不能为空', trigger: 'blur' }],
storeName: [{ required: true, message: '采购店铺名称不能为空', trigger: 'blur' }],
sku: [{ required: true, message: '产品唯一标识码不能为空', trigger: 'blur' }],
productName: [{ required: true, message: '产品全称不能为空', trigger: 'blur' }],
quantityPlan: [{ required: true, message: '计划发货数量不能为空', trigger: 'blur' }],
outSupplierName: [{ required: true, message: '发货供应商名称不能为空', trigger: 'blur' }],
outSupplierId: [{ required: true, message: '发货供应商系统ID不能为空', trigger: 'blur' }],
inSupplierName: [{ required: true, message: '收货供应商名称不能为空', trigger: 'blur' }],
inSupplierId: [{ required: true, message: '收货供应商系统ID不能为空', trigger: 'blur' }],
// shipmentStart: [{ required: true, message: '', trigger: 'blur' }],
shipmentEnd: [{ required: true, message: '计划发货截止时间不能为空', trigger: 'blur' }],
trackerName: [{ required: true, message: '跟单人不能为空', trigger: 'blur' }],
trackerId: [{ required: true, message: '跟单id不能为空', trigger: 'blur' }],
fwdStatus: [{ required: true, message: '转发状态不能为空', trigger: 'change' }],
sendTime: [{ required: true, message: '发货时间不能为空', trigger: 'blur' }]
} }
}); });
const { queryParams, form, rules } = toRefs(data); const { queryParams, form, rules, rules2 } = toRefs(data);
const quality = ref(0); const quality = ref(0);
const maxQuality = ref(0);
const selectUser = ref<any>();
const shipForwardFormRef = ref<ElFormInstance>();
const selectAction = () => {
console.log('selectUser', selectUser);
forwardForm.value.inSupplierId = selectUser.value.userId;
forwardForm.value.inSupplierName = selectUser.value.nickName;
selectUser.value = selectUser.value.nickName;
};
const handleForward = async (row?, rowM?, rowA?, rowB?) => {
// reset();
// const _orderSn = row?.orderSn || ids.value[0];
// const res = await getPurchaseOrder(_orderSn);
// Object.assign(form.value, res.data);
// dialog.visible = true;
// dialog.title = '';
console.log('row', row);
console.log('rowM', rowM);
console.log('rowA', rowA);
if (row?.orderStatus === 'ord_unconfirmed') {
proxy?.$modal.msgError('请先让供应商确认订单!');
return;
}
maxQuality.value = Number(rowA?.quantityCanForward);
console.log('maxQuality', maxQuality.value);
if (maxQuality.value === 0 || maxQuality.value === undefined) {
console.log('没有可以发的货!');
proxy?.$modal.msgError('没有可以发的货!');
return;
}
// roleSelectAction();
forwardForm.value.orderSn = row?.orderSn;
forwardForm.value.storeName = rowM?.storeName;
forwardForm.value.sku = row?.sku;
forwardForm.value.productName = row?.productName;
forwardForm.value.quantityPlan = Number(maxQuality.value);
forwardForm.value.outSupplierName = rowM?.supplierName;
forwardForm.value.outSupplierId = rowM?.supplierId;
forwardForm.value.orderDetailId = row?.id;
forwardForm.value.sfgAvlQty = row?.sfgAvlQty;
// forwardForm.value.inSupplierName = row?.inSupplierName;
// forwardForm.value.inSupplierId = row?.inSupplierId;
// forwardForm.value.shipmentStart = row?.shipmentStart;
// forwardForm.value.shipmentEnd = row?.shipmentEnd;
// forwardForm.value.trackerName = row?.trackerName;
// forwardForm.value.trackerId = row?.trackerId;
// forwardForm.value.fwdStatus = row?.fwdStatus;
// forwardForm.value.sendTime = row?.sendTime;
forwardForm.value.inSupplierName = rowB?.supplierName;
forwardForm.value.inSupplierId = rowB?.supplierId;
forwardForm.value.inOrderSn = null;
// console.log('row', row);
// console.log('rowM', rowM);
forwardDialog.visible = true;
forwardDialog.title = '添加转发数据';
};
/** 查询组合订单列表 */ /** 查询组合订单列表 */
const getList = async () => { const getList = async () => {
loading.value = true; loading.value = true;
@ -555,11 +803,14 @@ const goToOrderDetail = async (orderStatus?: string, orderSn?: string) => {
} }
}; };
const qualityMin = ref(0);
/** 修改按钮操作 */ /** 修改按钮操作 */
const handleUpdate = async (row?: PurchaseOutOrderVO) => { const handleUpdate = async (row?: PurchaseOutOrderVO) => {
reset(); reset();
// const orderSn = row?.orderSn || ids.value[0]; // const orderSn = row?.orderSn || ids.value[0];
// const res = await getPurchaseOutOrder(orderSn); // const res = await getPurchaseOutOrder(orderSn);
if (row.quantityLeft <= 0) { if (row.quantityLeft <= 0) {
proxy?.$modal.msgError('该订单已全部发货'); proxy?.$modal.msgError('该订单已全部发货');
return; return;
@ -568,15 +819,40 @@ const handleUpdate = async (row?: PurchaseOutOrderVO) => {
proxy?.$modal.msgError('有采购订单没有确认'); proxy?.$modal.msgError('有采购订单没有确认');
return; return;
} }
if (row.items.every((item) => item.fowardType === 'self' && item.quantityForward <= 0)) {
proxy?.$modal.msgError('没有转发完成');
return;
}
form.value = deepClone(row); form.value = deepClone(row);
quality.value = form.value.quantityLeft;
form.value.items.forEach((item) => {
// item.order.quantityReal = item.quantityLeft;
let minQuantity2;
if (item.forwardType === 'other') {
minQuantity2 = Number(item.quantityForward) / Number(item.ratio);
console.log('item', item);
console.log('minQuantity2', minQuantity2);
form.value.quantityLeft = Math.min(Number(row.quantityLeft), Number(minQuantity2));
}
});
console.log('form.value.quantityLeft', form.value.quantityLeft);
if (form.value.quantityLeft <= 0) {
proxy?.$modal.msgError('该订单没有可发货数量');
return;
}
console.log('form', form.value);
form.value.outsourceQuantity = form.value.quantityLeft; form.value.outsourceQuantity = form.value.quantityLeft;
quality.value = form.value.quantityLeft;
console.log('quantity', quality.value); console.log('quantity', quality.value);
console.log('form.value.outsourceQuantity', form.value.outsourceQuantity); console.log('form.value.outsourceQuantity', form.value.outsourceQuantity);
form.value.items.forEach((item) => { form.value.items.forEach((item) => {
// item.order.quantityReal = item.quantityLeft;
item.order.quantityReal = form.value.quantityLeft * item.ratio; item.order.quantityReal = form.value.quantityLeft * item.ratio;
}); });
dialog.visible = true; dialog.visible = true;
@ -604,6 +880,26 @@ const submitForm = () => {
}); });
}; };
const forwardSubmitForm = () => {
if (forwardForm.value.inSupplierName === forwardForm.value.outSupplierName) {
proxy?.$modal.msgError('请不要选择相同的供应商');
return;
}
shipForwardFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (forwardForm.value.id) {
await updateShipForward(forwardForm.value).finally(() => (buttonLoading.value = false));
} else {
await addShipForward(forwardForm.value).finally(() => (buttonLoading.value = false));
}
proxy?.$modal.msgSuccess('操作成功');
forwardDialog.visible = false;
await getList();
}
});
};
const submitSendOrderForm = () => { const submitSendOrderForm = () => {
purchaseOutOrderFormRef.value?.validate(async (valid: boolean) => { purchaseOutOrderFormRef.value?.validate(async (valid: boolean) => {
if (valid) { if (valid) {
@ -646,4 +942,25 @@ const handleExport = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>
<style scoped>
.custom-header {
display: flex;
align-items: center;
justify-content: center;
}
.header-icon {
margin-left: 8px;
color: #909399;
cursor: pointer;
transition: color 0.3s;
}
.header-icon:hover {
color: #409eff;
}
</style>

View File

@ -753,4 +753,8 @@ const handleExport = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>

View File

@ -274,7 +274,7 @@
<el-input v-model="transferForm.productName" placeholder="请输入产品名称" disabled /> <el-input v-model="transferForm.productName" placeholder="请输入产品名称" disabled />
</el-form-item> </el-form-item>
<el-form-item label="店铺名称" prop="productName"> <el-form-item label="店铺名称" prop="productName">
<el-input v-model="transferForm.storeName" placeholder="请输入产品名称" disabled /> <el-input v-model="transferForm.storeName" placeholder="请输入产品名称" />
</el-form-item> </el-form-item>
<el-form-item label="发货总数" prop="quantitySend"> <el-form-item label="发货总数" prop="quantitySend">
<el-input-number :min="1" :max="quantity" controls-position="right" v-model="transferForm.quantitySend" placeholder="发货总数" /> <el-input-number :min="1" :max="quantity" controls-position="right" v-model="transferForm.quantitySend" placeholder="发货总数" />
@ -459,6 +459,7 @@ const transferForm = ref<SendOrderVO>();
const handleTransfer = async (row?: SendOrderVO) => { const handleTransfer = async (row?: SendOrderVO) => {
// //
quantity.value = row?.quantitySend;
console.log('row', row); console.log('row', row);
transferForm.value = deepClone(row); transferForm.value = deepClone(row);
transferDialog.visible = true; transferDialog.visible = true;
@ -514,4 +515,8 @@ const handleExport = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>

View File

@ -88,9 +88,9 @@
</el-table-column> </el-table-column>
<el-table-column label="采购店铺" align="center" prop="storeName" /> <el-table-column label="采购店铺" align="center" prop="storeName" />
<el-table-column label="供应商名称" align="center" prop="sendName" /> <el-table-column label="供应商名称" align="center" prop="sendName" />
<el-table-column label="FBA列表" align="center" prop="sendName"> <el-table-column label="FBA列表" align="center" prop="handleFbaList">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" @click="handleFbaList(scope.row)" v-hasPermi="['amz:sendOrder:remove']"> 查看详情 </el-button> <el-button link type="primary" @click="handleFbaList(scope.row)"> 查看详情</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -479,6 +479,10 @@ const handleExport = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>
<!--<style scoped>--> <!--<style scoped>-->
<!--/* 展开行容器 */--> <!--/* 展开行容器 */-->

View File

@ -79,9 +79,12 @@
<el-table-column label="采购店铺名称" align="center" prop="storeName" /> <el-table-column label="采购店铺名称" align="center" prop="storeName" />
<el-table-column label="SKU" align="center" prop="sku" /> <el-table-column label="SKU" align="center" prop="sku" />
<el-table-column label="产品全称" align="center" prop="productName" /> <el-table-column label="产品全称" align="center" prop="productName" />
<el-table-column label="计划发货数量" align="center" prop="quantityPlan" />
<el-table-column label="发货数量" align="center" prop="quantitySend" /> <el-table-column label="发货数量" align="center" prop="quantitySend" />
<el-table-column label="发货箱数" align="center" prop="boxNum" /> <el-table-column label="发货箱数" align="center" prop="boxNum" />
<el-table-column label="发货方" align="center" prop="outSupplierName" /> <el-table-column label="发货方" align="center" prop="outSupplierName" />
<el-table-column label="总金额" align="center" prop="totalPrice" />
<!-- <el-table-column label="发货供应商系统ID" align="center" prop="outSupplierId" />--> <!-- <el-table-column label="发货供应商系统ID" align="center" prop="outSupplierId" />-->
<el-table-column label="收货方" align="center" prop="inSupplierName" /> <el-table-column label="收货方" align="center" prop="inSupplierName" />
<!-- <el-table-column label="收货供应商系统ID" align="center" prop="inSupplierId" />--> <!-- <el-table-column label="收货供应商系统ID" align="center" prop="inSupplierId" />-->
@ -597,4 +600,7 @@ const handleExport = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>

View File

@ -81,9 +81,11 @@
<el-table-column label="采购店铺名称" align="center" prop="storeName" /> <el-table-column label="采购店铺名称" align="center" prop="storeName" />
<el-table-column label="SKU" align="center" prop="sku" /> <el-table-column label="SKU" align="center" prop="sku" />
<el-table-column label="产品全称" align="center" prop="productName" /> <el-table-column label="产品全称" align="center" prop="productName" />
<el-table-column label="计划发货数量" align="center" prop="quantityPlan" />
<el-table-column label="发货数量" align="center" prop="quantitySend" /> <el-table-column label="发货数量" align="center" prop="quantitySend" />
<el-table-column label="发货箱数" align="center" prop="boxNum" /> <el-table-column label="发货箱数" align="center" prop="boxNum" />
<el-table-column label="总金额" align="center" prop="totalPrice" /> <!-- <el-table-column label="总金额" align="center" prop="totalPrice" v-hasRoles="['superadmin', 'gongying', 'gengdan']" />-->
<el-table-column label="发货方" align="center" prop="outSupplierName" /> <el-table-column label="发货方" align="center" prop="outSupplierName" />
<!-- <el-table-column label="发货供应商系统ID" align="center" prop="outSupplierId" />--> <!-- <el-table-column label="发货供应商系统ID" align="center" prop="outSupplierId" />-->
@ -621,4 +623,7 @@ const handleExport = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>

View File

@ -80,6 +80,7 @@
<el-table-column label="采购店铺名称" align="center" prop="storeName" /> <el-table-column label="采购店铺名称" align="center" prop="storeName" />
<el-table-column label="SKU" align="center" prop="sku" /> <el-table-column label="SKU" align="center" prop="sku" />
<el-table-column label="产品全称" align="center" prop="productName" /> <el-table-column label="产品全称" align="center" prop="productName" />
<el-table-column label="计划发货数量" align="center" prop="quantityPlan" />
<el-table-column label="发货数量" align="center" prop="quantitySend" /> <el-table-column label="发货数量" align="center" prop="quantitySend" />
<el-table-column label="发货箱数" align="center" prop="boxNum" /> <el-table-column label="发货箱数" align="center" prop="boxNum" />
@ -132,7 +133,7 @@
</el-card> </el-card>
<!-- 添加或修改货件转发对话框 --> <!-- 添加或修改货件转发对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body> <el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body>
<el-form ref="shipForwardFormRef" :model="form" :rules="rules" label-width="100px"> <el-form ref="shipForwardFormRef" :model="form" :rules="rules" label-width="120px">
<el-form-item label="采购单号" prop="orderSn"> <el-form-item label="采购单号" prop="orderSn">
<el-input v-model="form.orderSn" placeholder="请输入采购单号" disabled /> <el-input v-model="form.orderSn" placeholder="请输入采购单号" disabled />
</el-form-item> </el-form-item>
@ -176,9 +177,14 @@
<!-- <el-form-item label="跟单id" prop="trackerId">--> <!-- <el-form-item label="跟单id" prop="trackerId">-->
<!-- <el-input v-model="form.trackerId" placeholder="请输入跟单id" />--> <!-- <el-input v-model="form.trackerId" placeholder="请输入跟单id" />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item label="发货数量" prop="quantitySend"> <el-form-item label="计划发货数量" prop="quantitySend">
<el-input v-model="form.quantitySend" placeholder="请输入发货数量" disabled /> <el-input v-model="form.quantityPlan" placeholder="请输入计划发货数量" disabled />
</el-form-item> </el-form-item>
<el-form-item label="发货数量" prop="quantitySend">
<!-- <el-input v-model="form.quantitySend" placeholder="请输入发货数量" />-->
<el-input-number v-model="form.quantitySend" :min="1" :max="form.quantityPlan" controls-position="right"></el-input-number>
</el-form-item>
<!-- <el-form-item label="发货箱数" prop="quantitySend">--> <!-- <el-form-item label="发货箱数" prop="quantitySend">-->
<!-- <el-input v-model="form.boxNum" placeholder="请输入发货箱数" disabled />--> <!-- <el-input v-model="form.boxNum" placeholder="请输入发货箱数" disabled />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
@ -591,7 +597,8 @@ const handleUpdate = async (row?: ShipForwardVO) => {
const res = await getShipForward(_id); const res = await getShipForward(_id);
Object.assign(form.value, res.data); Object.assign(form.value, res.data);
form.value.sendTime = getDateToString(new Date()); form.value.sendTime = getDateToString(new Date());
console.log('res', res);
form.value.quantitySend = res.data.quantityPlan;
// form.value.shipmentStart = getDateToString(intervalDate.value[0]); // form.value.shipmentStart = getDateToString(intervalDate.value[0]);
// form.value.shipmentEnd = getDateToString(intervalDate.value[1]); // form.value.shipmentEnd = getDateToString(intervalDate.value[1]);
dialog.visible = true; dialog.visible = true;
@ -656,4 +663,7 @@ const handleExport = () => {
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
onActivated(() => {
getList();
});
</script> </script>

View File

@ -836,7 +836,10 @@ const snycTodayPlan = async () => {
const res = await takeTodayAmzPlanData(); const res = await takeTodayAmzPlanData();
if (res.code == 200) { if (res.code == 200) {
proxy?.$modal.msgSuccess('同步成功'); proxy?.$modal.msgSuccess('同步成功');
await getList();
setTimeout(() => {
await getList();
}, 2000);
} }
}; };
@ -907,4 +910,9 @@ onMounted(() => {
getList(); getList();
getAllChannelData(); getAllChannelData();
}); });
onActivated(() => {
getList();
getAllChannelData();
});
</script> </script>

View File

@ -321,7 +321,7 @@
<el-input v-model="form.destination" placeholder="请输入物流中心编码" disabled /> <el-input v-model="form.destination" placeholder="请输入物流中心编码" disabled />
</el-form-item> </el-form-item>
<el-form-item label="是否报关" prop="destination"> <el-form-item label="是否报关" prop="destination">
<el-switch v-model="customsFlag" active-value="1" inactive-value="0" /> <el-switch v-model="customsFlag" active-value="Y" inactive-value="N" />
</el-form-item> </el-form-item>
<el-form-item label="物流渠道" required="true"> <el-form-item label="物流渠道" required="true">
@ -336,14 +336,14 @@
filterable filterable
/> />
</el-form-item> </el-form-item>
<el-space fill> <!-- <el-space fill>-->
<el-tag>通用询价只根据渠道进行报价 重量询价是包含重量信息</el-tag> <!-- <el-tag>通用询价只根据渠道进行报价 重量询价是包含重量信息</el-tag>-->
<el-form-item label="询价类型" prop="destination"> <!-- <el-form-item label="询价类型" prop="destination">-->
<el-select v-model="requestType" clearable placeholder="询价类型"> <!-- <el-select v-model="requestType" clearable placeholder="询价类型">-->
<el-option v-for="dict in request_type" :key="dict.value" :label="dict.label" :value="dict.value" /> <!-- <el-option v-for="dict in request_type" :key="dict.value" :label="dict.label" :value="dict.value" />-->
</el-select> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
</el-space> <!-- </el-space>-->
<!-- <el-form-item label="总箱子数量" prop="boxQuantity">--> <!-- <el-form-item label="总箱子数量" prop="boxQuantity">-->
<!-- <el-input v-model="form.boxQuantity" placeholder="请输入总箱子数量" />--> <!-- <el-input v-model="form.boxQuantity" placeholder="请输入总箱子数量" />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
@ -929,7 +929,7 @@ const channelDialogVisibleAction = () => {
ElMessage.error('请选择已关联采购单的数据'); ElMessage.error('请选择已关联采购单的数据');
return; return;
} }
requestType.value = 'general'; requestType.value = 'weight';
channelDialogVisible.value = true; channelDialogVisible.value = true;
console.log('channelDialogVisibleAction', selectionDatas.value.length); console.log('channelDialogVisibleAction', selectionDatas.value.length);
selectionDatas.value.forEach((item) => { selectionDatas.value.forEach((item) => {
@ -1084,7 +1084,7 @@ function transformChannels(channels) {
const currentDes = ref<string | number>(''); const currentDes = ref<string | number>('');
const currentFBAData = ref<ShipmentPlanVO>(); const currentFBAData = ref<ShipmentPlanVO>();
const requestType = ref<string | number>('general'); const requestType = ref<string | number>('weight');
// //
const groupedChannels = computed(() => { const groupedChannels = computed(() => {
@ -1210,6 +1210,7 @@ const checkPrice = async () => {
quoteDate: shipDate.value, quoteDate: shipDate.value,
shipToAddress: currentFBAData.value.shipToAddress, shipToAddress: currentFBAData.value.shipToAddress,
shipmentId: currentFBAData.value.shipmentId, shipmentId: currentFBAData.value.shipmentId,
customsFlag: customsFlag,
type: requestType.value type: requestType.value
}; };
inquiryRequestItemVOList.value.push(inquiryRequestItemVO); inquiryRequestItemVOList.value.push(inquiryRequestItemVO);
@ -1301,7 +1302,7 @@ const handleUpdate = async (row?: ShipmentPlanVO) => {
console.log(row); console.log(row);
currentFBAData.value = row; currentFBAData.value = row;
currentDes.value = row.destination; currentDes.value = row.destination;
requestType.value = 'general'; requestType.value = 'weight';
}; };
const linkShipmentPlanVO = ref<ShipmentPlanVO>(); const linkShipmentPlanVO = ref<ShipmentPlanVO>();
@ -1529,6 +1530,11 @@ onMounted(() => {
getList(); getList();
getAllChannelData(); getAllChannelData();
}); });
onActivated(() => {
getList();
getAllChannelData();
});
</script> </script>
<!--<style scoped>--> <!--<style scoped>-->
<!--/* 展开行容器 */--> <!--/* 展开行容器 */-->

View File

@ -168,6 +168,16 @@
{{ scope.row.quantityShipped }} {{ scope.row.quantityShipped }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="关联数量" property="quantityRelated" width="80">
<template #default="scope">
{{ scope.row.quantityRelated }}
</template>
</el-table-column>
<el-table-column label="剩余数量" property="quantityRemain" width="80">
<template #default="scope">
{{ scope.row.quantityRemain }}
</template>
</el-table-column>
<el-table-column width="150" label="货件明细" align="center" prop="shipToAddress"> <el-table-column width="150" label="货件明细" align="center" prop="shipToAddress">
<template #default="{ row }"> <template #default="{ row }">
<el-button @click="openDetailDialog(row.detailList)"> 查看详情</el-button> <el-button @click="openDetailDialog(row.detailList)"> 查看详情</el-button>
@ -177,9 +187,21 @@
<!-- <el-table-column label="总箱子数量" align="center" prop="boxQuantity" />--> <!-- <el-table-column label="总箱子数量" align="center" prop="boxQuantity" />-->
<!-- <el-table-column label="套数" align="center" prop="setTotal" />--> <!-- <el-table-column label="套数" align="center" prop="setTotal" />-->
<!-- <el-table-column label="箱子尺寸" align="center" prop="boxSize" />--> <!-- <el-table-column label="箱子尺寸" align="center" prop="boxSize" />-->
<el-table-column label="供应商称重-总重量" align="center" prop="vendorWeight" /> <el-table-column label="供应商称重-总重量" align="center" prop="vendorWeight">
<el-table-column label="物流称重-总重量" align="center" prop="logisticsWeight" /> <template #default="scope">
<el-table-column label="称重差异" align="center" prop="weightDiff" /> {{ scope.row.vendorWeight + ' KG' }}
</template>
</el-table-column>
<el-table-column label="物流称重-总重量" align="center" prop="logisticWeight">
<template #default="scope">
{{ scope.row.logisticWeight + ' KG' }}
</template>
</el-table-column>
<el-table-column label="称重差异" align="center" prop="weightDiff">
<template #default="scope">
{{ scope.row.weightDiff + ' KG' }}
</template>
</el-table-column>
<!-- <el-table-column label="渠道ID" align="center" prop="channelId" />--> <!-- <el-table-column label="渠道ID" align="center" prop="channelId" />-->
<el-table-column width="150" label="物流信息" align="center" prop="shipToAddress"> <el-table-column width="150" label="物流信息" align="center" prop="shipToAddress">
<template #default="{ row }"> <template #default="{ row }">
@ -198,7 +220,7 @@
<!-- { label: '运输时效', prop: 'leadTime' },--> <!-- { label: '运输时效', prop: 'leadTime' },-->
<!-- { label: '总价', prop: 'totalPrice' }--> <!-- { label: '总价', prop: 'totalPrice' }-->
<el-descriptions-item label="报价类型"> <el-descriptions-item label="报价类型">
<dict-tag :options="request_type" :value="row.quote.type" /> <dict-tag :options="biz_quote_type" :value="row.quote.type" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="物流商名称"> <el-descriptions-item label="物流商名称">
{{ row.quote.logisticsName }} {{ row.quote.logisticsName }}
@ -209,20 +231,20 @@
<el-descriptions-item label="渠道名称"> <el-descriptions-item label="渠道名称">
{{ row.quote.channelName }} {{ row.quote.channelName }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="价"> <el-descriptions-item label="价">
{{ row.quote.price }} {{ row.quote.price + row.quote.unit }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="附加费"> <el-descriptions-item label="附加费">
{{ row.quote.surcharge }} {{ row.quote.surcharge + ' 元' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="运输时效"> <el-descriptions-item label="运输时效">
{{ row.quote.leadTime }} {{ row.quote.leadTime + ' 天' }}
</el-descriptions-item>
<el-descriptions-item label="总价">
{{ row.quote.totalPrice }}
</el-descriptions-item> </el-descriptions-item>
<!-- <el-descriptions-item label="总价">-->
<!-- {{ row.quote.totalPrice }}-->
<!-- </el-descriptions-item>-->
<el-descriptions-item label="结算金额"> <el-descriptions-item label="结算金额">
{{ row.amountPrice }} {{ row.amountPrice + ' 元' }}
</el-descriptions-item> </el-descriptions-item>
<!-- <el-descriptions-item v-for="item in realisticItems" :key="item.prop" :label="item.label">--> <!-- <el-descriptions-item v-for="item in realisticItems" :key="item.prop" :label="item.label">-->
<!-- {{ row.quote[item.prop] || 'N/A' }}--> <!-- {{ row.quote[item.prop] || 'N/A' }}-->
@ -534,6 +556,7 @@ const { biz_logistics_status } = toRefs<any>(proxy?.useDict('biz_logistics_statu
const { request_type } = toRefs<any>(proxy?.useDict('request_type')); const { request_type } = toRefs<any>(proxy?.useDict('request_type'));
const { sys_zero_one } = toRefs<any>(proxy?.useDict('sys_zero_one')); const { sys_zero_one } = toRefs<any>(proxy?.useDict('sys_zero_one'));
const { biz_quote_type } = toRefs<any>(proxy?.useDict('biz_quote_type'));
const shipmentPlanList = ref<ShipmentPlanOrderVO[]>([]); const shipmentPlanList = ref<ShipmentPlanOrderVO[]>([]);
const buttonLoading = ref(false); const buttonLoading = ref(false);
@ -761,15 +784,15 @@ const shipDate = ref(getLocalDate());
const getList = async () => { const getList = async () => {
loading.value = true; loading.value = true;
const res = await listShipmentPlanOrder(queryParams.value); const res = await listShipmentPlanOrder(queryParams.value);
res.rows.forEach((item) => { // res.rows.forEach((item) => {
item.vendorWeight = (item.detailList || []).reduce((acc, cur) => { // item.vendorWeight = (item.detailList || []).reduce((acc, cur) => {
return acc + cur.supplierWeight; // return acc + cur.supplierWeight;
}, 0); // }, 0);
item.logisticsWeight = (item.detailList || []).reduce((acc, cur) => { // item.logisticsWeight = (item.detailList || []).reduce((acc, cur) => {
return acc + cur.logisticsWeight; // return acc + cur.logisticsWeight;
}, 0); // }, 0);
item.weightDiff = item.vendorWeight - item.logisticsWeight; // item.weightDiff = item.vendorWeight - item.logisticsWeight;
}); // });
shipmentPlanList.value = res.rows; shipmentPlanList.value = res.rows;
total.value = res.total; total.value = res.total;
loading.value = false; loading.value = false;
@ -1068,6 +1091,11 @@ const handleCurrentChange = (val: ShipmentPlanVO | undefined) => {
}; };
onMounted(() => { onMounted(() => {
getList();
// getAllChannelData();
});
onActivated(() => {
getList(); getList();
getAllChannelData(); getAllChannelData();
}); });

View File

@ -389,43 +389,54 @@
<el-table-column label="物流商名称" align="center" prop="logisticsName" /> <el-table-column label="物流商名称" align="center" prop="logisticsName" />
<el-table-column label="目的地" align="center" prop="destination" /> <el-table-column label="目的地" align="center" prop="destination" />
<el-table-column label="渠道名称" align="center" prop="channelName" /> <el-table-column label="渠道名称" align="center" prop="channelName" />
<el-table-column label="询价类型" align="center" prop="type"> <!-- <el-table-column label="询价类型" align="center" prop="type">-->
<!-- <template #default="scope">-->
<!-- <dict-tag :options="request_type" :value="scope.row.type" />-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="报价类型" align="center" prop="remark">
<template #default="scope"> <template #default="scope">
<dict-tag :options="request_type" :value="scope.row.type" /> <dict-tag :options="biz_quote_type" :value="scope.row.type" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="基础价格" align="center" prop="price"> <el-table-column label="基础价格" align="center" prop="price">
<template #default="scope"> <template #default="scope">
<el-tag type="warning" v-if="scope.row.type === 'weight'">重量询价参考总价</el-tag> <!-- <el-tag type="warning" v-if="scope.row.type === 'weight'">重量询价参考总价</el-tag>-->
<span v-else>{{ scope.row.price }}</span> <span>{{ scope.row.price + scope.row.unit }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="总价" align="center" prop="totalPrice"> <el-table-column label="体积比" align="center" prop="volumeRatio">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.type === 'weight'">{{ scope.row.totalPrice }}</span> <span>{{ scope.row.volumeRatio }}</span>
<el-tag type="warning" v-else>普通询价参考单价</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="总价" align="center" prop="totalPrice">-->
<!-- <template #default="scope">-->
<!-- <span v-if="scope.row.type === 'weight'">{{ scope.row.totalPrice }}</span>-->
<!-- <el-tag type="warning" v-else>普通询价参考单价</el-tag>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="最短时效" align="center" prop="minLeadTime" /> <el-table-column label="最短时效" align="center" prop="minLeadTime" />
<el-table-column label="时效" align="center" prop="leadTime" /> <el-table-column label="时效" align="center" prop="leadTime" />
<el-table-column label="附加费" align="center" prop="surcharge" /> <el-table-column label="附加费" align="center" prop="surcharge" />
<el-table-column label="报关费" align="center" prop="customsDeclarationFee" />
<el-table-column label="报价生效日期" align="center" prop="quoteDate" width="120"> <el-table-column label="报价生效日期" align="center" prop="quoteDate" width="120">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.quoteDate, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.quoteDate, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="提交状态" align="center" prop="isSubmitted"> <!-- <el-table-column label="提交状态" align="center" prop="isSubmitted">-->
<template #default="scope"> <!-- <template #default="scope">-->
<dict-tag :options="sys_yes_no" :value="scope.row.isSubmitted" /> <!-- <dict-tag :options="sys_yes_no" :value="scope.row.isSubmitted" />-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<!-- <el-table-column label="渠道类型" align="center" prop="channelType" />--> <!-- <el-table-column label="渠道类型" align="center" prop="channelType" />-->
<el-table-column label="是否双清包税" align="center" prop="isDdp"> <el-table-column label="是否双清包税" align="center" prop="isDdp">
<template #default="scope"> <template #default="scope">
<dict-tag :options="sys_yes_no" :value="scope.row.isDdp" /> <dict-tag :options="sys_yes_no" :value="scope.row.isDdp" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位" align="center" prop="unit" /> <!-- <el-table-column label="单位" align="center" prop="unit" />-->
<el-table-column label="报价备注" align="center" prop="remark" /> <el-table-column label="报价备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
@ -439,11 +450,10 @@
<template #footer> <template #footer>
<div style="flex: auto"> <div style="flex: auto">
<el-button @click="cancelClick">取消</el-button> <el-button @click="cancelClick">取消</el-button>
<el-button type="primary" @click="confirmClick">确认</el-button> <!-- <el-button type="primary" @click="confirmClick">确认</el-button>-->
</div> </div>
</template> </template>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
@ -471,6 +481,7 @@ import { createLogisticsOrder } from '@/api/amz/logisticsOrder';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { biz_transport_channel } = toRefs<any>(proxy?.useDict('biz_transport_channel')); const { biz_transport_channel } = toRefs<any>(proxy?.useDict('biz_transport_channel'));
const { sys_yes_no } = toRefs<any>(proxy?.useDict('sys_yes_no')); const { sys_yes_no } = toRefs<any>(proxy?.useDict('sys_yes_no'));
const { biz_quote_type } = toRefs<any>(proxy?.useDict('biz_quote_type'));
const { sys_zero_one } = toRefs<any>(proxy?.useDict('sys_zero_one')); const { sys_zero_one } = toRefs<any>(proxy?.useDict('sys_zero_one'));
@ -1015,6 +1026,11 @@ const handleCurrentChange = (val: ShipmentPlanVO | undefined) => {
}; };
onMounted(() => { onMounted(() => {
getList();
// getAllChannelData();
});
onActivated(() => {
getList(); getList();
getAllChannelData(); getAllChannelData();
}); });