pull/2/head
siontion 9 months ago
commit 7b2cdca3b3

@ -42,7 +42,7 @@ public class MaterialServiceImpl implements MaterialService {
private void validateMaterialRepeat(String code, Long id) { private void validateMaterialRepeat(String code, Long id) {
Long repeat = materialMapper.selectCount(new LambdaQueryWrapper<MaterialDO>() {{ Long repeat = materialMapper.selectCount(new LambdaQueryWrapper<MaterialDO>() {{
eq(MaterialDO::getCode, code); eq(MaterialDO::getCode, code);
eq(id != null, MaterialDO::getId, id); ne(id != null, MaterialDO::getId, id);
last("LIMIT 1"); last("LIMIT 1");
}}); }});
if(repeat != null && repeat.longValue() > 0){ if(repeat != null && repeat.longValue() > 0){

@ -20,6 +20,7 @@ export interface DeliverOrderVO {
status: number status: number
receivePersonName: string receivePersonName: string
receiveAddress: string receiveAddress: string
active: string
} }
// 查询发货订单分页 // 查询发货订单分页
@ -58,3 +59,7 @@ export const exportDeliverOrder = async (params) => {
export const getDeliverOrderSubListByDeliveryOrderId = async (deliveryOrderId) => { export const getDeliverOrderSubListByDeliveryOrderId = async (deliveryOrderId) => {
return await request.get({ url: `/heli/deliver-order/deliver-order-sub/list-by-delivery-order-id?deliveryOrderId=` + deliveryOrderId }) return await request.get({ url: `/heli/deliver-order/deliver-order-sub/list-by-delivery-order-id?deliveryOrderId=` + deliveryOrderId })
} }
export async function operateDeliverOrder(data: DeliverOrderVO) {
return await request.post({ url: `/heli/deliver-order/operate`, data })
}

@ -3,6 +3,7 @@ import request from '@/config/axios'
export interface FilePageReqVO extends PageParam { export interface FilePageReqVO extends PageParam {
path?: string path?: string
type?: string type?: string
url: string
createTime?: Date[] createTime?: Date[]
businessType: string businessType: string
businessId: number businessId: number

@ -302,6 +302,7 @@ export default {
terminate: 'Terminate', terminate: 'Terminate',
detailArchive: 'Detail', detailArchive: 'Detail',
alter: 'Alter', alter: 'Alter',
deliver: 'Deliver',
typeCreate: 'Dict Type Create', typeCreate: 'Dict Type Create',
typeUpdate: 'Dict Type Eidt', typeUpdate: 'Dict Type Eidt',
dataCreate: 'Dict Data Create', dataCreate: 'Dict Data Create',

@ -303,6 +303,7 @@ export default {
terminate: '终止', terminate: '终止',
detailArchive: '详情', detailArchive: '详情',
alter: '变更', alter: '变更',
deliver: '发货',
typeCreate: '字典类型新增', typeCreate: '字典类型新增',
typeUpdate: '字典类型编辑', typeUpdate: '字典类型编辑',
dataCreate: '字典数据新增', dataCreate: '字典数据新增',

@ -238,4 +238,6 @@ export enum DICT_TYPE {
HELI_PROJECT_ORDER_APPROVE_STATUS = 'heli_project_order_approve_status', // 项目单据批准页状态 HELI_PROJECT_ORDER_APPROVE_STATUS = 'heli_project_order_approve_status', // 项目单据批准页状态
HELI_PROJECT_ORDER_ALTER_STATUS = 'heli_project_order_alter_status', // 项目单据变更页状态 HELI_PROJECT_ORDER_ALTER_STATUS = 'heli_project_order_alter_status', // 项目单据变更页状态
HELI_DELIVER_ORDER_STATUS = 'heli_deliver_order_status', // 发货单状态 HELI_DELIVER_ORDER_STATUS = 'heli_deliver_order_status', // 发货单状态
HELI_DELIVER_MODE = 'heli_deliver_mode', // 发货方式
HELI_DELIVER_MATERIAL_TYPE = 'heli_deliver_material_type', // 发货物料类型
} }

@ -2,7 +2,7 @@
<el-form <el-form
ref="formRef" ref="formRef"
:model="formData" :model="formData"
:rules="formRules" :rules="subFormRules"
v-loading="formLoading" v-loading="formLoading"
label-width="0px" label-width="0px"
:inline-message="true" :inline-message="true"
@ -11,7 +11,7 @@
<el-table-column label="序号" type="index" width="100" /> <el-table-column label="序号" type="index" width="100" />
<el-table-column label="业务类 发货清单|其他清单 DELIVER_LIST|OTHER_LIST" min-width="150"> <el-table-column label="业务类 发货清单|其他清单 DELIVER_LIST|OTHER_LIST" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.category`" :rules="formRules.category" class="mb-0px!"> <el-form-item :prop="`${$index}.category`" :rules="subFormRules.category" class="mb-0px!">
<el-select v-model="row.category" placeholder="请选择业务类 发货清单|其他清单 DELIVER_LIST|OTHER_LIST"> <el-select v-model="row.category" placeholder="请选择业务类 发货清单|其他清单 DELIVER_LIST|OTHER_LIST">
<el-option <el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_DELIVER_LIST_TYPE)" v-for="dict in getStrDictOptions(DICT_TYPE.HELI_DELIVER_LIST_TYPE)"
@ -25,28 +25,28 @@
</el-table-column> </el-table-column>
<el-table-column label="名称,唯一" min-width="150"> <el-table-column label="名称,唯一" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.name`" :rules="formRules.name" class="mb-0px!"> <el-form-item :prop="`${$index}.name`" :rules="subFormRules.name" class="mb-0px!">
<el-input v-model="row.name" placeholder="请输入名称,唯一" /> <el-input v-model="row.name" placeholder="请输入名称,唯一" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="图号" min-width="150"> <el-table-column label="图号" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.blueprintNo`" :rules="formRules.blueprintNo" class="mb-0px!"> <el-form-item :prop="`${$index}.blueprintNo`" :rules="subFormRules.blueprintNo" class="mb-0px!">
<el-input v-model="row.blueprintNo" placeholder="请输入图号" /> <el-input v-model="row.blueprintNo" placeholder="请输入图号" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数量" min-width="150"> <el-table-column label="数量" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.amount`" :rules="formRules.amount" class="mb-0px!"> <el-form-item :prop="`${$index}.amount`" :rules="subFormRules.amount" class="mb-0px!">
<el-input v-model="row.amount" placeholder="请输入数量" /> <el-input v-model="row.amount" placeholder="请输入数量" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位" min-width="150"> <el-table-column label="单位" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.unit`" :rules="formRules.unit" class="mb-0px!"> <el-form-item :prop="`${$index}.unit`" :rules="subFormRules.unit" class="mb-0px!">
<el-select v-model="row.unit" placeholder="请选择单位"> <el-select v-model="row.unit" placeholder="请选择单位">
<el-option <el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)" v-for="dict in getStrDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)"
@ -60,21 +60,21 @@
</el-table-column> </el-table-column>
<el-table-column label="重量(T)" min-width="150"> <el-table-column label="重量(T)" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.weight`" :rules="formRules.weight" class="mb-0px!"> <el-form-item :prop="`${$index}.weight`" :rules="subFormRules.weight" class="mb-0px!">
<el-input v-model="row.weight" placeholder="请输入重量(T)" /> <el-input v-model="row.weight" placeholder="请输入重量(T)" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="尺寸(米)" min-width="150"> <el-table-column label="尺寸(米)" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.size`" :rules="formRules.size" class="mb-0px!"> <el-form-item :prop="`${$index}.size`" :rules="subFormRules.size" class="mb-0px!">
<el-input v-model="row.size" placeholder="请输入尺寸(米)" /> <el-input v-model="row.size" placeholder="请输入尺寸(米)" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="子项类型" min-width="150"> <el-table-column label="子项类型" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.subType`" :rules="formRules.subType" class="mb-0px!"> <el-form-item :prop="`${$index}.subType`" :rules="subFormRules.subType" class="mb-0px!">
<el-select v-model="row.subType" placeholder="请选择子项类型"> <el-select v-model="row.subType" placeholder="请选择子项类型">
<el-option <el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_DELIVER_MATERIAL_TYPE)" v-for="dict in getStrDictOptions(DICT_TYPE.HELI_DELIVER_MATERIAL_TYPE)"
@ -88,14 +88,14 @@
</el-table-column> </el-table-column>
<el-table-column label="备注" min-width="150"> <el-table-column label="备注" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" :rules="formRules.remark" class="mb-0px!"> <el-form-item :prop="`${$index}.remark`" :rules="subFormRules.remark" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" /> <el-input v-model="row.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="状态,1表示正常2表示禁用" min-width="150"> <el-table-column label="状态,1表示正常2表示禁用" min-width="150">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.status`" :rules="formRules.status" class="mb-0px!"> <el-form-item :prop="`${$index}.status`" :rules="subFormRules.status" class="mb-0px!">
<el-radio-group v-model="row.status"> <el-radio-group v-model="row.status">
<el-radio label="1">请选择字典生成</el-radio> <el-radio label="1">请选择字典生成</el-radio>
</el-radio-group> </el-radio-group>
@ -122,7 +122,7 @@ const props = defineProps<{
}>() }>()
const formLoading = ref(false) // const formLoading = ref(false) //
const formData = ref([]) const formData = ref([])
const formRules = reactive({ const subFormRules = reactive({
deliveryOrderId: [{ required: true, message: '订单id不能为空', trigger: 'blur' }], deliveryOrderId: [{ required: true, message: '订单id不能为空', trigger: 'blur' }],
category: [{ required: true, message: '业务类 发货清单|其他清单 DELIVER_LIST|OTHER_LIST不能为空', trigger: 'change' }], category: [{ required: true, message: '业务类 发货清单|其他清单 DELIVER_LIST|OTHER_LIST不能为空', trigger: 'change' }],
name: [{ required: true, message: '名称,唯一不能为空', trigger: 'blur' }], name: [{ required: true, message: '名称,唯一不能为空', trigger: 'blur' }],

@ -0,0 +1,744 @@
<template>
<!-- 公共详情 -->
<el-card class="hl-card">
<template #header>
<span><span v-html="dialogTitle"></span></span>
</template>
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="140px"
v-loading="formLoading"
>
<!-- 基础信息 横向布局 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">基础信息</span>
</template>
<el-row>
<el-col :span="6">
<el-form-item label="发货单号" prop="code">
<el-input disabled v-model="formData.code" placeholder="系统自动生成" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="项目编号" prop="saleOrderIds">
<el-input disabled v-model="formData.saleOrderCode" placeholder="请输入项目编号" >
<template #append><el-button :icon="Search" /></template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="contractNo" label="合同号">
<el-input v-model="formData.contractNo" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="property" label="性质">
<el-input v-model="formData.property" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="发货日期" prop="deliverDate">
<el-date-picker
v-model="formData.deliverDate"
type="date"
value-format="x"
placeholder="选择发货日期"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="customerId" label="客户名称">
<el-input v-model="formData.customerName" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="mouldName" label="模具名称">
<el-input v-model="formData.mouldName" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="发货单状态" prop="deliverStatus">
{{getDictLabel(DICT_TYPE.HELI_DELIVER_ORDER_STATUS, formData.deliverStatus)}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="发货备注" prop="remark">
<el-input
type="textarea"
v-model="formData.remark"
show-word-limit
maxlength="200"
/>
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">发货信息</span>
</template>
<el-row>
<el-col :span="6">
<el-form-item label="发货人姓名" prop="deliverPerson">
<UserSelect v-model="formData.deliverPerson" @update:newValue="handleSelectedUser" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="发货人电话" prop="deliverPersonMobile">
<el-input v-model="formData.deliverPersonMobile" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="发货方式" prop="deliverMode">
<el-select v-model="formData.deliverMode" placeholder="请选择发货方式">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_DELIVER_MODE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="发货单位" prop="deliverCompany">
<el-input value="杭州合立机械有限公司" disabled />
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">收货信息</span>
</template>
<el-row>
<el-col :span="6">
<el-form-item label="收货人姓名" prop="receivePersonName">
<el-input v-model="formData.receivePersonName" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="收货人电话" prop="receivePersonMobile">
<el-input v-model="formData.receivePersonMobile" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货详细地址" prop="receiveAddress">
<el-input v-model="formData.receiveAddress" />
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">物流信息</span>
</template>
<el-row>
<el-col :span="6">
<el-form-item label="司机姓名" prop="transportDriverName">
<el-input v-model="formData.transportDriverName" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="司机电话" prop="transportDriverMobile">
<el-input v-model="formData.transportDriverMobile" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车牌号" prop="transportBusNumber">
<el-input v-model="formData.transportBusNumber" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="重量(T)" prop="transportWeight">
<el-input v-model="formData.transportWeight" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="位置(米)" prop="transportSize">
<el-input v-model="formData.transportSize" />
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">发货清单</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-form
ref="subFormRef"
:model="formData.deliverOrderSubs"
:rules="subFormRules"
v-loading="subFormLoading"
label-width="0"
>
<el-table
:data="formData.deliverOrderSubs"
class="hl-table"
>
<el-table-column label="序号" type="index" width="100" />
<el-table-column min-width="150" align="center">
<template #header> <span class="hl-table_header">*</span>子项目名称 </template>
<template #default="scope">
{{scope.row.name}}
</template>
</el-table-column>
<el-table-column label="子项目图号" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.blueprintNo`" :rules="subFormRules.blueprintNo" class="mb-0px!">
<el-input v-model="row.blueprintNo" placeholder="请输入子项目图号" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="本次发货数量" min-width="150">
<template #header> <span class="hl-table_header">*</span>本次发货数量 </template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.amount`" :rules="subFormRules.amount" class="mb-0px!">
<el-input v-model="row.amount" placeholder="请输入本次发货数量" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="单位" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.unit`" :rules="subFormRules.unit" class="mb-0px!">
{{getDictLabel(DICT_TYPE.HELI_MATERIAL_UNIT, row.unit)}}
</el-form-item>
</template>
</el-table-column>
<el-table-column label="重量(T)" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.weight`" class="mb-0px!">
<el-input v-model="row.weight" placeholder="请输入重量(T)" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="尺寸(米)" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.size`" class="mb-0px!">
<el-input v-model="row.size" placeholder="请输入尺寸(米)" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="备注" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="240">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click.prevent="onDeleteItem(scope.$index)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">其他物料清单</span>
</template>
<el-row>
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem2"
>新增</el-button
>
</el-col>
<el-col>
<el-card class="hl-incard">
<el-form
ref="otherSubFormRef"
:model="formData.deliverOrderOtherSubs"
:rules="subFormRules"
v-loading="subFormLoading"
label-width="0"
>
<el-table
:data="formData.deliverOrderOtherSubs"
class="hl-table"
>
<el-table-column label="序号" type="index" width="100" />
<el-table-column min-width="150" align="center">
<template #header> <span class="hl-table_header">*</span>名称 </template>
<template #default="scope">
{{scope.row.name}}
</template>
</el-table-column>
<el-table-column label="所属类型" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.subType`" :rules="subFormRules.subType" class="mb-0px!">
<el-select v-model="row.subType" placeholder="请选择子项类型">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_DELIVER_MATERIAL_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="本次发货数量" min-width="150">
<template #header> <span class="hl-table_header">*</span>本次发货数量 </template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.amount`" :rules="subFormRules.amount" class="mb-0px!">
<el-input v-model="row.amount" placeholder="请输入本次发货数量" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="单位" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.unit`" :rules="subFormRules.unit" class="mb-0px!">
<el-select v-model="row.unit" placeholder="请选择单位">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="备注" min-width="150">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.remark`" class="mb-0px!">
<el-input v-model="row.remark" placeholder="请输入备注" />
</el-form-item>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="240">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click.prevent="onDeleteItem2(scope.$index)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">附件信息</span>
</template>
<el-row>
<el-col>
<el-upload
ref="attachmentUploadRef"
multiple
:limit="10"
:action="uploadUrl"
:headers="uploadHeaders"
name="files"
:show-file-list="false"
:auto-upload="false"
:data="uploadData"
:on-change="attachmentUploadChange"
class="upload-file-uploader"
>
<el-button type="primary"><Icon icon="ep:upload-filled" />上传</el-button>
</el-upload>
</el-col>
<el-col>
<el-card class="hl-incard">
<el-table :data="formData.attachments" class="hl-table">
<el-table-column prop="name" label="文件名称" align="center" />
<el-table-column
prop="createTime"
align="center"
label="上传时间"
:formatter="dateFormatter"
/>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)"
>
删除
</el-button>
<el-button
v-if="!!scope.row.id"
link
type="primary"
size="small"
@click="downloadAttachment(scope.row.name, scope.row.url)"
>
下载
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
</el-form>
<div class="text-center hl-footer">
<el-button @click="goback" size="large"> </el-button>
<el-button @click="submitForm('SAVE')" type="success" :disabled="formLoading" size="large"
> </el-button
>
<el-button @click="submitForm('DELIVER')" type="primary" :disabled="formLoading" size="large"
> </el-button
>
</div>
</el-card>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import type { UploadProps, UploadUserFile } from 'element-plus'
import {getStrDictOptions, DICT_TYPE, getIntDictOptions, getDictLabel} from '@/utils/dict'
import * as DeliverOrderApi from '@/api/heli/deliverorder'
import {getOperateLogPage} from "@/api/system/operatelog";
import {deleteFileLogic, downloadFile, getFilePage} from "@/api/infra/file";
import {Search, Plus} from "@element-plus/icons-vue";
import UserSelect from "@/views/heli/hlvuestyle/userSelect.vue";
import {getAccessToken, getTenantId} from "@/utils/auth";
import {dateFormatter} from "@/utils/formatTime";
import download from "@/utils/download";
import { inject } from 'vue'
const reload = inject('reload')
const { t } = useI18n() //
const message = useMessage() //
const router = useRouter()
const { query } = useRoute()
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
code: undefined,
saleOrderIds: undefined,
saleOrderCode: undefined,
contractNo: undefined,
property: undefined,
customerId: undefined,
customerName: undefined,
mouldName: undefined,
deliverDate: undefined,
deliverStatus: 1,
deliverPerson: undefined,
deliverPersonMobile: undefined,
deliverMode: undefined,
receivePersonMobile: undefined,
transportDriverName: undefined,
transportDriverMobile: undefined,
transportBusNumber: undefined,
transportWeight: undefined,
transportSize: undefined,
remark: undefined,
status: undefined,
receivePersonName: undefined,
receiveAddress: undefined,
deliverOrderSubs: [],
deliverOrderOtherSubs: [],
attachments: [],
operateLogs: [],
idcard1: undefined,
idcard2: undefined,
active: undefined,
})
const formRules = reactive({
saleOrderIds: [{ required: true, message: '项目编号不能为空', trigger: 'blur' }],
property: [{ required: true, message: '性质不能为空', trigger: 'blur' }],
mouldName: [{ required: true, message: '模具名称不能为空', trigger: 'blur' }],
customerId: [{ required: true, message: '客户id不能为空', trigger: 'blur' }],
deliverCompany: [{ required: true, message: '发货单位不能为空', trigger: 'blur' }],
deliverDate: [{ required: true, message: '发货日期不能为空', trigger: 'blur' }],
deliverStatus: [{ required: true, message: '发货单状态不能为空', trigger: 'change' }],
deliverPerson: [{ required: true, message: '发货人不能为空', trigger: 'blur' }],
deliverPersonMobile: [{ required: true, message: '发货人电话不能为空', trigger: 'blur' }],
deliverMode: [{ required: true, message: '发货方式不能为空', trigger: 'change' }],
receivePersonMobile: [{ required: true, message: '收货人电话不能为空', trigger: 'blur' }],
receivePersonName: [{ required: true, message: '收货人姓名不能为空', trigger: 'blur' }],
receiveAddress: [{ required: true, message: '收货详细地址不能为空', trigger: 'blur' }],
})
const subFormLoading = ref(false) //
const subFormRules = reactive({
deliveryOrderId: [{ required: true, message: '订单id不能为空', trigger: 'blur' }],
subType: [{ required: true, message: '所属类型不能为空', trigger: 'change' }],
name: [{ required: true, message: '名称,唯一不能为空', trigger: 'blur' }],
amount: [{ required: true, message: '本次发货数量不能为空', trigger: 'blur' }],
unit: [{ required: true, message: '单位不能为空', trigger: 'change' }],
})
const formRef = ref() // Ref
/** 子表的表单 */
const subFormRef = ref()
const otherSubFormRef = ref()
const submitForm = async (active) => {
//
formData.value.active = active
await formRef.value.validate()
//
try {
await subFormRef.value.validate()
await otherSubFormRef.value.validate()
} catch (e) {
return
}
//
formLoading.value = true
try {
const data = formData.value as unknown as DeliverOrderApi.DeliverOrderVO
const orderId = await DeliverOrderApi.operateDeliverOrder(data)
message.success(t('common.operationSuccess'))
//
if(attachmentUploadFiles.value.length > 0){
uploadData.value.businessId = orderId
attachmentUploadRef.value!.submit()
}
//
if(formData.value.idcard1){
let fileParams = {
pageNo: 1,
pageSize: 1,
url: formData.value.idcard1
}
const idcard1FileRet = await getFilePage(fileParams);
}
//
if (active != 'SAVE') {
goback()
} else {
//
query.active = 'update'
query.id = orderId
reload()
}
} finally {
formLoading.value = false
}
}
const goback = () => {
resetForm()
router.back()
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
code: undefined,
saleOrderIds: undefined,
saleOrderCode: undefined,
contractNo: undefined,
property: undefined,
customerId: undefined,
customerName: undefined,
mouldName: undefined,
deliverDate: undefined,
deliverStatus: 1,
deliverPerson: undefined,
deliverPersonMobile: undefined,
deliverMode: undefined,
receivePersonMobile: undefined,
transportDriverName: undefined,
transportDriverMobile: undefined,
transportBusNumber: undefined,
transportWeight: undefined,
transportSize: undefined,
remark: undefined,
status: undefined,
receivePersonName: undefined,
receiveAddress: undefined,
deliverOrderSubs: [],
deliverOrderOtherSubs: [],
attachments: [],
operateLogs: [],
idcard1: undefined,
idcard2: undefined,
active: undefined,
}
formRef.value?.resetFields()
}
const onAddItem2 = () => {
const row = {
id: undefined,
deliveryOrderId: undefined,
category: "OTHER_LIST",
name: undefined,
blueprintNo: undefined,
amount: undefined,
unit: undefined,
weight: undefined,
size: undefined,
subType: undefined,
remark: undefined,
status: undefined,
}
row.deliveryOrderId = formData.value.id
formData.value.deliverOrderOtherSubs.push(row)
}
//
const handleSelectedUser = (newValue: any) => {
formData.value.deliverPerson = newValue.id
}
const attachmentUploadRef = ref()
const attachmentUploadFiles = ref<UploadUserFile[]>([])
const idcardBusinessFileType = ref('ID_CARD')
const businessType = ref('DELIVER_ORDER')
const uploadUrl = ref(import.meta.env.VITE_UPLOAD_BATCH_URL)
const idCardUploadData = ref({
businessType: businessType.value,
businessId: formData.value.id,
businessFileType: idcardBusinessFileType.value
})
const uploadData = ref({
businessType: businessType.value,
businessId: formData.value.id
})
const uploadHeaders = ref({
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
})
const attachmentUploadChange = (file, files) => {
attachmentUploadFiles.value = files
formData.value.attachments = formData.value.attachments.filter((value, index, array) => {
return value.id
})
for (let i = 0; i < files.length; i++) {
let file = files[i]
file.createTime = new Date()
formData.value.attachments.push(file)
}
//
formData.value.attachments.sort((v1, v2) => {
return v1.createTime - v2.createTime > 0
})
}
/** 删除子项操作 */
const onDeleteItem = (index) => {
formData.value.deliverOrderSubs.splice(index, 1)
}
const onDeleteItem2 = (index) => {
formData.value.deliverOrderOtherSubs.splice(index, 1)
}
//
const handleDeleteAttachment = async (index, type) => {
const deletedAttachments = formData.value.attachments.splice(index, 1)
for (let i = 0; i < deletedAttachments.length; i++) {
const attachment = deletedAttachments[i]
if (attachment.id) {
//
await deleteFileLogic(attachment.id)
}
//
attachmentUploadFiles.value = attachmentUploadFiles.value.filter((file1) => {
return file1.name != attachment.name
})
}
}
//
const downloadAttachment = async (name, url) => {
const data = await downloadFile(url)
download.any(data, name)
}
/** 打开弹窗 */
const queryData = async (type: string, id?: number) => {
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
formLoading.value = true
try {
if (id) {
formData.value = await DeliverOrderApi.getDeliverOrder(id)
//
formData.value.deliverOrderSubs =
await DeliverOrderApi.getDeliverOrderSubListByDeliveryOrderId(id)
//
let logParams = {
pageNo: 1,
pageSize: 99,
businessId: id,
businessType: businessType.value
}
formData.value.operateLogs = (await getOperateLogPage(logParams)).list
//
let attParams = {
pageNo: 1,
pageSize: 99,
businessId: id,
businessType: businessType.value
}
const fileList = (await getFilePage(attParams)).list
//
if(fileList && fileList.length > 0){
const idcardFiles = fileList.filter((file) => file.businessFileType == idcardBusinessFileType.value);
if(idcardFiles && idcardFiles.length > 0){
formData.value.idcard1 = idcardFiles[0].url;
formData.value.idcard2 = idcardFiles.length > 1 ? idcardFiles[1].url : undefined;
}
formData.value.attachments = fileList.filter((file) => file.businessFileType != idcardBusinessFileType.value);
}
}
} finally {
formLoading.value = false
}
}
onMounted(() => {
queryData(query.active, query.id)
})
</script>
<style>
a {
color: #409eff;
text-decoration: none;
}
</style>

@ -76,7 +76,7 @@
<el-button <el-button
type="primary" type="primary"
plain plain
@click="openForm('create')" @click="openDetail('create')"
v-hasPermi="['heli:deliver-order:create']" v-hasPermi="['heli:deliver-order:create']"
> >
<Icon icon="ep:plus" class="mr-5px" /> 新增 <Icon icon="ep:plus" class="mr-5px" /> 新增
@ -170,6 +170,7 @@ defineOptions({ name: 'DeliverOrder' })
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
const router = useRouter()
const loading = ref(true) // const loading = ref(true) //
const list = ref([]) // const list = ref([]) //
@ -225,9 +226,14 @@ const resetQuery = () => {
} }
/** 添加/修改操作 */ /** 添加/修改操作 */
const formRef = ref() const openDetail = (type: string, id?: number) => {
const openForm = (type: string, id?: number) => { router.push({
formRef.value.open(type, id) name: 'DeliverOrderDetail',
query: {
active: type,
id: id
}
})
} }
/** 删除按钮操作 */ /** 删除按钮操作 */

@ -462,7 +462,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="5">
<el-form-item label="有无图纸/数模" prop="hasBlueprint"> <el-form-item label="有无图纸/数模" prop="hasBlueprint">
<el-radio-group <el-radio-group
:disabled="detailDisabled" :disabled="detailDisabled"
@ -513,7 +513,7 @@
label-width="0" label-width="0"
> >
<el-table :data="formData.projectOrderSubs" class="hl-table"> <el-table :data="formData.projectOrderSubs" class="hl-table">
<el-table-column label="序号" type="index" width="100" /> <el-table-column label="序号" type="index" width="80" />
<el-table-column min-width="150" align="center"> <el-table-column min-width="150" align="center">
<template #header> <span class="hl-table_header">*</span>子项目名称 </template> <template #header> <span class="hl-table_header">*</span>子项目名称 </template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
@ -620,7 +620,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" min-width="150" align="center"> <el-table-column label="备注" min-width="180" align="center">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item <el-form-item
:prop="`${$index}.remark`" :prop="`${$index}.remark`"
@ -636,7 +636,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="240"> <el-table-column label="操作" align="center" width="150">
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-if="'update,create'.indexOf(query.active) > -1 && !formData.hasAlter" v-if="'update,create'.indexOf(query.active) > -1 && !formData.hasAlter"

@ -13,9 +13,9 @@
<td colspan="6"> <td colspan="6">
<span style="font-size: 20px; font-weight: 700">开发项目启动单</span> <span style="font-size: 20px; font-weight: 700">开发项目启动单</span>
</td> </td>
<td colspan="2"> <td colspan="2" style="padding: none">
<div style="border-bottom: 1px solid #666">项目编号</div> <div style="border-bottom: 1px solid #666; padding-bottom: 10px">项目编号</div>
<div>{{ formData.code }}</div> <div style="padding-top: 10px">{{ formData.code }}</div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -108,7 +108,7 @@
<td class="xh"> 序号 </td> <td class="xh"> 序号 </td>
<td colspan="2"> 名称 </td> <td colspan="2"> 名称 </td>
<td> 设备型号 </td> <td> 设备型号 </td>
<td> 简称 </td> <td style="width:10%"> 简称 </td>
<td> 数量 </td> <td> 数量 </td>
<td> 主要材料 </td> <td> 主要材料 </td>
<td colspan="3"> 子项目编号 </td> <td colspan="3"> 子项目编号 </td>
@ -139,19 +139,19 @@
</tbody> </tbody>
<tbody> <tbody>
<tr> <tr>
<td colspan="3"> 编制/日期 </td> <td colspan="4" style="width:33%"> 编制/日期 </td>
<td colspan="3"> 审核/日期 </td> <td colspan="3" style="width:33%"> 审核/日期 </td>
<td colspan="4"> 批准/日期 </td> <td colspan="3" style="width:33%"> 批准/日期 </td>
</tr> </tr>
<tr> <tr>
<td colspan="3">{{formData.creatorName}}</td> <td colspan="4">{{formData.creatorName}}</td>
<td colspan="3">{{formData.auditUserName}}</td> <td colspan="3">{{formData.auditUserName}}</td>
<td colspan="4">{{formData.approveUserName}}</td> <td colspan="3">{{formData.approveUserName}}</td>
</tr> </tr>
<tr> <tr>
<td colspan="3">{{formatDate(new Date(formData.createTime), 'YYYY-MM-DD')}}</td> <td colspan="4">{{formatDate(new Date(formData.createTime), 'YYYY-MM-DD')}}</td>
<td colspan="3">{{formatDate(new Date(formData.auditTime), 'YYYY-MM-DD')}}</td> <td colspan="3">{{formatDate(new Date(formData.auditTime), 'YYYY-MM-DD')}}</td>
<td colspan="4">{{formatDate(new Date(formData.approveTime), 'YYYY-MM-DD')}}</td> <td colspan="3">{{formatDate(new Date(formData.approveTime), 'YYYY-MM-DD')}}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

@ -1,7 +1,11 @@
<template> <template>
<ContentWrap> <el-card class="hl-card">
<template #header>
<span>实时库存 </span>
</template>
<ContentWrap class="borderxx">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="108px">
<el-form-item label="物料编码" prop="matCode"> <el-form-item label="物料编码" prop="matCode">
<el-input v-model="queryParams.matCode" placeholder="物料编码" clearable @keyup.enter="handleQuery" <el-input v-model="queryParams.matCode" placeholder="物料编码" clearable @keyup.enter="handleQuery"
class="!w-240px" /> class="!w-240px" />
@ -39,7 +43,7 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"> <el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 搜索 <Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button> </el-button>
<el-button @click="resetQuery"> <el-button @click="resetQuery">
@ -51,24 +55,25 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table">
<el-table-column label="物料编码" align="center" prop="matCode" /> <el-table-column label="物料编码" align="center" prop="matCode" fixed min-width="120" />
<el-table-column label="物料名称" align="center" prop="matName" /> <el-table-column label="物料名称" align="center" prop="matName" fixed min-width="120"/>
<el-table-column label="物料类型" align="center" prop="matType" /> <el-table-column label="物料类型" align="center" prop="matType" min-width="120"/>
<el-table-column label="物料简称" align="center" prop="shortName" /> <el-table-column label="物料简称" align="center" prop="shortName" min-width="120"/>
<el-table-column label="规格/型号" align="center" prop="matSpec" /> <el-table-column label="规格/型号" align="center" prop="matSpec" min-width="120"/>
<el-table-column label="品牌" align="center" prop="matBrand" /> <el-table-column label="品牌" align="center" prop="matBrand" min-width="120"/>
<el-table-column label="仓库" align="center" prop="whName" /> <el-table-column label="仓库" align="center" prop="whName" min-width="120"/>
<el-table-column label="库区" align="center" prop="rgName" /> <el-table-column label="库区" align="center" prop="rgName" min-width="120"/>
<el-table-column label="库位" align="center" prop="pnName" /> <el-table-column label="库位" align="center" prop="pnName" min-width="120"/>
<el-table-column label="批次号" align="center" prop="lotNo" /> <el-table-column label="批次号" align="center" prop="lotNo" min-width="120"/>
<el-table-column label="变动数量" align="center" prop="storageOkQty" /> <el-table-column label="库存数量" align="center" prop="storageOkQty" min-width="120"/>
<el-table-column label="库存单位" align="center" prop="matUnit" /> <el-table-column label="库存单位" align="center" prop="matUnit" min-width="120"/>
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" /> @pagination="getList" />
</ContentWrap> </ContentWrap>
</el-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

@ -1,42 +1,95 @@
<template> <template>
<ContentWrap> <el-card class="hl-card">
<template #header>
<span>库存变动日志</span>
</template>
<ContentWrap class="borderxx">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> <el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="120px"
>
<el-form-item label="物料编码" prop="matCode"> <el-form-item label="物料编码" prop="matCode">
<el-input v-model="queryParams.matCode" placeholder="物料编码" clearable @keyup.enter="handleQuery" <el-input
class="!w-240px" /> v-model="queryParams.matCode"
placeholder="物料编码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item label="物料名称" prop="matName"> <el-form-item label="物料名称" prop="matName">
<el-input v-model="queryParams.matName" placeholder="物料名称" clearable @keyup.enter="handleQuery" <el-input
class="!w-240px" /> v-model="queryParams.matName"
placeholder="物料名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item label="物料类型" prop="matType"> <el-form-item label="物料类型" prop="matType">
<el-select v-model="queryParams.matType" placeholder="下拉选择" clearable class="!w-240px"> <el-select
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_MATERIAL_TYPE)" :key="dict.label" :label="dict.label" v-model="queryParams.matType"
:value="dict.label" /> placeholder="下拉选择"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_MATERIAL_TYPE)"
:key="dict.label"
:label="dict.label"
:value="dict.label"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="批次号" prop="lotNo"> <el-form-item label="批次号" prop="lotNo">
<el-input v-model="queryParams.lotNo" placeholder="批次号" clearable @keyup.enter="handleQuery" class="!w-240px" /> <el-input
v-model="queryParams.lotNo"
placeholder="批次号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item label="业务单据编号" prop="stockNo"> <el-form-item label="业务单据编号" prop="stockNo">
<el-input v-model="queryParams.stockNo" placeholder="业务单据编号" clearable @keyup.enter="handleQuery" <el-input
class="!w-240px" /> v-model="queryParams.stockNo"
placeholder="业务单据编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item label="变动方向" prop="stockType"> <el-form-item label="变动方向" prop="stockType">
<el-select v-model="queryParams.stockType" placeholder="下拉选择" clearable class="!w-240px"> <el-select
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STORAGE_TYPE)" :key="dict.value" :label="dict.label" v-model="queryParams.stockType"
:value="dict.value" /> placeholder="下拉选择"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STORAGE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="上游单据编号" prop="headerNo"> <el-form-item label="上游单据编号" prop="headerNo">
<el-input v-model="queryParams.headerNo" placeholder="上游单据编号" clearable @keyup.enter="handleQuery" <el-input
class="!w-240px" /> v-model="queryParams.headerNo"
placeholder="上游单据编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"> <el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 搜索 <Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button> </el-button>
<el-button @click="resetQuery"> <el-button @click="resetQuery">
@ -48,28 +101,32 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table">
<el-table-column label="物料编码" align="center" prop="matCode" /> <el-table-column label="物料编码" align="center" prop="matCode" min-width="120" fixed />
<el-table-column label="物料名称" align="center" prop="matName" /> <el-table-column label="物料名称" align="center" prop="matName" min-width="120" fixed />
<el-table-column label="物料类型" align="center" prop="matType" /> <el-table-column label="物料类型" align="center" prop="matType" min-width="120" />
<el-table-column label="物料简称" align="center" prop="shortName" /> <el-table-column label="物料简称" align="center" prop="shortName" min-width="120" />
<el-table-column label="规格/型号" align="center" prop="matSpec" /> <el-table-column label="规格/型号" align="center" prop="matSpec" min-width="120"/>
<el-table-column label="品牌" align="center" prop="matBrand" /> <el-table-column label="品牌" align="center" prop="matBrand" min-width="120"/>
<el-table-column label="业务单据编号" align="center" prop="stockNo" /> <el-table-column label="业务单据编号" align="center" prop="stockNo" min-width="120"/>
<el-table-column label="业务单据类型" align="center" prop="stockTypeName" /> <el-table-column label="业务单据类型" align="center" prop="stockTypeName" min-width="120"/>
<el-table-column label="上游单据编号" align="center" prop="headerNo" /> <el-table-column label="上游单据编号" align="center" prop="headerNo" min-width="120"/>
<el-table-column label="仓库" align="center" prop="whName" /> <el-table-column label="仓库" align="center" prop="whName" min-width="120"/>
<el-table-column label="库区" align="center" prop="rgName" /> <el-table-column label="库区" align="center" prop="rgName" min-width="120"/>
<el-table-column label="库位" align="center" prop="pnName" /> <el-table-column label="库位" align="center" prop="pnName" min-width="120"/>
<el-table-column label="批次号" align="center" prop="lotNo" /> <el-table-column label="批次号" align="center" prop="lotNo" min-width="120"/>
<el-table-column label="变动数量" align="center" prop="storageOkQty" /> <el-table-column label="变动数量" align="center" prop="storageOkQty" fixed="right" min-width="120"/>
<el-table-column label="库存单位" align="center" prop="matUnit" /> <el-table-column label="库存单位" align="center" prop="matUnit" fixed="right" min-width="120"/>
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" <Pagination
@pagination="getList" /> :total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap> </ContentWrap>
</el-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -104,7 +161,7 @@ const queryParams = reactive({
pnId: undefined, pnId: undefined,
stockNo: undefined, stockNo: undefined,
stockType: undefined, stockType: undefined,
headerNo: undefined, headerNo: undefined
}) })
const queryFormRef = ref() // const queryFormRef = ref() //

Loading…
Cancel
Save