This commit is contained in:
Ledo 2025-10-08 18:18:41 +08:00
parent 181dc83d4e
commit 88529941bf
7 changed files with 1163 additions and 534 deletions

View File

@ -1,5 +1,8 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo;
import cn.hutool.core.util.ObjectUtil;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansubdetail.PlanSubDetailDO;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -82,5 +85,6 @@ public class PlanSubPageReqVO extends PageParam {
@Schema(description = "创建时间") @Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
private String projectCode;
} private String projectSubName;
}

View File

@ -69,11 +69,13 @@ public class PlanSubDetailPageReqVO extends PageParam {
private String queryDate; private String queryDate;
@Schema(description = "项目编码", example = "26785") @Schema(description = "项目编码", example = "26785")
private Long projectCode; private String projectCode;
@Schema(description = "子项目名称" ,example = "s") @Schema(description = "子项目名称" ,example = "s")
private String projectSubName; private String projectSubName;
private String customerBrief; private String customerBrief;
private String projectName; private String projectName;
private String planNo; private String planNo;
} }

View File

@ -219,4 +219,8 @@ public class PlanSubDO extends BaseDO {
private boolean hasSaveIn3DDetail; private boolean hasSaveIn3DDetail;
@TableField(exist = false) @TableField(exist = false)
private boolean hasSaveIn2DDetail; private boolean hasSaveIn2DDetail;
@TableField(exist = false)
private String projectCode;
@TableField(exist = false)
private String planNo;
} }

View File

@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.plansub;
import java.util.*; import java.util.*;
import cn.hutool.core.util.ObjectUtil;
import cn.smallbun.screw.core.util.StringUtils; import cn.smallbun.screw.core.util.StringUtils;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
@ -11,6 +12,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansubdetail.PlanSubDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
@ -43,6 +45,29 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
query.eq(reqVO.getProjectPlanId() != null, PlanSubDO::getProjectPlanId, reqVO.getProjectPlanId()); query.eq(reqVO.getProjectPlanId() != null, PlanSubDO::getProjectPlanId, reqVO.getProjectPlanId());
return selectPage(reqVO, query); return selectPage(reqVO, query);
} }
default PageResult<PlanSubDO> getPlanList(PlanSubPageReqVO reqVO) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class)
.select("c.name as projectSubName")
.select("b.project_name_sim as projectNameSim")
.select("b.code as projectCode" )
.select("a.brief as customerName")
.select("p.plan_no as planNo")
.leftJoin(PlanDO.class, "p", PlanDO::getId, PlanSubDO::getProjectPlanId)
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, PlanSubDO::getProjectId)
.leftJoin(CustomerDO.class,"a",CustomerDO::getId,ProjectOrderDO::getCustomerId)
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, PlanSubDO::getProjectSubId)
.eq(ProjectOrderDO::getDeliveryStatus,1)
.disableSubLogicDel()
.orderByAsc(PlanSubDO::getId)
;
query.like(ObjectUtil.isNotEmpty(reqVO.getProjectCode()), PlanDO::getCode, reqVO.getProjectCode())
.like(ObjectUtil.isNotEmpty(reqVO.getProjectSubName()), PlanSubDetailDO::getName, reqVO.getProjectSubName());
return selectPage(reqVO, query);
}
default PlanSubDO selectById(Long id) { default PlanSubDO selectById(Long id) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class) query.selectAll(PlanSubDO.class)

View File

