|
|
|
@ -1,16 +1,16 @@
|
|
|
|
|
<template>
|
|
|
|
|
<!-- 公共详情 -->
|
|
|
|
|
<el-card class="hl-card">
|
|
|
|
|
<el-card class="hl-card" style="position: relative">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><span v-html="dialogTitle"></span>页</span>
|
|
|
|
|
</template>
|
|
|
|
|
<el-form
|
|
|
|
|
ref="formRef"
|
|
|
|
|
:model="formData"
|
|
|
|
|
:rules="formRules"
|
|
|
|
|
label-width="140px"
|
|
|
|
|
v-loading="formLoading"
|
|
|
|
|
>
|
|
|
|
|
<div class="abstatus">
|
|
|
|
|
<div v-if="formData.deliverStatus == 2">
|
|
|
|
|
<img src="/src/assets/imgs/status/deliver.png" alt="" />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="140px" v-loading="formLoading">
|
|
|
|
|
<!-- 基础信息 横向布局 -->
|
|
|
|
|
<el-card class="hl-card-info">
|
|
|
|
|
<template #header>
|
|
|
|
@ -24,37 +24,31 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="项目编号" prop="saleOrderIds">
|
|
|
|
|
<el-input disabled v-model="formData.saleOrderCode" placeholder="请输入项目编号" >
|
|
|
|
|
<el-input disabled v-model="formData.saleOrderCode" placeholder="请输入项目编号">
|
|
|
|
|
<template #append><el-button :disabled="active != 'create'" @click="openProjectOrderDialog" :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-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-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
|
|
|
|
|
:disabled="detailDisabled"
|
|
|
|
|
v-model="formData.deliverDate"
|
|
|
|
|
type="date"
|
|
|
|
|
value-format="x"
|
|
|
|
|
placeholder="选择发货日期"
|
|
|
|
|
/>
|
|
|
|
|
<el-date-picker :disabled="detailDisabled" 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-input v-model="formData.customerName" disabled />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
@ -71,13 +65,7 @@
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="发货备注" prop="remark">
|
|
|
|
|
<el-input
|
|
|
|
|
:disabled="detailDisabled"
|
|
|
|
|
type="textarea"
|
|
|
|
|
v-model="formData.remark"
|
|
|
|
|
show-word-limit
|
|
|
|
|
maxlength="200"
|
|
|
|
|
/>
|
|
|
|
|
<el-input :disabled="detailDisabled" type="textarea" v-model="formData.remark" show-word-limit maxlength="200" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
@ -98,14 +86,9 @@
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="发货方式" prop="deliverMode">
|
|
|
|
|
<el-form-item label="发货方式" >
|
|
|
|
|
<el-select :disabled="detailDisabled" 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-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>
|
|
|
|
@ -124,19 +107,8 @@
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="收货人姓名" prop="receivePersonName">
|
|
|
|
|
<el-select :disabled="detailDisabled" v-model="formData.receivePersonName"
|
|
|
|
|
filterable
|
|
|
|
|
allow-create
|
|
|
|
|
clearable
|
|
|
|
|
@change="receiveOnChange"
|
|
|
|
|
@blur="e => { if(e.target.value) formData.receivePersonName = e.target.value;}"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="dict in receivePersonOptions"
|
|
|
|
|
:key="dict.name"
|
|
|
|
|
:label="dict.name"
|
|
|
|
|
:value="dict.name"
|
|
|
|
|
/>
|
|
|
|
|
<el-select :disabled="detailDisabled" v-model="formData.receivePersonName" filterable allow-create clearable @change="receiveOnChange" @blur="e => { if(e.target.value) formData.receivePersonName = e.target.value;}">
|
|
|
|
|
<el-option v-for="dict in receivePersonOptions" :key="dict.name" :label="dict.name" :value="dict.name" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
@ -147,20 +119,8 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="收货详细地址" prop="receiveAddress">
|
|
|
|
|
<el-select v-model="formData.receiveAddress"
|
|
|
|
|
filterable
|
|
|
|
|
allow-create
|
|
|
|
|
:disabled="detailDisabled"
|
|
|
|
|
@blur="e => { if(e.target.value) formData.receiveAddress = e.target.value;}"
|
|
|
|
|
clearable
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="dict in receivePersonAddressOptions"
|
|
|
|
|
:key="dict.address"
|
|
|
|
|
:label="dict.address"
|
|
|
|
|
:value="dict.address"
|
|
|
|
|
/>
|
|
|
|
|
<el-select v-model="formData.receiveAddress" filterable allow-create :disabled="detailDisabled" @blur="e => { if(e.target.value) formData.receiveAddress = e.target.value;}" clearable style="width: 100%">
|
|
|
|
|
<el-option v-for="dict in receivePersonAddressOptions" :key="dict.address" :label="dict.address" :value="dict.address" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
@ -209,17 +169,8 @@
|
|
|
|
|
<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-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>
|
|
|
|
@ -243,14 +194,7 @@
|
|
|
|
|
<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-number
|
|
|
|
|
:disabled="detailDisabled"
|
|
|
|
|
v-model="row.amount"
|
|
|
|
|
placeholder="请输入本次发货数量"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:min="1"
|
|
|
|
|
:precision="0"
|
|
|
|
|
/>
|
|
|
|
|
<el-input-number :disabled="detailDisabled" v-model="row.amount" placeholder="请输入本次发货数量" style="width: 100%" :min="1" :precision="0" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
@ -284,13 +228,7 @@
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="操作" align="center" width="100">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button
|
|
|
|
|
v-if="'update,create,deliver'.indexOf(active) > -1"
|
|
|
|
|
link
|
|
|
|
|
type="danger"
|
|
|
|
|
size="small"
|
|
|
|
|
@click.prevent="onDeleteItem(scope.$index)"
|
|
|
|
|
>
|
|
|
|
|
<el-button v-if="'update,create,deliver'.indexOf(active) > -1" link type="danger" size="small" @click.prevent="onDeleteItem(scope.$index)">
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
@ -308,23 +246,12 @@
|
|
|
|
|
</template>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col v-if="active != 'detail'">
|
|
|
|
|
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem2"
|
|
|
|
|
>新增</el-button
|
|
|
|
|
>
|
|
|
|
|
<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-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>
|
|
|
|
@ -339,12 +266,7 @@
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.subType`" :rules="subFormRules.subType" class="mb-0px!">
|
|
|
|
|
<el-select :disabled="detailDisabled" 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-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>
|
|
|
|
@ -353,14 +275,7 @@
|
|
|
|
|
<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-number
|
|
|
|
|
:disabled="detailDisabled"
|
|
|
|
|
v-model="row.amount"
|
|
|
|
|
placeholder="请输入本次发货数量"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:min="1"
|
|
|
|
|
:precision="0"
|
|
|
|
|
/>
|
|
|
|
|
<el-input-number :disabled="detailDisabled" v-model="row.amount" placeholder="请输入本次发货数量" style="width: 100%" :min="1" :precision="0" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
@ -369,12 +284,7 @@
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.unit`" :rules="subFormRules.unit" class="mb-0px!">
|
|
|
|
|
<el-select :disabled="detailDisabled" 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-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>
|
|
|
|
@ -388,13 +298,7 @@
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="操作" align="center" width="240">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button
|
|
|
|
|
v-if="'update,create,deliver'.indexOf(active) > -1"
|
|
|
|
|
link
|
|
|
|
|
type="danger"
|
|
|
|
|
size="small"
|
|
|
|
|
@click.prevent="onDeleteItem2(scope.$index)"
|
|
|
|
|
>
|
|
|
|
|
<el-button v-if="'update,create,deliver'.indexOf(active) > -1" link type="danger" size="small" @click.prevent="onDeleteItem2(scope.$index)">
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
@ -412,50 +316,23 @@
|
|
|
|
|
</template>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col v-if="active != 'detail'">
|
|
|
|
|
<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 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 prop="createTime" align="center" label="上传时间" :formatter="dateFormatter" />
|
|
|
|
|
<el-table-column label="操作" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button
|
|
|
|
|
v-if="'update,create,deliver'.indexOf(active) > -1"
|
|
|
|
|
link
|
|
|
|
|
type="danger"
|
|
|
|
|
size="small"
|
|
|
|
|
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)"
|
|
|
|
|
>
|
|
|
|
|
<el-button v-if="'update,create,deliver'.indexOf(active) > -1" 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 v-if="!!scope.row.id" link type="primary" size="small" @click="downloadAttachment(scope.row.name, scope.row.url)">
|
|
|
|
|
下载
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
@ -480,12 +357,7 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="userNickname" label="操作人" align="center" />
|
|
|
|
|
<el-table-column
|
|
|
|
|
label="操作时间"
|
|
|
|
|
align="center"
|
|
|
|
|
prop="startTime"
|
|
|
|
|
:formatter="dateFormatter"
|
|
|
|
|
/>
|
|
|
|
|
<el-table-column label="操作时间" align="center" prop="startTime" :formatter="dateFormatter" />
|
|
|
|
|
</el-table>
|
|
|
|
|
</el-card>
|
|
|
|
|
</el-col>
|
|
|
|
@ -494,12 +366,9 @@
|
|
|
|
|
</el-form>
|
|
|
|
|
<div class="text-center hl-footer">
|
|
|
|
|
<el-button @click="goback" size="large">取 消</el-button>
|
|
|
|
|
<el-button v-if="active != 'detail' && formData.deliverStatus == 1" @click="submitForm('SAVE')" type="success" :disabled="formLoading" size="large"
|
|
|
|
|
>保 存</el-button>
|
|
|
|
|
<el-button v-if="(((active != 'detail' && formData.id) || active == 'deliver') && formData.deliverStatus == 1)" @click="submitForm('DELIVER')" type="primary" :disabled="formLoading" size="large"
|
|
|
|
|
>发 货</el-button>
|
|
|
|
|
<el-button v-if="active == 'detail' && formData.deliverStatus == 2 && formData.id" type="primary" @click="printHandle" :disabled="formLoading" size="large"
|
|
|
|
|
>打印发货单</el-button>
|
|
|
|
|
<el-button v-if="active != 'detail' && formData.deliverStatus == 1" @click="submitForm('SAVE')" type="success" :disabled="formLoading" size="large">保 存</el-button>
|
|
|
|
|
<el-button v-if="(((active != 'detail' && formData.id) || active == 'deliver') && formData.deliverStatus == 1)" @click="submitForm('DELIVER')" type="primary" :disabled="formLoading" size="large">发 货</el-button>
|
|
|
|
|
<el-button v-if="active == 'detail' && formData.deliverStatus == 2 && formData.id" type="primary" @click="printHandle" :disabled="formLoading" size="large">打印发货单</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<ProjectOrderDialog ref="projectOrderDialog" @success="handleSelectedProjectOrder" />
|
|
|
|
@ -511,23 +380,23 @@ 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 { 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 { 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'
|
|
|
|
|
import {
|
|
|
|
|
getProjectOrder,
|
|
|
|
|
getProjectOrderSubListByProjectOrderId,
|
|
|
|
|
ProjectOrderVO
|
|
|
|
|
} from "@/api/heli/projectorder";
|
|
|
|
|
import {getCustomer} from "@/api/heli/customer";
|
|
|
|
|
import ProjectOrderDialog from "@/views/heli/deliverorder/projectOrderDialog.vue";
|
|
|
|
|
} from '@/api/heli/projectorder'
|
|
|
|
|
import { getCustomer } from '@/api/heli/customer'
|
|
|
|
|
import ProjectOrderDialog from '@/views/heli/deliverorder/projectOrderDialog.vue'
|
|
|
|
|
import ShipmentsPrint from './shipmentsPrint.vue' // 引入打印弹框
|
|
|
|
|
|
|
|
|
|
defineOptions({ name: 'DeliverOrderDetail' })
|
|
|
|
@ -590,7 +459,7 @@ const formRules = reactive({
|
|
|
|
|
deliverMode: [{ required: true, message: '发货方式不能为空', trigger: 'change' }],
|
|
|
|
|
receivePersonMobile: [{ required: true, message: '收货人电话不能为空', trigger: 'blur' }],
|
|
|
|
|
receivePersonName: [{ required: true, message: '收货人姓名不能为空', trigger: 'blur' }],
|
|
|
|
|
receiveAddress: [{ required: true, message: '收货详细地址不能为空', trigger: 'blur' }],
|
|
|
|
|
receiveAddress: [{ required: true, message: '收货详细地址不能为空', trigger: 'blur' }]
|
|
|
|
|
})
|
|
|
|
|
const subFormLoading = ref(false) // 子表单的加载中
|
|
|
|
|
const subFormRules = reactive({
|
|
|
|
@ -598,7 +467,7 @@ const subFormRules = reactive({
|
|
|
|
|
subType: [{ required: true, message: '所属类型不能为空', trigger: 'blur' }],
|
|
|
|
|
name: [{ required: true, message: '名称,唯一不能为空', trigger: 'blur' }],
|
|
|
|
|
amount: [{ required: true, message: '本次发货数量不能为空', trigger: 'blur' }],
|
|
|
|
|
unit: [{ required: true, message: '单位不能为空', trigger: 'blur' }],
|
|
|
|
|
unit: [{ required: true, message: '单位不能为空', trigger: 'blur' }]
|
|
|
|
|
})
|
|
|
|
|
const formRef = ref() // 表单 Ref
|
|
|
|
|
/** 子表的表单 */
|
|
|
|
@ -609,7 +478,7 @@ const submitForm = async (operate) => {
|
|
|
|
|
formData.value.active = operate
|
|
|
|
|
await formRef.value.validate()
|
|
|
|
|
// 校验子表单
|
|
|
|
|
if(active.value != 'create'){
|
|
|
|
|
if (active.value != 'create') {
|
|
|
|
|
await subFormRef.value.validate()
|
|
|
|
|
await otherSubFormRef.value.validate()
|
|
|
|
|
}
|
|
|
|
@ -617,11 +486,11 @@ const submitForm = async (operate) => {
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
// 设置类型
|
|
|
|
|
formData.value.deliverOrderSubs?.forEach(item => {
|
|
|
|
|
formData.value.deliverOrderSubs?.forEach((item) => {
|
|
|
|
|
item.category = 'DELIVER_LIST'
|
|
|
|
|
item.status = 1
|
|
|
|
|
})
|
|
|
|
|
formData.value.deliverOrderOtherSubs?.forEach(item => {
|
|
|
|
|
formData.value.deliverOrderOtherSubs?.forEach((item) => {
|
|
|
|
|
item.category = 'OTHER_LIST'
|
|
|
|
|
item.status = 1
|
|
|
|
|
})
|
|
|
|
@ -629,16 +498,16 @@ const submitForm = async (operate) => {
|
|
|
|
|
const orderId = await DeliverOrderApi.operateDeliverOrder(data)
|
|
|
|
|
message.success(t('common.operationSuccess'))
|
|
|
|
|
// 上传附件
|
|
|
|
|
if(attachmentUploadFiles.value.length > 0){
|
|
|
|
|
if (attachmentUploadFiles.value.length > 0) {
|
|
|
|
|
uploadData.value.businessId = orderId
|
|
|
|
|
attachmentUploadRef.value!.submit()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (operate == 'SAVE') {
|
|
|
|
|
if(active.value != 'deliver'){
|
|
|
|
|
if (active.value != 'deliver') {
|
|
|
|
|
active.value = 'update'
|
|
|
|
|
}
|
|
|
|
|
}else if(operate == 'DELIVER'){
|
|
|
|
|
} else if (operate == 'DELIVER') {
|
|
|
|
|
active.value = 'detail'
|
|
|
|
|
}
|
|
|
|
|
activeId.value = orderId
|
|
|
|
@ -691,7 +560,7 @@ const onAddItem2 = () => {
|
|
|
|
|
const row = {
|
|
|
|
|
id: undefined,
|
|
|
|
|
deliveryOrderId: undefined,
|
|
|
|
|
category: "OTHER_LIST",
|
|
|
|
|
category: 'OTHER_LIST',
|
|
|
|
|
name: undefined,
|
|
|
|
|
blueprintNo: undefined,
|
|
|
|
|
amount: undefined,
|
|
|
|
@ -700,10 +569,10 @@ const onAddItem2 = () => {
|
|
|
|
|
size: undefined,
|
|
|
|
|
subType: undefined,
|
|
|
|
|
remark: undefined,
|
|
|
|
|
status: undefined,
|
|
|
|
|
status: undefined
|
|
|
|
|
}
|
|
|
|
|
row.deliveryOrderId = formData.value.id
|
|
|
|
|
if(!formData.value.deliverOrderOtherSubs) {
|
|
|
|
|
if (!formData.value.deliverOrderOtherSubs) {
|
|
|
|
|
formData.value.deliverOrderOtherSubs = []
|
|
|
|
|
}
|
|
|
|
|
formData.value.deliverOrderOtherSubs.push(row)
|
|
|
|
@ -748,7 +617,7 @@ const attachmentUploadChange = (file, files) => {
|
|
|
|
|
|
|
|
|
|
/** 删除子项操作 */
|
|
|
|
|
const onDeleteItem = (index) => {
|
|
|
|
|
if(formData.value.deliverOrderSubs.length == 1){
|
|
|
|
|
if (formData.value.deliverOrderSubs.length == 1) {
|
|
|
|
|
message.warning('发货清单至少存在一条数据')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
@ -792,32 +661,34 @@ const queryData = async (type: string, id?: number) => {
|
|
|
|
|
formData.value.deliverCompany = '杭州合立机械有限公司'
|
|
|
|
|
|
|
|
|
|
// 性质
|
|
|
|
|
let properties = formData.value.property.split(",")
|
|
|
|
|
let property = "";
|
|
|
|
|
let properties = formData.value.property.split(',')
|
|
|
|
|
let property = ''
|
|
|
|
|
for (let i = 0; i < properties.length; i++) {
|
|
|
|
|
property += getDictLabel(DICT_TYPE.HELI_PROJECT_PROPERTY, properties[i]) + ",";
|
|
|
|
|
property += getDictLabel(DICT_TYPE.HELI_PROJECT_PROPERTY, properties[i]) + ','
|
|
|
|
|
}
|
|
|
|
|
formData.value.property = property.substring(0, property.length-1);
|
|
|
|
|
formData.value.property = property.substring(0, property.length - 1)
|
|
|
|
|
|
|
|
|
|
// 子项列表
|
|
|
|
|
const subArr = await DeliverOrderApi.getDeliverOrderSubListByDeliveryOrderId(id)
|
|
|
|
|
// 如未保存过 即子项为空 从关联项目带出
|
|
|
|
|
if(!subArr || subArr.length == 0){
|
|
|
|
|
formData.value.deliverOrderSubs = [];
|
|
|
|
|
let saleOrderIdArr = formData.value.saleOrderIds.split(",");
|
|
|
|
|
if (!subArr || subArr.length == 0) {
|
|
|
|
|
formData.value.deliverOrderSubs = []
|
|
|
|
|
let saleOrderIdArr = formData.value.saleOrderIds.split(',')
|
|
|
|
|
for (let i = 0; i < saleOrderIdArr.length; i++) {
|
|
|
|
|
formData.value.deliverOrderSubs = formData.value.deliverOrderSubs.concat(await getProjectOrderSubListByProjectOrderId(saleOrderIdArr[i]));
|
|
|
|
|
formData.value.deliverOrderSubs.forEach(sub => {
|
|
|
|
|
formData.value.deliverOrderSubs = formData.value.deliverOrderSubs.concat(
|
|
|
|
|
await getProjectOrderSubListByProjectOrderId(saleOrderIdArr[i])
|
|
|
|
|
)
|
|
|
|
|
formData.value.deliverOrderSubs.forEach((sub) => {
|
|
|
|
|
sub.remark = ''
|
|
|
|
|
sub.saleOrderSubId = sub.id
|
|
|
|
|
sub.id = ''
|
|
|
|
|
sub.saleOrderCode = sub.projectOrderCode
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
// 分类发货清单与其他物料清单
|
|
|
|
|
formData.value.deliverOrderSubs = subArr.filter(sub => sub.category == 'DELIVER_LIST');
|
|
|
|
|
formData.value.deliverOrderOtherSubs = subArr.filter(sub => sub.category == 'OTHER_LIST');
|
|
|
|
|
formData.value.deliverOrderSubs = subArr.filter((sub) => sub.category == 'DELIVER_LIST')
|
|
|
|
|
formData.value.deliverOrderOtherSubs = subArr.filter((sub) => sub.category == 'OTHER_LIST')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 操作日志
|
|
|
|
@ -848,31 +719,31 @@ const queryData = async (type: string, id?: number) => {
|
|
|
|
|
const initCustomerInfo = async () => {
|
|
|
|
|
// 收货人信息
|
|
|
|
|
const customer = await getCustomer(formData.value.customerId)
|
|
|
|
|
if(customer.contact1Name){
|
|
|
|
|
if (customer.contact1Name) {
|
|
|
|
|
receivePersonOptions.value.push({
|
|
|
|
|
"name": customer.contact1Name,
|
|
|
|
|
"mobile": customer.contact1Method
|
|
|
|
|
name: customer.contact1Name,
|
|
|
|
|
mobile: customer.contact1Method
|
|
|
|
|
})
|
|
|
|
|
receivePersonAddressOptions.value.push({
|
|
|
|
|
"address": customer.contact1Addr
|
|
|
|
|
address: customer.contact1Addr
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if(customer.contact2Name){
|
|
|
|
|
if (customer.contact2Name) {
|
|
|
|
|
receivePersonOptions.value.push({
|
|
|
|
|
"name": customer.contact2Name,
|
|
|
|
|
"mobile": customer.contact2Method
|
|
|
|
|
name: customer.contact2Name,
|
|
|
|
|
mobile: customer.contact2Method
|
|
|
|
|
})
|
|
|
|
|
receivePersonAddressOptions.value.push({
|
|
|
|
|
"address": customer.contact2Addr
|
|
|
|
|
address: customer.contact2Addr
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if(customer.contact3Name){
|
|
|
|
|
if (customer.contact3Name) {
|
|
|
|
|
receivePersonOptions.value.push({
|
|
|
|
|
"name": customer.contact3Name,
|
|
|
|
|
"mobile": customer.contact3Method
|
|
|
|
|
name: customer.contact3Name,
|
|
|
|
|
mobile: customer.contact3Method
|
|
|
|
|
})
|
|
|
|
|
receivePersonAddressOptions.value.push({
|
|
|
|
|
"address": customer.contact3Addr
|
|
|
|
|
address: customer.contact3Addr
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -883,27 +754,27 @@ const openProjectOrderDialog = () => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
|
|
|
|
|
if(arr && arr.length > 0){
|
|
|
|
|
let saleOrderIds = "";
|
|
|
|
|
let saleOrderCode = "";
|
|
|
|
|
let contractNo = "";
|
|
|
|
|
let property = "";
|
|
|
|
|
let projectName = "";
|
|
|
|
|
if (arr && arr.length > 0) {
|
|
|
|
|
let saleOrderIds = ''
|
|
|
|
|
let saleOrderCode = ''
|
|
|
|
|
let contractNo = ''
|
|
|
|
|
let property = ''
|
|
|
|
|
let projectName = ''
|
|
|
|
|
for (let i = 0; i < arr.length; i++) {
|
|
|
|
|
let order = arr[i];
|
|
|
|
|
saleOrderIds += order.id + ",";
|
|
|
|
|
saleOrderCode += order.code + ",";
|
|
|
|
|
contractNo += order.contractNo + ",";
|
|
|
|
|
property += getDictLabel(DICT_TYPE.HELI_PROJECT_PROPERTY, order.property) + ",";
|
|
|
|
|
projectName += order.projectName + ",";
|
|
|
|
|
let order = arr[i]
|
|
|
|
|
saleOrderIds += order.id + ','
|
|
|
|
|
saleOrderCode += order.code + ','
|
|
|
|
|
contractNo += order.contractNo + ','
|
|
|
|
|
property += getDictLabel(DICT_TYPE.HELI_PROJECT_PROPERTY, order.property) + ','
|
|
|
|
|
projectName += order.projectName + ','
|
|
|
|
|
}
|
|
|
|
|
formData.value.saleOrderIds = saleOrderIds.substring(0, saleOrderIds.length-1);
|
|
|
|
|
formData.value.saleOrderCode = saleOrderCode.substring(0, saleOrderCode.length-1);
|
|
|
|
|
formData.value.contractNo = contractNo.substring(0, contractNo.length-1);
|
|
|
|
|
formData.value.property = property.substring(0, property.length-1);
|
|
|
|
|
formData.value.projectName = projectName.substring(0, projectName.length-1);
|
|
|
|
|
formData.value.customerId = arr[0].customerId;
|
|
|
|
|
formData.value.customerName = arr[0].customerName;
|
|
|
|
|
formData.value.saleOrderIds = saleOrderIds.substring(0, saleOrderIds.length - 1)
|
|
|
|
|
formData.value.saleOrderCode = saleOrderCode.substring(0, saleOrderCode.length - 1)
|
|
|
|
|
formData.value.contractNo = contractNo.substring(0, contractNo.length - 1)
|
|
|
|
|
formData.value.property = property.substring(0, property.length - 1)
|
|
|
|
|
formData.value.projectName = projectName.substring(0, projectName.length - 1)
|
|
|
|
|
formData.value.customerId = arr[0].customerId
|
|
|
|
|
formData.value.customerName = arr[0].customerName
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -913,8 +784,8 @@ const receivePersonOptions = ref([])
|
|
|
|
|
const receivePersonAddressOptions = ref([])
|
|
|
|
|
|
|
|
|
|
const receiveOnChange = (val) => {
|
|
|
|
|
let matchedPerson = receivePersonOptions.value.find(p => p.name == val);
|
|
|
|
|
if(matchedPerson){
|
|
|
|
|
let matchedPerson = receivePersonOptions.value.find((p) => p.name == val)
|
|
|
|
|
if (matchedPerson) {
|
|
|
|
|
formData.value.receivePersonMobile = matchedPerson.mobile
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -922,17 +793,19 @@ const receiveOnChange = (val) => {
|
|
|
|
|
//打印发货单
|
|
|
|
|
const shipmentsPrintRef = ref() // 打印弹框
|
|
|
|
|
|
|
|
|
|
const printHandle =()=> {
|
|
|
|
|
const printHandle = () => {
|
|
|
|
|
shipmentsPrintRef.value.open(formData.value.id)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const initDeliverData = async (projectOrderId) => {
|
|
|
|
|
let projectOrder = await getProjectOrder(projectOrderId);
|
|
|
|
|
let projectOrder = await getProjectOrder(projectOrderId)
|
|
|
|
|
handleSelectedProjectOrder([projectOrder])
|
|
|
|
|
|
|
|
|
|
formData.value.deliverOrderSubs = [];
|
|
|
|
|
formData.value.deliverOrderSubs = formData.value.deliverOrderSubs.concat(await getProjectOrderSubListByProjectOrderId(projectOrderId));
|
|
|
|
|
formData.value.deliverOrderSubs.forEach(sub => {
|
|
|
|
|
formData.value.deliverOrderSubs = []
|
|
|
|
|
formData.value.deliverOrderSubs = formData.value.deliverOrderSubs.concat(
|
|
|
|
|
await getProjectOrderSubListByProjectOrderId(projectOrderId)
|
|
|
|
|
)
|
|
|
|
|
formData.value.deliverOrderSubs.forEach((sub) => {
|
|
|
|
|
sub.remark = ''
|
|
|
|
|
sub.saleOrderSubId = sub.id
|
|
|
|
|
sub.id = ''
|
|
|
|
@ -944,10 +817,10 @@ const initDeliverData = async (projectOrderId) => {
|
|
|
|
|
|
|
|
|
|
const initData = async () => {
|
|
|
|
|
resetForm()
|
|
|
|
|
if('detail' == active.value){
|
|
|
|
|
if ('detail' == active.value) {
|
|
|
|
|
detailDisabled.value = true
|
|
|
|
|
}
|
|
|
|
|
if('deliver' == active.value && query.projectOrderId){
|
|
|
|
|
if ('deliver' == active.value && query.projectOrderId) {
|
|
|
|
|
await initDeliverData(query.projectOrderId)
|
|
|
|
|
}
|
|
|
|
|
await queryData(active.value, activeId.value)
|
|
|
|
@ -957,7 +830,6 @@ const detailDisabled = ref(false)
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
initData()
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
<style>
|
|
|
|
|
a {
|
|
|
|
|