BOM二维码
This commit is contained in:
parent
98a9303e0a
commit
88ce02275f
@ -27,7 +27,7 @@ public class PlanTaskBomRespVO {
|
|||||||
@Schema(description = "负责人")
|
@Schema(description = "负责人")
|
||||||
@ExcelProperty("负责人")
|
@ExcelProperty("负责人")
|
||||||
private String owner;
|
private String owner;
|
||||||
|
private String bomBlueprintNo;
|
||||||
@Schema(description = "要求完成日期")
|
@Schema(description = "要求完成日期")
|
||||||
@ExcelProperty("要求完成日期")
|
@ExcelProperty("要求完成日期")
|
||||||
private LocalDateTime requireEndDate;
|
private LocalDateTime requireEndDate;
|
||||||
|
@ -58,6 +58,7 @@ public class TaskDispatchSaveReqVO {
|
|||||||
@Schema(description = "操作类型")
|
@Schema(description = "操作类型")
|
||||||
@NotBlank(message = "操作类型不能为空")
|
@NotBlank(message = "操作类型不能为空")
|
||||||
private String active;
|
private String active;
|
||||||
|
private String bomBlueprintNo;
|
||||||
|
|
||||||
@Schema(description = "操作意见")
|
@Schema(description = "操作意见")
|
||||||
private String activeOpinion;
|
private String activeOpinion;
|
||||||
|
@ -116,6 +116,8 @@ public class PlanDO extends BaseDO {
|
|||||||
*要求设计结束日期
|
*要求设计结束日期
|
||||||
* */
|
* */
|
||||||
private LocalDateTime changeEndTime;
|
private LocalDateTime changeEndTime;
|
||||||
|
private String name;
|
||||||
|
private String brief;
|
||||||
/**
|
/**
|
||||||
* 子项目id
|
* 子项目id
|
||||||
*/
|
*/
|
||||||
|
@ -45,7 +45,8 @@ public class PlanTaskBomDO extends BaseDO {
|
|||||||
* 要求完成日期
|
* 要求完成日期
|
||||||
*/
|
*/
|
||||||
private LocalDateTime requireEndDate;
|
private LocalDateTime requireEndDate;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String bomBlueprintNo;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String materialName;
|
private String materialName;
|
||||||
/**材质名称*/
|
/**材质名称*/
|
||||||
|
@ -69,6 +69,7 @@ public class ProcessBomDetailDO extends BaseDO {
|
|||||||
* 图号
|
* 图号
|
||||||
*/
|
*/
|
||||||
private String blueprintNo;
|
private String blueprintNo;
|
||||||
|
private String bomBlueprintNo;
|
||||||
/**
|
/**
|
||||||
* 数量
|
* 数量
|
||||||
*/
|
*/
|
||||||
|
@ -37,6 +37,8 @@ public class TaskDispatchDO extends BaseDO {
|
|||||||
* 编号,唯一
|
* 编号,唯一
|
||||||
*/
|
*/
|
||||||
private String code;
|
private String code;
|
||||||
|
private String bomBlueprintNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 派工类型 生产任务|装配任务 PRODUCTION|ASSEMBLE
|
* 派工类型 生产任务|装配任务 PRODUCTION|ASSEMBLE
|
||||||
*
|
*
|
||||||
|
@ -38,6 +38,7 @@ public interface PlanTaskBomMapper extends BaseMapperX<PlanTaskBomDO> {
|
|||||||
.select("f.memo as memo","f.bom_edit_status as bomEditStatus","f.bom_operate_count as bomOperateCount")
|
.select("f.memo as memo","f.bom_edit_status as bomEditStatus","f.bom_operate_count as bomOperateCount")
|
||||||
.select("g.name as compositionName")
|
.select("g.name as compositionName")
|
||||||
.select("u1.nickname as ownerName")
|
.select("u1.nickname as ownerName")
|
||||||
|
.select("f.bom_blueprint_no as bomBlueprintNo")
|
||||||
.leftJoin(PlanTaskDO.class, "a", PlanTaskDO::getId, PlanTaskBomDO::getTaskId)
|
.leftJoin(PlanTaskDO.class, "a", PlanTaskDO::getId, PlanTaskBomDO::getTaskId)
|
||||||
.leftJoin(PlanSubDO.class, "b", PlanSubDO::getId, PlanTaskDO::getProjectPlanSubId)
|
.leftJoin(PlanSubDO.class, "b", PlanSubDO::getId, PlanTaskDO::getProjectPlanSubId)
|
||||||
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, PlanSubDO::getProjectSubId)
|
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, PlanSubDO::getProjectSubId)
|
||||||
|
@ -58,6 +58,14 @@ public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO>
|
|||||||
"GROUP BY p.id") //2025 0601 因为bom明细页查询到结果 由 group by materialcode转换为 group by id
|
"GROUP BY p.id") //2025 0601 因为bom明细页查询到结果 由 group by materialcode转换为 group by id
|
||||||
List<ProcessBomDetailDO> selectStandardListByBomId(@Param("bomId") Long bomId);
|
List<ProcessBomDetailDO> selectStandardListByBomId(@Param("bomId") Long bomId);
|
||||||
|
|
||||||
|
|
||||||
|
@Select("SELECT p.*, IFNULL(SUM(s.storage_ok_qty), 0) AS storage_ok_qty " +
|
||||||
|
"FROM pro_process_bom_detail p " +
|
||||||
|
"LEFT JOIN v_storage_material_now s ON p.material_name = s.mat_name " +
|
||||||
|
"WHERE p.bom_id = #{bomId} and p.type = 1 AND p.deleted IN (0, 1) " +
|
||||||
|
"GROUP BY p.material_name")
|
||||||
|
//2025 0601 因为bom明细页查询到结果 由 group by materialcode转换为 group by id
|
||||||
|
List<ProcessBomDetailDO> selectStandardListByBomId20250609(@Param("bomId") Long bomId);
|
||||||
default Long getBomDetailByBluePrintNoAndBomId(String bomCode,String bluePrintNo){
|
default Long getBomDetailByBluePrintNoAndBomId(String bomCode,String bluePrintNo){
|
||||||
MPJLambdaWrapper<ProcessBomDetailDO> query = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<ProcessBomDetailDO> query = new MPJLambdaWrapper<>();
|
||||||
query.leftJoin(ProcessBomDO.class,"q",ProcessBomDO::getId,ProcessBomDetailDO::getBomId)
|
query.leftJoin(ProcessBomDO.class,"q",ProcessBomDO::getId,ProcessBomDetailDO::getBomId)
|
||||||
|
@ -531,6 +531,7 @@ public class CrossOrderManager {
|
|||||||
MPJLambdaWrapper<PlanTaskBomDO> query = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<PlanTaskBomDO> query = new MPJLambdaWrapper<>();
|
||||||
query.selectAll(PlanTaskBomDO.class)
|
query.selectAll(PlanTaskBomDO.class)
|
||||||
.select("bom_edit_status as bom_deleted")
|
.select("bom_edit_status as bom_deleted")
|
||||||
|
.select("b.bom_blueprint_no as bomBlueprintNo")
|
||||||
.leftJoin(PlanTaskDO.class, "a", PlanTaskDO::getId, PlanTaskBomDO::getTaskId)
|
.leftJoin(PlanTaskDO.class, "a", PlanTaskDO::getId, PlanTaskBomDO::getTaskId)
|
||||||
.leftJoin(ProcessBomDetailDO.class, "b", ProcessBomDetailDO::getId, PlanTaskBomDO::getBomDetailId)
|
.leftJoin(ProcessBomDetailDO.class, "b", ProcessBomDetailDO::getId, PlanTaskBomDO::getBomDetailId)
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
@ -581,6 +582,7 @@ public class CrossOrderManager {
|
|||||||
.setProjectId(planTaskDO.getProjectId())
|
.setProjectId(planTaskDO.getProjectId())
|
||||||
.setProjectSubId(planSubDO.getProjectSubId())
|
.setProjectSubId(planSubDO.getProjectSubId())
|
||||||
.setBomDetailId(planTaskBomDO.getBomDetailId())
|
.setBomDetailId(planTaskBomDO.getBomDetailId())
|
||||||
|
.setBomBlueprintNo(planTaskBomDO.getBomBlueprintNo() == null ?"":planTaskBomDO.getBomBlueprintNo())
|
||||||
.setActive(OperateTypeEnum.SAVE.name())
|
.setActive(OperateTypeEnum.SAVE.name())
|
||||||
.setDispatchStatus(TaskDispatchStatusEnum.SAVE.getCode())
|
.setDispatchStatus(TaskDispatchStatusEnum.SAVE.getCode())
|
||||||
.setStatus(ValidStatusEnum.VALID.getCode());
|
.setStatus(ValidStatusEnum.VALID.getCode());
|
||||||
@ -612,6 +614,7 @@ public class CrossOrderManager {
|
|||||||
.setPlanId(planTaskDO.getProjectPlanId())
|
.setPlanId(planTaskDO.getProjectPlanId())
|
||||||
.setProjectId(planTaskDO.getProjectId())
|
.setProjectId(planTaskDO.getProjectId())
|
||||||
.setProjectSubId(planSubDO.getProjectSubId())
|
.setProjectSubId(planSubDO.getProjectSubId())
|
||||||
|
.setBomBlueprintNo(planTaskBomDO.getBomBlueprintNo() == null ?"":planTaskBomDO.getBomBlueprintNo())
|
||||||
.setBomDetailId(planTaskBomDO.getBomDetailId())
|
.setBomDetailId(planTaskBomDO.getBomDetailId())
|
||||||
.setActive(OperateTypeEnum.SAVE.name())
|
.setActive(OperateTypeEnum.SAVE.name())
|
||||||
.setDispatchStatus(TaskDispatchStatusEnum.SAVE.getCode())
|
.setDispatchStatus(TaskDispatchStatusEnum.SAVE.getCode())
|
||||||
|
@ -117,7 +117,7 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
|
|
||||||
// 插入子表
|
// 插入子表
|
||||||
if(createReqVO.getProcessBomDetails() != null && !createReqVO.getProcessBomDetails().isEmpty())
|
if(createReqVO.getProcessBomDetails() != null && !createReqVO.getProcessBomDetails().isEmpty())
|
||||||
createProcessBomDetailList(processBom.getId(), createReqVO.getProcessBomDetails(),0);
|
createProcessBomDetailList(processBom.getCode() == null ? "":processBom.getCode(),processBom.getId(), createReqVO.getProcessBomDetails(),0);
|
||||||
createReqVO.setId(processBom.getId());
|
createReqVO.setId(processBom.getId());
|
||||||
// 返回
|
// 返回
|
||||||
return processBom.getId();
|
return processBom.getId();
|
||||||
@ -357,6 +357,7 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateProcessBom(ProcessBomSaveReqVO updateReqVO) {
|
public void updateProcessBom(ProcessBomSaveReqVO updateReqVO) {
|
||||||
|
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateProcessBomExists(updateReqVO.getId());
|
validateProcessBomExists(updateReqVO.getId());
|
||||||
// 提交的时候 明细不容许为空
|
// 提交的时候 明细不容许为空
|
||||||
@ -676,12 +677,14 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
}else{
|
}else{
|
||||||
updateObj.setBomStatus(ProcessBomStatusEnum.valueOf(updateReqVO.getActive()).getCode());
|
updateObj.setBomStatus(ProcessBomStatusEnum.valueOf(updateReqVO.getActive()).getCode());
|
||||||
}
|
}
|
||||||
|
if (updateReqVO.getProjectSubCode() != null){
|
||||||
|
updateObj.setCode("BOM-"+updateReqVO.getProjectSubCode() );
|
||||||
|
}
|
||||||
|
|
||||||
processBomMapper.updateById(updateObj);
|
processBomMapper.updateById(updateObj);
|
||||||
|
|
||||||
// 更新子表
|
// 更新子表
|
||||||
updateProcessBomDetailList(updateReqVO.getId(), updateReqVO.getProcessBomDetails());
|
updateProcessBomDetailList(updateObj.getCode() == null ? "": updateObj.getCode(),updateReqVO.getId(), updateReqVO.getProcessBomDetails());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -753,7 +756,7 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
List<ProcessBomDetailDO> list = new ArrayList<>();
|
List<ProcessBomDetailDO> list = new ArrayList<>();
|
||||||
// List<ProcessBomDetailDO> processBomDetailDOS = processBomDetailMapper.selectStandardListByBomId(bomId);
|
// List<ProcessBomDetailDO> processBomDetailDOS = processBomDetailMapper.selectStandardListByBomId(bomId);
|
||||||
//这一部分是标准件,含id的,是有库存的
|
//这一部分是标准件,含id的,是有库存的
|
||||||
list.addAll(processBomDetailMapper.selectStandardListByBomId(bomId));
|
list.addAll(processBomDetailMapper.selectStandardListByBomId20250609(bomId));
|
||||||
// Map<Long, List<ProcessBomDetailDO>> standardGroupByMatId = processBomDetailDOS.stream().collect(Collectors.groupingBy(vo -> vo.getMaterialId() == null ? -1 : vo.getMaterialId()));
|
// Map<Long, List<ProcessBomDetailDO>> standardGroupByMatId = processBomDetailDOS.stream().collect(Collectors.groupingBy(vo -> vo.getMaterialId() == null ? -1 : vo.getMaterialId()));
|
||||||
//查非标准件的
|
//查非标准件的
|
||||||
|
|
||||||
@ -984,7 +987,7 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
public void updateProcessBomDetail(ProcessBomDetailDO processBomDetailDO){
|
public void updateProcessBomDetail(ProcessBomDetailDO processBomDetailDO){
|
||||||
processBomDetailMapper.updateById(processBomDetailDO);
|
processBomDetailMapper.updateById(processBomDetailDO);
|
||||||
}
|
}
|
||||||
private void createProcessBomDetailList(Long bomId, List<ProcessBomDetailDO> list,Integer num) {
|
private void createProcessBomDetailList(String bomCode,Long bomId, List<ProcessBomDetailDO> list,Integer num) {
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
/*list.forEach(o -> {o.setBomId(bomId);o.setUpdateTimes(now);}
|
/*list.forEach(o -> {o.setBomId(bomId);o.setUpdateTimes(now);}
|
||||||
);*/
|
);*/
|
||||||
@ -992,6 +995,7 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
|
|
||||||
for (ProcessBomDetailDO originalObj : list) {
|
for (ProcessBomDetailDO originalObj : list) {
|
||||||
originalObj.setBomId(bomId);
|
originalObj.setBomId(bomId);
|
||||||
|
originalObj.setBomBlueprintNo(bomCode+"-"+originalObj.getBlueprintNo());
|
||||||
originalObj.setUpdateTimes(now);
|
originalObj.setUpdateTimes(now);
|
||||||
if (originalObj.getId()!= null ) {
|
if (originalObj.getId()!= null ) {
|
||||||
originalObj.setBomType(4);
|
originalObj.setBomType(4);
|
||||||
@ -1036,8 +1040,8 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateProcessBomDetailList(Long bomId, List<ProcessBomDetailDO> list) {
|
private void updateProcessBomDetailList(String bomCode,Long bomId, List<ProcessBomDetailDO> list) {
|
||||||
createProcessBomDetailList(bomId, list,1);
|
createProcessBomDetailList(bomCode,bomId, list,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String,String> getUnitDictData(){
|
public HashMap<String,String> getUnitDictData(){
|
||||||
|
@ -27,6 +27,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumber
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.orderys.OrderYsMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.orderys.OrderYsMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
|
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
|
||||||
@ -90,7 +91,6 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private FileService fileService;
|
private FileService fileService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AdminUserApi userApi;
|
private AdminUserApi userApi;
|
||||||
@Resource
|
@Resource
|
||||||
@ -297,6 +297,8 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
|
|||||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||||
}
|
}
|
||||||
updateObj.setOrderStatus(ProjectOrderStatusEnum.valueOf(updateReqVO.getActive()).getCode());
|
updateObj.setOrderStatus(ProjectOrderStatusEnum.valueOf(updateReqVO.getActive()).getCode());
|
||||||
|
|
||||||
|
|
||||||
projectOrderMapper.updateById(updateObj);
|
projectOrderMapper.updateById(updateObj);
|
||||||
updateReqVO.setOrderStatus(updateObj.getOrderStatus());
|
updateReqVO.setOrderStatus(updateObj.getOrderStatus());
|
||||||
|
|
||||||
|
@ -31,7 +31,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="项目负责人" prop="projectOwner">
|
<el-form-item label="项目负责人" prop="projectOwner">
|
||||||
<el-select class="!w-265px" v-model="formData.projectOwner" filterable disabled>
|
<el-select class="!w-265px" v-model="formData.projectOwner" filterable disabled>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -41,7 +42,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="是否要工艺" prop="hasCraft">
|
<el-form-item label="是否要工艺" prop="hasCraft">
|
||||||
<el-radio-group v-model="formData.hasCraft">
|
<el-radio-group v-model="formData.hasCraft">
|
||||||
<el-radio disabled v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)" :key="dict.value"
|
<el-radio
|
||||||
|
disabled v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)" :key="dict.value"
|
||||||
:label="dict.value">
|
:label="dict.value">
|
||||||
{{ dict.label }}
|
{{ dict.label }}
|
||||||
</el-radio>
|
</el-radio>
|
||||||
@ -53,7 +55,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="计划编制人" prop="editor">
|
<el-form-item label="计划编制人" prop="editor">
|
||||||
<el-select class="!w-265px" v-model="formData.editor" filterable disabled>
|
<el-select class="!w-265px" v-model="formData.editor" filterable disabled>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -62,7 +65,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="计划编制日期" prop="editorDate">
|
<el-form-item label="计划编制日期" prop="editorDate">
|
||||||
<el-date-picker disabled class="!w-265px" v-model="formData.editorDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled class="!w-265px" v-model="formData.editorDate" type="date" value-format="x"
|
||||||
placeholder="计划编制日期" />
|
placeholder="计划编制日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -70,7 +74,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="80">
|
<el-col :span="80">
|
||||||
<el-form-item label="备注" prop="description">
|
<el-form-item label="备注" prop="description">
|
||||||
<el-input disabled class="!w-713px" type="textarea" v-model="formData.description" show-word-limit
|
<el-input
|
||||||
|
disabled class="!w-713px" type="textarea" v-model="formData.description" show-word-limit
|
||||||
maxlength="200" />
|
maxlength="200" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -96,7 +101,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="所属业务线" prop="businessLine">
|
<el-form-item label="所属业务线" prop="businessLine">
|
||||||
<el-select class="!w-265px" v-model="formData.businessLine" disabled>
|
<el-select class="!w-265px" v-model="formData.businessLine" disabled>
|
||||||
<el-option disabled v-for="dict in getStrDictOptions(DICT_TYPE.HELI_BUSINESS_LINE)" :key="dict.value"
|
<el-option
|
||||||
|
disabled v-for="dict in getStrDictOptions(DICT_TYPE.HELI_BUSINESS_LINE)" :key="dict.value"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -106,7 +112,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="工艺负责人" prop="craftOwner">
|
<el-form-item label="工艺负责人" prop="craftOwner">
|
||||||
<el-select class="!w-265px" v-model="formData.craftOwner" filterable disabled>
|
<el-select class="!w-265px" v-model="formData.craftOwner" filterable disabled>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -116,7 +123,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="计划审核人" prop="auditor">
|
<el-form-item label="计划审核人" prop="auditor">
|
||||||
<el-select class="!w-265px" v-model="formData.auditor" filterable disabled>
|
<el-select class="!w-265px" v-model="formData.auditor" filterable disabled>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -125,7 +133,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="计划审核日期" prop="auditDate">
|
<el-form-item label="计划审核日期" prop="auditDate">
|
||||||
<el-date-picker disabled class="!w-265px" v-model="formData.auditDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled class="!w-265px" v-model="formData.auditDate" type="date" value-format="x"
|
||||||
placeholder="计划审核日期" />
|
placeholder="计划审核日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -137,7 +146,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="项目状态" prop="projectStatus">
|
<el-form-item label="项目状态" prop="projectStatus">
|
||||||
<el-select v-model="formData.projectStatus" placeholder="项目状态" clearable class="!w-265px" disabled>
|
<el-select v-model="formData.projectStatus" placeholder="项目状态" clearable class="!w-265px" disabled>
|
||||||
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_ORDER_STATUS)"
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_ORDER_STATUS)"
|
||||||
:key="dict.value" :label="dict.label" :value="dict.value" />
|
:key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -146,7 +156,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="项目开始日期" prop="projectStartTime">
|
<el-form-item label="项目开始日期" prop="projectStartTime">
|
||||||
<el-date-picker class="!w-265px" v-model="formData.projectStartTime" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
class="!w-265px" v-model="formData.projectStartTime" type="date" value-format="x"
|
||||||
placeholder="项目开始日期" disabled />
|
placeholder="项目开始日期" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -155,7 +166,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="性质" prop="property">
|
<el-form-item label="性质" prop="property">
|
||||||
<el-select class="!w-265px" v-model="formData.property" placeholder="下拉选择" disabled>
|
<el-select class="!w-265px" v-model="formData.property" placeholder="下拉选择" disabled>
|
||||||
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PROPERTY)" :key="dict.value"
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PROPERTY)" :key="dict.value"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -164,7 +176,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="工艺开始日期" prop="craftStartTime">
|
<el-form-item label="工艺开始日期" prop="craftStartTime">
|
||||||
<el-date-picker disabled class="!w-265px" v-model="formData.craftStartDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled class="!w-265px" v-model="formData.craftStartDate" type="date" value-format="x"
|
||||||
placeholder="工艺开始日期" />
|
placeholder="工艺开始日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -173,7 +186,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="计划批准人" prop="approver">
|
<el-form-item label="计划批准人" prop="approver">
|
||||||
<el-select class="!w-265px" v-model="formData.approver" filterable >
|
<el-select class="!w-265px" v-model="formData.approver" filterable >
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -182,7 +196,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="计划批准日期" prop="approveDate">
|
<el-form-item label="计划批准日期" prop="approveDate">
|
||||||
<el-date-picker disabled class="!w-265px" v-model="formData.approveDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled class="!w-265px" v-model="formData.approveDate" type="date" value-format="x"
|
||||||
placeholder="计划批准日期" />
|
placeholder="计划批准日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -191,7 +206,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="生产状态" prop="status">
|
<el-form-item label="生产状态" prop="status">
|
||||||
<el-select v-model="formData.status" placeholder="生产状态" clearable class="!w-265px" disabled>
|
<el-select v-model="formData.status" placeholder="生产状态" clearable class="!w-265px" disabled>
|
||||||
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PLAN_STATUS)" :key="dict.value"
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PLAN_STATUS)" :key="dict.value"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -210,7 +226,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="项目结束日期" prop="projectEndTime">
|
<el-form-item label="项目结束日期" prop="projectEndTime">
|
||||||
<el-date-picker class="!w-265px" v-model="formData.projectEndTime" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
class="!w-265px" v-model="formData.projectEndTime" type="date" value-format="x"
|
||||||
placeholder="项目结束日期" disabled />
|
placeholder="项目结束日期" disabled />
|
||||||
<span style="position: absolute; left: 0; top: 30px" v-if="formData.projectStartTime && formData.projectEndTime">{{
|
<span style="position: absolute; left: 0; top: 30px" v-if="formData.projectStartTime && formData.projectEndTime">{{
|
||||||
' 共计' +
|
' 共计' +
|
||||||
@ -227,7 +244,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="是否紧急" prop="isUrgency">
|
<el-form-item label="是否紧急" prop="isUrgency">
|
||||||
<el-select class="!w-265px" v-model="formData.isUrgency" disabled>
|
<el-select class="!w-265px" v-model="formData.isUrgency" disabled>
|
||||||
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)" :key="dict.value"
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)" :key="dict.value"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -236,7 +254,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="工艺结束日期" prop="craftEndTime">
|
<el-form-item label="工艺结束日期" prop="craftEndTime">
|
||||||
<el-date-picker disabled class="!w-265px" v-model="formData.craftEndDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled class="!w-265px" v-model="formData.craftEndDate" type="date" value-format="x"
|
||||||
placeholder="工艺结束日期" />
|
placeholder="工艺结束日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -244,7 +263,8 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="创建时间" prop="createTime">
|
<el-form-item label="创建时间" prop="createTime">
|
||||||
<el-date-picker class="!w-265px" v-model="formData.createTime" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
class="!w-265px" v-model="formData.createTime" type="date" value-format="x"
|
||||||
placeholder="创建时间" disabled />
|
placeholder="创建时间" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -274,13 +294,18 @@
|
|||||||
<el-card class="hl-card-info">
|
<el-card class="hl-card-info">
|
||||||
<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>
|
||||||
|
<el-button style="margin-left: 3%" type="warning" size="large" @click="printfClick">打印</el-button>
|
||||||
</template>
|
</template>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-card class="hl-incard">
|
<el-card class="hl-incard">
|
||||||
<el-form ref="projectOrderSubFormRef" :model="formData.projectOrderSubs" :rules="subFormRules"
|
<el-form
|
||||||
|
ref="projectOrderSubFormRef" :model="formData.projectOrderSubs" :rules="subFormRules"
|
||||||
v-loading="subFormLoading" label-width="0">
|
v-loading="subFormLoading" label-width="0">
|
||||||
<el-table :data="formData.projectOrderSubs" :show-overflow-tooltip="true" class="hl-table">
|
<el-table :data="formData.projectOrderSubs" @selection-change="handleSelectionChange" :show-overflow-tooltip="true" class="hl-table">
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="55"/>
|
||||||
<el-table-column label="序号" type="index" width="80" fixed />
|
<el-table-column label="序号" type="index" width="80" fixed />
|
||||||
<el-table-column prop="name" label="子项目名称" min-width="120" align="center" fixed/>
|
<el-table-column prop="name" label="子项目名称" min-width="120" align="center" fixed/>
|
||||||
<el-table-column prop="projectSubShortName" min-width="180" align="center" >
|
<el-table-column prop="projectSubShortName" min-width="180" align="center" >
|
||||||
@ -307,7 +332,8 @@
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-form-item :prop="`${scope.$index}.equipId`" class="mb-0px!">
|
<el-form-item :prop="`${scope.$index}.equipId`" class="mb-0px!">
|
||||||
<el-select disabled v-model="scope.row.equipId" clearable placeholder="下拉选择" style="width: 100%">
|
<el-select disabled v-model="scope.row.equipId" clearable placeholder="下拉选择" style="width: 100%">
|
||||||
<el-option v-for="dict in scope.row.equipList" :key="dict.id" :label="dict.name"
|
<el-option
|
||||||
|
v-for="dict in scope.row.equipList" :key="dict.id" :label="dict.name"
|
||||||
:value="dict.id" />
|
:value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -324,7 +350,8 @@
|
|||||||
<template #header>毛坯结束日期</template>
|
<template #header>毛坯结束日期</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.blankDate`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.blankDate`" class="mb-0px!">
|
||||||
<el-date-picker disabled class="!w-265px" v-model="row.blankDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled class="!w-265px" v-model="row.blankDate" type="date" value-format="x"
|
||||||
placeholder="毛坯结束日期" />
|
placeholder="毛坯结束日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@ -334,7 +361,8 @@
|
|||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.blankOwner`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.blankOwner`" class="mb-0px!">
|
||||||
<el-select class="!w-265px" v-model="row.blankOwner" filterable disabled>
|
<el-select class="!w-265px" v-model="row.blankOwner" filterable disabled>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -345,7 +373,8 @@
|
|||||||
<template #header>2D结束日期</template>
|
<template #header>2D结束日期</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 disabled class="!w-265px" v-model="row.twoDimDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled class="!w-265px" v-model="row.twoDimDate" type="date" value-format="x"
|
||||||
placeholder="2D结束日期" />
|
placeholder="2D结束日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@ -355,7 +384,8 @@
|
|||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!">
|
||||||
<el-select class="!w-265px" v-model="row.twoDimOwner" filterable disabled>
|
<el-select class="!w-265px" v-model="row.twoDimOwner" filterable disabled>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -366,7 +396,8 @@
|
|||||||
<template #header>3D结束日期</template>
|
<template #header>3D结束日期</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.threeDimDate`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.threeDimDate`" class="mb-0px!">
|
||||||
<el-date-picker disabled class="!w-265px" v-model="row.threeDimDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled class="!w-265px" v-model="row.threeDimDate" type="date" value-format="x"
|
||||||
placeholder="3D结束日期" />
|
placeholder="3D结束日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@ -376,7 +407,8 @@
|
|||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.threeDimOwner`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.threeDimOwner`" class="mb-0px!">
|
||||||
<el-select class="!w-265px" v-model="row.threeDimOwner" filterable disabled>
|
<el-select class="!w-265px" v-model="row.threeDimOwner" filterable disabled>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -406,7 +438,8 @@
|
|||||||
<el-table-column min-width="150" label="开始日期" align="center">
|
<el-table-column min-width="150" label="开始日期" align="center">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.startDate`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.startDate`" class="mb-0px!">
|
||||||
<el-date-picker disabled v-model="row.startDate" type="date" value-format="x" style="width: 100%;"
|
<el-date-picker
|
||||||
|
disabled v-model="row.startDate" type="date" value-format="x" style="width: 100%;"
|
||||||
placeholder="开始日期" />
|
placeholder="开始日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@ -415,7 +448,8 @@
|
|||||||
<template #header> 结束日期 </template>
|
<template #header> 结束日期 </template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.endDate`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.endDate`" class="mb-0px!">
|
||||||
<el-date-picker disabled style="width: 100%;" v-model="row.endDate" type="date" value-format="x"
|
<el-date-picker
|
||||||
|
disabled style="width: 100%;" v-model="row.endDate" type="date" value-format="x"
|
||||||
placeholder="结束日期" />
|
placeholder="结束日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@ -461,11 +495,12 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="text-center hl-footer">
|
<div class="hl-footer text-center">
|
||||||
<el-button @click="() => router.back()" size="large">取 消</el-button>
|
<el-button @click="() => router.back()" size="large">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<ProjectOrderDialog ref="projectOrderDialog" @success="handleSelectedProjectOrder" />
|
<ProjectOrderDialog ref="projectOrderDialog" @success="handleSelectedProjectOrder" />
|
||||||
|
<printDialog ref="printref" :minAmount="minAmount" :formData="formData" />
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { inject } from 'vue'
|
import { inject } from 'vue'
|
||||||
@ -474,6 +509,7 @@ import {betweenDay, formatDate, dateFormatter, betweenDay1} from '@/utils/format
|
|||||||
import { Search, Plus } from '@element-plus/icons-vue'
|
import { Search, Plus } from '@element-plus/icons-vue'
|
||||||
import ProjectOrderDialog from '@/views/heli/plan/projectOrderDialog.vue'
|
import ProjectOrderDialog from '@/views/heli/plan/projectOrderDialog.vue'
|
||||||
import * as PlanApi from '@/api/heli/plan'
|
import * as PlanApi from '@/api/heli/plan'
|
||||||
|
import printDialog from './printDialog.vue'
|
||||||
import * as PlanSubApi from '@/api/heli/plansub'
|
import * as PlanSubApi from '@/api/heli/plansub'
|
||||||
import * as ProjectOrderApi from '@/api/heli/projectorder'
|
import * as ProjectOrderApi from '@/api/heli/projectorder'
|
||||||
import * as CustomerApi from '@/api/heli/customer'
|
import * as CustomerApi from '@/api/heli/customer'
|
||||||
@ -487,7 +523,7 @@ const message = useMessage() // 消息弹窗
|
|||||||
const { query } = useRoute()
|
const { query } = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const reload = inject('reload')
|
const reload = inject('reload')
|
||||||
|
const printref = ref()
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formRef = ref() // 表单
|
const formRef = ref() // 表单
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
@ -521,6 +557,29 @@ const projectOrderDialog = ref()
|
|||||||
const openProjectOrderDialog = () => {
|
const openProjectOrderDialog = () => {
|
||||||
projectOrderDialog.value?.open()
|
projectOrderDialog.value?.open()
|
||||||
}
|
}
|
||||||
|
const clickItem = ref([])
|
||||||
|
const handleSelectionChange = (val) => {
|
||||||
|
clickItem.value = val;
|
||||||
|
};
|
||||||
|
const printfClick = () =>{
|
||||||
|
if(clickItem.value == null || clickItem.value.length == 0){
|
||||||
|
message.error("至少选择一项后,打印!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0 ; i < clickItem.value.length ; i ++ ){
|
||||||
|
var item = clickItem.value[i];
|
||||||
|
if(item.id == null ){
|
||||||
|
message.error("请先保存后再打印!");
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(item.projectSubShortName == null || item.projectSubShortName == ''){
|
||||||
|
message.error(item.projectSubName == null ?'子项目简码不得为空':item.projectSubName + "的子项目简码不得为空!")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printref.value.open(clickItem.value)
|
||||||
|
}
|
||||||
const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
|
const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
|
||||||
if (arr) {
|
if (arr) {
|
||||||
formData.value.projectCode = arr.code
|
formData.value.projectCode = arr.code
|
||||||
|
@ -37,7 +37,8 @@
|
|||||||
</el-select> -->
|
</el-select> -->
|
||||||
<!-- <UserSelect v-model="formData.projectOwner" @update:new-value="handleSelectedUser1" class="!w-265px"/>-->
|
<!-- <UserSelect v-model="formData.projectOwner" @update:new-value="handleSelectedUser1" class="!w-265px"/>-->
|
||||||
<el-select class="!w-265px" v-model="formData.projectOwner" clearable filterable>
|
<el-select class="!w-265px" v-model="formData.projectOwner" clearable filterable>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -313,6 +314,8 @@ class="!w-265px" v-model="formData.changeEndTime" type="date" value-format="x"
|
|||||||
<el-card class="hl-card-info">
|
<el-card class="hl-card-info">
|
||||||
<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>
|
||||||
|
<el-button style="margin-left: 3%" type="warning" size="large" @click="printfClick">打印</el-button>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col>
|
<el-col>
|
||||||
@ -320,7 +323,10 @@ class="!w-265px" v-model="formData.changeEndTime" type="date" value-format="x"
|
|||||||
<el-form
|
<el-form
|
||||||
ref="subFormRef" :model="formData.projectPlanSubs" :rules="subFormRules"
|
ref="subFormRef" :model="formData.projectPlanSubs" :rules="subFormRules"
|
||||||
v-loading="subFormLoading" label-width="0">
|
v-loading="subFormLoading" label-width="0">
|
||||||
<el-table :show-overflow-tooltip="true" :data="formData.projectPlanSubs" class="hl-table">
|
<el-table :show-overflow-tooltip="true" @selection-change="handleSelectionChange" :data="formData.projectPlanSubs" class="hl-table">
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="55"/>
|
||||||
<el-table-column label="序号" align="center" type="index" width="70px" fixed />
|
<el-table-column label="序号" align="center" type="index" width="70px" fixed />
|
||||||
<el-table-column prop="name" label="子项目名称" min-width="140px" align="center" fixed />
|
<el-table-column prop="name" label="子项目名称" min-width="140px" align="center" fixed />
|
||||||
<el-table-column prop="projectSubShortName" min-width="130px" align="center">
|
<el-table-column prop="projectSubShortName" min-width="130px" align="center">
|
||||||
@ -384,7 +390,8 @@ class="!w-265px" v-model="row.blankDate" type="date" value-format="x"
|
|||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.blankOwner`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.blankOwner`" class="mb-0px!">
|
||||||
<el-select class="!w-265px" v-model="row.blankOwner" clearable @update:new-value="handleSelectedUser6($index,$event)" @change="handleDateChange($index, row.startBlankDate,row.blankDate,'1',row.blankOwner,row.id)" filterable>
|
<el-select class="!w-265px" v-model="row.blankOwner" clearable @update:new-value="handleSelectedUser6($index,$event)" @change="handleDateChange($index, row.startBlankDate,row.blankDate,'1',row.blankOwner,row.id)" filterable>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<!-- <UserSelect v-model="row.blankOwner" @update:new-value="handleSelectedUser6($index,$event)" @change="handleDateChange($index, row.startBlankDate,row.blankDate,'1',row.blankOwner,row.id)" class="!w-265px"/>-->
|
<!-- <UserSelect v-model="row.blankOwner" @update:new-value="handleSelectedUser6($index,$event)" @change="handleDateChange($index, row.startBlankDate,row.blankDate,'1',row.blankOwner,row.id)" class="!w-265px"/>-->
|
||||||
@ -421,7 +428,8 @@ class="!w-265px" v-model="row.twoDimDate" type="date" value-format="x"
|
|||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!">
|
||||||
<el-select class="!w-265px" v-model="row.twoDimOwner" clearable @update:new-value="handleSelectedUser7($index,$event)" @change="handleDateChange($index, row.startTwoDimDate,row.twoDimDate,'2',row.twoDimOwner,row.id)" filterable>
|
<el-select class="!w-265px" v-model="row.twoDimOwner" clearable @update:new-value="handleSelectedUser7($index,$event)" @change="handleDateChange($index, row.startTwoDimDate,row.twoDimDate,'2',row.twoDimOwner,row.id)" filterable>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<!-- <UserSelect v-model="row.twoDimOwner" @update:new-value="handleSelectedUser7($index,$event)" @change="handleDateChange($index, row.startTwoDimDate,row.twoDimDate,'2',row.twoDimOwner,row.id)" class="!w-265px"/>-->
|
<!-- <UserSelect v-model="row.twoDimOwner" @update:new-value="handleSelectedUser7($index,$event)" @change="handleDateChange($index, row.startTwoDimDate,row.twoDimDate,'2',row.twoDimOwner,row.id)" class="!w-265px"/>-->
|
||||||
@ -454,7 +462,8 @@ class="!w-265px" v-model="row.threeDimDate" type="date" value-format="x"
|
|||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.threeDimOwner`" class="mb-0px!">
|
<el-form-item :prop="`${$index}.threeDimOwner`" class="mb-0px!">
|
||||||
<el-select class="!w-265px" v-model="row.threeDimOwner" clearable @update:new-value="handleSelectedUser8($index,$event)" @change="handleDateChange($index, row.startThreeDimDate,row.threeDimDate,'3',row.threeDimOwner,row.id)" filterable>
|
<el-select class="!w-265px" v-model="row.threeDimOwner" clearable @update:new-value="handleSelectedUser8($index,$event)" @change="handleDateChange($index, row.startThreeDimDate,row.threeDimDate,'3',row.threeDimOwner,row.id)" filterable>
|
||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<!-- <UserSelect v-model="row.threeDimOwner" @update:new-value="handleSelectedUser8($index,$event)" @change="handleDateChange($index, row.startThreeDimDate,row.threeDimDate,'3',row.threeDimOwner,row.id)" class="!w-265px"/>-->
|
<!-- <UserSelect v-model="row.threeDimOwner" @update:new-value="handleSelectedUser8($index,$event)" @change="handleDateChange($index, row.startThreeDimDate,row.threeDimDate,'3',row.threeDimOwner,row.id)" class="!w-265px"/>-->
|
||||||
@ -521,35 +530,43 @@ style="width: 100%" v-model="row.endDate" type="date" value-format="x"
|
|||||||
<!-- :label="dict.username+' '+dict.nickname" :value="dict.id" />-->
|
<!-- :label="dict.username+' '+dict.nickname" :value="dict.id" />-->
|
||||||
<!-- </el-select>-->
|
<!-- </el-select>-->
|
||||||
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='母模/毛坯'">
|
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='母模/毛坯'">
|
||||||
<el-option v-for="dict in mergedArray" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in mergedArray" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='粗,精加工'">
|
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='粗,精加工'">
|
||||||
<el-option v-for="dict in mergedArray1" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in mergedArray1" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='热处理'">
|
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='热处理'">
|
||||||
<el-option v-for="dict in mergedArray2" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in mergedArray2" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='电火花'">
|
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='电火花'">
|
||||||
<el-option v-for="dict in mergedArray3" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in mergedArray3" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='打孔/抛光'">
|
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='打孔/抛光'">
|
||||||
<el-option v-for="dict in mergedArray4" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in mergedArray4" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='装配'">
|
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='装配'">
|
||||||
<el-option v-for="dict in mergedArray5" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in mergedArray5" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='预验收'">
|
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='预验收'">
|
||||||
<el-option v-for="dict in mergedArray6" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in mergedArray6" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='检验'">
|
<el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='检验'">
|
||||||
<el-option v-for="dict in mergedArray7" :key="dict.id"
|
<el-option
|
||||||
|
v-for="dict in mergedArray7" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
||||||
@ -598,13 +615,14 @@ style="width: 100%" v-model="row.endDate" type="date" value-format="x"
|
|||||||
</el-card>
|
</el-card>
|
||||||
<ProjectOrderDialog ref="projectOrderDialog" @success="handleSelectedProjectOrder" />
|
<ProjectOrderDialog ref="projectOrderDialog" @success="handleSelectedProjectOrder" />
|
||||||
<ProjectSubDialog :title="dialogTitle" width="80%" v-model="dialogVisible" :parent-method="parentMethod" :parent-methods="clouse" :projectOrderSubs="dataList" :ownerId="ownerId" :dateOne="dateOne" :dateTwo="dateTwo" :id="id" :diffDays="diffDays" :typeNames="typeNames" @update="handleUpdate" :showCloseProp="false" center /><!-- :ownerId="ownerId" :dateOne="dateOne" :dateTwo="dateTwo" :id="id" :diffDays="diffDays" :typeNames="typeNames" -->
|
<ProjectSubDialog :title="dialogTitle" width="80%" v-model="dialogVisible" :parent-method="parentMethod" :parent-methods="clouse" :projectOrderSubs="dataList" :ownerId="ownerId" :dateOne="dateOne" :dateTwo="dateTwo" :id="id" :diffDays="diffDays" :typeNames="typeNames" @update="handleUpdate" :showCloseProp="false" center /><!-- :ownerId="ownerId" :dateOne="dateOne" :dateTwo="dateTwo" :id="id" :diffDays="diffDays" :typeNames="typeNames" -->
|
||||||
|
<printDialog ref="printref" :minAmount="minAmount" :formData="formData" />
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { inject } from 'vue'
|
import { inject } from 'vue'
|
||||||
import { getIntDictOptions, getStrDictOptions, getDictLabel, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, getStrDictOptions, getDictLabel, DICT_TYPE } from '@/utils/dict'
|
||||||
import {betweenDay, formatDate, dateFormatter, betweenDay1} from '@/utils/formatTime'
|
import {betweenDay, formatDate, dateFormatter, betweenDay1} from '@/utils/formatTime'
|
||||||
|
import printDialog from './printDialog.vue'
|
||||||
import { Search, Plus } from '@element-plus/icons-vue'
|
import { Search, Plus } from '@element-plus/icons-vue'
|
||||||
import ProjectOrderDialog from '@/views/heli/plan/projectOrderDialog.vue'
|
import ProjectOrderDialog from '@/views/heli/plan/projectOrderDialog.vue'
|
||||||
import ProjectSubDialog from '@/views/heli/plan/projectSubDialog.vue'
|
import ProjectSubDialog from '@/views/heli/plan/projectSubDialog.vue'
|
||||||
@ -619,7 +637,7 @@ import { getOperateLogPage } from '@/api/system/operatelog'
|
|||||||
import UserSelect from '@/views/heli/hlvuestyle/userSelect.vue'
|
import UserSelect from '@/views/heli/hlvuestyle/userSelect.vue'
|
||||||
import EquipSelect from '@/views/heli/hlvuestyle/equipSelect.vue'
|
import EquipSelect from '@/views/heli/hlvuestyle/equipSelect.vue'
|
||||||
import * as ProjectLeaderApi from "@/api/heli/projectleader";
|
import * as ProjectLeaderApi from "@/api/heli/projectleader";
|
||||||
|
const printref = ref()
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { query } = useRoute()
|
const { query } = useRoute()
|
||||||
@ -696,6 +714,10 @@ const projectOrderDialog = ref()
|
|||||||
const openProjectOrderDialog = () => {
|
const openProjectOrderDialog = () => {
|
||||||
projectOrderDialog.value?.open()
|
projectOrderDialog.value?.open()
|
||||||
}
|
}
|
||||||
|
const clickItem = ref([])
|
||||||
|
const handleSelectionChange = (val) => {
|
||||||
|
clickItem.value = val;
|
||||||
|
};
|
||||||
const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
|
const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
|
||||||
if (arr) {
|
if (arr) {
|
||||||
formData.value.projectCode = arr.code
|
formData.value.projectCode = arr.code
|
||||||
@ -1055,6 +1077,25 @@ const getOwnderListss = async (index: number) => {
|
|||||||
dialogVisible.value = true;
|
dialogVisible.value = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const printfClick = () =>{
|
||||||
|
if(clickItem.value == null || clickItem.value.length == 0){
|
||||||
|
message.error("至少选择一项后,打印!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0 ; i < clickItem.value.length ; i ++ ){
|
||||||
|
var item = clickItem.value[i];
|
||||||
|
if(item.id == null ){
|
||||||
|
message.error("请先保存后再打印!");
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(item.projectSubShortName == null || item.projectSubShortName == ''){
|
||||||
|
message.error(item.projectSubName == null ?'子项目简码不得为空':item.projectSubName + "的子项目简码不得为空!")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printref.value.open(clickItem.value)
|
||||||
|
}
|
||||||
/* const getOwnderListss = async (index: number) => {
|
/* const getOwnderListss = async (index: number) => {
|
||||||
|
|
||||||
//根据行索引获取到编辑行
|
//根据行索引获取到编辑行
|
||||||
|
161
mes-ui/mes-ui-admin-vue3/src/views/heli/plan/printDialog.vue
Normal file
161
mes-ui/mes-ui-admin-vue3/src/views/heli/plan/printDialog.vue
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
<template>
|
||||||
|
<Dialog
|
||||||
|
title="打印预览"
|
||||||
|
v-model="dialogVisible"
|
||||||
|
width="1000"
|
||||||
|
top="0%"
|
||||||
|
:before-close="(doClose) => beforeDialogClose(doClose)"
|
||||||
|
>
|
||||||
|
<el-button @click="outopen" style="float: right;margin-right: 0.5%;">取消</el-button>
|
||||||
|
<el-button @click="onPrint" type="primary" style="float: right;margin-right: 1%;">打印</el-button>
|
||||||
|
|
||||||
|
<!-- 打印预览 -->
|
||||||
|
<div class="print-wrap page" ref="print">
|
||||||
|
<div id="qrCodeContainer"></div>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<!-- 【打印】 -->
|
||||||
|
<el-button @click="onPrint" type="primary">打印</el-button>
|
||||||
|
<el-button @click="outopen">取消</el-button>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
// import { ref, reactive } from 'vue'
|
||||||
|
// import { betweenDay, dateFormatter, formatDate } from '@/utils/formatTime'
|
||||||
|
import QRCode from 'qrcode'
|
||||||
|
// import * as ProjectOrderApi from '@/api/biz/projectorder'
|
||||||
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
|
let clauseId = null;
|
||||||
|
const startPageNum=ref(0);
|
||||||
|
const endPageNum=ref(0);
|
||||||
|
const onPrint = () => {
|
||||||
|
// 拿到打印页面dom节点
|
||||||
|
const printNode = document.querySelector('.print-wrap')
|
||||||
|
if (!printNode) return
|
||||||
|
// 页面文档创建一个空的内框架,用于挂载打印节点,并设置一定的样式
|
||||||
|
const newIframe: any = document.createElement('iframe')
|
||||||
|
newIframe.setAttribute(
|
||||||
|
'style',
|
||||||
|
'width:0px;height:0px;position:absolute;left:-9999px;top:-9999px;'
|
||||||
|
)
|
||||||
|
newIframe.setAttribute('align', 'center')
|
||||||
|
document.body.appendChild(newIframe)
|
||||||
|
// 将打印页面设置为内框架内容
|
||||||
|
let doc: any = null
|
||||||
|
doc = newIframe.contentWindow.document
|
||||||
|
doc.write(`
|
||||||
|
<style type="text/css">
|
||||||
|
/* 浏览器打印基本样式 */
|
||||||
|
@page {
|
||||||
|
size: 70mm 200mm;
|
||||||
|
margin: 0;
|
||||||
|
height: 200mm;
|
||||||
|
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
.page {
|
||||||
|
margin: 0;
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
}
|
||||||
|
.qr-page {
|
||||||
|
width: 70mm;
|
||||||
|
height: 200mm;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<div>
|
||||||
|
${printNode.innerHTML}
|
||||||
|
</div>`)
|
||||||
|
|
||||||
|
console.log(clauseId)
|
||||||
|
|
||||||
|
doc.close()
|
||||||
|
// 浏览器打印页面打开渲染
|
||||||
|
setTimeout(() => {
|
||||||
|
newIframe.contentWindow.focus()
|
||||||
|
newIframe.contentWindow.print()
|
||||||
|
document.body.removeChild(newIframe) // 移除打印内框架,下次打印下次再挂载
|
||||||
|
dialogVisible.value = false
|
||||||
|
}, 100)
|
||||||
|
// ProjectOrderApi.updatePrintStatus({clauseId:clauseId,printEmp:'',startPageNum:startPageNum.value,endPageNum:endPageNum.value})
|
||||||
|
|
||||||
|
}
|
||||||
|
// / 关闭 Dialog 前的处理逻辑
|
||||||
|
function beforeDialogClose(doClose: (shouldClose: boolean) => void): void {
|
||||||
|
outopen()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 页面关闭重置
|
||||||
|
const outopen = () => {
|
||||||
|
dialogVisible.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
const printCodeName = ref([])
|
||||||
|
|
||||||
|
const datavals = ref([])
|
||||||
|
/** 打开弹窗 */
|
||||||
|
const specarr: any = ref([])
|
||||||
|
const cnenList: any = ref([])
|
||||||
|
const open = async (vals) => {
|
||||||
|
console.log("打印预览传输的信息")
|
||||||
|
console.log(vals)
|
||||||
|
specarr.value = []
|
||||||
|
//获取中英文对照表
|
||||||
|
// cnenList.value = await ProjectOrderApi.getcnenList()
|
||||||
|
console.log(vals)
|
||||||
|
datavals.value = []
|
||||||
|
printCodeName.value = []
|
||||||
|
vals.forEach((item) => {
|
||||||
|
const row = {
|
||||||
|
projectSubShortName: item.projectSubShortName ,
|
||||||
|
}
|
||||||
|
const newName = `${item.projectSubShortName}`
|
||||||
|
const row1 = {
|
||||||
|
name: newName
|
||||||
|
}
|
||||||
|
printCodeName.value.push(row1)
|
||||||
|
datavals.value.push(row)
|
||||||
|
})
|
||||||
|
|
||||||
|
dialogVisible.value = true
|
||||||
|
await Promise.all(
|
||||||
|
printCodeName.value.map(async (item) => {
|
||||||
|
const qrCodeData = await QRCode.toDataURL(item.name)
|
||||||
|
const qrCodeElement = document.getElementById('qrCodeContainer')
|
||||||
|
if (qrCodeElement) {
|
||||||
|
(qrCodeElement.innerHTML +=
|
||||||
|
`<div class="page qr-page">
|
||||||
|
<div class="qr-code-container" style="padding:0mm;font-size:15px !important;font-weight:700;position: relative; height: 200mm">
|
||||||
|
<div style="text-align:center;"> <img src="${qrCodeData}" width="100%" alt="QR Code"/></div>
|
||||||
|
<div style="margin:0 2mm;text-align:left;font-size:19px !important;" >
|
||||||
|
<span style="display:block;font-size:17px !important;">子项目编码:${item.name}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>`)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// <p>${datavals.value[0]?.projectSubName},${datavals.value[0].spec},${datavals.value[0].sort},${datavals.value[0].amount}</p>
|
||||||
|
// <div class="qr-code-name">${item}</div>
|
||||||
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.page {
|
||||||
|
width: 70mm;
|
||||||
|
min-height: 200mm;
|
||||||
|
margin: auto;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
A4的大小:21cm*29.7cm(width:794px;)。
|
||||||
|
单位换算:1 inch = 2.54 cm 1mm = 96 px 1 cm = 37.79528 px*/
|
||||||
|
</style>
|
@ -145,11 +145,11 @@
|
|||||||
<el-card class="hl-incard">
|
<el-card class="hl-incard">
|
||||||
<el-form ref="subFormRef" :model="formData.bomDetails" :rules="subFormRules" v-loading="formLoading" label-width="0" >
|
<el-form ref="subFormRef" :model="formData.bomDetails" :rules="subFormRules" v-loading="formLoading" label-width="0" >
|
||||||
<el-table :row-class-name="tableRowClassName" :data="formData.bomDetails" @selection-change="handleSelectionChange">
|
<el-table :row-class-name="tableRowClassName" :data="formData.bomDetails" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" min-width="50px" >
|
<!-- <el-table-column type="selection" min-width="50px" >
|
||||||
<template #default="{ row}">
|
<template #default="{ row}">
|
||||||
<el-checkbox v-model="row.chkboxEnable"/>
|
<el-checkbox v-model="row.chkboxEnable"/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<!-- <el-table-column type="selection" width="55" />-->
|
<!-- <el-table-column type="selection" width="55" />-->
|
||||||
<el-table-column label="序号" type="index" min-width="50px" />
|
<el-table-column label="序号" type="index" min-width="50px" />
|
||||||
<el-table-column label="变更次数" prop="bomEditStatus" max-width="60px" align="center">
|
<el-table-column label="变更次数" prop="bomEditStatus" max-width="60px" align="center">
|
||||||
|
@ -111,6 +111,7 @@
|
|||||||
>
|
>
|
||||||
<Icon icon="ep:upload" /> 导入BOM
|
<Icon icon="ep:upload" /> 导入BOM
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<el-button type="warning" size="large" @click="printfClick">打印</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-card class="hl-incard">
|
<el-card class="hl-incard">
|
||||||
@ -120,9 +121,9 @@
|
|||||||
<el-table
|
<el-table
|
||||||
:data="formData.processBomDetails" class="hl-table" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
|
:data="formData.processBomDetails" class="hl-table" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
|
||||||
:style="{ height: formData.processBomDetails && formData.processBomDetails.length > 9 ? '540px' : '' }" >
|
:style="{ height: formData.processBomDetails && formData.processBomDetails.length > 9 ? '540px' : '' }" >
|
||||||
<!-- <el-table-column
|
<el-table-column
|
||||||
type="selection"
|
type="selection"
|
||||||
width="55"/> -->
|
width="55"/>
|
||||||
<el-table-column label="序号" type="index" width="80" fixed="left"/>
|
<el-table-column label="序号" type="index" width="80" fixed="left"/>
|
||||||
<el-table-column label="是否标准件" prop="type" min-width="200" fixed="left">
|
<el-table-column label="是否标准件" prop="type" min-width="200" fixed="left">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
@ -143,10 +144,10 @@
|
|||||||
<template #header><span class="hl-table_header">*</span>零件名称</template>
|
<template #header><span class="hl-table_header">*</span>零件名称</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.materialName`" :rules="subFormRules.materialName" class="mb-0px!">
|
<el-form-item :prop="`${$index}.materialName`" :rules="subFormRules.materialName" class="mb-0px!">
|
||||||
<MaterialSelect
|
<!-- <MaterialSelect
|
||||||
:disabled="getDisable(row.bomEditStatus)" v-if="row.type == '1'" v-model="row.materialId"
|
:disabled="getDisable(row.bomEditStatus)" v-if="row.type == '1'" v-model="row.materialId"
|
||||||
@update:new-value="(val) => { handleSelectedMaterial(row, val); }" />
|
@update:new-value="(val) => { handleSelectedMaterial(row, val); }" /> -->
|
||||||
<el-input :disabled="getDisable(row.bomEditStatus)" v-else v-model="row.materialName" />
|
<el-input :disabled="getDisable(row.bomEditStatus)" v-model="row.materialName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -205,8 +206,8 @@
|
|||||||
<template #header> <span class="hl-table_header">*</span>系统单位</template>
|
<template #header> <span class="hl-table_header">*</span>系统单位</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.unit`" :rules="subFormRules.unit" class="mb-0px!">
|
<el-form-item :prop="`${$index}.unit`" :rules="subFormRules.unit" class="mb-0px!">
|
||||||
<span v-if="row.type == '1'">{{ getDictLabel(DICT_TYPE.HELI_MATERIAL_UNIT, row.unit) }}</span>
|
<!-- <span v-if="row.type == '1'">{{ getDictLabel(DICT_TYPE.HELI_MATERIAL_UNIT, row.unit) }}</span>-->
|
||||||
<el-select :disabled="getDisable(row.bomEditStatus)" v-else v-model="row.unit" clearable class="!w-250px">
|
<el-select :disabled="getDisable(row.bomEditStatus)" v-model="row.unit" clearable class="!w-250px">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)" :key="dict.value"
|
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)" :key="dict.value"
|
||||||
:label="dict.label" :value="dict.value" />
|
:label="dict.label" :value="dict.value" />
|
||||||
@ -361,6 +362,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
<BomImportForm ref="importFormRef" @success="getList" />
|
<BomImportForm ref="importFormRef" @success="getList" />
|
||||||
|
<printDialog ref="printref" :minAmount="minAmount" :formData="formData" />
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { DICT_TYPE, getDictLabel, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
|
import { DICT_TYPE, getDictLabel, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
|
||||||
@ -376,7 +378,7 @@ import * as ProcessBomApi from '@/api/heli/processbom'
|
|||||||
import * as storageApi from '@/api/heli/storage'
|
import * as storageApi from '@/api/heli/storage'
|
||||||
import { getOperateLogPage } from '@/api/system/operatelog'
|
import { getOperateLogPage } from '@/api/system/operatelog'
|
||||||
import { deleteProcessBomDetail } from "@/api/heli/processbom";
|
import { deleteProcessBomDetail } from "@/api/heli/processbom";
|
||||||
|
import printDialog from './printDialog.vue'
|
||||||
import { UploadUserFile } from 'element-plus'
|
import { UploadUserFile } from 'element-plus'
|
||||||
import { getAccessToken, getTenantId } from '@/utils/auth'
|
import { getAccessToken, getTenantId } from '@/utils/auth'
|
||||||
import { deleteFileLogic, downloadFile, getFilePage } from '@/api/infra/file'
|
import { deleteFileLogic, downloadFile, getFilePage } from '@/api/infra/file'
|
||||||
@ -397,6 +399,7 @@ const currentId = toRef(commonStore.getStore('id'))
|
|||||||
const formLoading = ref(false)
|
const formLoading = ref(false)
|
||||||
const dialogTitle = ref('')
|
const dialogTitle = ref('')
|
||||||
const detailDisabled = ref(false)
|
const detailDisabled = ref(false)
|
||||||
|
const printref = ref()
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
code: undefined,
|
code: undefined,
|
||||||
@ -623,8 +626,10 @@ const subFormRules = reactive({
|
|||||||
blueprintNo: [{ required: true, message: '图号不能为空', trigger: 'blur' }],
|
blueprintNo: [{ required: true, message: '图号不能为空', trigger: 'blur' }],
|
||||||
spec: [{ required: true, message: '规格型号不能为空', trigger: 'blur' }]
|
spec: [{ required: true, message: '规格型号不能为空', trigger: 'blur' }]
|
||||||
})
|
})
|
||||||
|
const clickItem = ref([])
|
||||||
|
|
||||||
const handleSelectionChange = (val) => {
|
const handleSelectionChange = (val) => {
|
||||||
|
clickItem.value = val;
|
||||||
val.forEach((item) => {
|
val.forEach((item) => {
|
||||||
const target = formData.value.processBomDetails.find((dataItem) => dataItem === item);
|
const target = formData.value.processBomDetails.find((dataItem) => dataItem === item);
|
||||||
if (target) {
|
if (target) {
|
||||||
@ -755,7 +760,29 @@ const onDeleteItem = async (index) => {
|
|||||||
let id = deletedItems[0].id;
|
let id = deletedItems[0].id;
|
||||||
if (id) await ProcessBomApi.deleteProcessBomDetail(id)
|
if (id) await ProcessBomApi.deleteProcessBomDetail(id)
|
||||||
}
|
}
|
||||||
|
const printfClick = () =>{
|
||||||
|
if(formData.value.code == null || formData.value.code == ''){
|
||||||
|
message.error("当前BOM编码为空,请完善子项目简码后重试!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(clickItem.value == null || clickItem.value.length == 0){
|
||||||
|
message.error("至少选择一项后,打印!")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0 ; i < clickItem.value.length ; i ++ ){
|
||||||
|
var item = clickItem.value[i];
|
||||||
|
if(item.id == null ){
|
||||||
|
message.error("请先保存后再打印!");
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(item.blueprintNo == null || item.blueprintNo == ''){
|
||||||
|
message.error(item.materialName == null ?'物料明细行图号不得为空':item.materialName + "图号不得为空!")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printref.value.open(formData.value.code,clickItem.value)
|
||||||
|
}
|
||||||
const onChangeType = (row, val) => {
|
const onChangeType = (row, val) => {
|
||||||
if (val==2){
|
if (val==2){
|
||||||
row.spec = "A"
|
row.spec = "A"
|
||||||
|
@ -0,0 +1,160 @@
|
|||||||
|
<template>
|
||||||
|
<Dialog
|
||||||
|
title="打印预览"
|
||||||
|
v-model="dialogVisible"
|
||||||
|
width="1000"
|
||||||
|
top="0%"
|
||||||
|
:before-close="(doClose) => beforeDialogClose(doClose)"
|
||||||
|
>
|
||||||
|
<el-button @click="outopen" style="float: right;margin-right: 0.5%;">取消</el-button>
|
||||||
|
<el-button @click="onPrint" type="primary" style="float: right;margin-right: 1%;">打印</el-button>
|
||||||
|
|
||||||
|
<!-- 打印预览 -->
|
||||||
|
<div class="print-wrap page" ref="print">
|
||||||
|
<div id="qrCodeContainer"></div>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<!-- 【打印】 -->
|
||||||
|
<el-button @click="onPrint" type="primary">打印</el-button>
|
||||||
|
<el-button @click="outopen">取消</el-button>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
// import { ref, reactive } from 'vue'
|
||||||
|
// import { betweenDay, dateFormatter, formatDate } from '@/utils/formatTime'
|
||||||
|
import QRCode from 'qrcode'
|
||||||
|
// import * as ProjectOrderApi from '@/api/biz/projectorder'
|
||||||
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
|
let clauseId = null;
|
||||||
|
const startPageNum=ref(0);
|
||||||
|
const endPageNum=ref(0);
|
||||||
|
const onPrint = () => {
|
||||||
|
// 拿到打印页面dom节点
|
||||||
|
const printNode = document.querySelector('.print-wrap')
|
||||||
|
if (!printNode) return
|
||||||
|
// 页面文档创建一个空的内框架,用于挂载打印节点,并设置一定的样式
|
||||||
|
const newIframe: any = document.createElement('iframe')
|
||||||
|
newIframe.setAttribute(
|
||||||
|
'style',
|
||||||
|
'width:0px;height:0px;position:absolute;left:-9999px;top:-9999px;'
|
||||||
|
)
|
||||||
|
newIframe.setAttribute('align', 'center')
|
||||||
|
document.body.appendChild(newIframe)
|
||||||
|
// 将打印页面设置为内框架内容
|
||||||
|
let doc: any = null
|
||||||
|
doc = newIframe.contentWindow.document
|
||||||
|
doc.write(`
|
||||||
|
<style type="text/css">
|
||||||
|
/* 浏览器打印基本样式 */
|
||||||
|
@page {
|
||||||
|
size: 70mm 200mm;
|
||||||
|
margin: 0;
|
||||||
|
height: 200mm;
|
||||||
|
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
.page {
|
||||||
|
margin: 0;
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
}
|
||||||
|
.qr-page {
|
||||||
|
width: 70mm;
|
||||||
|
height: 200mm;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<div>
|
||||||
|
${printNode.innerHTML}
|
||||||
|
</div>`)
|
||||||
|
|
||||||
|
console.log(clauseId)
|
||||||
|
|
||||||
|
doc.close()
|
||||||
|
// 浏览器打印页面打开渲染
|
||||||
|
setTimeout(() => {
|
||||||
|
newIframe.contentWindow.focus()
|
||||||
|
newIframe.contentWindow.print()
|
||||||
|
document.body.removeChild(newIframe) // 移除打印内框架,下次打印下次再挂载
|
||||||
|
dialogVisible.value = false
|
||||||
|
}, 100)
|
||||||
|
// ProjectOrderApi.updatePrintStatus({clauseId:clauseId,printEmp:'',startPageNum:startPageNum.value,endPageNum:endPageNum.value})
|
||||||
|
|
||||||
|
}
|
||||||
|
// / 关闭 Dialog 前的处理逻辑
|
||||||
|
function beforeDialogClose(doClose: (shouldClose: boolean) => void): void {
|
||||||
|
outopen()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 页面关闭重置
|
||||||
|
const outopen = () => {
|
||||||
|
dialogVisible.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
const printCodeName = ref([])
|
||||||
|
|
||||||
|
const datavals = ref([])
|
||||||
|
/** 打开弹窗 */
|
||||||
|
const specarr: any = ref([])
|
||||||
|
const cnenList: any = ref([])
|
||||||
|
const open = async (bomCode,vals) => {
|
||||||
|
console.log("打印预览传输的信息")
|
||||||
|
specarr.value = []
|
||||||
|
//获取中英文对照表
|
||||||
|
// cnenList.value = await ProjectOrderApi.getcnenList()
|
||||||
|
console.log(vals)
|
||||||
|
datavals.value = []
|
||||||
|
printCodeName.value = []
|
||||||
|
vals.forEach((item) => {
|
||||||
|
const row = {
|
||||||
|
blueprintNo: item.blueprintNo ,
|
||||||
|
}
|
||||||
|
const newName = `${bomCode}-${item.blueprintNo}`
|
||||||
|
const row1 = {
|
||||||
|
name: newName
|
||||||
|
}
|
||||||
|
printCodeName.value.push(row1)
|
||||||
|
datavals.value.push(row)
|
||||||
|
})
|
||||||
|
|
||||||
|
dialogVisible.value = true
|
||||||
|
await Promise.all(
|
||||||
|
printCodeName.value.map(async (item) => {
|
||||||
|
const qrCodeData = await QRCode.toDataURL(item.name)
|
||||||
|
const qrCodeElement = document.getElementById('qrCodeContainer')
|
||||||
|
if (qrCodeElement) {
|
||||||
|
(qrCodeElement.innerHTML +=
|
||||||
|
`<div class="page qr-page">
|
||||||
|
<div class="qr-code-container" style="padding:0mm;font-size:15px !important;font-weight:700;position: relative; height: 200mm">
|
||||||
|
<div style="text-align:center;"> <img src="${qrCodeData}" width="100%" alt="QR Code"/></div>
|
||||||
|
<div style="margin:0 2mm;text-align:left;font-size:19px !important;" >
|
||||||
|
<span style="display:block;font-size:17px !important;">图纸编号:${item.name}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>`)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// <p>${datavals.value[0]?.projectSubName},${datavals.value[0].spec},${datavals.value[0].sort},${datavals.value[0].amount}</p>
|
||||||
|
// <div class="qr-code-name">${item}</div>
|
||||||
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.page {
|
||||||
|
width: 70mm;
|
||||||
|
min-height: 200mm;
|
||||||
|
margin: auto;
|
||||||
|
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
A4的大小:21cm*29.7cm(width:794px;)。
|
||||||
|
单位换算:1 inch = 2.54 cm 1mm = 96 px 1 cm = 37.79528 px*/
|
||||||
|
</style>
|
@ -128,8 +128,9 @@
|
|||||||
}
|
}
|
||||||
const searchVal = ref('')
|
const searchVal = ref('')
|
||||||
// const dataListDefault = ref([])
|
// const dataListDefault = ref([])
|
||||||
const handleSearch = async () => {
|
const handleSearch = async (e) => {
|
||||||
queryParams.subOrDetailName = searchVal.value;
|
|
||||||
|
queryParams.subOrDetailName = e.inputValue;
|
||||||
queryParams.pageNo = 1;
|
queryParams.pageNo = 1;
|
||||||
isFinish.value = false;
|
isFinish.value = false;
|
||||||
dataList.value = []
|
dataList.value = []
|
||||||
@ -140,8 +141,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="cont">
|
<view class="cont">
|
||||||
<view class="search" v-if="props.orderState == '0,1' ">
|
<view class="search" v-if="props.orderState == '0,1' ">
|
||||||
<input class="uni-input" v-model="searchVal" placeholder="请输入项目或子项目名称" />
|
<spring-search-box :showScan="true" :showReset="true" bgColor="#E2F3FF" @input="(e) => handleSearch(e)" placeholderColor="#28A0F8" searchColor="#28A0F8" v-model="searchVal" :mode="3" @change="(e) => handleSearch(e)" placeholder="请输入项目或子项目名称" clearable></spring-search-box>
|
||||||
<uni-icons type="search" size="30" class="icons" @click="handleSearch"></uni-icons>
|
|
||||||
|
<!-- <spring-search-box :showScan="true" :showReset="true" bgColor="#E2F3FF" @input="(e) => handleSearch(e)" placeholderColor="#28A0F8" searchColor="#28A0F8" v-model="searchVal" :mode="3" @change="(e) => handleSearch(e)" placeholder="请输入项目或子项目名称"></spring-search-box -->
|
||||||
|
<!-- <input class="uni-input" v-model="searchVal" placeholder="请输入项目或子项目名称" />
|
||||||
|
<button><uni-icons type="search" size="30" class="icons" @click="handleSearch"></uni-icons></button> -->
|
||||||
</view>
|
</view>
|
||||||
<scroll-view enable-back-to-top scroll-y class="data-list" refresher-enabled :refresher-triggered="isTriggered"
|
<scroll-view enable-back-to-top scroll-y class="data-list" refresher-enabled :refresher-triggered="isTriggered"
|
||||||
@refresherrefresh="onRefresherrefresh" @scrolltolower="getListData">
|
@refresherrefresh="onRefresherrefresh" @scrolltolower="getListData">
|
||||||
@ -220,6 +224,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.data-list {
|
.data-list {
|
||||||
|
|
||||||
height: 90vh;
|
height: 90vh;
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
|
Loading…
Reference in New Issue
Block a user