判断是否有签名换到长链接推送 然后添加 报关价 预估退税计算
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
<span class="border"></span>
|
||||
<span class="title">基础信息</span>
|
||||
</div>
|
||||
<ElForm :model="baseForm" class="base-form" label-position="right">
|
||||
<ElForm :model="baseForm" :rules="baseFormRules" ref="baseFormRef" class="base-form" label-position="right">
|
||||
<ElRow :gutter="12">
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="阿里订单号/PI号" label-width="114px">
|
||||
@@ -17,7 +17,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="日期" label-width="114px">
|
||||
<ElFormItem label="日期" label-width="114px" prop="biz_date" required>
|
||||
<ElDatePicker
|
||||
v-model="baseForm.biz_date"
|
||||
type="date"
|
||||
@@ -29,7 +29,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="清关目的国" label-width="114px">
|
||||
<ElFormItem label="清关目的国" label-width="114px" prop="clearance_country_id" required>
|
||||
<el-select
|
||||
v-model="baseForm.clearance_country_id"
|
||||
filterable
|
||||
@@ -51,7 +51,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="客户名称" label-width="114px">
|
||||
<ElFormItem label="客户名称" label-width="114px" prop="customer_id" required>
|
||||
<ElInput
|
||||
v-model="baseForm.customer_snapshot"
|
||||
placeholder="请选择客户"
|
||||
@@ -124,11 +124,11 @@
|
||||
<span class="border"></span>
|
||||
<span class="title">订单详情</span>
|
||||
</div>
|
||||
<ElForm class="items-wrap" label-position="right">
|
||||
<ElForm :model="formModel" :rules="itemRules" ref="itemsFormRef" class="items-wrap" label-position="right">
|
||||
<div class="item-row form-box" v-for="(item, idx) in items" :key="idx">
|
||||
<ElRow :gutter="12" class="item-row-wrap">
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="车型" label-width="85px">
|
||||
<ElFormItem label="车型" label-width="85px" :prop="'items.' + idx + '.sku_id'" required>
|
||||
<ElInput
|
||||
v-model="item.model_snapshot"
|
||||
placeholder="请选择车型"
|
||||
@@ -144,7 +144,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="颜色/外饰" label-width="85px">
|
||||
<ElFormItem label="颜色/外饰" label-width="85px" :prop="'items.' + idx + '.color_exterior_snapshot'" required>
|
||||
<el-select
|
||||
v-model="item.color_exterior_snapshot"
|
||||
filterable
|
||||
@@ -167,7 +167,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="颜色/内饰" label-width="85px">
|
||||
<ElFormItem label="颜色/内饰" label-width="85px" :prop="'items.' + idx + '.color_interior_snapshot'" required>
|
||||
<el-select
|
||||
v-model="item.color_interior_snapshot"
|
||||
filterable
|
||||
@@ -220,7 +220,7 @@
|
||||
</ElRow>
|
||||
<ElRow :gutter="12" class="item-row-wrap">
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4" v-if="(item.mileage ?? 0) <= 0">
|
||||
<ElFormItem label="官方指导价" label-width="85px">
|
||||
<ElFormItem label="官方指导价" label-width="85px" :prop="'items.' + idx + '.official_price'" required>
|
||||
<ElInput v-model="item.official_price" placeholder="请输入官方指导价">
|
||||
<template #suffix>
|
||||
<ElSelect v-model="item.guide_price_currency" style="width: 64px;border: none;">
|
||||
@@ -237,7 +237,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4" v-else>
|
||||
<ElFormItem label="二手挂牌价" label-width="85px">
|
||||
<ElFormItem label="二手挂牌价" label-width="85px" :prop="'items.' + idx + '.listing_price'" required>
|
||||
<ElInput v-model="item.listing_price" placeholder="请输入二手挂牌价">
|
||||
<template #suffix>
|
||||
<ElSelect v-model="item.listing_price_currency" style="width: 64px">
|
||||
@@ -411,7 +411,7 @@
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="预估退税额" label-width="85px">
|
||||
<ElInput v-model="item.tax_refund" placeholder="请输入预估退税额">
|
||||
<template #suffix>
|
||||
<!-- <template #suffix>
|
||||
<ElSelect v-model="item.tax_refund_currency" style="width: 64px">
|
||||
<ElOption
|
||||
v-for="c in currencyOptions"
|
||||
@@ -420,6 +420,14 @@
|
||||
:value="c.currency_code"
|
||||
/>
|
||||
</ElSelect>
|
||||
</template> -->
|
||||
<template #suffix>
|
||||
<span style="font-size: 11px">
|
||||
{{
|
||||
((currencyOptions || []).find((c: any) => c.currency_code === baseForm.settlement_currency)?.currency_name) ||
|
||||
baseForm.settlement_currency
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
</ElInput>
|
||||
<ElInput v-model="item.tax_refund_currency_snapshot" type="hidden" />
|
||||
@@ -428,7 +436,7 @@
|
||||
</ElRow>
|
||||
<ElRow :gutter="12" class="item-row-wrap">
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="成交价" label-width="85px">
|
||||
<ElFormItem label="成交价" label-width="85px" :prop="'items.' + idx + '.unit_price'" required>
|
||||
<ElInput v-model="item.unit_price" placeholder="请输入成交价">
|
||||
<template #suffix>
|
||||
<ElSelect v-model="item.unit_price_currency" style="width: 64px">
|
||||
@@ -480,6 +488,24 @@
|
||||
</ElInput>
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="报关价" label-width="85px">
|
||||
<ElInput
|
||||
v-model="item.clearance_price"
|
||||
placeholder="正在计算报关价"
|
||||
:class="Number(item.clearance_price) < 0 ? 'profit-negative' : ''"
|
||||
>
|
||||
<template #suffix>
|
||||
<span style="font-size: 11px">
|
||||
{{
|
||||
((currencyOptions || []).find((c: any) => c.currency_code === baseForm.settlement_currency)?.currency_name) ||
|
||||
baseForm.settlement_currency
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
</ElInput>
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="车架号" label-width="85px">
|
||||
<ElInput v-model="item.vin" placeholder="请输入车架号"></ElInput>
|
||||
@@ -537,15 +563,15 @@
|
||||
<span class="border"></span>
|
||||
<span class="title">运输详情</span>
|
||||
</div>
|
||||
<ElForm :model="baseForm" class="foot-form">
|
||||
<ElForm :model="baseForm" :rules="transportFormRules" ref="transportFormRef" class="foot-form">
|
||||
<ElRow :gutter="12">
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="清关人" label-width="98px">
|
||||
<ElFormItem label="清关人" label-width="98px" prop="declarant_name" required>
|
||||
<ElInput v-model="baseForm.declarant_name" placeholder="请输入清关人" />
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="全款收齐日" label-width="98px">
|
||||
<ElFormItem label="全款收齐日" label-width="98px" prop="collect_all_date" required>
|
||||
<ElDatePicker
|
||||
v-model="baseForm.collect_all_date"
|
||||
value-format="YYYY-MM-DD"
|
||||
@@ -557,7 +583,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="国内收货港" label-width="98px">
|
||||
<ElFormItem label="国内收货港" label-width="98px" prop="domestic_port_id" required>
|
||||
<ElSelect
|
||||
v-model="baseForm.domestic_port_id"
|
||||
placeholder="请选择国内收货商"
|
||||
@@ -578,7 +604,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="运输方式" label-width="98px">
|
||||
<ElFormItem label="运输方式" label-width="98px" prop="shipping_method_id" required>
|
||||
<ElSelect
|
||||
v-model="baseForm.shipping_method_id"
|
||||
placeholder="请选择运输方式"
|
||||
@@ -600,7 +626,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="贸易条款" label-width="98px">
|
||||
<ElFormItem label="贸易条款" label-width="98px" prop="trade_term_id" required>
|
||||
<ElSelect
|
||||
v-model="baseForm.trade_term_id"
|
||||
placeholder="请选择"
|
||||
@@ -621,7 +647,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="清关目的港" label-width="98px">
|
||||
<ElFormItem label="清关目的港" label-width="98px" prop="clearance_port_id" required>
|
||||
<ElSelect
|
||||
v-model="baseForm.clearance_port_id"
|
||||
placeholder="请选择"
|
||||
@@ -642,7 +668,7 @@
|
||||
</ElFormItem>
|
||||
</ElCol>
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="4">
|
||||
<ElFormItem label="提车日期" label-width="98px">
|
||||
<ElFormItem label="提车日期" label-width="98px" prop="pick_up_date" required>
|
||||
<ElDatePicker
|
||||
v-model="baseForm.pick_up_date"
|
||||
type="date"
|
||||
@@ -664,7 +690,7 @@
|
||||
<div class="payment-section">
|
||||
<div class="payment-items">
|
||||
<div v-for="(payment, idx) in paymentItems" :key="idx" class="payment-item">
|
||||
<ElForm :model="payment" label-width="55px" class="payment-form">
|
||||
<ElForm :model="payment" :rules="paymentFormRules" :ref="(el) => setPaymentFormRef(el, idx)" label-width="55px" class="payment-form">
|
||||
<ElRow :gutter="12">
|
||||
<ElCol :sm="12" :md="12" :lg="6" :xl="6">
|
||||
<ElFormItem label="汇款人" label-width="55px">
|
||||
@@ -807,14 +833,14 @@
|
||||
plain
|
||||
size="large"
|
||||
class="submit-btn"
|
||||
@click="handleSubmit(0, undefined, '1')"
|
||||
@click="handleSubmitWithValidation(0)"
|
||||
>保存</ElButton
|
||||
>
|
||||
<ElButton
|
||||
type="primary"
|
||||
size="large"
|
||||
class="submit-btn"
|
||||
@click="handleSubmit(1, undefined, '1')"
|
||||
@click="handleSubmitWithValidation(1)"
|
||||
>提交</ElButton
|
||||
>
|
||||
</div>
|
||||
@@ -930,13 +956,70 @@
|
||||
import { CrmService } from '@/api/crmApi'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import { useStockingForm } from '@/composables/useStockingForm'
|
||||
import { onMounted } from 'vue'
|
||||
import { onMounted, ref, computed } from 'vue'
|
||||
|
||||
defineOptions({ name: 'CrmStockingFinalAdd' }) // 定义组件名称,用于 KeepAlive 缓存控制
|
||||
|
||||
const route = useRoute()
|
||||
const stocking_id = route.query.id
|
||||
const { getUserInfo } = useUserStore()
|
||||
// 表单引用
|
||||
const baseFormRef = ref()
|
||||
const itemsFormRef = ref()
|
||||
const transportFormRef = ref()
|
||||
const paymentFormRefs = ref<any[]>([])
|
||||
const setPaymentFormRef = (el: any, idx: number) => {
|
||||
if (el) paymentFormRefs.value[idx] = el
|
||||
}
|
||||
// 表单模型
|
||||
const formModel = computed(() => ({ items: items.value }))
|
||||
// 基础表单校验
|
||||
const baseFormRules = {
|
||||
biz_date: [{ required: true, message: '请选择日期', trigger: 'change' }],
|
||||
clearance_country_id: [{ required: true, message: '请选择清关目的国', trigger: 'change' }],
|
||||
customer_id: [{ required: true, message: '请选择客户', trigger: 'change' }]
|
||||
}
|
||||
// 明细动态校验
|
||||
const itemRules = computed(() => {
|
||||
const rules: any = {}
|
||||
items.value.forEach((_, idx) => {
|
||||
rules[`items.${idx}.sku_id`] = [{ required: true, message: '请选择车型', trigger: 'change' }]
|
||||
rules[`items.${idx}.color_exterior_snapshot`] = [
|
||||
{ required: true, message: '请选择颜色/外饰', trigger: 'change' }
|
||||
]
|
||||
rules[`items.${idx}.color_interior_snapshot`] = [
|
||||
{ required: true, message: '请选择颜色/内饰', trigger: 'change' }
|
||||
]
|
||||
rules[`items.${idx}.official_price`] = [
|
||||
{ required: true, message: '请输入官方指导价', trigger: 'blur' }
|
||||
]
|
||||
rules[`items.${idx}.listing_price`] = [
|
||||
{ required: true, message: '请输入二手挂牌价', trigger: 'blur' }
|
||||
]
|
||||
rules[`items.${idx}.unit_price`] = [
|
||||
{ required: true, message: '请输入成交价', trigger: 'blur' }
|
||||
]
|
||||
})
|
||||
return rules
|
||||
})
|
||||
// 运输详情校验
|
||||
const transportFormRules = {
|
||||
declarant_name: [{ required: true, message: '请输入清关人', trigger: 'blur' }],
|
||||
collect_all_date: [{ required: true, message: '请选择全款收齐日', trigger: 'change' }],
|
||||
domestic_port_id: [{ required: true, message: '请选择国内收货港', trigger: 'change' }],
|
||||
shipping_method_id: [{ required: true, message: '请选择运输方式', trigger: 'change' }],
|
||||
trade_term_id: [{ required: true, message: '请选择贸易条款', trigger: 'change' }],
|
||||
clearance_port_id: [{ required: true, message: '请选择清关目的港', trigger: 'change' }],
|
||||
pick_up_date: [{ required: true, message: '请选择提车日期', trigger: 'change' }]
|
||||
}
|
||||
// 收款信息校验(最终页为回显,不强校验;保留以便需要时启用)
|
||||
const paymentFormRules = {
|
||||
remitter_name: [{ required: true, message: '请输入汇款人', trigger: 'blur' }],
|
||||
remit_country_id: [{ required: true, message: '请选择汇款国', trigger: 'change' }],
|
||||
remit_date: [{ required: true, message: '请选择汇款日期', trigger: 'change' }],
|
||||
account_id: [{ required: true, message: '请选择账户', trigger: 'change' }],
|
||||
amount: [{ required: true, message: '请输入金额', trigger: 'blur' }]
|
||||
}
|
||||
// 使用公共的备货单表单逻辑
|
||||
const {
|
||||
// 数据
|
||||
@@ -1005,6 +1088,21 @@
|
||||
await getdetilfn()
|
||||
}
|
||||
})
|
||||
// 提交前统一校验
|
||||
const handleSubmitWithValidation = async (type: number) => {
|
||||
try {
|
||||
await baseFormRef.value?.validate()
|
||||
await itemsFormRef.value?.validate()
|
||||
await transportFormRef.value?.validate()
|
||||
for (let i = 0; i < paymentItems.value.length; i++) {
|
||||
const refForm = paymentFormRefs.value[i]
|
||||
if (refForm) await refForm.validate()
|
||||
}
|
||||
await handleSubmit(type, undefined, '1')
|
||||
} catch (e) {
|
||||
// 校验失败不提交
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
Reference in New Issue
Block a user