【需求开发】发货管理 完成基础页面展示

pull/2/head
zengchenxi 9 months ago
parent 98ef234623
commit 7394fb9ea7

@ -20,6 +20,7 @@ export interface DeliverOrderVO {
status: number
receivePersonName: string
receiveAddress: string
active: string
}
// 查询发货订单分页
@ -58,3 +59,7 @@ export const exportDeliverOrder = async (params) => {
export const getDeliverOrderSubListByDeliveryOrderId = async (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 {
path?: string
type?: string
url: string
createTime?: Date[]
businessType: string
businessId: number

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

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

@ -238,4 +238,6 @@ export enum DICT_TYPE {
HELI_PROJECT_ORDER_APPROVE_STATUS = 'heli_project_order_approve_status', // 项目单据批准页状态
HELI_PROJECT_ORDER_ALTER_STATUS = 'heli_project_order_alter_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
ref="formRef"
:model="formData"
:rules="formRules"
:rules="subFormRules"
v-loading="formLoading"
label-width="0px"
:inline-message="true"
@ -11,7 +11,7 @@
<el-table-column label="序号" type="index" width="100" />
<el-table-column label="业务类 发货清单|其他清单 DELIVER_LIST|OTHER_LIST" min-width="150">
<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-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_DELIVER_LIST_TYPE)"
@ -25,28 +25,28 @@
</el-table-column>
<el-table-column label="名称,唯一" min-width="150">
<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-form-item>
</template>
</el-table-column>
<el-table-column label="图号" min-width="150">
<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-form-item>
</template>
</el-table-column>
<el-table-column label="数量" min-width="150">
<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-form-item>
</template>
</el-table-column>
<el-table-column label="单位" min-width="150">
<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-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)"
@ -60,21 +60,21 @@
</el-table-column>
<el-table-column label="重量(T)" min-width="150">
<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-form-item>
</template>
</el-table-column>
<el-table-column label="尺寸(米)" min-width="150">
<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-form-item>
</template>
</el-table-column>
<el-table-column label="子项类型" min-width="150">
<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-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_DELIVER_MATERIAL_TYPE)"
@ -88,14 +88,14 @@
</el-table-column>
<el-table-column label="备注" min-width="150">
<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-form-item>
</template>
</el-table-column>
<el-table-column label="状态,1表示正常2表示禁用" min-width="150">
<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 label="1">请选择字典生成</el-radio>
</el-radio-group>
@ -122,7 +122,7 @@ const props = defineProps<{
}>()
const formLoading = ref(false) //
const formData = ref([])
const formRules = reactive({
const subFormRules = reactive({
deliveryOrderId: [{ required: true, message: '订单id不能为空', trigger: 'blur' }],
category: [{ required: true, message: '业务类 发货清单|其他清单 DELIVER_LIST|OTHER_LIST不能为空', trigger: 'change' }],
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
type="primary"
plain
@click="openForm('create')"
@click="openDetail('create')"
v-hasPermi="['heli:deliver-order:create']"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
@ -170,6 +170,7 @@ defineOptions({ name: 'DeliverOrder' })
const message = useMessage() //
const { t } = useI18n() //
const router = useRouter()
const loading = ref(true) //
const list = ref([]) //
@ -225,9 +226,14 @@ const resetQuery = () => {
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
const openDetail = (type: string, id?: number) => {
router.push({
name: 'DeliverOrderDetail',
query: {
active: type,
id: id
}
})
}
/** 删除按钮操作 */

Loading…
Cancel
Save