【需求开发】完善项目订单=》模具发货交互逻辑、及其他优化

pull/3/head
zengchenxi 9 months ago
parent 3c68a6e606
commit c2befa3821

@ -1,15 +1,13 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo;
import com.baomidou.mybatisplus.annotation.TableField; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 发货订单 Response VO") @Schema(description = "管理后台 - 发货订单 Response VO")
@Data @Data
@ -118,4 +116,8 @@ public class DeliverOrderRespVO {
@ExcelProperty("客户名称") @ExcelProperty("客户名称")
private String customerName; private String customerName;
@Schema(description = "发货人姓名")
@ExcelProperty("发货人姓名")
private String deliverPersonName;
} }

@ -122,6 +122,9 @@ public class DeliverOrderDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private String customerName; private String customerName;
@TableField(exist = false)
private String deliverPersonName;
public boolean canDeliver() { public boolean canDeliver() {
return DeliverOrderStatusEnum.SAVE.getCode() == this.deliverStatus.intValue(); return DeliverOrderStatusEnum.SAVE.getCode() == this.deliverStatus.intValue();
} }

@ -25,8 +25,8 @@ public interface DeliverOrderMapper extends BaseMapperX<DeliverOrderDO> {
MPJLambdaWrapper<DeliverOrderDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<DeliverOrderDO> query = new MPJLambdaWrapper<>();
query.selectAll(DeliverOrderDO.class) query.selectAll(DeliverOrderDO.class)
.select("u.nickname as deliverPersonName", "e.name as customerName") .select("u.nickname as deliverPersonName", "e.name as customerName")
.select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(distinct p.mould_name) as mouldName" .select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(p.mould_name) as mouldName"
, "GROUP_CONCAT(distinct p.contract_no) as contractNo", "GROUP_CONCAT(distinct p.property) as property") , "GROUP_CONCAT(p.contract_no) as contractNo", "GROUP_CONCAT(p.property) as property")
.leftJoin("project_sale_order p on FIND_IN_SET(p.id, t.sale_order_ids)") .leftJoin("project_sale_order p on FIND_IN_SET(p.id, t.sale_order_ids)")
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, DeliverOrderDO::getDeliverPerson) .leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, DeliverOrderDO::getDeliverPerson)
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, DeliverOrderDO::getCustomerId) .leftJoin(CustomerDO.class, "e", CustomerDO::getId, DeliverOrderDO::getCustomerId)
@ -47,8 +47,8 @@ public interface DeliverOrderMapper extends BaseMapperX<DeliverOrderDO> {
MPJLambdaWrapper<DeliverOrderDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<DeliverOrderDO> query = new MPJLambdaWrapper<>();
query.selectAll(DeliverOrderDO.class) query.selectAll(DeliverOrderDO.class)
.select("u.nickname as deliverPersonName", "e.name as customerName") .select("u.nickname as deliverPersonName", "e.name as customerName")
.select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(distinct p.mould_name) as mouldName" .select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(p.mould_name) as mouldName"
, "GROUP_CONCAT(distinct p.contract_no) as contractNo", "GROUP_CONCAT(distinct p.property) as property") , "GROUP_CONCAT(p.contract_no) as contractNo", "GROUP_CONCAT(p.property) as property")
.leftJoin("project_sale_order p on FIND_IN_SET(p.id, t.sale_order_ids)") .leftJoin("project_sale_order p on FIND_IN_SET(p.id, t.sale_order_ids)")
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, DeliverOrderDO::getCustomerId) .leftJoin(CustomerDO.class, "e", CustomerDO::getId, DeliverOrderDO::getCustomerId)
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, DeliverOrderDO::getDeliverPerson) .leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, DeliverOrderDO::getDeliverPerson)

