|
|
@@ -10,47 +10,86 @@
|
|
|
ref="formRef"
|
|
|
:model="formData"
|
|
|
:rules="formRules"
|
|
|
- label-width="120px"
|
|
|
+ label-width="100px"
|
|
|
:disabled="mode === 'view'"
|
|
|
>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="出货编号" prop="lotserial">
|
|
|
- <el-input v-model="formData.lotserial" placeholder="请输入出货编号" />
|
|
|
+ <el-form-item label="发货单号" prop="id">
|
|
|
+ <el-input v-model="formData.id" placeholder="请输入发货单号(留空自动生成)" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="出货日期" prop="shippingdate">
|
|
|
- <el-date-picker
|
|
|
- v-model="formData.shippingdate"
|
|
|
- type="date"
|
|
|
- placeholder="请选择出货日期"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
+ <el-form-item label="销售单号" prop="ordNbr">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.ordNbr"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ placeholder="请选择销售单号"
|
|
|
style="width: 100%"
|
|
|
- />
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in salesOrderOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="出货地点" prop="shippingsite">
|
|
|
- <el-input v-model="formData.shippingsite" placeholder="请输入出货地点" />
|
|
|
+ <el-form-item label="客户" prop="soldTo">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.soldTo"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ placeholder="请选择客户"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in customerOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="收货人" prop="consignee">
|
|
|
- <el-input v-model="formData.consignee" placeholder="请输入收货人" />
|
|
|
+ <el-form-item label="发货日期" prop="shipDate">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.shipDate"
|
|
|
+ type="date"
|
|
|
+ placeholder="请选择发货日期"
|
|
|
+ value-format="x"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="联系方式" prop="telephone">
|
|
|
- <el-input v-model="formData.telephone" placeholder="请输入联系方式" />
|
|
|
+ <el-form-item label="部门" prop="department">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.department"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ placeholder="请选择部门"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in departmentOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="收货地址" prop="shippingaddress">
|
|
|
- <el-input v-model="formData.shippingaddress" placeholder="请输入收货地址" />
|
|
|
+ <el-form-item label="状态" prop="status">
|
|
|
+ <el-input v-model="formData.status" placeholder="请输入状态" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -61,7 +100,7 @@
|
|
|
<el-input
|
|
|
v-model="formData.remark"
|
|
|
type="textarea"
|
|
|
- :rows="3"
|
|
|
+ :rows="2"
|
|
|
placeholder="请输入备注"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
@@ -71,11 +110,11 @@
|
|
|
<!-- 子表 -->
|
|
|
<el-divider content-position="left">发货明细</el-divider>
|
|
|
<div class="table-toolbar">
|
|
|
- <el-button
|
|
|
- v-if="mode !== 'view'"
|
|
|
- type="primary"
|
|
|
- :icon="Plus"
|
|
|
- size="small"
|
|
|
+ <el-button
|
|
|
+ v-if="mode !== 'view'"
|
|
|
+ type="primary"
|
|
|
+ :icon="Plus"
|
|
|
+ size="small"
|
|
|
@click="handleAddRow"
|
|
|
>
|
|
|
添加
|
|
|
@@ -83,105 +122,73 @@
|
|
|
</div>
|
|
|
|
|
|
<el-table :data="formData.items" border stripe max-height="400">
|
|
|
- <el-table-column prop="Line" label="项次" width="80">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.Line" />
|
|
|
- <span v-else>{{ row.Line }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="OrdNbr" label="订单号" width="150">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.OrdNbr" />
|
|
|
- <span v-else>{{ row.OrdNbr }}</span>
|
|
|
- </template>
|
|
|
+ <el-table-column prop="line" label="项次" width="70" align="center">
|
|
|
+ <template #default="{ $index }">{{ $index + 1 }}</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="OrdLine" label="订单项次" width="100">
|
|
|
+ <el-table-column prop="ordNbr" label="订单号" width="140">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.OrdLine" />
|
|
|
- <span v-else>{{ row.OrdLine }}</span>
|
|
|
+ <el-input v-if="mode !== 'view'" v-model="row.ordNbr" size="small" />
|
|
|
+ <span v-else>{{ row.ordNbr }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="ContainerItem" label="集装箱零件" width="150">
|
|
|
+ <el-table-column prop="ordLine" label="订单项次" width="90">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.ContainerItem" />
|
|
|
- <span v-else>{{ row.ContainerItem }}</span>
|
|
|
+ <el-input v-if="mode !== 'view'" v-model="row.ordLine" size="small" />
|
|
|
+ <span v-else>{{ row.ordLine }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="Descr" label="描述" width="180">
|
|
|
+ <el-table-column prop="containerItem" label="物料编号" width="140">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.Descr" />
|
|
|
- <span v-else>{{ row.Descr }}</span>
|
|
|
+ <el-input v-if="mode !== 'view'" v-model="row.containerItem" size="small" />
|
|
|
+ <span v-else>{{ row.containerItem }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="UM" label="单位" width="80">
|
|
|
+ <el-table-column prop="descr" label="物料名称" width="160">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.UM" />
|
|
|
- <span v-else>{{ row.UM }}</span>
|
|
|
+ <el-input v-if="mode !== 'view'" v-model="row.descr" size="small" />
|
|
|
+ <span v-else>{{ row.descr }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="Location" label="库位" width="120">
|
|
|
+ <el-table-column prop="um" label="单位" width="70">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.Location" />
|
|
|
- <span v-else>{{ row.Location }}</span>
|
|
|
+ <el-input v-if="mode !== 'view'" v-model="row.um" size="small" />
|
|
|
+ <span v-else>{{ row.um }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="LotSerial" label="批次号" width="150">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.LotSerial" />
|
|
|
- <span v-else>{{ row.LotSerial }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="QtyToShip" label="发货数量" width="120">
|
|
|
+ <el-table-column prop="qtyToShip" label="发货数量" width="100">
|
|
|
<template #default="{ row }">
|
|
|
<el-input-number
|
|
|
v-if="mode !== 'view'"
|
|
|
- v-model="row.QtyToShip"
|
|
|
+ v-model="row.qtyToShip"
|
|
|
:min="0"
|
|
|
:controls="false"
|
|
|
+ size="small"
|
|
|
style="width: 100%"
|
|
|
/>
|
|
|
- <span v-else>{{ row.QtyToShip }}</span>
|
|
|
+ <span v-else>{{ row.qtyToShip }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="PickingQty" label="已备数" width="100">
|
|
|
+ <el-table-column prop="location" label="库位" width="100">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input-number
|
|
|
- v-if="mode !== 'view'"
|
|
|
- v-model="row.PickingQty"
|
|
|
- :min="0"
|
|
|
- :controls="false"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
- <span v-else>{{ row.PickingQty }}</span>
|
|
|
+ <el-input v-if="mode !== 'view'" v-model="row.location" size="small" />
|
|
|
+ <span v-else>{{ row.location }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="RealQty" label="已发数" width="100">
|
|
|
+ <el-table-column prop="lotSerial" label="批次号" width="120">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input-number
|
|
|
- v-if="mode !== 'view'"
|
|
|
- v-model="row.RealQty"
|
|
|
- :min="0"
|
|
|
- :controls="false"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
- <span v-else>{{ row.RealQty }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="Status" label="状态" width="100">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.Status" />
|
|
|
- <span v-else>{{ row.Status }}</span>
|
|
|
+ <el-input v-if="mode !== 'view'" v-model="row.lotSerial" size="small" />
|
|
|
+ <span v-else>{{ row.lotSerial }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="Remark" label="备注" min-width="150">
|
|
|
+ <el-table-column prop="remark" label="备注" min-width="120">
|
|
|
<template #default="{ row }">
|
|
|
- <el-input v-if="mode !== 'view'" v-model="row.Remark" type="textarea" :rows="1" />
|
|
|
- <span v-else>{{ row.Remark }}</span>
|
|
|
+ <el-input v-if="mode !== 'view'" v-model="row.remark" size="small" />
|
|
|
+ <span v-else>{{ row.remark }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column v-if="mode !== 'view'" label="操作" width="100" fixed="right">
|
|
|
+ <el-table-column v-if="mode !== 'view'" label="操作" width="80" fixed="right" align="center">
|
|
|
<template #default="{ $index }">
|
|
|
- <el-button type="danger" link :icon="Delete" @click="handleDeleteRow($index)">删除</el-button>
|
|
|
+ <el-button type="danger" link :icon="Delete" @click="handleDeleteRow($index)" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
@@ -200,64 +207,175 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref, reactive, computed } from 'vue'
|
|
|
+import { ref, reactive, computed, nextTick } from 'vue'
|
|
|
import { Plus, Delete } from '@element-plus/icons-vue'
|
|
|
-import { getShipmentDetail, createShipment, updateShipment } from '@/api/jiaohuo/order'
|
|
|
+import {
|
|
|
+ getShipmentDetail,
|
|
|
+ createShipment,
|
|
|
+ updateShipment,
|
|
|
+ getSalesOrderOptions,
|
|
|
+ getCustomerOptions,
|
|
|
+ getDepartmentOptions
|
|
|
+} from '@/api/jiaohuo/order'
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
|
|
|
const dialogVisible = ref(false)
|
|
|
const submitLoading = ref(false)
|
|
|
-const mode = ref('add') // add, edit, view
|
|
|
+const mode = ref('add')
|
|
|
const currentId = ref(null)
|
|
|
|
|
|
const formRef = ref(null)
|
|
|
|
|
|
+// 下拉列表数据
|
|
|
+const salesOrderOptions = ref([])
|
|
|
+const customerOptions = ref([])
|
|
|
+const departmentOptions = ref([])
|
|
|
+
|
|
|
const formData = reactive({
|
|
|
- lotserial: '',
|
|
|
- shippingdate: '',
|
|
|
- shippingsite: '',
|
|
|
- consignee: '',
|
|
|
- telephone: '',
|
|
|
- shippingaddress: '',
|
|
|
+ id: '',
|
|
|
+ ordNbr: '',
|
|
|
+ soldTo: '',
|
|
|
+ shipDate: '',
|
|
|
+ department: '',
|
|
|
+ status: '',
|
|
|
remark: '',
|
|
|
items: []
|
|
|
})
|
|
|
|
|
|
const formRules = {
|
|
|
- lotserial: [{ required: true, message: '请输入出货编号', trigger: 'blur' }],
|
|
|
- shippingdate: [{ required: true, message: '请选择出货日期', trigger: 'change' }],
|
|
|
- shippingsite: [{ required: true, message: '请输入出货地点', trigger: 'blur' }]
|
|
|
+ shipDate: [{ required: true, message: '请选择发货日期', trigger: 'change' }]
|
|
|
}
|
|
|
|
|
|
const dialogTitle = computed(() => {
|
|
|
- const titleMap = {
|
|
|
- add: '添加发货单',
|
|
|
- edit: '编辑发货单',
|
|
|
- view: '查看发货单'
|
|
|
- }
|
|
|
+ const titleMap = { add: '添加发货单', edit: '编辑发货单', view: '查看发货单' }
|
|
|
return titleMap[mode.value]
|
|
|
})
|
|
|
|
|
|
const emit = defineEmits(['success'])
|
|
|
|
|
|
+// 加载下拉列表数据
|
|
|
+const loadOptions = async () => {
|
|
|
+ try {
|
|
|
+ const [salesRes, custRes, deptRes] = await Promise.all([
|
|
|
+ getSalesOrderOptions(),
|
|
|
+ getCustomerOptions(),
|
|
|
+ getDepartmentOptions()
|
|
|
+ ])
|
|
|
+ salesOrderOptions.value = salesRes || []
|
|
|
+ customerOptions.value = custRes || []
|
|
|
+ departmentOptions.value = deptRes || []
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载下拉列表失败', error)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 获取当前日期字符串
|
|
|
+const getCurrentDate = () => {
|
|
|
+ const now = new Date()
|
|
|
+ const year = now.getFullYear()
|
|
|
+ const month = String(now.getMonth() + 1).padStart(2, '0')
|
|
|
+ const day = String(now.getDate()).padStart(2, '0')
|
|
|
+ return `${year}-${month}-${day}`
|
|
|
+}
|
|
|
+
|
|
|
+// 获取默认表单数据
|
|
|
+const getDefaultFormData = () => ({
|
|
|
+ id: '',
|
|
|
+ ordNbr: '',
|
|
|
+ soldTo: '',
|
|
|
+ shipDate: getCurrentDate(), // 默认当前日期
|
|
|
+ department: '',
|
|
|
+ status: '',
|
|
|
+ remark: '',
|
|
|
+ items: []
|
|
|
+})
|
|
|
+
|
|
|
// 打开对话框
|
|
|
-const open = async (type, id) => {
|
|
|
+const open = async (type, dataOrId) => {
|
|
|
mode.value = type
|
|
|
- currentId.value = id
|
|
|
+ currentId.value = null
|
|
|
+
|
|
|
+ if (type === 'add') {
|
|
|
+ // 重置表单并设置默认日期(时间戳格式)
|
|
|
+ formData.id = ''
|
|
|
+ formData.ordNbr = ''
|
|
|
+ formData.soldTo = ''
|
|
|
+ formData.shipDate = Date.now()
|
|
|
+ formData.department = ''
|
|
|
+ formData.status = ''
|
|
|
+ formData.remark = ''
|
|
|
+ formData.items = []
|
|
|
+ }
|
|
|
+
|
|
|
dialogVisible.value = true
|
|
|
|
|
|
+ // 异步加载下拉列表
|
|
|
+ loadOptions()
|
|
|
+
|
|
|
if (type === 'add') {
|
|
|
- resetForm()
|
|
|
- } else if (id) {
|
|
|
- await loadData(id)
|
|
|
+ if (Array.isArray(dataOrId) && dataOrId.length > 0) {
|
|
|
+ loadShippingPlanData(dataOrId)
|
|
|
+ }
|
|
|
+ } else if (dataOrId) {
|
|
|
+ currentId.value = dataOrId
|
|
|
+ await loadData(dataOrId)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 加载出货计划数据
|
|
|
+const loadShippingPlanData = (plans) => {
|
|
|
+ try {
|
|
|
+ const firstPlan = plans[0]
|
|
|
+ formData.ordNbr = firstPlan.billNo || ''
|
|
|
+ formData.soldTo = firstPlan.customNo || ''
|
|
|
+ // 如果出货计划有有效日期则转换为时间戳,否则使用当前日期
|
|
|
+ if (firstPlan.shippingDate) {
|
|
|
+ const dateStr = String(firstPlan.shippingDate).substring(0, 10)
|
|
|
+ const timestamp = new Date(dateStr).getTime()
|
|
|
+ // 确保日期有效
|
|
|
+ formData.shipDate = isNaN(timestamp) ? Date.now() : timestamp
|
|
|
+ } else {
|
|
|
+ formData.shipDate = Date.now()
|
|
|
+ }
|
|
|
+
|
|
|
+ formData.items = plans.map((plan) => ({
|
|
|
+ ordNbr: plan.billNo || '',
|
|
|
+ ordLine: plan.ordLine || '',
|
|
|
+ containerItem: plan.itemNum || '',
|
|
|
+ descr: plan.itemName || '',
|
|
|
+ um: plan.um || '',
|
|
|
+ location: '',
|
|
|
+ lotSerial: plan.lotserial || '',
|
|
|
+ qtyToShip: plan.qty || 0,
|
|
|
+ remark: ''
|
|
|
+ }))
|
|
|
+
|
|
|
+ ElMessage.success('已加载 ' + plans.length + ' 条出货计划')
|
|
|
+ } catch (error) {
|
|
|
+ ElMessage.error('加载出货计划数据失败:' + (error.message || '未知错误'))
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 加载数据
|
|
|
const loadData = async (id) => {
|
|
|
try {
|
|
|
- const { data } = await getShipmentDetail(id)
|
|
|
- Object.assign(formData, data)
|
|
|
+ const data = await getShipmentDetail(id)
|
|
|
+ if (data) {
|
|
|
+ formData.id = data.id || ''
|
|
|
+ formData.ordNbr = data.ordNbr || ''
|
|
|
+ formData.soldTo = data.soldTo || ''
|
|
|
+ // 转换日期为时间戳
|
|
|
+ if (data.shipDate) {
|
|
|
+ const dateStr = String(data.shipDate).substring(0, 10)
|
|
|
+ formData.shipDate = new Date(dateStr).getTime()
|
|
|
+ } else {
|
|
|
+ formData.shipDate = null
|
|
|
+ }
|
|
|
+ formData.department = data.department || ''
|
|
|
+ formData.status = data.status || ''
|
|
|
+ formData.remark = data.remark || ''
|
|
|
+ formData.items = data.items || []
|
|
|
+ }
|
|
|
} catch (error) {
|
|
|
ElMessage.error('加载数据失败:' + (error.message || '未知错误'))
|
|
|
}
|
|
|
@@ -265,45 +383,28 @@ const loadData = async (id) => {
|
|
|
|
|
|
// 重置表单
|
|
|
const resetForm = () => {
|
|
|
- formRef.value?.resetFields()
|
|
|
- Object.assign(formData, {
|
|
|
- lotserial: '',
|
|
|
- shippingdate: '',
|
|
|
- shippingsite: '',
|
|
|
- consignee: '',
|
|
|
- telephone: '',
|
|
|
- shippingaddress: '',
|
|
|
- remark: '',
|
|
|
- items: []
|
|
|
- })
|
|
|
+ Object.assign(formData, getDefaultFormData())
|
|
|
+ formRef.value?.clearValidate()
|
|
|
}
|
|
|
|
|
|
// 添加行
|
|
|
const handleAddRow = () => {
|
|
|
formData.items.push({
|
|
|
- Line: formData.items.length + 1,
|
|
|
- OrdNbr: '',
|
|
|
- OrdLine: '',
|
|
|
- ContainerItem: '',
|
|
|
- Descr: '',
|
|
|
- UM: '',
|
|
|
- Location: '',
|
|
|
- LotSerial: '',
|
|
|
- QtyToShip: 0,
|
|
|
- PickingQty: 0,
|
|
|
- RealQty: 0,
|
|
|
- Status: '',
|
|
|
- Remark: ''
|
|
|
+ ordNbr: formData.ordNbr || '',
|
|
|
+ ordLine: '',
|
|
|
+ containerItem: '',
|
|
|
+ descr: '',
|
|
|
+ um: '',
|
|
|
+ location: '',
|
|
|
+ lotSerial: '',
|
|
|
+ qtyToShip: 0,
|
|
|
+ remark: ''
|
|
|
})
|
|
|
}
|
|
|
|
|
|
// 删除行
|
|
|
const handleDeleteRow = (index) => {
|
|
|
formData.items.splice(index, 1)
|
|
|
- // 重新编号
|
|
|
- formData.items.forEach((item, idx) => {
|
|
|
- item.Line = idx + 1
|
|
|
- })
|
|
|
}
|
|
|
|
|
|
// 提交
|
|
|
@@ -318,11 +419,27 @@ const handleSubmit = async () => {
|
|
|
|
|
|
submitLoading.value = true
|
|
|
|
|
|
+ // 转换时间戳为日期字符串
|
|
|
+ const formatDate = (timestamp) => {
|
|
|
+ if (!timestamp) return ''
|
|
|
+ const d = new Date(Number(timestamp))
|
|
|
+ const year = d.getFullYear()
|
|
|
+ const month = String(d.getMonth() + 1).padStart(2, '0')
|
|
|
+ const day = String(d.getDate()).padStart(2, '0')
|
|
|
+ return `${year}-${month}-${day}`
|
|
|
+ }
|
|
|
+
|
|
|
+ const submitData = {
|
|
|
+ ...formData,
|
|
|
+ shipDate: formatDate(formData.shipDate),
|
|
|
+ recId: currentId.value
|
|
|
+ }
|
|
|
+
|
|
|
if (mode.value === 'add') {
|
|
|
- await createShipment(formData)
|
|
|
+ await createShipment(submitData)
|
|
|
ElMessage.success('添加成功')
|
|
|
} else {
|
|
|
- await updateShipment(currentId.value, formData)
|
|
|
+ await updateShipment(submitData)
|
|
|
ElMessage.success('保存成功')
|
|
|
}
|
|
|
|
|
|
@@ -343,9 +460,7 @@ const handleClose = () => {
|
|
|
currentId.value = null
|
|
|
}
|
|
|
|
|
|
-defineExpose({
|
|
|
- open
|
|
|
-})
|
|
|
+defineExpose({ open })
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
@@ -353,4 +468,3 @@ defineExpose({
|
|
|
margin-bottom: 12px;
|
|
|
}
|
|
|
</style>
|
|
|
-
|