@ -27,6 +27,8 @@
v-model="queryParams.beginTime" v-model="queryParams.beginTime"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
type="date" type="date"
clearable
@change="changeBeginDate()"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
class="!w-280px" class="!w-280px"
@ -65,7 +67,7 @@
<el-button @click="handleQuery" type="primary" <el-button @click="handleQuery" type="primary"
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button ><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
> >
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <!-- <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> -->
<el-button @click="saveForm" type="warning">保存</el-button> <el-button @click="saveForm" type="warning">保存</el-button>
<el-button @click="addForm" type="success">新增</el-button> <el-button @click="addForm" type="success">新增</el-button>
</el-form-item> </el-form-item>
@ -82,13 +84,18 @@
border border
> >
<el-table-column fixed label="序号" type="index" width="70" align="center" /> <el-table-column fixed label="序号" type="index" width="70" align="center" />
<el-table-column fixed label="项目编码" align="center" prop="code" min-width="120" /> <el-table-column fixed label="项目编码" align="center" prop="code" min-width="130" />
<el-table-column fixed label="子项目名称" align="center" prop="name" min-width="250" /> <el-table-column fixed label="子项目名称" align="center" prop="name" min-width="180" />
<el-table-column min-width="200px" align="center"> <el-table-column min-width="110px" align="center">
<template #header>设计类型</template> <template #header>设计类型</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.subType`" class="mb-0px!"> <el-form-item :prop="`${$index}.subType`" class="mb-0px!">
<el-select class="!w-265px" v-model="row.subType" clearable filterable :disabled="row.userFlag == false"> <el-select
v-model="row.subType"
clearable
filterable
:disabled="row.userFlag == false"
>
<el-option <el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_CH_PROCESS_TYPE)" v-for="dict in getStrDictOptions(DICT_TYPE.HELI_CH_PROCESS_TYPE)"
:key="dict.value" :key="dict.value"
@ -108,7 +115,7 @@
v-model="row.twoDimOwner" v-model="row.twoDimOwner"
clearable clearable
filterable filterable
:disabled="row.flag == 0 " :disabled="row.flag == 0"
> >
<el-option <el-option
v-for="dict in userInit" v-for="dict in userInit"
@ -120,43 +127,41 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column min-width="200px" align="center"> <el-table-column min-width="180px" align="center">
<template #header>开始日期</template> <template #header>开始日期</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.startTwoDimDate`" class="mb-0px!"> <el-form-item :prop="`${$index}.startTwoDimDate`" class="mb-0px!">
<el-date-picker <el-date-picker
class="!w-265px"
v-model="row.startTwoDimDate" v-model="row.startTwoDimDate"
type="date" type="date"
@change="change1(row, 0)" @change="change1(row, 0)"
value-format="x" value-format="x"
placeholder="开始日期" placeholder="开始日期"
:disabled="row.flag == 0 " :disabled="row.flag == 0"
:disabled-date="disabledFutureDates" :disabled-date="disabledFutureDates"
/> />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column min-width="200px" align="center"> <el-table-column min-width="180px" align="center">
<template #header>结束日期</template> <template #header>结束日期</template>
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!"> <el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!">
<el-date-picker <el-date-picker
class="!w-265px"
v-model="row.twoDimDate" v-model="row.twoDimDate"
type="date" type="date"
@change="change1(row, 1)" @change="change1(row, 1)"
value-format="x" value-format="x"
placeholder="结束日期" placeholder="结束日期"
:disabled="row.flag == 0 " :disabled="row.flag == 0"
:disabled-date="disabledFutureDates" :disabled-date="disabledFutureDates"
/> />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="设计天数" align="center" prop="designNum" min-width="120" /> <el-table-column label="设计天数" align="center" prop="designNum" min-width="100" />
<el-table-column label="时间段顺序" align="center" prop="seqNo" min-width="120" /> <el-table-column label="时间段顺序" align="center" prop="seqNo" min-width="110" />
<el-table-column label="是否新增" align="center" prop="seqNo" min-width="120"> <el-table-column label="是否新增" align="center" prop="seqNo" min-width="100">
<template #default="scope"> <template #default="scope">
{{ scope.row.isAdd == 1 ? '是' : '否' }} {{ scope.row.isAdd == 1 ? '是' : '否' }}
</template> </template>
@ -181,99 +186,123 @@
<!----插活弹框--> <!----插活弹框-->
<!-- 插活弹窗 --> <!-- 插活弹窗 -->
<el-dialog v-model="dialogVisible" width="80%" :close-on-click-modal="false"> <el-dialog v-model="dialogVisible" width="100%" :close-on-click-modal="false">
<div class="dialog-content"> <div class="dialog-content" style="display: flex; gap: 20px">
<!-- 第一排当前日期信息 --> <!-- 左侧插活前列表 -->
<!-- 第二排状态标题 --> <div style="flex: 1">
<div class="status-title"> <div class="status-title" style="margin-bottom: 15px">
<h3>{{ <h3>{{
dialogTitle + '当前子项目' +
'(当前:' + currentRow.name +
formatDate(currentRow?.startTwoDimDate, 'YYYY-MM-DD') + '' +
'至' + formatDate(currentRow?.startTwoDimDate, 'YYYY-MM-DD') +
formatDate(currentRow?.twoDimDate, 'YYYY-MM-DD') + '至' +
')' formatDate(currentRow?.twoDimDate, 'YYYY-MM-DD')
}}</h3> }}</h3>
<h3>{{ '插活前' }}</h3>
</div>
<!-- 表格 -->
<el-table
v-loading="loading2"
:data="beforeList"
:show-overflow-tooltip="true"
class="hl-table"
border
max-height="400"
>
<el-table-column fixed label="子项目名称" align="center" prop="name" min-width="120px" />
<el-table-column min-width="50px" align="center">
<template #header>设计类型</template>
<template #default="{ row }">
<span>{{ getDictLabel(DICT_TYPE.HELI_CH_PROCESS_TYPE, row.subType) }}</span>
</template>
</el-table-column>
<el-table-column min-width="55px" align="center">
<template #header>负责人</template>
<template #default="{ row }">
<span>{{ getUserNickname(row.twoDimOwner) }}</span>
</template>
</el-table-column>
<el-table-column min-width="60px" align="center">
<template #header>开始日期</template>
<template #default="{ row }">
<span>{{ formatDate(row.startTwoDimDate, 'YYYY-MM-DD') }}</span>
</template>
</el-table-column>
<el-table-column min-width="60px" align="center">
<template #header>结束日期</template>
<template #default="{ row }">
<span>{{ formatDate(row.twoDimDate, 'YYYY-MM-DD') }}</span>
</template>
</el-table-column>
<el-table-column label="设计天数" align="center" prop="designNum" min-width="50px" />
<el-table-column label="时间段顺序" align="center" prop="seqNo" min-width="60px" />
</el-table>
</div> </div>
<!-- 表格 --> <!-- 右侧插活后列表 -->
<el-table <div style="flex: 1">
v-loading="loading2" <div class="status-title" style="margin-bottom: 15px">
:data="insertList" <h3>{{
:show-overflow-tooltip="true" '当前子项目' +
class="hl-table" currentRow.name +
border '' +
max-height="400" formatDate(currentRow?.startTwoDimDate, 'YYYY-MM-DD') +
> '至' +
<el-table-column fixed label="序号" type="index" width="70" align="center" /> formatDate(currentRow?.twoDimDate, 'YYYY-MM-DD')
<el-table-column fixed label="项目编码" align="center" prop="code" min-width="120" /> }}</h3>
<el-table-column fixed label="子项目名称" align="center" prop="name" min-width="250" />
<el-table-column min-width="200px" align="center"> <h3>{{ '插活后' }}</h3>
<template #header>设计类型</template> </div>
<template #default="{ row, $index }"> <!-- 表格 -->
<el-form-item :prop="`${$index}.subType`" class="mb-0px!"> <el-table
<el-select class="!w-265px" v-model="row.subType" clearable filterable disabled> v-if="dialogTitle == '插活后'"
<el-option v-loading="loading2"
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_CH_PROCESS_TYPE)" :data="insertList"
:key="dict.value" :show-overflow-tooltip="true"
:label="dict.label" class="hl-table"
:value="dict.value" border
/> max-height="400"
</el-select> >
</el-form-item> <el-table-column fixed label="子项目名称" align="center" prop="name" min-width="120px" />
</template>
</el-table-column> <el-table-column min-width="50px" align="center">
<el-table-column min-width="200px" align="center"> <template #header>设计类型</template>
<template #header>负责人</template> <template #default="{ row }">
<template #default="{ row, $index }"> <span>{{ getDictLabel(DICT_TYPE.HELI_CH_PROCESS_TYPE, row.subType) }}</span>
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!"> </template>
<el-select class="!w-265px" v-model="row.twoDimOwner" clearable filterable disabled> </el-table-column>
<el-option
v-for="dict in userInit" <el-table-column min-width="55px" align="center">
:key="dict.id" <template #header>负责人</template>
:label="dict.username + ' ' + dict.nickname" <template #default="{ row }">
:value="dict.id" <span>{{ getUserNickname(row.twoDimOwner) }}</span>
/> </template>
</el-select> </el-table-column>
</el-form-item>
</template> <el-table-column min-width="60px" align="center">
</el-table-column> <template #header>开始日期</template>
<el-table-column min-width="200px" align="center"> <template #default="{ row }">
<template #header>开始日期</template> <span>{{ formatDate(row.startTwoDimDate, 'YYYY-MM-DD') }}</span>
<template #default="{ row, $index }"> </template>
<el-form-item :prop="`${$index}.startTwoDimDate`" class="mb-0px!"> </el-table-column>
<el-date-picker
class="!w-265px" <el-table-column min-width="60px" align="center">
v-model="row.startTwoDimDate" <template #header>结束日期</template>
type="date" <template #default="{ row }">
@change="change1(row, 0)" <span>{{ formatDate(row.twoDimDate, 'YYYY-MM-DD') }}</span>
value-format="x" </template>
placeholder="开始日期" </el-table-column>
disabled
:disabled-date="disabledFutureDates" <el-table-column label="设计天数" align="center" prop="designNum" min-width="50px" />
/> <el-table-column label="时间段顺序" align="center" prop="seqNo" min-width="60px" />
</el-form-item> </el-table>
</template> </div>
</el-table-column>
<el-table-column min-width="200px" align="center">
<template #header>结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!">
<el-date-picker
class="!w-265px"
v-model="row.twoDimDate"
type="date"
@change="change1(row, 1)"
value-format="x"
placeholder="结束日期"
disabled
:disabled-date="disabledFutureDates"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column label="设计天数" align="center" prop="designNum" min-width="120" />
</el-table>
</div> </div>
<template #footer> <template #footer>
@ -288,53 +317,51 @@
</el-dialog> </el-dialog>
<el-dialog v-model="addDialogVisible" title="新增" width="80%"> <el-dialog v-model="addDialogVisible" title="新增" width="80%">
<!-- 查询条件 --> <!-- 查询条件 -->
<el-form inline class="mb-4"> <el-form inline class="mb-4">
<el-form-item label="项目编码"> <el-form-item label="项目编码">
<el-input v-model="addQueryParams.projectCode" placeholder="请输入项目编码" /> <el-input v-model="addQueryParams.projectCode" placeholder="请输入项目编码" />
</el-form-item> </el-form-item>
<el-form-item label="子项目名称"> <el-form-item label="子项目名称">
<el-input v-model="addQueryParams.projectSubName" placeholder="请输入子项目名称" /> <el-input v-model="addQueryParams.projectSubName" placeholder="请输入子项目名称" />
</el-form-item> </el-form-item>
<el-button type="primary" @click="handleAddQuery">查询</el-button> <el-button type="primary" @click="handleAddQuery">查询</el-button>
</el-form> </el-form>
<!-- 新增 --> <!-- 新增 -->
<el-table <el-table
:data="addList" :data="addList"
v-loading="loading3" v-loading="loading3"
highlight-current-row highlight-current-row
ref="multipleTableRef" @select="handlerSelect" ref="multipleTableRef"
@select="handlerSelect"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
@row-click="rowClickHandle" @row-click="rowClickHandle"
:row-key="row => row.id" :row-key="(row) => row.id"
> >
<el-table-column type="selection" width="55" />
<el-table-column type="selection" width="55" /> <el-table-column type="index" label="序号" width="70" align="center" />
<el-table-column type="index" label="序号" width="70" align="center" /> <el-table-column prop="projectName" label="项目名称" min-width="180" />
<el-table-column prop="projectName" label="项目名称" min-width="180" /> <el-table-column prop="code" label="项目编码" min-width="150" />
<el-table-column prop="code" label="项目编码" min-width="150" /> <el-table-column prop="name" label="子项目名称" min-width="180" />
<el-table-column prop="name" label="子项目名称" min-width="180" /> <el-table-column prop="customerBrief" label="客户简称" min-width="150" />
<el-table-column prop="customerBrief" label="客户简称" min-width="150" /> <el-table-column prop="planNo" label="生产计划" min-width="150" />
<el-table-column prop="planNo" label="生产计划" min-width="150" /> </el-table>
</el-table>
<!-- 分页 --> <!-- 分页 -->
<Pagination <Pagination
:total="addtotal" :total="addtotal"
v-model:page="addQueryParams.pageNo" v-model:page="addQueryParams.pageNo"
v-model:limit="addQueryParams.pageSize" v-model:limit="addQueryParams.pageSize"
@pagination="handleAddQuery" @pagination="handleAddQuery"
/> />
<!-- 底部按钮 --> <!-- 底部按钮 -->
<template #footer> <template #footer>
<div class="dialog-footer" style="margin-left: 20%;"> <div class="dialog-footer" style="margin-left: 45%">
<el-button @click="handleAddCancel">取消</el-button> <el-button @click="handleAddCancel">取消</el-button>
<el-button type="primary" @click="handleAddConfirm">确认</el-button> <el-button type="primary" @click="handleAddConfirm">确认</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
@ -370,6 +397,23 @@ const queryParams = reactive({
name: undefined name: undefined
}) })
const queryFormRef = ref() const queryFormRef = ref()
const changeBeginDate = () => {
if (!queryParams.beginTime) {
queryParams.startTime = undefined
}
}
//
const getDictLabel = (dictType, value) => {
const options = getStrDictOptions(dictType)
const option = options.find((item) => item.value === value)
return option ? option.label : value
}
// ID
const getUserNickname = (userId) => {
const user = userInit.value.find((item) => item.id === userId)
return user ? user.nickname : ''
}
// //
const addDialogVisible = ref(false) const addDialogVisible = ref(false)
@ -395,28 +439,28 @@ const rowClickHandle = (row) => {
// multipleTableRef.value.toggleRowSelection(row, true); // multipleTableRef.value.toggleRowSelection(row, true);
// } // }
// }) // })
// } // }
// else { // else {
// multipleTableRef.value.toggleRowSelection(row, true); // multipleTableRef.value.toggleRowSelection(row, true);
// } // }
if (selectData && selectData.length == 1) { if (selectData && selectData.length == 1) {
const [item] = selectData; const [item] = selectData
const shouldSelect = item !== row; const shouldSelect = item !== row
multipleTableRef.value.toggleRowSelection(row, shouldSelect); multipleTableRef.value.toggleRowSelection(row, shouldSelect)
} else { } else {
multipleTableRef.value.toggleRowSelection(row, true); multipleTableRef.value.toggleRowSelection(row, true)
} }
} }
// Checkbox // Checkbox
const handlerSelect = (selection, row) => { const handlerSelect = (selection, row) => {
// //
multipleTableRef.value.clearSelection() multipleTableRef.value.clearSelection()
if(selection.length == 0) return if (selection.length == 0) return
multipleTableRef.value.toggleRowSelection(row,true) multipleTableRef.value.toggleRowSelection(row, true)
} }
// //
const handleSelectionChange = (val) => { const handleSelectionChange = (val) => {
console.log('表格的选中 可以获得当前选中的数据',val); console.log('表格的选中 可以获得当前选中的数据', val)
selectedAddRow.value = val selectedAddRow.value = val
} }
// //
@ -425,38 +469,38 @@ const addForm = () => {
getAddList() getAddList()
addDialogVisible.value = true addDialogVisible.value = true
} }
// //
const resetAddForm = () => { const resetAddForm = () => {
addQueryParams.projectCode = '' addQueryParams.projectCode = ''
addQueryParams.projectSubName = '' addQueryParams.projectSubName = ''
selectedAddRow.value = null selectedAddRow.value = null
} }
// //
const getAddList = async () => { const getAddList = async () => {
try { try {
loading3.value = true; loading3.value = true
const params = { const params = {
projectCode: addQueryParams.projectCode, projectCode: addQueryParams.projectCode,
projectSubName: addQueryParams.projectSubName projectSubName: addQueryParams.projectSubName
} }
const res = await PlansubdetailApi.pageAddList(params) const res = await PlansubdetailApi.pageAddList(params)
console.log(res) console.log(res)
addList.value = res.list; addList.value = res.list
addtotal.value = res.total; addtotal.value = res.total
} catch (error) { } catch (error) {
message.error('获取项目列表失败:' + error.message) message.error('获取项目列表失败:' + error.message)
}finally{ } finally {
loading3.value = false; loading3.value = false
} }
} }
// //
const handleRowSelect = (row) => { const handleRowSelect = (row) => {
selectedAddRow.value = row selectedAddRow.value = row
} }
// //
const handleAddCancel = () => { const handleAddCancel = () => {
ElMessageBox.confirm('是否退出新增?', '提示', { ElMessageBox.confirm('是否退出新增?', '提示', {
@ -469,13 +513,13 @@ const handleAddCancel = () => {
}) })
.catch(() => {}) .catch(() => {})
} }
// //
const handleAddConfirm = () => { const handleAddConfirm = () => {
for(var i = 0 ; i < list.value.length ; i++ ){ for (var i = 0; i < list.value.length; i++) {
var item = list.value[i]; var item = list.value[i]
if(!item.id){ if (!item.id) {
message.warning('列表中存在未保存数据,请确认!'); message.warning('列表中存在未保存数据,请确认!')
return return
} }
} }
@ -483,21 +527,21 @@ const handleAddConfirm = () => {
message.warning('请先选择要添加的项目') message.warning('请先选择要添加的项目')
return return
} }
selectedAddRow.value[0].twoDimDate = null; selectedAddRow.value[0].twoDimDate = null
selectedAddRow.value[0].startTwoDimDate = null; selectedAddRow.value[0].startTwoDimDate = null
selectedAddRow.value[0].twoDimOwner = null; selectedAddRow.value[0].twoDimOwner = null
selectedAddRow.value[0].subType = null; selectedAddRow.value[0].subType = null
selectedAddRow.value[0].designNum = null; selectedAddRow.value[0].designNum = null
selectedAddRow.value[0].seqNo = null; selectedAddRow.value[0].seqNo = null
selectedAddRow.value[0].isAdd = 1; selectedAddRow.value[0].isAdd = 1
selectedAddRow.value[0].flag = 1; selectedAddRow.value[0].flag = 1
selectedAddRow.value[0].userFlag = true; selectedAddRow.value[0].userFlag = true
selectedAddRow.value[0].id = null; selectedAddRow.value[0].id = null
list.value.push(selectedAddRow.value[0]) list.value.push(selectedAddRow.value[0])
addDialogVisible.value = false addDialogVisible.value = false
message.success('项目添加成功') message.success('项目添加成功')
} }
// //
const handleAddQuery = () => { const handleAddQuery = () => {
getAddList() getAddList()
@ -513,18 +557,30 @@ const saveForm = async () => {
try { try {
if (list.value) { if (list.value) {
loading.value = true loading.value = true
for(var i = 0 ; i < list.value.length ;i++){ for (var i = 0; i < list.value.length; i++) {
var item = list.value[i] var item = list.value[i]
if (item.isOverProcess) { if (item.isOverProcess) {
item.isOverProcess = 1 item.isOverProcess = 1
} else { } else {
item.isOverProcess = 0 item.isOverProcess = 0
} }
if(!item.id){ if (!item.id) {
console.log(item) console.log(item)
var type = ("BLUEPRINT_WORKBLANK" == (item.subType))?"毛坯":("BLUEPRINT_2D" == (item.subType))?"2D":("BLUEPRINT_3D" == (item.subType))?'3D':'新增数据'; var type =
'BLUEPRINT_WORKBLANK' == item.subType
? '毛坯'
: 'BLUEPRINT_2D' == item.subType
? '2D'
: 'BLUEPRINT_3D' == item.subType
? '3D'
: '新增数据'
message.error('该子项目'+item.name+(type == '新增数据'?'新增数据':'设计类型:'+type)+' ,没有保存请确认!') message.error(
'该子项目' +
item.name +
(type == '新增数据' ? '新增数据' : '设计类型:' + type) +
' ,没有保存请确认!'
)
return return
} }
} }
@ -539,7 +595,7 @@ const saveForm = async () => {
} else { } else {
message.error('失败:当前页面无数据可供保存') message.error('失败:当前页面无数据可供保存')
} }
reload() // reload() //
} catch (error) { } catch (error) {
message.error('失败:' + error.message) message.error('失败:' + error.message)
} finally { } finally {
@ -569,13 +625,14 @@ const dialogVisible = ref(false)
const dialogTitle = ref('插活前') const dialogTitle = ref('插活前')
const currentRow = ref(null) const currentRow = ref(null)
const insertList = ref([]) const insertList = ref([])
const beforeList = ref([])
const modification = async (row) => { const modification = async (row) => {
var data = row as unknown as PlansubdetailApi.PlanSubDetailVO var data = row as unknown as PlansubdetailApi.PlanSubDetailVO
const res = await PlansubdetailApi.modificationPlanSubDetail(data) const res = await PlansubdetailApi.modificationPlanSubDetail(data)
if (res.list) { if (res.list) {
// //
currentRow.value = row currentRow.value = row
beforeList.value = res.list
insertList.value = res.list insertList.value = res.list
dialogVisible.value = true dialogVisible.value = true
dialogTitle.value = '插活前' dialogTitle.value = '插活前'
@ -586,37 +643,54 @@ const modification = async (row) => {
// //
const addItemRow = (row) => { const addItemRow = (row) => {
if(row.id){ if (row.id) {
for (var i = 0; i < list.value.length; i++) {
var item = list.value[i]
if (item.isOverProcess) {
item.isOverProcess = 1
} else {
item.isOverProcess = 0
}
if (!item.id) {
console.log(item)
var type =
'BLUEPRINT_WORKBLANK' == item.subType
? '毛坯'
: 'BLUEPRINT_2D' == item.subType
? '2D'
: 'BLUEPRINT_3D' == item.subType
? '3D'
: '新增数据'
message.error(
'该子项目' +
item.name +
(type == '新增数据' ? '新增数据' : '设计类型:' + type) +
' ,没有保存请确认!'
)
return
}
}
// //
const newRow = { const newRow = {
...row, ...row,
// //
id: null, // id id: null, // id
startTwoDimDate: undefined, // startTwoDimDate: undefined, //
twoDimDate: undefined, // twoDimDate: undefined, //
designNum: undefined, // designNum: undefined, //
seqNo: undefined, // seqNo: undefined, //
isAdd: 1, // isAdd: 1, //
flag: 1, // flag: 1, //
userFlag: true userFlag: true
} }
// list.value.unshift(newRow)
const currentIndex = list.value.findIndex((item) => item === row)
// //message.success('')
if (currentIndex !== -1) {
list.value.splice(currentIndex + 1, 0, newRow)
} else { } else {
// message.error('该数据未保存,请确认')
list.value.push(newRow)
} }
//message.success('')
}else{
message.error('该数据未保存,请确认')
}
} }
const getSearchRlTs = async (row, startDateTime: string, endDateTime: string) => { const getSearchRlTs = async (row, startDateTime: string, endDateTime: string) => {
@ -758,7 +832,7 @@ const change1 = async (row: any, type: number) => {
} }
const time = type === 0 ? new Date(row.startTwoDimDate) : new Date(row.twoDimDate) const time = type === 0 ? new Date(row.startTwoDimDate) : new Date(row.twoDimDate)
if (!time || isNaN(time.getTime())) return if (!time || isNaN(time.getTime()) || formatDate(time, 'YYYY-MM-DD') == '1970-01-01') return
const data = await PlansubdetailApi.getSearchRlTsS(formatDate(time, 'YYYY-MM-DD')) const data = await PlansubdetailApi.getSearchRlTsS(formatDate(time, 'YYYY-MM-DD'))
@ -780,7 +854,7 @@ const change1 = async (row: any, type: number) => {
/** 搜索按钮操作 */ /** 搜索按钮操作 */
const handleQuery = () => { const handleQuery = () => {
if (queryParams.twoDimOwner == null) { if (!queryParams.twoDimOwner) {
// 使 setTimeout message.error // 使 setTimeout message.error
setTimeout(() => { setTimeout(() => {
message.error('负责人为空,请确认') message.error('负责人为空,请确认')
@ -803,7 +877,7 @@ const resetQuery = () => {
code: undefined, code: undefined,
name: undefined name: undefined
}) })
getList() // getList()
} }
/** 初始化 **/ /** 初始化 **/
@ -811,7 +885,7 @@ onMounted(async () => {
try { try {
// //
userInit.value = await UserApi.getDeptName('设计部') userInit.value = await UserApi.getDeptName('设计部')
await getList() // await getList()
} catch (error) { } catch (error) {
console.error('初始化失败:', error) console.error('初始化失败:', error)
setTimeout(() => { setTimeout(() => {
@ -833,8 +907,9 @@ onMounted(async () => {
} }
.status-title { .status-title {
margin-top: -7%;
margin-bottom: 20px; margin-bottom: 20px;
text-align: center; text-align: left;
} }
.status-title h3 { .status-title h3 {
@ -844,7 +919,7 @@ onMounted(async () => {
.dialog-footer { .dialog-footer {
text-align: center; text-align: center;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin-top: 20px; margin-top: 20px;

View File

@ -643,7 +643,8 @@
row.id, row.id,
'startBlankDate', 'startBlankDate',
'blankDate', 'blankDate',
'blankNum' 'blankNum',
'start'
) )
" "
/> />
@ -672,7 +673,8 @@
row.id, row.id,
'startBlankDate', 'startBlankDate',
'blankDate', 'blankDate',
'blankNum' 'blankNum',
'end'
) )
" "
/> />
@ -731,7 +733,8 @@
row.id, row.id,
'startThreeDimDate', 'startThreeDimDate',
'threeDimDate', 'threeDimDate',
'threeDimNum' 'threeDimNum',
'start'
) )
" "
/> />
@ -760,7 +763,8 @@
row.id, row.id,
'startThreeDimDate', 'startThreeDimDate',
'threeDimDate', 'threeDimDate',
'threeDimNum' 'threeDimNum',
'end'
) )
" "
/> />
@ -818,7 +822,8 @@
row.id, row.id,
'startTwoDimDate', 'startTwoDimDate',
'twoDimDate', 'twoDimDate',
'twoDimNum' 'twoDimNum',
'start'
) )
" "
/> />
@ -847,7 +852,8 @@
row.id, row.id,
'startTwoDimDate', 'startTwoDimDate',
'twoDimDate', 'twoDimDate',
'twoDimNum' 'twoDimNum',
'end'
) )
" "
/> />
@ -1445,7 +1451,8 @@ const handleDateChange = async (
id, id,
startField, startField,
endField, endField,
dataNumField dataNumField,
type
) => { ) => {
var nowDa = new Date() var nowDa = new Date()
var nowDataStr = nowDa.toLocaleDateString('en-CA') var nowDataStr = nowDa.toLocaleDateString('en-CA')
@ -1512,8 +1519,12 @@ const handleDateChange = async (
// //
if (startBlankDate > blankDate) { if (startBlankDate > blankDate) {
message.error('开始时间必须早于结束时间,否则无法计算设计天数,请检查') message.error('开始时间必须早于结束时间,否则无法计算设计天数,请检查')
rowData[startField] = null if (type == 'end') {
rowData[endField] = null rowData[endField] = null
} else {
rowData[startField] = null
}
rowData[dataNumField] = null rowData[dataNumField] = null
return return
} }
@ -2396,11 +2407,11 @@ const submitForm = async () => {
// } // }
// //subData.id = subData.projectSubId // //subData.id = subData.projectSubId
// }) // })
reload()
message.success(t('common.updateSuccess')) message.success(t('common.updateSuccess'))
// //
// emit('success') // emit('success')
} finally { } finally {
reload()
formLoading.value = false formLoading.value = false
} }
} }