@ -25,7 +25,7 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="项目编号" prop="saleOrderIds"> <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="query.active != 'create'" @click="openProjectOrderDialog" :icon="Search" /></template> <template #append><el-button :disabled="active != 'create'" @click="openProjectOrderDialog" :icon="Search" /></template>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -117,7 +117,7 @@
</el-row> </el-row>
</el-card> </el-card>
<el-card class="hl-card-info" v-if="query.active != 'create'"> <el-card class="hl-card-info" v-if="active != 'create'">
<template #header> <template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">收货信息</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">收货信息</span>
</template> </template>
@ -202,7 +202,7 @@
</el-row> </el-row>
</el-card> </el-card>
<el-card class="hl-card-info" v-if="query.active != 'create'"> <el-card class="hl-card-info" v-if="active != 'create'">
<template #header> <template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">发货清单</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">发货清单</span>
</template> </template>
@ -285,7 +285,7 @@
<el-table-column label="操作" align="center" width="100"> <el-table-column label="操作" align="center" width="100">
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-if="'update,create,deliver'.indexOf(query.active) > -1" v-if="'update,create,deliver'.indexOf(active) > -1"
link link
type="danger" type="danger"
size="small" size="small"
@ -302,12 +302,12 @@
</el-row> </el-row>
</el-card> </el-card>
<el-card class="hl-card-info" v-if="query.active != 'create'"> <el-card class="hl-card-info" v-if="active != 'create'">
<template #header> <template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">其他物料清单</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">其他物料清单</span>
</template> </template>
<el-row> <el-row>
<el-col v-if="query.active != 'detail'"> <el-col v-if="active != 'detail'">
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem2" <el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem2"
>新增</el-button >新增</el-button
> >
@ -389,7 +389,7 @@
<el-table-column label="操作" align="center" width="240"> <el-table-column label="操作" align="center" width="240">
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-if="'update,create,deliver'.indexOf(query.active) > -1" v-if="'update,create,deliver'.indexOf(active) > -1"
link link
type="danger" type="danger"
size="small" size="small"
@ -406,12 +406,12 @@
</el-row> </el-row>
</el-card> </el-card>
<el-card class="hl-card-info" v-if="query.active != 'create'"> <el-card class="hl-card-info" v-if="active != 'create'">
<template #header> <template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">附件信息</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">附件信息</span>
</template> </template>
<el-row> <el-row>
<el-col v-if="query.active != 'detail'"> <el-col v-if="active != 'detail'">
<el-upload <el-upload
ref="attachmentUploadRef" ref="attachmentUploadRef"
multiple multiple
@ -441,7 +441,7 @@
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-if="'update,create,deliver'.indexOf(query.active) > -1" v-if="'update,create,deliver'.indexOf(active) > -1"
link link
type="danger" type="danger"
size="small" size="small"
@ -466,7 +466,7 @@
</el-row> </el-row>
</el-card> </el-card>
<el-card class="hl-card-info" v-if="query.active != 'create'"> <el-card class="hl-card-info" v-if="active != 'create'">
<template #header> <template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">操作日志</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">操作日志</span>
</template> </template>
@ -494,11 +494,11 @@
</el-form> </el-form>
<div class="text-center hl-footer"> <div class="text-center hl-footer">
<el-button @click="goback" size="large"> </el-button> <el-button @click="goback" size="large"> </el-button>
<el-button v-if="query.active != 'detail' && formData.deliverStatus == 1" @click="submitForm('SAVE')" type="success" :disabled="formLoading" size="large" <el-button v-if="active != 'detail' && formData.deliverStatus == 1" @click="submitForm('SAVE')" type="success" :disabled="formLoading" size="large"
> </el-button> > </el-button>
<el-button v-if="(((query.active != 'detail' && formData.id) || query.active == 'deliver') && formData.deliverStatus == 1)" @click="submitForm('DELIVER')" type="primary" :disabled="formLoading" size="large" <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>
<el-button v-if="query.active == 'detail' && formData.deliverStatus == 2 && formData.id" type="primary" :disabled="formLoading" size="large" <el-button v-if="active == 'detail' && formData.deliverStatus == 2 && formData.id" type="primary" :disabled="formLoading" size="large"
>打印发货单</el-button> >打印发货单</el-button>
</div> </div>
</el-card> </el-card>
@ -535,6 +535,8 @@ const { t } = useI18n() // 国际化
const message = useMessage() // const message = useMessage() //
const router = useRouter() const router = useRouter()
const { query } = useRoute() const { query } = useRoute()
const active = toRef(query, 'active')
const activeId = toRef(query, 'id')
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const dialogTitle = ref('') // const dialogTitle = ref('') //
@ -599,12 +601,12 @@ const formRef = ref() // 表单 Ref
/** 子表的表单 */ /** 子表的表单 */
const subFormRef = ref() const subFormRef = ref()
const otherSubFormRef = ref() const otherSubFormRef = ref()
const submitForm = async (active) => { const submitForm = async (operate) => {
// //
formData.value.active = active formData.value.active = operate
await formRef.value.validate() await formRef.value.validate()
// //
if(query.active != 'create'){ if(active.value != 'create'){
await subFormRef.value.validate() await subFormRef.value.validate()
await otherSubFormRef.value.validate() await otherSubFormRef.value.validate()
} }
@ -629,14 +631,14 @@ const submitForm = async (active) => {
attachmentUploadRef.value!.submit() attachmentUploadRef.value!.submit()
} }
if (active == 'SAVE') { if (operate == 'SAVE') {
if(query.active != 'deliver'){ if(active.value != 'deliver'){
query.active = 'update' active.value = 'update'
} }
}else if(active == 'DELIVER'){ }else if(operate == 'DELIVER'){
query.active = 'detail' active.value = 'detail'
} }
query.id = orderId activeId.value = orderId
reload() reload()
} finally { } finally {
formLoading.value = false formLoading.value = false
@ -698,6 +700,9 @@ const onAddItem2 = () => {
status: undefined, status: undefined,
} }
row.deliveryOrderId = formData.value.id row.deliveryOrderId = formData.value.id
if(!formData.value.deliverOrderOtherSubs) {
formData.value.deliverOrderOtherSubs = []
}
formData.value.deliverOrderOtherSubs.push(row) formData.value.deliverOrderOtherSubs.push(row)
} }
@ -930,13 +935,13 @@ const initDeliverData = async (projectOrderId) => {
const initData = async () => { const initData = async () => {
resetForm() resetForm()
if('detail' == query.active){ if('detail' == active.value){
detailDisabled.value = true detailDisabled.value = true
} }
if('deliver' == query.active && query.projectOrderId){ if('deliver' == active.value && query.projectOrderId){
await initDeliverData(query.projectOrderId) await initDeliverData(query.projectOrderId)
} }
await queryData(query.active, query.id) await queryData(active.value, activeId.value)
} }
const detailDisabled = ref(false) const detailDisabled = ref(false)

@ -111,7 +111,11 @@
<el-table-column label="客户名称" align="center" prop="customerName" width="220" /> <el-table-column label="客户名称" align="center" prop="customerName" width="220" />
<el-table-column label="合同号" align="center" prop="contractNo" width="180" /> <el-table-column label="合同号" align="center" prop="contractNo" width="180" />
<el-table-column label="模具名称" align="center" prop="mouldName" width="180" /> <el-table-column label="模具名称" align="center" prop="mouldName" width="180" />
<el-table-column label="性质" align="center" prop="property" width="100" /> <el-table-column label="性质" align="center" prop="property" width="100" >
<template #default="scope">
{{getOrderProperty(scope.row.property)}}
</template>
</el-table-column>
<el-table-column label="发货人姓名" align="center" prop="deliverPersonName" width="120" /> <el-table-column label="发货人姓名" align="center" prop="deliverPersonName" width="120" />
<el-table-column label="发货人电话" align="center" prop="deliverPersonMobile" width="160" /> <el-table-column label="发货人电话" align="center" prop="deliverPersonMobile" width="160" />
<el-table-column label="收货人姓名" align="center" prop="receivePersonName" width="120" /> <el-table-column label="收货人姓名" align="center" prop="receivePersonName" width="120" />
@ -165,7 +169,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {getStrDictOptions, DICT_TYPE, getIntDictOptions} from '@/utils/dict' import {getStrDictOptions, DICT_TYPE, getIntDictOptions, getDictLabel} from '@/utils/dict'
import {dateFormatter, dateFormatter2} from '@/utils/formatTime' import {dateFormatter, dateFormatter2} from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import * as DeliverOrderApi from '@/api/heli/deliverorder' import * as DeliverOrderApi from '@/api/heli/deliverorder'
@ -235,7 +239,8 @@ const openDetail = (type: string, id?: number) => {
name: 'DeliverOrderDetail', name: 'DeliverOrderDetail',
query: { query: {
active: type, active: type,
id: id id: id,
operateId: Math.random()
} }
}) })
} }
@ -268,6 +273,16 @@ const handleExport = async () => {
} }
} }
const getOrderProperty = (property) => {
if(!property) return "";
let properties = property.split(",");
let result = "";
for (let i = 0; i < properties.length; i++) {
result += getDictLabel(DICT_TYPE.HELI_PROJECT_PROPERTY, properties[i]) + ","
}
return result.substring(0, result.length-1)
}
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(() => {
getList() getList()

Loading…
Cancel
Save