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

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;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
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.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
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")
@Data
@ -118,4 +116,8 @@ public class DeliverOrderRespVO {
@ExcelProperty("客户名称")
private String customerName;
@Schema(description = "发货人姓名")
@ExcelProperty("发货人姓名")
private String deliverPersonName;
}

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

@ -25,8 +25,8 @@ public interface DeliverOrderMapper extends BaseMapperX<DeliverOrderDO> {
MPJLambdaWrapper<DeliverOrderDO> query = new MPJLambdaWrapper<>();
query.selectAll(DeliverOrderDO.class)
.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"
, "GROUP_CONCAT(distinct p.contract_no) as contractNo", "GROUP_CONCAT(distinct p.property) as property")
.select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(p.mould_name) as mouldName"
, "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(AdminUserDO.class, "u", AdminUserDO::getId, DeliverOrderDO::getDeliverPerson)
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, DeliverOrderDO::getCustomerId)
@ -47,8 +47,8 @@ public interface DeliverOrderMapper extends BaseMapperX<DeliverOrderDO> {
MPJLambdaWrapper<DeliverOrderDO> query = new MPJLambdaWrapper<>();
query.selectAll(DeliverOrderDO.class)
.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"
, "GROUP_CONCAT(distinct p.contract_no) as contractNo", "GROUP_CONCAT(distinct p.property) as property")
.select("GROUP_CONCAT(distinct p.code) as saleOrderCode", "GROUP_CONCAT(p.mould_name) as mouldName"
, "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(CustomerDO.class, "e", CustomerDO::getId, DeliverOrderDO::getCustomerId)
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, DeliverOrderDO::getDeliverPerson)

@ -25,7 +25,7 @@
<el-col :span="6">
<el-form-item label="项目编号" prop="saleOrderIds">
<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-form-item>
</el-col>
@ -117,7 +117,7 @@
</el-row>
</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>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">收货信息</span>
</template>
@ -202,7 +202,7 @@
</el-row>
</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>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">发货清单</span>
</template>
@ -285,7 +285,7 @@
<el-table-column label="操作" align="center" width="100">
<template #default="scope">
<el-button
v-if="'update,create,deliver'.indexOf(query.active) > -1"
v-if="'update,create,deliver'.indexOf(active) > -1"
link
type="danger"
size="small"
@ -302,12 +302,12 @@
</el-row>
</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>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">其他物料清单</span>
</template>
<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
>
@ -389,7 +389,7 @@
<el-table-column label="操作" align="center" width="240">
<template #default="scope">
<el-button
v-if="'update,create,deliver'.indexOf(query.active) > -1"
v-if="'update,create,deliver'.indexOf(active) > -1"
link
type="danger"
size="small"
@ -406,12 +406,12 @@
</el-row>
</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>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">附件信息</span>
</template>
<el-row>
<el-col v-if="query.active != 'detail'">
<el-col v-if="active != 'detail'">
<el-upload
ref="attachmentUploadRef"
multiple
@ -441,7 +441,7 @@
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
v-if="'update,create,deliver'.indexOf(query.active) > -1"
v-if="'update,create,deliver'.indexOf(active) > -1"
link
type="danger"
size="small"
@ -466,7 +466,7 @@
</el-row>
</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>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">操作日志</span>
</template>
@ -494,11 +494,11 @@
</el-form>
<div class="text-center hl-footer">
<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 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 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>
</div>
</el-card>
@ -535,6 +535,8 @@ const { t } = useI18n() // 国际化
const message = useMessage() //
const router = useRouter()
const { query } = useRoute()
const active = toRef(query, 'active')
const activeId = toRef(query, 'id')
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
@ -599,12 +601,12 @@ const formRef = ref() // 表单 Ref
/** 子表的表单 */
const subFormRef = ref()
const otherSubFormRef = ref()
const submitForm = async (active) => {
const submitForm = async (operate) => {
//
formData.value.active = active
formData.value.active = operate
await formRef.value.validate()
//
if(query.active != 'create'){
if(active.value != 'create'){
await subFormRef.value.validate()
await otherSubFormRef.value.validate()
}
@ -629,14 +631,14 @@ const submitForm = async (active) => {
attachmentUploadRef.value!.submit()
}
if (active == 'SAVE') {
if(query.active != 'deliver'){
query.active = 'update'
if (operate == 'SAVE') {
if(active.value != 'deliver'){
active.value = 'update'
}
}else if(active == 'DELIVER'){
query.active = 'detail'
}else if(operate == 'DELIVER'){
active.value = 'detail'
}
query.id = orderId
activeId.value = orderId
reload()
} finally {
formLoading.value = false
@ -698,6 +700,9 @@ const onAddItem2 = () => {
status: undefined,
}
row.deliveryOrderId = formData.value.id
if(!formData.value.deliverOrderOtherSubs) {
formData.value.deliverOrderOtherSubs = []
}
formData.value.deliverOrderOtherSubs.push(row)
}
@ -930,13 +935,13 @@ const initDeliverData = async (projectOrderId) => {
const initData = async () => {
resetForm()
if('detail' == query.active){
if('detail' == active.value){
detailDisabled.value = true
}
if('deliver' == query.active && query.projectOrderId){
if('deliver' == active.value && query.projectOrderId){
await initDeliverData(query.projectOrderId)
}
await queryData(query.active, query.id)
await queryData(active.value, activeId.value)
}
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="contractNo" 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="deliverPersonMobile" width="160" />
<el-table-column label="收货人姓名" align="center" prop="receivePersonName" width="120" />
@ -165,7 +169,7 @@
</template>
<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 download from '@/utils/download'
import * as DeliverOrderApi from '@/api/heli/deliverorder'
@ -235,7 +239,8 @@ const openDetail = (type: string, id?: number) => {
name: 'DeliverOrderDetail',
query: {
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(() => {
getList()

Loading…
Cancel
Save