叶松
2023-11-27 111a401f033749c965f02f58c586a8feafd9afd1
Merge branch 'master' of http://111.30.93.211:10101/r/supipe
已修改26个文件
已添加1个文件
1950 ■■■■ 文件已修改
hd/pipe/common/src/main/java/com/thhy/general/common/enums/ProListenType.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/common/src/main/java/com/thhy/general/utils/UUIDUtils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/MixingPlantNewScheduled.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/mixingstationstorage/dto/MinXingPlantDto.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/mixingstationstorage/entity/MinXingPlantVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/mixingstationstorage/service/impl/MinXingPlantServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/rebarprint/entity/dto/ProduceExportDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/rebarprint/service/impl/TSteelProduceServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/mapper/WeighMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/resources/mapping/MinXingPlantMapper.xml 135 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/resources/mapping/TSteelProduceMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/resources/mapping/WeighMapper.xml 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/mouldcheck/service/impl/ModCheckServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeListVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/steelcheck/entity/SteelStockRecord.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/steelcheck/service/impl/SteelCheckServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/steelstock/mapper/SteelStockMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/mobile/src/main/resources/mapping/SteelStockMapper.xml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/controller/ExecProListener.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/mapper/BigScreenMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/service/impl/ProduceListenServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/java/com/thhy/screen/utils/AudioUtils.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/java/com/thhy/screen/utils/HttpUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/api/modules/ductpiecePLM.js 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/DuctpiecePLM/DuctProduct/ProductIndex.vue 650 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/DuctpiecePLM/DuctpieceIndex.vue 650 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/common/src/main/java/com/thhy/general/common/enums/ProListenType.java
@@ -6,9 +6,9 @@
    public final static String PIPEPLANACTUAL = "pipePlanActual";
    public final static String PIPEMONTHPLANACTUAL = "pipeMonthPlanActual";
    public final static String STEELUSE = "steelUse";
    public final static String MATERIALWEEKANDMONTHS = "materialWeekAndMonths";
    public final static String RESTINFO = "restInfo";
    public final static String WATERCULINFO = "waterCulInfo";
hd/pipe/common/src/main/java/com/thhy/general/utils/UUIDUtils.java
@@ -46,7 +46,7 @@
    public static String createRingNum(Integer num){
        StringBuilder sb = new StringBuilder();
        sb.append(addZero(num,6));
        sb.append(addZero(num,4));
        return sb.toString();
    }
@@ -74,7 +74,7 @@
    }
    public static void main(String[] args) {
        System.out.println(createSteelNum("001",70));
        System.out.println(createRingNum(5));
    }
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/MixingPlantNewScheduled.java
@@ -4,6 +4,7 @@
import com.thhy.materials.modules.biz.concret.entity.dto.DicetName;
import com.thhy.materials.modules.biz.concret.entity.dto.TMinxingPlant;
import com.thhy.materials.modules.biz.concret.entity.dto.WeighDto;
import com.thhy.materials.modules.biz.weigh.entity.TWeighbridge;
import com.thhy.materials.modules.biz.weigh.mapper.WeighMapper;
import com.thhy.materials.modules.biz.weigh.service.WeighService;
import org.redisson.api.RLock;
@@ -192,6 +193,50 @@
    }
    //苏州项目------- 地磅入库  记录,及库存修改
    @Scheduled(fixedRate = 2000000) // 每隔3秒执行一次任务
    public void weighbridge() {
        //查询搅拌 所有类型
        List<DicetName> dictList = weighService.dictList();
        List<TWeighbridge> tWeighbridges = weighMapper.weighbridgeListType();
        for (DicetName dicetName : dictList){
            for (TWeighbridge weighbridge :tWeighbridges){
                if(dicetName.getDictName().equals(weighbridge.getMatname())){
                    //开始的库存
                    Double materialValue = weighMapper.materialStockValue(dicetName.getDictId());
                    //净重
                    String jweight = weighbridge.getJweight();
                    HashMap<String, Object> hashMap = new HashMap<>();
                    hashMap.put("id","");
                    hashMap.put("type",1);
                    hashMap.put("opType",1);
                    hashMap.put("materialName",dicetName.getDictId());
                    hashMap.put("materialValue",Double.valueOf(jweight));
                    hashMap.put("beforeStock",materialValue);
                    BigDecimal b1 = new BigDecimal(jweight);
                    BigDecimal b2 = new BigDecimal(materialValue);
                    double v1 = b1.add(b2).doubleValue();
                    hashMap.put("afterStock",v1);
                    hashMap.put("companyId","031e3dd577e8ed28e96aa69b");
                    RLock lock = redissonclient.getLock("materlock");
                    if(!lock.isLocked()) {
                        lock.lock(10, TimeUnit.SECONDS);
                        //插入记录表//苏州项目(入库计入增加)
                        weighMapper.materialStockRecordIns(hashMap);
                        //更改记录值
                        weighMapper.materialStockRecordUp(dicetName.getDictId(),b1.add(b2).doubleValue());
                        lock.unlock();
                    }
                    weighMapper.weighbridgeUpdateType(weighbridge.getWeighbridgeId());
                }
            }
        }
    }
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/mixingstationstorage/dto/MinXingPlantDto.java
@@ -11,9 +11,10 @@
public class MinXingPlantDto {
    private String dictId;//    管片原料类型(字典表)
    private String companyId;//分公司id
    private String supplierId;//供应商ID
    private String supplierName;//供应商ID
    private String startTime;
    private String endTime;
    private Integer pageNum;
    private Integer pageSize;
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/mixingstationstorage/entity/MinXingPlantVo.java
@@ -27,7 +27,7 @@
    private Integer byId;//序号
    @Excel(sort = 1,title = "入库时间")
    private String createDate;//字符串的入库时间
    private Date createDate;//字符串的入库时间
    @Excel(sort = 2,title = "供应商")
    private String supplierName;//供应商名称
@@ -43,4 +43,17 @@
    @Excel(sort = 6,title = "入库人")
    private String username;
    private String id;
    private Integer type;
    private Integer opType;
    private String materialName;
    private double materialValue;
    private double beforeStock;
    private double afterStock;
    private String remark;
    private String pipeId;
    private String pipeNum;
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/mixingstationstorage/service/impl/MinXingPlantServiceImpl.java
@@ -8,6 +8,7 @@
import com.thhy.general.config.SysUserInfo;
import com.thhy.general.exception.BasicException;
import com.thhy.general.utils.ExcelUtils;
import com.thhy.general.utils.UUIDUtils;
import com.thhy.general.utils.UserInfoUtils;
import com.thhy.materials.modules.biz.materialsplan.entity.RsbStatDto;
import com.thhy.materials.modules.biz.materialsplan.entity.StatResultVo;
@@ -59,6 +60,10 @@
        String companyId = sysUserInfo.getCompanyId();
        minXingPlantVo.setCompanyId(companyId);
        minXingPlantVo.setCreateUser(sysUserInfo.getUserId());
        minXingPlantVo.setId(UUIDUtils.create());
        minXingPlantVo.setOpType(1);
        minXingPlantVo.setMaterialValue(minXingPlantVo.getChangeStock());
        minXingPlantVo.setType(4);
        minXingPlantMapper.insert(minXingPlantVo);
        RLock lock = redissonClient.getLock("materlock");
        try {
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/rebarprint/entity/dto/ProduceExportDto.java
@@ -47,5 +47,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String printTime;
    private String platUserName;
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/rebarprint/service/impl/TSteelProduceServiceImpl.java
@@ -238,7 +238,7 @@
            }else {
                exportDto.setQualityTime(produceDto.getQualityTime().toString());
            }
            exportDto.setRealName(produceDto.getRealName());
            exportDto.setPlatUserName(produceDto.getPlatUserName());
            exportDto.setQualityUserName(produceDto.getQualityUserName());
            if(produceDto.getIsQualified()!=null && produceDto.getIsQualified()==1){
@@ -263,7 +263,7 @@
        excel.addHeaderAlias("blockName", "块号");
        excel.addHeaderAlias("groupName", "生产班组");
        excel.addHeaderAlias("printTime", "打印时间");
        excel.addHeaderAlias("realName", "制作人");
        excel.addHeaderAlias("platUserName", "制作人");
        excel.addHeaderAlias("qualityUserName", "质检人");
        excel.addHeaderAlias("qualityTime", "质检时间");
        excel.addHeaderAlias("isQualified", "是否合格");
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/mapper/WeighMapper.java
@@ -73,4 +73,12 @@
    void netWeighUpdateNew(@Param("byId") Integer byId,@Param("netWeight") double netWeight);
    List<TWeighbridge> weighbridgeList(Map<String, Object> values);
    List<TWeighbridge> weighbridgeListType();
    Double materialStockValue(String dictId);
    void materialStockRecordIns(HashMap<String, Object> hashMap);
    void weighbridgeUpdateType(Integer weighbridgeId);
}
hd/pipe/materialsManage/src/main/resources/mapping/MinXingPlantMapper.xml
@@ -1,125 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.thhy.materials.modules.biz.mixingstationstorage.mapper.MinXingPlantMapper">
  <resultMap id="BaseResultMap" type="com.thhy.materials.modules.biz.mixingstationstorage.entity.MinXingPlantVo">
    <id column="mixing_plant_id" jdbcType="VARCHAR" property="mixingPlantId" />
    <result column="dict_id" jdbcType="VARCHAR" property="dictId" />
    <result column="stock_type" jdbcType="INTEGER" property="stockType" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="change_stock" jdbcType="DOUBLE" property="changeStock" />
    <result column="supplier_id" jdbcType="VARCHAR" property="supplierId" />
    <result column="is_use" jdbcType="INTEGER" property="isUse" />
    <result column="company_id" jdbcType="VARCHAR" property="companyId" />
    <result column="car_name" jdbcType="VARCHAR" property="carName" />
    <result column="pro_id" jdbcType="VARCHAR" property="proId" />
    <result column="create_user" jdbcType="VARCHAR" property="createUser" />
    <result column="by_id" jdbcType="INTEGER" property="byId" />
  </resultMap>
  <insert id="insert" >
    insert into t_minxing_plant
      insert into t_material_stock_record
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="mixingPlantId != null">
        mixing_plant_id,
          <if test="id != null">
              id,
          </if>
          <if test="createDate != null">
              create_date,
          </if>
          <if test="type != null">
              type,
          </if>
          <if test="opType != null">
              op_type,
      </if>
      <if test="dictId != null">
        dict_id,
              material_name,
      </if>
      <if test="stockType != null">
        stock_type,
          <if test="materialValue != null">
              material_value,
      </if>
      <if test="createTime != null">
        create_time,
          <if test="beforeStock != null">
              before_stock,
      </if>
      <if test="changeStock != null">
        change_stock,
      </if>
      <if test="supplierId != null">
        supplier_id,
      </if>
      <if test="isUse != null">
        is_use,
          <if test="afterStock != null">
              after_stock,
      </if>
      <if test="companyId != null">
        company_id,
      </if>
      <if test="carName != null">
        car_name,
      </if>
      <if test="proId != null">
        pro_id,
          <if test="remark != null">
              remark,
      </if>
      <if test="createUser != null">
        create_user,
      </if>
      <if test="byId != null">
        by_id,
          <if test="supplierName != null">
              supplier_name,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="mixingPlantId != null">
        #{mixingPlantId},
          <if test="id != null">
              #{id},
          </if>
          <if test="createDate != null">
              #{createDate},
          </if>
          <if test="type != null">
              #{type},
          </if>
          <if test="opType != null">
              #{opType},
      </if>
      <if test="dictId != null">
        #{dictId},
      </if>
      <if test="stockType != null">
        #{stockType},
          <if test="materialValue != null">
              #{materialValue},
      </if>
      <if test="createTime != null">
        #{createTime},
          <if test="beforeStock != null">
              #{beforeStock},
      </if>
      <if test="changeStock != null">
        #{changeStock},
      </if>
      <if test="supplierId != null">
        #{supplierId},
      </if>
      <if test="isUse != null">
        #{isUse},
          <if test="afterStock != null">
              #{afterStock},
      </if>
      <if test="companyId != null">
        #{companyId},
      </if>
      <if test="carName != null">
        #{carName},
      </if>
      <if test="proId != null">
        #{proId},
          <if test="remark != null">
              #{remark},
      </if>
      <if test="createUser != null">
        #{createUser},
      </if>
      <if test="byId != null">
        #{byId},
          <if test="supplierName != null">
              #{supplierName},
      </if>
    </trim>
  </insert>
  <select id="selectAllList" parameterType="com.thhy.materials.modules.biz.mixingstationstorage.dto.MinXingPlantDto" resultType="com.thhy.materials.modules.biz.mixingstationstorage.entity.MinXingPlantVo">
    SELECT
            DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%i:%S') createDate,
            c.supplier_name supplierName,
          DATE_FORMAT(a.create_date, '%Y-%m-%d %H:%i:%S') createDate,
            b.dict_name dictName,
            a.change_stock changeStock,
          a.material_value changeStock,
            d.real_name username,
            '吨' unit
    FROM t_minxing_plant a
                 LEFT JOIN sys_dict b ON b.dict_id = a.dict_id
                 LEFT JOIN sys_supplier c ON c.id = a.supplier_id
          '吨' unit,
          a.supplier_name supplierName
      FROM t_material_stock_record a
      LEFT JOIN sys_dict b ON b.dict_id = a.material_name
                 LEFT JOIN sys_users d ON d.user_id = a.create_user
    WHERE a.is_use = 1 and company_id = #{companyId}
      where
      a.op_type =1  and a.company_id = #{companyId}
    <if test="dictId != null and dictId != ''">
      AND a.dict_id = #{dictId}
          AND a.material_name = #{dictId}
    </if>
    <if test="supplierId != null and supplierId != ''">
      AND a.supplier_id = #{supplierId}
      <if test="supplierName != null and supplierName != ''">
          AND a.supplier_name regexp #{supplierName}
    </if>
    <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
      AND a.create_time BETWEEN #{startTime} AND #{endTime}
          AND a.create_date BETWEEN #{startTime} AND #{endTime}
    </if>
    order by a.create_time desc
      order by a.create_date desc
  </select>
  <!--  库存管理 -->
@@ -189,6 +174,9 @@
      <if test="createUser != null">
        create_user,
      </if>
      <if test="supplierName != null">
        supplier_name,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
@@ -224,6 +212,9 @@
      <if test="createUser != null">
        #{createUser},
      </if>
      <if test="supplierName != null">
        #{supplierName},
      </if>
    </trim>
  </insert>
  <select id="selectInventoryRecordList" parameterType="com.thhy.materials.modules.biz.mixingstationstorage.dto.TMaterialStockRecordDto" resultType="com.thhy.materials.modules.biz.mixingstationstorage.entity.TMaterialStockRecordVo">
hd/pipe/materialsManage/src/main/resources/mapping/TSteelProduceMapper.xml
@@ -91,6 +91,10 @@
      <if test="isModel!=null and isModel!='' ">
          and tsp.size_id=#{sizeId}
      </if>
      <if test="platUserName!=null and platUserName!='' ">
          and spu.real_name regexp #{platUserName}
      </if>
        order by tsp.produce_number desc
  </select>
    <select id="steelProduceInfo" parameterType="java.lang.String" resultType="com.thhy.materials.modules.biz.rebarprint.entity.dto.ProduceDto">
hd/pipe/materialsManage/src/main/resources/mapping/WeighMapper.xml
@@ -615,4 +615,100 @@
        order by weighbridge_id desc
    </select>
    <select id="weighbridgeListType" resultType="com.thhy.materials.modules.biz.weigh.entity.TWeighbridge">
        select
        weighbridge_id as weighbridgeId,
        id,
        code,
        orgName,
        supplyOrgName,
        carNumber,
        driverName,
        matName,
        matModel,
        mPoundTime,
        mPoundWeight,
        mPoundName,
        pPoundTime,
        pPoundWeight,
        pPoundName,
        jPoundWeight,
        buckleWeight,
        mWeight,
        pWeight,
        jWeight,
        wareName,
        fileImage,
        types
         from  t_weighbridge where
        types=1
    </select>
    <select id="materialStockValue" resultType="java.lang.Double">
        select material_value as materialValue
        from  t_material_stock where  material_name=#{dictId}
    </select>
    <insert id="materialStockRecordIns" >
        insert into t_material_stock_record
        <trim prefix="(" suffix=")" suffixOverrides=",">
            id,
            <if test="createDate != null">
                create_date,
            </if>
            <if test="type != null">
                type,
            </if>
            <if test="opType != null">
                op_type,
            </if>
            <if test="materialName != null">
                material_name,
            </if>
            <if test="materialValue != null">
                material_value,
            </if>
            <if test="beforeStock != null">
                before_stock,
            </if>
            <if test="afterStock != null">
                after_stock,
            </if>
            <if test="companyId != null">
                company_id,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            REPLACE(UUID(),'-',''),
            <if test="createDate != null">
                #{createDate,jdbcType=TIMESTAMP},
            </if>
            <if test="type != null">
                #{type,jdbcType=INTEGER},
            </if>
            <if test="opType != null">
                #{opType,jdbcType=INTEGER},
            </if>
            <if test="materialName != null">
                #{materialName,jdbcType=VARCHAR},
            </if>
            <if test="materialValue != null">
                #{materialValue,jdbcType=DOUBLE},
            </if>
            <if test="beforeStock != null">
                #{beforeStock,jdbcType=DOUBLE},
            </if>
            <if test="afterStock != null">
                #{afterStock,jdbcType=DOUBLE},
            </if>
            <if test="companyId != null">
                #{companyId},
            </if>
        </trim>
    </insert>
    <update id="weighbridgeUpdateType" >
        update t_weighbridge set
        types=2
        where weighbridge_id=#{weighbridgeId}
    </update>
</mapper>
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/mouldcheck/service/impl/ModCheckServiceImpl.java
@@ -17,6 +17,7 @@
import com.thhy.mobile.modules.biz.pipeinfo.entity.MaterialInfo;
import com.thhy.mobile.modules.biz.pipeinfo.entity.PipeInfo;
import com.thhy.mobile.modules.biz.pipeinfo.mapper.PipeInfoMapper;
import com.thhy.mobile.modules.biz.steelcheck.entity.SteelStockRecord;
import com.thhy.mobile.modules.biz.steelproduce.entity.ProduceDto;
import com.thhy.mobile.modules.biz.steelproduce.entity.SteelProduce;
import com.thhy.mobile.modules.biz.steelproduce.mapper.SteelProduceMapper;
@@ -141,6 +142,10 @@
                        if(compareResult){//匹配成功
                            //更改钢筋笼产品入模状态
                            steelProduceMapper.updateisModel(new ProduceDto(1,modCheckDto.getProduceNumber()));
                            //钢筋笼库存记录
                            SteelStockRecord steelStockRecord = new SteelStockRecord(steelProduce,true);
                            steelStockRecord.setModCheckId(mouldCheck.getModCheckId());
                            steelStockMapper.insertSteelStockRecord(steelStockRecord);
                            //减掉钢筋笼库存
                            steelStockMapper.updateMinusStock(new SteelStock(steelProduce));
                            //更新模具循环次数
@@ -199,7 +204,7 @@
        String proId = modCheckDto.getProId();
        try {
            if(ringNum.length()>5){
            if(ringNum.length()>4){
                throw new BasicException(BasicStatus.RING_NOT_DIS);
            }
            Integer.parseInt(ringNum);
@@ -207,7 +212,7 @@
            throw new BasicException(BasicStatus.RING_NOT_DIS);
        }
        String newRingNum = UUIDUtils.addZeroNoPlus(Integer.parseInt(ringNum),5);
        String newRingNum = UUIDUtils.addZeroNoPlus(Integer.parseInt(ringNum),4);
        int count = pipeInfoMapper.countByRingNum(newRingNum);
        if(count>0){
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/pipeinfo/entity/PipeListVo.java
@@ -66,7 +66,7 @@
    //入模人员
    private String intoModUser;
    public String getCheckResultStr() {
        return checkResult==1?"合格":checkResult==2?"不合格":"报废";
        return checkResult==1?"合格":checkResult==2?"不合格":checkResult==0?"未质检":"报废";
    }
    private ModIdlThing modIdlThing;
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/steelcheck/entity/SteelStockRecord.java
对比新文件
@@ -0,0 +1,82 @@
package com.thhy.mobile.modules.biz.steelcheck.entity;
import com.thhy.general.annotations.Idkey;
import com.thhy.mobile.modules.biz.steelproduce.entity.SteelProduce;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class SteelStockRecord implements Serializable {
    @Idkey
    private String recordId;
    private String steelRecordId;
    private String modCheckId;
    /**
     * 块ID
     */
    private String blockId;
    private Date createTime;
    /**
     * 项目ID
     */
    private String proId;
    /**
     * 配筋ID
     */
    private String reinforcementId;
    /**
     * 尺寸
     */
    private String sizeId;
    /**
     * 库存
     */
    private double stock;
    private int type;
    public SteelStockRecord() {
    }
    public SteelStockRecord(SteelProduce steelProduce) {
        this.proId = steelProduce.getProId();
        this.sizeId = steelProduce.getSizeId();
        this.reinforcementId = steelProduce.getReinforcementId();
        this.blockId = steelProduce.getBlockNum();
        this.type = 1;
        this.stock = 1;
    }
    public SteelStockRecord(SteelProduce steelProduce,boolean plus) {
        this.proId = steelProduce.getProId();
        this.sizeId = steelProduce.getSizeId();
        this.reinforcementId = steelProduce.getReinforcementId();
        this.blockId = steelProduce.getBlockNum();
        this.type = 2;
        this.stock = 1;
    }
}
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/steelcheck/service/impl/SteelCheckServiceImpl.java
@@ -7,10 +7,7 @@
import com.thhy.general.exception.BasicException;
import com.thhy.general.utils.DeepCopyUtils;
import com.thhy.general.utils.UserInfoUtils;
import com.thhy.mobile.modules.biz.steelcheck.entity.CheckFile;
import com.thhy.mobile.modules.biz.steelcheck.entity.SteelCheckDto;
import com.thhy.mobile.modules.biz.steelcheck.entity.SteelCheckListVo;
import com.thhy.mobile.modules.biz.steelcheck.entity.UpdateCheckResultDto;
import com.thhy.mobile.modules.biz.steelcheck.entity.*;
import com.thhy.mobile.modules.biz.steelcheck.service.SteelCheckService;
import com.thhy.mobile.modules.biz.steelcheckrecord.entity.SteelCheckRecord;
import com.thhy.mobile.modules.biz.steelcheckrecord.mapper.SteelCheckRecordMapper;
@@ -72,7 +69,10 @@
        steelCheckRecord.setSteelProduceNum(produceNum);
        steelCheckRecord.setCreateUser(userInfo.getUserId());
        recordMapper.insert(steelCheckRecord);
        //增加钢筋笼库存
        //增加钢筋笼库存记录
        SteelStockRecord steelStockRecord = new SteelStockRecord(steelProduce);
        steelStockRecord.setSteelRecordId(steelCheckRecord.getCheckId());
        steelStockMapper.insertSteelStockRecord(steelStockRecord);
        int stockRecord = steelStockMapper.countStockByPSRB(new SteelStock(steelProduce));
        if(stockRecord>0){
            //增加钢筋笼库存
@@ -137,7 +137,10 @@
        }
        //更新住状态
        steelProduceMapper.updateQualified(new SteelProduce(updateCheckResultDto.getSteelProduceNum(), steelCheckRecord.getCheckResult(),userInfo.getUserId()));
        //合格状态————————>不合格
        if (steelCheckRecord.getCheckResult()!=3) {
            //减【钢筋笼】库存就记录删除标志
            steelStockMapper.updateSteelStockRecordByCheckId(2,steelCheckRecord.getCheckId());
            //减【钢筋笼】库存
            steelStockMapper.updateMinusStock(new SteelStock(steelProduce));
            //加【钢筋】库存记录
@@ -150,6 +153,8 @@
        }
        //合格状态————————>报废
        if(qualified==1&&updateCheckResultDto.getCheckResult()==3){
            //减【钢筋笼】库存就记录删除标志
            steelStockMapper.updateSteelStockRecordByCheckId(2,steelCheckRecord.getCheckId());
            //减【钢筋笼】库存
            steelStockMapper.updateMinusStock(new SteelStock(steelProduce));
        }
@@ -192,6 +197,9 @@
        //更新住状态
        steelProduceMapper.updateQualified(new SteelProduce(updateCheckResultDto.getSteelProduceNum(), 1,userInfo.getUserId()));
        //钢筋笼】库存就记录删除标志改为未删除
        steelStockMapper.updateSteelStockRecordByCheckId(1,steelCheckRecord.getCheckId());
        //加【钢筋笼】库存
        steelStockMapper.updatePlusStock(new SteelStock(steelProduce));
        //钢筋消耗的理论耗量
        List<SteelConsume> steelConsumeList = steelStockMapper.queryByPSRB(new SteelStock(steelProduce));
hd/pipe/mobile/src/main/java/com/thhy/mobile/modules/biz/steelstock/mapper/SteelStockMapper.java
@@ -1,8 +1,10 @@
package com.thhy.mobile.modules.biz.steelstock.mapper;
import com.thhy.mobile.modules.biz.steelcheck.entity.SteelStockRecord;
import com.thhy.mobile.modules.biz.steelstock.entity.SteelConsume;
import com.thhy.mobile.modules.biz.steelstock.entity.SteelStock;
import com.thhy.mobile.modules.biz.steelstock.entity.SteelStockListVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.io.Serializable;
@@ -46,4 +48,8 @@
    void updateMinusSteelStock(SteelConsume steelConsume);
    void updatePlusSteelStock(SteelConsume steelConsume);
    void insertSteelStockRecord(SteelStockRecord steelStockRecord);
    void updateSteelStockRecordByCheckId(@Param("isUse") int isUse,@Param("checkRecordId") String checkRecordId);
}
hd/pipe/mobile/src/main/resources/mapping/SteelStockMapper.xml
@@ -239,4 +239,76 @@
        update sys_steel set stock = (stock+#{needNum}) where steel_id = #{steelId}
    </update>
    <insert id="insertSteelStockRecord">
        insert into t_steel_stock_record
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="recordId !=null and recordId !=''">
                record_id,
            </if>
            <if test="steelRecordId !=null and steelRecordId !=''">
                check_record_id,
            </if>
            <if test="modCheckId !=null and modCheckId !=''">
                mod_check_id,
            </if>
            <if test="proId !=null and proId !=''">
                pro_id,
            </if>
            <if test="sizeId !=null and sizeId !=''">
                size_id,
            </if>
            <if test="reinforcementId !=null and reinforcementId !=''">
                reinforcement_id,
            </if>
            <if test="blockId !=null and blockId !=''">
                block_id,
            </if>
            <if test="stock !=null and stock !=''">
                stock,
            </if>
            <if test="createTime !=null and createTime !=''">
                create_time,
            </if>
            <if test="type !=null">
                type,
            </if>
        </trim>
        <trim prefix=" values (" suffix=")" suffixOverrides=",">
            <if test="recordId !=null and recordId !=''">
                #{recordId},
            </if>
            <if test="steelRecordId !=null and steelRecordId !=''">
                #{steelRecordId},
            </if>
            <if test="modCheckId !=null and modCheckId !=''">
                #{modCheckId},
            </if>
            <if test="proId !=null and proId !=''">
                #{proId},
            </if>
            <if test="sizeId !=null and sizeId !=''">
                #{sizeId},
            </if>
            <if test="reinforcementId !=null and reinforcementId !=''">
                #{reinforcementId},
            </if>
            <if test="blockId !=null and blockId !=''">
                #{blockId},
            </if>
            <if test="stock !=null and stock !=''">
                #{stock},
            </if>
            <if test="createTime !=null and createTime !=''">
                #{createTime},
            </if>
            <if test="type !=null">
                #{type},
            </if>
        </trim>
    </insert>
    <update id="updateSteelStockRecordByCheckId">
        update t_steel_stock_record set is_use = #{isUse} where check_record_id = #{checkRecordId}
    </update>
</mapper>
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/controller/ExecProListener.java
@@ -118,21 +118,7 @@
            map1.put("mod",ProListenType.PIPEPLANACTUAL);
            map1.put("pipePlanActual",yearCountList);
            mapList.add(map1);
            Map<String,Object> map2 = new HashMap<>();
            List<PipeMonthPlanActual> pipeMonthPlanActuals = bigScreenMapper.pipeMonthPlanActual(companyId);
            map2.put("mod",ProListenType.PIPEMONTHPLANACTUAL);
            map2.put("pipeMonthPlanActual",pipeMonthPlanActuals);
            mapList.add(map2);
            Map<String,Object> map3 = new HashMap<>();
            List<MaterialWeekAndMonth> materialWeekAndMonths = bigScreenMapper.materialWeekMonth(companyId);
            map3.put("mod",ProListenType.MATERIALWEEKANDMONTHS);
            map3.put("materialWeekAndMonths",materialWeekAndMonths);
            mapList.add(map3);
            return mapList;
        }else if(dataType.equals(ProListenType.MATERIALWEEKANDMONTHS)){
            //原料消耗 周月
            List<MaterialWeekAndMonth> materialWeekAndMonths = bigScreenMapper.materialWeekMonth(companyId);
            map.put("materialWeekAndMonths",materialWeekAndMonths);
        }else if (dataType.equals(ProListenType.PIPEPLANACTUAL)){
            //年度生产计划和实际完成
            List<PipeYearCount> yearCountList = bigScreenMapper.queryAllProject(companyId);
@@ -141,10 +127,6 @@
                yc.setPipePlanActual(pipePlanActual);
            });
            map.put("pipePlanActual",yearCountList);
        }else if (dataType.equals(ProListenType.PIPEMONTHPLANACTUAL)){
            //月度生产计划和实际完成
            List<PipeMonthPlanActual> pipeMonthPlanActuals = bigScreenMapper.pipeMonthPlanActual(companyId);
            map.put("pipeMonthPlanActual",pipeMonthPlanActuals);
        }else if (dataType.equals(ProListenType.WATERCULINFO)){
            //水养池
            List<WaterCulInfo> culInfoList = bigScreenMapper.WaterCulInfo(companyId);
@@ -167,6 +149,14 @@
            mapList.add(map1);
            mapList.add(map2);
            return mapList;
        }else if (dataType.equals(ProListenType.STEELUSE)){
            //钢筋消耗
            List<HashMap<String,Object>> steelUseList = bigScreenMapper.querySteelMake();
            map.put("steelUse",steelUseList);
        }else if (dataType.equals(ProListenType.RESTINFO)){
            //缓存区
            List<HashMap<String,Object>> restInfo = bigScreenMapper.queryRestInfo();
            map.put("restInfo",restInfo);
        }
        mapList.add(map);
        return mapList;
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/mapper/BigScreenMapper.java
@@ -34,4 +34,8 @@
    void insertAudioGroup(AudioGroup audioGroup);
    List<AudioGroup> queryGroups();
    List<HashMap<String,Object>> querySteelMake();
    List<HashMap<String,Object>> queryRestInfo();
}
hd/pipe/screen/src/main/java/com/thhy/screen/modules/biz/bigscreen/service/impl/ProduceListenServiceImpl.java
@@ -45,11 +45,17 @@
        map.put("pipePlanActual",yearCountList);
        //月度生产计划和实际完成
        List<PipeMonthPlanActual> pipeMonthPlanActuals = bigScreenMapper.pipeMonthPlanActual(companyId);
        map.put("pipeMonthPlanActual",pipeMonthPlanActuals);
        //List<PipeMonthPlanActual> pipeMonthPlanActuals = bigScreenMapper.pipeMonthPlanActual(companyId);
        //map.put("pipeMonthPlanActual",pipeMonthPlanActuals);
        //原料消耗 周月
        List<MaterialWeekAndMonth> materialWeekAndMonths = bigScreenMapper.materialWeekMonth(companyId);
        map.put("materialWeekAndMonths",materialWeekAndMonths);
        //List<MaterialWeekAndMonth> materialWeekAndMonths = bigScreenMapper.materialWeekMonth(companyId);
        //map.put("materialWeekAndMonths",materialWeekAndMonths);
        //钢筋消耗
        List<HashMap<String,Object>> steelUseList = bigScreenMapper.querySteelMake();
        map.put("steelUse",steelUseList);
        //缓存区
        List<HashMap<String,Object>> restInfo = bigScreenMapper.queryRestInfo();
        map.put("restInfo",restInfo);
        //水养池
        List<WaterCulInfo> culInfoList = bigScreenMapper.WaterCulInfo(companyId);
        map.put("waterCulInfo",culInfoList);
hd/pipe/screen/src/main/java/com/thhy/screen/utils/AudioUtils.java
@@ -11,7 +11,8 @@
    public static void main(String[] args) {
        //getGroups();
        //playMusic();
        getItemList();
    }
    public static void login(){
@@ -20,6 +21,12 @@
    public static String getGroups(){
        String result = HttpUtils.post("GetGroups",new JSONObject());
        System.out.println(result);
        return result;
    }
    public static String getItemList(){
        String result = HttpUtils.post("GetItemList",new JSONObject());
        System.out.println(result);
        return result;
    }
@@ -38,4 +45,15 @@
        System.out.println(result);
        return result;
    }
    public static String playMusic(){
        JSONObject jsonObject = new JSONObject();
        String[] ms = new String[]{"https://szpipe.thhy-tj.com/jingbao.mp3"};
        jsonObject.put("Files",ms);
        jsonObject.put("TextCode",1);
        String result = HttpUtils.post("PlayMp3",jsonObject);
        System.out.println(result);
        return result;
    }
}
hd/pipe/screen/src/main/java/com/thhy/screen/utils/HttpUtils.java
@@ -12,7 +12,7 @@
public class HttpUtils {
    private static String BaseHost = "http://150.158.37.69:8080/api/";
    private static String BaseHost = "http://58.210.64.90:9199/api/";
    private static String token = "";
hd/pipe/screen/src/main/resources/mapping/BigScreenMapper.xml
@@ -208,7 +208,7 @@
    </select>
    <insert id="insertAudioGroup">
        INSERT INTO
        INSERT INTO t_audio_group
        <trim suffix=")" prefix="(" suffixOverrides=",">
            <if test="id != null and id !=null">
                id,
@@ -237,5 +237,40 @@
        select id,group_id as groupId,group_name as groupName from t_audio_groups
    </select>
    <!--钢筋总消耗,周消耗,月消耗-->
    <select id="querySteelMake" resultType="hashmap">
        select steel.steel_id,CONCAT(steel.steel_name,'-',steel_model) as steelName,
               case when a.totalStock is NULL then 0 else a.totalStock end as totalStock,
               case when b.weekStock is NULL then 0 else b.weekStock end as weekStock,
               case when c.monthStock is NULL then 0 else c.monthStock end as monthStock
        from sys_steel steel
                 left join
             (
                 select ssr.steel_id,sum(ssr.change_stock) as totalStock from sys_steel_record ssr
                 where ssr.stock_type = 2
                 group by ssr.steel_id
             ) a on steel.steel_id = a.steel_id
                 left join
             (
                 select ssr.steel_id,sum(ssr.change_stock) as weekStock from sys_steel_record ssr
                 where ssr.stock_type = 2 and YEAR(SYSDATE()) = YEAR(ssr.create_time) and WEEK(sysdate(),1) = WEEK(ssr.create_time,1)
        group by ssr.steel_id
            ) b on steel.steel_id = b.steel_id
            left join
            (
            select ssr.steel_id,sum(ssr.change_stock) as monthStock from sys_steel_record ssr
            where ssr.stock_type = 2 and YEAR(SYSDATE()) = YEAR(ssr.create_time) and MONTH(SYSDATE()) = MONTH(ssr.create_time)
            group by ssr.steel_id
            ) c on steel.steel_id = c.steel_id
    </select>
    <!--获取静养区-->
    <select id="queryRestInfo" resultType="hashmap">
        select sd.device_id as deviceId,sd.device_name as deviceName,(select tem from t_rest_data trd where trd.device_id = sd.device_id order by check_time desc limit 1) as tem
        from sys_device sd where sd.produce_order = '静养'
    </select>
</mapper>
web/src/api/modules/ductpiecePLM.js
@@ -26,7 +26,6 @@
      url: '/m/pipeInfo/findList',
      data: {
        proId: params.proId,
        segmentId: params.segmentId,
        ringNum: params.ringNum,
        groupId: params.groupId,
        checkResult: params.checkResult,
@@ -56,14 +55,17 @@
  // 获取全部钢筋笼与模具信息
  getAllSteelPipeData: (params) =>
    axios.post('/m/steelProduce/ModSteelPullDown', params),
  /**
   * agv监控
   */
  searchAgvLists: (params) =>
    axios.post('/screen/pl/agv', params),
  // 获取时间信息
  getPipeTimeData: (params) =>
    axios.post('/m/pipeInfo/updateDateInfo', params),
  // 修改时间信息
  updatePipeTimeData: (params) =>
    axios.post('/m/pipeInfo/updatePipeDate', params),
  /**
   * 水养模块接口
   * */
@@ -110,6 +112,7 @@
      data: {
        waterCultivatedId: params.waterCultivatedId,
        ringNum: params.ringNum,
        proId:params.proId,
        blockNum: params.blockNum,
        reinforcement: params.reinforcement,
        groutingHoles: params.groutingHoles,
@@ -119,6 +122,18 @@
        outCulEndTime: params.outCulEndTime
      }
    }),
  // 根据项目查询环号
  getProjectRingNumData: (params) =>
    axios.get('/m/waterCultivated/ringNumList', {params}),
  // 根据项目  环号查询管片信息
  getProjectRingPipeData: (params) =>
    axios.post('/m/pipeCultivated/pipeInfoList', params),
  // 获取水养池下拉
  getWaterCultivatedData: (params) =>
    axios.post('/m/waterCultivated/pulldown', params),
  // 提交入池
  submitpipeEnterCistern: (params) =>
        axios.post('/m/pipeCultivated/intowaterWeb', params),
  /*
   * 管片蒸养
@@ -208,6 +223,13 @@
  getAllPipInfos: params =>
    axios.post('/materials/pipeOut/pipeInfoInList', params),
  
    // 获取堆场下拉信息
    getRepoRecordData: () =>
        axios.post('/m/repoRecord/repoPullDown'),
  // 管片入库
    submitPipePutbankInfo: (params) =>
    axios.post('/m/repoRecord/intoRepoWeb', params),
  /**
   * 发运管理中的GPS设备管理
   */
@@ -288,7 +310,8 @@
        pageSize: params.pageSize
      },
      data: {
        ringNum: params.ringNum
        ringNum: params.ringNum,
        proId:params.proId
      }
    }),
  // 获取管片详情
web/src/views/DuctpiecePLM/DuctProduct/ProductIndex.vue
@@ -3,12 +3,18 @@
    <div class="main_header">
      <div class="header_item">
        <span class="header_label">项目名称:</span>
        <el-select v-model="projectId" clearable placeholder="请选择项目" @change="changeHeaderProject">
        <el-select
          v-model="projectId"
          clearable
          placeholder="请选择项目"
          @change="changeHeaderProject"
        >
          <el-option
            v-for="item in projectData"
            :key="item.proId"
            :label="item.proName"
            :value="item.proId">
            :value="item.proId"
          >
          </el-option>
        </el-select>
      </div>
@@ -23,7 +29,8 @@
            v-for="item in groupData"
            :key="item.groupId"
            :label="item.groupName"
            :value="item.groupId">
            :value="item.groupId"
          >
          </el-option>
        </el-select>
      </div>
@@ -42,7 +49,8 @@
            v-for="item in reinforcementData"
            :key="item.hasSteel"
            :label="item.dictName"
            :value="item.hasSteel">
            :value="item.hasSteel"
          >
          </el-option>
        </el-select>
      </div>
@@ -53,7 +61,8 @@
            v-for="item in groutingHolesData"
            :key="item.groutingHoles"
            :label="item.dictName"
            :value="item.groutingHoles">
            :value="item.groutingHoles"
          >
          </el-option>
        </el-select> 
      </div>
@@ -64,7 +73,8 @@
            v-for="item in blockNumData"
            :key="item.blockNum"
            :label="item.dictName"
            :value="item.blockNum">
            :value="item.blockNum"
          >
          </el-option>
        </el-select>
      </div>
@@ -76,7 +86,8 @@
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd">
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
      </div>
      <!-- <div class="header_item">
@@ -98,20 +109,33 @@
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd">
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
      </div>
      <div class="header_item">
        <el-button v-if="showButton('search')" icon="el-icon-search" @click="searchDuctpiecePLMList(true)">查询</el-button>
        <el-button v-if="showButton('insert')" icon="el-icon-download" @click="propInsert()">新增管片</el-button>
        <el-button v-if="showButton('insert')" icon="el-icon-download" @click="exportExcel()">导出Excel</el-button>
        <el-button
          v-if="showButton('search')"
          icon="el-icon-search"
          @click="searchDuctpiecePLMList(true)"
          >查询</el-button
        >
        <el-button
          v-if="showButton('insert')"
          icon="el-icon-download"
          @click="propInsert()"
          >新增管片</el-button
        >
        <el-button
          v-if="showButton('export')"
          icon="el-icon-download"
          @click="exportExcel()"
          >导出Excel</el-button
        >
      </div>
    </div>
    <div class="main_content">
      <el-table
        v-loading="loading"
        :data="ductpieceList"
        height="100%">
      <el-table v-loading="loading" :data="ductpieceList" height="100%">
        <el-table-column label="序号" width="60" align="center">
          <template #default="scope">
            <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
@@ -121,28 +145,83 @@
        <el-table-column prop="proName" label="项目名称" align="center"></el-table-column>
        <el-table-column prop="pipeNum" label="管片编号" align="center"></el-table-column>
        <el-table-column prop="turnName" label="转向" align="center"></el-table-column>
        <el-table-column prop="reinforcementName" label="配筋" align="center"></el-table-column>
        <el-table-column prop="groutingHolesName" label="注浆孔" align="center"></el-table-column>
        <el-table-column prop="blockNumName" label="块号" align="center"></el-table-column>
        <el-table-column
          prop="reinforcementName"
          label="配筋"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="groutingHolesName"
          label="注浆孔"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="blockNumName"
          label="块号"
          align="center"
        ></el-table-column>
        <el-table-column prop="mouldNum" label="模具" align="center"></el-table-column>
        <el-table-column prop="intoModTime" label="入模时间" align="center"></el-table-column>
        <el-table-column
          prop="intoModTime"
          label="入模时间"
          align="center"
        ></el-table-column>
        <!-- <el-table-column prop="pouringTime" label="浇筑时间" align="center"></el-table-column> -->
        <el-table-column prop="checkTime" label="质检时间" align="center"></el-table-column>
        <el-table-column prop="groupName" label="生产班组" align="center"></el-table-column>
        <el-table-column
          prop="checkTime"
          label="质检时间"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="groupName"
          label="生产班组"
          align="center"
        ></el-table-column>
        <el-table-column label="质量标注" align="center">
          <template #default="{ row }">
            <div>
               {{ row.checkResult == 0 ? '未质检' : row.checkResult == 1 ? '合格' : row.checkResult == 2 ? '不合格' : row.checkResult == 3 ? '报废' : ''}}
              {{
                row.checkResult == 0
                  ? "未质检"
                  : row.checkResult == 1
                  ? "合格"
                  : row.checkResult == 2
                  ? "不合格"
                  : row.checkResult == 3
                  ? "报废"
                  : ""
              }}
            </div>
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center" width="300">
          <template #default="{ row }">
            <template v-if="showButton('update') && row.checkResult !== 1">
              <el-button class="table_btn" size="mini" @click="propIssue(row)">存在问题</el-button>
            <template v-if="showButton('update') && [2, 3].includes(row.checkResult)">
              <el-button class="table_btn" size="mini" @click="propIssue(row)"
                >存在问题</el-button
              >
            </template>
            <el-button class="table_btn" size="mini" v-if="showButton('update') && row.checkResult == 0" @click="propUpdate(row)">修改环号</el-button>
            <el-button class="table_btn" size="mini" v-if="showButton('delete')" @click="propCheckHistory(row)">质量追溯</el-button>
            <el-button
              class="table_btn"
              size="mini"
              v-if="showButton('update')"
              @click="propUpdate(row)"
              >修改环号</el-button
            >
            <el-button
              class="table_btn"
              size="mini"
              v-if="showButton('update')"
              @click="propUpdateTime(row)"
              >修改时间</el-button
            >
            <el-button
              class="table_btn"
              size="mini"
              v-if="showButton('delete')"
              @click="propCheckHistory(row)"
              >质量追溯</el-button
            >
          </template>
        </el-table-column>
      </el-table>
@@ -156,15 +235,23 @@
        :page-sizes="[10, 20, 50, 100]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total">
        :total="total"
      >
      </el-pagination>
    </div>
    <el-dialog
      class="prop_dialog"
      title="存在问题"
      :visible.sync="asyncDuctPiece"
      width="35%">
      <el-form ref="form" :model="formDuctPiece" :rules="rulesDuctPiece" label-width="auto" class="rule_form">
      width="35%"
    >
      <el-form
        ref="form"
        :model="formDuctPiece"
        :rules="rulesDuctPiece"
        label-width="auto"
        class="rule_form"
      >
        <el-form-item label="质检结果:">
          <span class="issue_status">{{checkResultStr}}</span>
        </el-form-item>
@@ -173,7 +260,8 @@
            v-model="formDuctPiece.existProblem" 
            type="textarea"
            disabled
            placeholder="请输入存在问题"></el-input>
            placeholder="请输入存在问题"
          ></el-input>
        </el-form-item>
        <el-form-item label="问题图片:">
          <div class="problem_content">
@@ -181,7 +269,8 @@
              v-for="item in fileList"
              :key="item.id"
              class="problem_image"
              :src="item.url">
              :src="item.url"
            >
            </el-image>
          </div>
        </el-form-item>
@@ -190,7 +279,8 @@
            v-model="formDuctPiece.exeProResult" 
            type="textarea"
            clearable 
            placeholder="请输入问题处理结果"></el-input>
            placeholder="请输入问题处理结果"
          ></el-input>
        </el-form-item>
        <el-form-item label="备注:">
          <el-input 
@@ -199,7 +289,8 @@
            clearable 
            placeholder="请输入备注"
            maxlength="200"
            show-word-limit></el-input>
            show-word-limit
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer">
@@ -212,45 +303,47 @@
      class="prop_dialog"
      title="质量追溯"
      :visible.sync="asyncRetrospect"
      width="70%">
      width="70%"
    >
      <div class="retrospect_content">
        <div class="retrospect_content_title">
          钢筋笼信息
        </div>
        <div class="retrospect_content_title">钢筋笼信息</div>
        <div class="retrospect_content_table">
          <div 
            class="table_item" 
            :style="{width: `calc(100% / ${asyncCageInfo.length})`}"
            v-for="item in asyncCageInfo"
            :key="item.id">
            :key="item.id"
          >
            <div class="table_item_chunk table_th">{{item.label}}</div>
            <div class="table_item_chunk table_td">{{
              item.value === 'steelCheckResult' ? showCheckResult(retrospectInfo[item.value]) : retrospectInfo[item.value]}}
            <div class="table_item_chunk table_td">
              {{
                item.value === "steelCheckResult"
                  ? showCheckResult(retrospectInfo[item.value])
                  : retrospectInfo[item.value]
              }}
            </div>
          </div>
        </div>
        <div class="retrospect_content_title">
          模具信息
        </div>
        <div class="retrospect_content_title">模具信息</div>
        <div class="retrospect_content_table">
          <div 
            class="table_item" 
            :style="{width: `calc(100% / ${asyncMouldInfo.length})`}"
            v-for="item in asyncMouldInfo"
            :key="item.id">
            :key="item.id"
          >
            <div class="table_item_chunk table_th">{{item.label}}</div>
            <div class="table_item_chunk table_td">{{retrospectInfo[item.value]}}</div>
          </div>
        </div>
        <div class="retrospect_content_title">
          管片信息
        </div>
        <div class="retrospect_content_title">管片信息</div>
        <div class="retrospect_content_table">
          <div 
            class="table_item" 
            :style="{width: `calc(100% / ${asyncDuctpieceInfo.length})`}"
            v-for="item in asyncDuctpieceInfo"
            :key="item.id">
            :key="item.id"
          >
            <div class="table_item_chunk table_th">{{item.label}}</div>
            <div class="table_item_chunk table_td">{{retrospectInfo[item.value]}}</div>
          </div>
@@ -261,52 +354,209 @@
      class="prop_dialog"
      :title="asyncTitle ? '新增管片' : '修改环号'"
      :visible.sync="asyncInsert"
      width="35%">
      <el-form ref="formInsert" :model="formInsert" :rules="rulesInsert" label-width="auto" class="rule_form">
        <el-form-item label="项目名称:" prop="proId" v-if="asyncTtile">
          <el-select v-model="formInsert.proId" clearable placeholder="请选择项目信息" @change="getAllSteelPipeData">
      width="35%"
    >
      <el-form
        ref="formInsert"
        :model="formInsert"
        :rules="rulesInsert"
        label-width="auto"
        class="rule_form"
      >
        <el-form-item label="项目名称:" prop="proId" v-if="asyncTitle">
          <el-select
            v-model="formInsert.proId"
            clearable
            placeholder="请选择项目信息"
            @change="getAllSteelPipeData"
          >
            <el-option
              v-for="item in projectData"
              :key="item.proId"
              :label="item.proName"
              :value="item.proId">
              :value="item.proId"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="配筋:" prop="reinforcementId" v-if="asyncTitle">
          <el-select
            v-model="formInsert.reinforcementId"
            clearable
            placeholder="请选择配筋"
          >
            <el-option
              v-for="item in steelData"
              :key="item.hasSteel"
              :label="item.dictName"
              :value="item.hasSteel"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="环号:" prop="ringNum">
          <el-input v-model="formInsert.ringNum" clearable placeholder="请输入环号"></el-input>
          <el-input
            v-model="formInsert.ringNum"
            clearable
            placeholder="请输入环号"
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer">
        <el-button @click="asyncInsert = false">取 消</el-button>
        <el-button class="submit_btn" @click="asyncTitle ? submitInsertPipe() : submitUpdatePipe()">提 交</el-button>
        <el-button
          class="submit_btn"
          @click="asyncTitle ? submitInsertPipe() : submitUpdatePipe()"
          >提 交</el-button
        >
      </div>
    </el-dialog>
    <el-dialog
      class="prop_dialog"
      title="修改时间"
      :visible.sync="asyncTime"
      width="35%">
      <el-form
        ref="formTime"
        :model="formTime"
        :rules="rulesTime"
        label-width="auto"
        class="rule_form">
        <el-form-item label="入模时间:" prop="inModTime">
          <el-date-picker
            v-model="formTime.inModTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入模时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="浇筑时间:" prop="pouringTime">
          <el-date-picker
            v-model="formTime.pouringTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择浇筑时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="入窑时间:" prop="placingInTime">
          <el-date-picker
            v-model="formTime.placingInTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入窑时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="出窑时间:" prop="placingOutTime">
          <el-date-picker
            v-model="formTime.placingOutTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择出窑时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="出模时间:" prop="outModTime">
          <el-date-picker
            v-model="formTime.outModTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入窑时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="质检时间:" prop="checkTime">
          <el-date-picker
            v-model="formTime.checkTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择质检时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="入水养时间:" prop="inWaterTime" v-if="formTime.inWaterTime">
          <el-date-picker
            v-model="formTime.inWaterTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入水养时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="出水养时间:" prop="outWaterTime" v-if="formTime.outWaterTime">
          <el-date-picker
            v-model="formTime.outWaterTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择出水养时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="入库时间:" prop="inRepoTime" v-if="formTime.inRepoTime">
          <el-date-picker
            v-model="formTime.inRepoTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入库时间"
          >
          </el-date-picker>
        </el-form-item>
        <!-- <el-form-item label="出库时间:" prop="intoModTime">
          <el-date-picker
            v-model="formTime.intoModTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择出库时间"
          >
          </el-date-picker>
        </el-form-item> -->
      </el-form>
      <div slot="footer">
        <el-button @click="asyncTime = false">取 消</el-button>
        <el-button
          class="submit_btn"
          @click="submitUpdateTime()"
          >提 交
        </el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { cageInfo, mouldInfo, ductpiedceInfo } from '../file/retrospect';
import { cageInfo, mouldInfo, ductpiedceInfo } from "../file/retrospect";
import { downLoadFile, throttle } from "../../../plugins/public";
import { buttonPinia } from '../../../pinia';
import { downLoadFile, throttle } from '../../../plugins/public';
  export default {
    data() {
    // const validatePass = (rule, value, callback) => {
    //   if(value === '') {
    //     callback(new Error('请再次输入密码'));
    //   } else if(value < ) {
    //   } else {
    //     callback();
    //   }
    // }
      return {
        projectId: '',
      projectId: "",
        projectData: [],
        ringNum: '', // 环号
        groupId: '', // 班组
      ringNum: "", // 环号
      groupId: "", // 班组
        groupData: [], // 班组信息
        checkResult: '', // 质量标注
        reinforcement: '', // 配筋
      checkResult: "", // 质量标注
      reinforcement: "", // 配筋
        reinforcementData: [], // 配筋信息
        groutingHoles: '', // 注浆孔
      groutingHoles: "", // 注浆孔
        groutingHolesData: [], // 注浆孔信息
        blockNum: '', // 块号
      blockNum: "", // 块号
        blockNumData: [], // 块号信息
        inModTime: '', // 入模时间
        pouringTime: '', // 浇筑时间
        checkTime: '', // 质检时间
      inModTime: "", // 入模时间
      pouringTime: "", // 浇筑时间
      checkTime: "", // 质检时间
        pageNum: 1,
        pageSize: 10,
        total: 0,
@@ -315,33 +565,95 @@
        asyncDuctPiece: false, // 存在问题弹窗
        formDuctPiece: {}, // 表单信息
        rulesDuctPiece: {}, // 表单校验规则
        issueType: '',
      issueType: "",
        asyncRetrospect: false, // 质量追溯弹窗
        asyncCageInfo: cageInfo, // 钢筋笼信息
        asyncMouldInfo: mouldInfo, // 模具信息
        asyncDuctpieceInfo: ductpiedceInfo, // 管片信息
        retrospectInfo: {},// 质量追溯信息
        pipeId: '',
        checkResultStr: '',
      fileList: [],
      pipeId: "",
      checkResultStr: "",
        asyncTitle: true,
        asyncInsert: false,
        formInsert: {},
        rulesInsert: {
          proId: [{
        proId: [
          {
            required: true,
            message: '请选择项目名称',
            trigger: 'blur'
          }],
          ringNum: [{
            message: "请选择项目名称",
            trigger: ["blur", "change"],
          },
        ],
        reinforcementId: [
          {
            required: true,
            message: '请输入环号',
            trigger: 'blur'
          }],
            message: "请选择配筋",
            trigger: ["blur", "change"],
          },
        ],
        ringNum: [
          {
            required: true,
            message: "请输入环号",
            trigger: "blur",
          },
        ]
        },
        proData: [],
        steelData: [],
        mouldData: [],
      changeTime: false,
      asyncTime: false,
      formTime: {},
      rulesTime: {
        inModTime: [{
          required: true,
          message: "请选择入模时间",
          trigger: ["blur", "change"],
        }],
        outModTime: [{
          required: true,
          message: "请选择出模时间",
          trigger: ["blur", "change"],
        }],
        pouringTime: [{
          required: true,
          message: "请选择浇筑时间",
          trigger: ["blur", "change"],
        }],
        placingInTime: [{
          required: true,
          message: "请选择入窑时间",
          trigger: ["blur", "change"],
        }],
        placingOutTime: [{
          required: true,
          message: "请选择出窑时间",
          trigger: ["blur", "change"],
        }],
        checkTime: [{
          required: true,
          message: "请选择质检时间",
          trigger: ["blur", "change"],
        }],
        inWaterTime: [{
          required: true,
          message: "请选择入池时间",
          trigger: ["blur", "change"],
        }],
        outWaterTime: [{
          required: true,
          message: "请选择出池时间",
          trigger: ["blur", "change"],
        }],
        inRepoTime: [{
          required: true,
          message: "请选择入库时间",
          trigger: ["blur", "change"],
        }]
      }
    };
    },
    mounted() {
      this.getAllProjects();
@@ -351,13 +663,16 @@
    methods: {
      // 根据项目获取钢筋笼 模具信息
      async getAllSteelPipeData(proId) {
      if (proId) {
        this.steelData = [];
        this.mouldData = [];
        const { data } = await this.$api.DuctpiecePLM.getAllSteelPipeData({
          proId: proId
        const { data } = await this.$api.Basics.getProjectSystemInfoData({
          proId: proId,
        });
        this.steelData = data.steel;
        this.mouldData = data.mod;
        this.steelData = data.proHas;
      } else {
        this.$set(this.formInsert, "reinforcementId", "");
        this.steelData = [];
      }
      },
      // 获取全部班组
      async getAllGroupData() {
@@ -386,21 +701,23 @@
          reinforcement: this.reinforcement,
          groutingHoles: this.groutingHoles,
          blockNum: this.blockNum,
          inModStartTime: this.inModTime ? this.inModTime[0] + ' 00:00:00' : '',
          inModEndTime: this.inModTime ? this.inModTime[1] + ' 23:59:59' : '',
          pouringStartTime: this.pouringTime ? this.pouringTime[0] + ' 00:00:00' : '',
          pouringEndTime: this.pouringTime ? this.pouringTime[1] + ' 23:59:59' : '',
          checkStartTime: this.checkTime ? this.checkTime[0] + ' 00:00:00' : '',
          checkEndTime: this.checkTime ? this.checkTime[1] + ' 23:59:59' : ''
        }).then((res) => {
        inModStartTime: this.inModTime ? this.inModTime[0] + " 00:00:00" : "",
        inModEndTime: this.inModTime ? this.inModTime[1] + " 23:59:59" : "",
        pouringStartTime: this.pouringTime ? this.pouringTime[0] + " 00:00:00" : "",
        pouringEndTime: this.pouringTime ? this.pouringTime[1] + " 23:59:59" : "",
        checkStartTime: this.checkTime ? this.checkTime[0] + " 00:00:00" : "",
        checkEndTime: this.checkTime ? this.checkTime[1] + " 23:59:59" : "",
      })
        .then((res) => {
          if(res.success) {
            this.total = res.data.total;
            this.ductpieceList = res.data.list;
          }
          this.loading = false;
        }).catch(() => {
          this.loading = false;
        })
        .catch(() => {
          this.loading = false;
        });
      },
      // 打开新增管片信息
      propInsert() {
@@ -412,8 +729,38 @@
      propUpdate(row) {
        this.asyncTitle = false;
        this.asyncInsert = true;
        this.$set(this.formInsert, 'pipeNum', row.pipeNum);
        this.$set(this.formInsert, 'ringNum', row.ringNum);
      this.$set(this.formInsert, "pipeNum", row.pipeNum);
      this.$set(this.formInsert, "ringNum", row.ringNum);
    },
    // 打开修改时间
    propUpdateTime(row) {
      this.asyncTime = true;
      this.$set(this.formTime, "pipeNum", row.pipeNum);
      this.$set(this.formTime, "ringNum", row.ringNum);
      this.$api.DuctpiecePLM.getPipeTimeData({
        pipeNum: row.pipeNum
      }).then(res => {
        if(res.success) {
          this.$set(this.formTime, 'inModTime', res.data.inModTime);
          this.$set(this.formTime, 'outModTime', res.data.outModTime);
          this.$set(this.formTime, 'pouringTime', res.data.pouringTime);
          this.$set(this.formTime, 'placingInTime', res.data.placingInTime);
          this.$set(this.formTime, 'placingOutTime', res.data.placingOutTime);
          this.$set(this.formTime, 'checkTime', res.data.checkTime);
          if(res.data.inWaterFlag) {
            this.$set(this.formTime, 'inWaterTime', res.data.inWaterTime);
          }
          if(res.data.OutWaterFlag) {
            this.$set(this.formTime, 'outWaterTime', res.data.outWaterTime);
          }
          if(res.data.inRepoFlag) {
            this.$set(this.formTime, 'inRepoTime', res.data.inRepoTime);
          }
          // this.$set(this.formInsert, '', res.data.);
        } else {
         this.$message.warning(res.statusMsg);
        }
      })
      },
      // 导出Excel
      exportExcel() {
@@ -429,47 +776,47 @@
          pouringStartTime: this.pouringTime[0],
          pouringEndTime: this.pouringTime[1],
          checkStartTime: this.checkTime[0],
          checkEndTime: this.checkTime[1]
        checkEndTime: this.checkTime[1],
        }).then((res) => {
          if(res.success) {
            downLoadFile(res.data, '/m/pipeInfo/export');
          downLoadFile(res.data, "/m/pipeInfo/export");
          }
        })
      });
      },
      // 打开存在问题
      propIssue(row) {
        this.pipeId = row.pipeId
      this.pipeId = row.pipeId;
        this.checkResultStr = row.checkResultStr;
        this.issueType = row.type;
        this.asyncDuctPiece = true;
        this.$api.DuctpiecePLM.getProblemInfo({
          pipeId: row.pipeId
        pipeId: row.pipeId,
        }).then((res) => {
          if(res.success) {
            this.$set(this.formDuctPiece, 'pipeCheckId', res.data.pipeCheckId);
            this.$set(this.formDuctPiece, 'existProblem', res.data.existProblem);
            this.$set(this.formDuctPiece, 'exeProResult', res.data.exeProResult);
            this.$set(this.formDuctPiece, 'exeProNote', res.data.exeProNote);
          this.$set(this.formDuctPiece, "pipeCheckId", res.data.pipeCheckId);
          this.$set(this.formDuctPiece, "existProblem", res.data.existProblem);
          this.$set(this.formDuctPiece, "exeProResult", res.data.exeProResult);
          this.$set(this.formDuctPiece, "exeProNote", res.data.exeProNote);
            this.fileList = res.data.files.map((item, index) => {
              return {
                id: index + 1,
                url: `https://szpipe.thhy-tj.com/${item}`
              url: `https://pipe.thhy-tj.com/${item}`,
            };
          });
              }
            })
          }
        })
      });
      },
      // 打开质量追溯
      propCheckHistory(row) {
        this.asyncRetrospect = true;
        this.retrospectInfo = {};
        this.$api.DuctpiecePLM.getCheckHistoryInfo({
          pipeId: row.pipeId
        pipeId: row.pipeId,
        }).then((res) => {
          if(res.success) {
            this.retrospectInfo = res.data;
          }
        })
      });
      },
      // 提交存在问题
      submitInsertForm: throttle(function() {
@@ -480,11 +827,11 @@
          if(res.success) {
            this.asyncDuctPiece = false;
            this.searchDuctpiecePLMList(true);
            this.$message.success('添加成功!');
          this.$message.success("添加成功!");
          } else {
            this.$message.warning(res.statusMsg);
          }
        })
      });
      }, 3000),
      // 提交新增管片信息
      submitInsertPipe: throttle(function() {
@@ -492,16 +839,16 @@
          if(valid) {
            const params = Object.assign({}, this.formInsert);
            this.$api.DuctpiecePLM.insertPipeData(params).then((res) => {
              if(res.statusMsg === 'ok') {
            if (res.statusMsg === "ok") {
                this.asyncInsert = false;
                this.searchDuctpiecePLMList(true);
                this.$message.success('新增成功!');
              this.$message.success("新增成功!");
              } else {
                this.$message.warning(res.statusMsg);
              }
            })
          });
          }
        })
      });
      }, 3000),
      // 提交修改环号信息
      submitUpdatePipe: throttle(function() {
@@ -509,38 +856,62 @@
          if(valid) {
            const params = Object.assign({}, this.formInsert);
            this.$api.DuctpiecePLM.updataRingNumData(params).then((res) => {
              if(res.statusMsg === 'ok') {
            if (res.statusMsg === "ok") {
                this.asyncInsert = false;
                this.searchDuctpiecePLMList(true);
                this.$message.success('修改成功!');
              this.$message.success("修改成功!");
              } else {
                this.$message.warning(res.statusMsg);
              }
            })
          });
        }
      });
    }, 3000),
    // 提交修改时间信息
    submitUpdateTime: throttle(function() {
      this.$refs.formTime.validate((valid) => {
        if(valid) {
          const params = Object.assign({}, this.formTime);
          this.$api.DuctpiecePLM.updatePipeTimeData(params).then((res) => {
            if (res.statusMsg === "ok") {
              this.asyncTime = false;
              this.searchDuctpiecePLMList(true);
              this.$message.success("修改成功!");
            } else {
              this.$message.warning(res.statusMsg);
            }
          });
          }
        })
      }, 3000),
      // 
      showCheckResult(value) {
        return !value ? '' : value == 1 ? '合格' : '存在问题';
      return !value ? "" : value == 1 ? "合格" : "存在问题";
      },
      // 根据项目获取尺寸 配筋 块号信息
      changeHeaderProject(data) {
          this.blockNum = '';
          this.reinforcement = '';
          this.groutingHoles = '';
      this.blockNum = "";
      this.reinforcement = "";
      this.groutingHoles = "";
          this.groutingHolesData = [];
          this.blockNumData = [];
          this.reinforcementData = [];
        if(data) {
          this.$api.Basics.getProjectSystemInfoData({
            proId: data
          proId: data,
          }).then((res) => {
            this.groutingHolesData = res.data.proGroutings;
            this.blockNumData = res.data.proBloks;
            this.reinforcementData = res.data.proHas;
          })
        });
        }
    },
    // 转换毫秒
    transitionMsec(time) {
      let msec = 0;
      const date = Date.parse(new Date(time));
      console.log(date,'==-=-=-')
      return msec;
      },
      // 切换页数
      changePageNum(page) {
@@ -562,28 +933,33 @@
      asyncDuctpieceInfo(bol) {
        if(!bol) {
          this.formDuctPiece = {};
          this.pipeId = '';
          this.checkResultStr = '';
        this.pipeId = "";
        this.checkResultStr = "";
          this.fileList = [];
        }
      },
      asyncInsert(bol) {
        if(!bol) {
          this.steelData = [];
          this.mouldData = [];
          this.formInsert = {};
          this.$refs.formInsert.resetFields();
        }
    },
    asyncTime(bol) {
      if(!bol) {
        this.formTime = {};
        this.$refs.formTime.resetFields();
      }
    }
  }
  },
};
</script>
<style lang="scss" scoped>
@import '../../../style/layout-main.scss';
@import "../../../style/layout-main.scss";
.issue_status {
  color: #F42829;
  color: #f42829;
}
.retrospect_content {
@@ -594,7 +970,7 @@
    padding: 0 15px 15px;
    font-size: 16px;
    font-weight: 600;
    color: #FFF;
    color: #fff;
    border-bottom: 1px solid #0d5274;
    &::before {
@@ -605,7 +981,7 @@
      transform: translateY(-85%);
      width: 3px;
      height: 50%;
      background: #18F6F8;
      background: #18f6f8;
    }
  }
@@ -614,22 +990,22 @@
    margin: 10px 10px 10px 0;
    .table_item {
      border: 1px solid #1CB7E0;
      border: 1px solid #1cb7e0;
      border-right: none;
      &:last-child {
        border-right: 1px solid #1CB7E0;
        border-right: 1px solid #1cb7e0;
      }
      .table_item_chunk {
        padding: 10px;
        color: #18F6F8;
        color: #18f6f8;
        text-align: center;
      }
      .table_th {
        border-bottom: 1px solid #1CB7E0;
        background: #082F57;
        border-bottom: 1px solid #1cb7e0;
        background: #082f57;
      }
    }
  }
web/src/views/DuctpiecePLM/DuctpieceIndex.vue
@@ -3,12 +3,18 @@
    <div class="main_header">
      <div class="header_item">
        <span class="header_label">项目名称:</span>
        <el-select v-model="projectId" clearable placeholder="请选择项目" @change="changeHeaderProject">
        <el-select
          v-model="projectId"
          clearable
          placeholder="请选择项目"
          @change="changeHeaderProject"
        >
          <el-option
            v-for="item in projectData"
            :key="item.proId"
            :label="item.proName"
            :value="item.proId">
            :value="item.proId"
          >
          </el-option>
        </el-select>
      </div>
@@ -23,7 +29,8 @@
            v-for="item in groupData"
            :key="item.groupId"
            :label="item.groupName"
            :value="item.groupId">
            :value="item.groupId"
          >
          </el-option>
        </el-select>
      </div>
@@ -42,7 +49,8 @@
            v-for="item in reinforcementData"
            :key="item.hasSteel"
            :label="item.dictName"
            :value="item.hasSteel">
            :value="item.hasSteel"
          >
          </el-option>
        </el-select>
      </div>
@@ -53,7 +61,8 @@
            v-for="item in groutingHolesData"
            :key="item.groutingHoles"
            :label="item.dictName"
            :value="item.groutingHoles">
            :value="item.groutingHoles"
          >
          </el-option>
        </el-select> 
      </div>
@@ -64,7 +73,8 @@
            v-for="item in blockNumData"
            :key="item.blockNum"
            :label="item.dictName"
            :value="item.blockNum">
            :value="item.blockNum"
          >
          </el-option>
        </el-select>
      </div>
@@ -76,7 +86,8 @@
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd">
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
      </div>
      <!-- <div class="header_item">
@@ -98,20 +109,33 @@
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd">
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
      </div>
      <div class="header_item">
        <el-button v-if="showButton('search')" icon="el-icon-search" @click="searchDuctpiecePLMList(true)">查询</el-button>
        <el-button v-if="showButton('insert')" icon="el-icon-download" @click="propInsert()">新增管片</el-button>
        <el-button v-if="showButton('insert')" icon="el-icon-download" @click="exportExcel()">导出Excel</el-button>
        <el-button
          v-if="showButton('search')"
          icon="el-icon-search"
          @click="searchDuctpiecePLMList(true)"
          >查询</el-button
        >
        <el-button
          v-if="showButton('insert')"
          icon="el-icon-download"
          @click="propInsert()"
          >新增管片</el-button
        >
        <el-button
          v-if="showButton('export')"
          icon="el-icon-download"
          @click="exportExcel()"
          >导出Excel</el-button
        >
      </div>
    </div>
    <div class="main_content">
      <el-table
        v-loading="loading"
        :data="ductpieceList"
        height="100%">
      <el-table v-loading="loading" :data="ductpieceList" height="100%">
        <el-table-column label="序号" width="60" align="center">
          <template #default="scope">
            <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
@@ -121,28 +145,83 @@
        <el-table-column prop="proName" label="项目名称" align="center"></el-table-column>
        <el-table-column prop="pipeNum" label="管片编号" align="center"></el-table-column>
        <el-table-column prop="turnName" label="转向" align="center"></el-table-column>
        <el-table-column prop="reinforcementName" label="配筋" align="center"></el-table-column>
        <el-table-column prop="groutingHolesName" label="注浆孔" align="center"></el-table-column>
        <el-table-column prop="blockNumName" label="块号" align="center"></el-table-column>
        <el-table-column
          prop="reinforcementName"
          label="配筋"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="groutingHolesName"
          label="注浆孔"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="blockNumName"
          label="块号"
          align="center"
        ></el-table-column>
        <el-table-column prop="mouldNum" label="模具" align="center"></el-table-column>
        <el-table-column prop="intoModTime" label="入模时间" align="center"></el-table-column>
        <el-table-column
          prop="intoModTime"
          label="入模时间"
          align="center"
        ></el-table-column>
        <!-- <el-table-column prop="pouringTime" label="浇筑时间" align="center"></el-table-column> -->
        <el-table-column prop="checkTime" label="质检时间" align="center"></el-table-column>
        <el-table-column prop="groupName" label="生产班组" align="center"></el-table-column>
        <el-table-column
          prop="checkTime"
          label="质检时间"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="groupName"
          label="生产班组"
          align="center"
        ></el-table-column>
        <el-table-column label="质量标注" align="center">
          <template #default="{ row }">
            <div>
               {{ row.checkResult == 0 ? '未质检' : row.checkResult == 1 ? '合格' : row.checkResult == 2 ? '不合格' : row.checkResult == 3 ? '报废' : ''}}
              {{
                row.checkResult == 0
                  ? "未质检"
                  : row.checkResult == 1
                  ? "合格"
                  : row.checkResult == 2
                  ? "不合格"
                  : row.checkResult == 3
                  ? "报废"
                  : ""
              }}
            </div>
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center" width="300">
          <template #default="{ row }">
            <template v-if="showButton('update') && row.checkResult !== 1">
              <el-button class="table_btn" size="mini" @click="propIssue(row)">存在问题</el-button>
            <template v-if="showButton('update') && [2, 3].includes(row.checkResult)">
              <el-button class="table_btn" size="mini" @click="propIssue(row)"
                >存在问题</el-button
              >
            </template>
            <el-button class="table_btn" size="mini" v-if="showButton('update') && row.checkResult == 0" @click="propUpdate(row)">修改环号</el-button>
            <el-button class="table_btn" size="mini" v-if="showButton('delete')" @click="propCheckHistory(row)">质量追溯</el-button>
            <el-button
              class="table_btn"
              size="mini"
              v-if="showButton('update')"
              @click="propUpdate(row)"
              >修改环号</el-button
            >
            <el-button
              class="table_btn"
              size="mini"
              v-if="showButton('update')"
              @click="propUpdateTime(row)"
              >修改时间</el-button
            >
            <el-button
              class="table_btn"
              size="mini"
              v-if="showButton('delete')"
              @click="propCheckHistory(row)"
              >质量追溯</el-button
            >
          </template>
        </el-table-column>
      </el-table>
@@ -156,15 +235,23 @@
        :page-sizes="[10, 20, 50, 100]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total">
        :total="total"
      >
      </el-pagination>
    </div>
    <el-dialog
      class="prop_dialog"
      title="存在问题"
      :visible.sync="asyncDuctPiece"
      width="35%">
      <el-form ref="form" :model="formDuctPiece" :rules="rulesDuctPiece" label-width="auto" class="rule_form">
      width="35%"
    >
      <el-form
        ref="form"
        :model="formDuctPiece"
        :rules="rulesDuctPiece"
        label-width="auto"
        class="rule_form"
      >
        <el-form-item label="质检结果:">
          <span class="issue_status">{{checkResultStr}}</span>
        </el-form-item>
@@ -173,7 +260,8 @@
            v-model="formDuctPiece.existProblem" 
            type="textarea"
            disabled
            placeholder="请输入存在问题"></el-input>
            placeholder="请输入存在问题"
          ></el-input>
        </el-form-item>
        <el-form-item label="问题图片:">
          <div class="problem_content">
@@ -181,7 +269,8 @@
              v-for="item in fileList"
              :key="item.id"
              class="problem_image"
              :src="item.url">
              :src="item.url"
            >
            </el-image>
          </div>
        </el-form-item>
@@ -190,7 +279,8 @@
            v-model="formDuctPiece.exeProResult" 
            type="textarea"
            clearable 
            placeholder="请输入问题处理结果"></el-input>
            placeholder="请输入问题处理结果"
          ></el-input>
        </el-form-item>
        <el-form-item label="备注:">
          <el-input 
@@ -199,7 +289,8 @@
            clearable 
            placeholder="请输入备注"
            maxlength="200"
            show-word-limit></el-input>
            show-word-limit
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer">
@@ -212,45 +303,47 @@
      class="prop_dialog"
      title="质量追溯"
      :visible.sync="asyncRetrospect"
      width="70%">
      width="70%"
    >
      <div class="retrospect_content">
        <div class="retrospect_content_title">
          钢筋笼信息
        </div>
        <div class="retrospect_content_title">钢筋笼信息</div>
        <div class="retrospect_content_table">
          <div 
            class="table_item" 
            :style="{width: `calc(100% / ${asyncCageInfo.length})`}"
            v-for="item in asyncCageInfo"
            :key="item.id">
            :key="item.id"
          >
            <div class="table_item_chunk table_th">{{item.label}}</div>
            <div class="table_item_chunk table_td">{{
              item.value === 'steelCheckResult' ? showCheckResult(retrospectInfo[item.value]) : retrospectInfo[item.value]}}
            <div class="table_item_chunk table_td">
              {{
                item.value === "steelCheckResult"
                  ? showCheckResult(retrospectInfo[item.value])
                  : retrospectInfo[item.value]
              }}
            </div>
          </div>
        </div>
        <div class="retrospect_content_title">
          模具信息
        </div>
        <div class="retrospect_content_title">模具信息</div>
        <div class="retrospect_content_table">
          <div 
            class="table_item" 
            :style="{width: `calc(100% / ${asyncMouldInfo.length})`}"
            v-for="item in asyncMouldInfo"
            :key="item.id">
            :key="item.id"
          >
            <div class="table_item_chunk table_th">{{item.label}}</div>
            <div class="table_item_chunk table_td">{{retrospectInfo[item.value]}}</div>
          </div>
        </div>
        <div class="retrospect_content_title">
          管片信息
        </div>
        <div class="retrospect_content_title">管片信息</div>
        <div class="retrospect_content_table">
          <div 
            class="table_item" 
            :style="{width: `calc(100% / ${asyncDuctpieceInfo.length})`}"
            v-for="item in asyncDuctpieceInfo"
            :key="item.id">
            :key="item.id"
          >
            <div class="table_item_chunk table_th">{{item.label}}</div>
            <div class="table_item_chunk table_td">{{retrospectInfo[item.value]}}</div>
          </div>
@@ -261,52 +354,209 @@
      class="prop_dialog"
      :title="asyncTitle ? '新增管片' : '修改环号'"
      :visible.sync="asyncInsert"
      width="35%">
      <el-form ref="formInsert" :model="formInsert" :rules="rulesInsert" label-width="auto" class="rule_form">
        <el-form-item label="项目名称:" prop="proId" v-if="asyncTtile">
          <el-select v-model="formInsert.proId" clearable placeholder="请选择项目信息" @change="getAllSteelPipeData">
      width="35%"
    >
      <el-form
        ref="formInsert"
        :model="formInsert"
        :rules="rulesInsert"
        label-width="auto"
        class="rule_form"
      >
        <el-form-item label="项目名称:" prop="proId" v-if="asyncTitle">
          <el-select
            v-model="formInsert.proId"
            clearable
            placeholder="请选择项目信息"
            @change="getAllSteelPipeData"
          >
            <el-option
              v-for="item in projectData"
              :key="item.proId"
              :label="item.proName"
              :value="item.proId">
              :value="item.proId"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="配筋:" prop="reinforcementId" v-if="asyncTitle">
          <el-select
            v-model="formInsert.reinforcementId"
            clearable
            placeholder="请选择配筋"
          >
            <el-option
              v-for="item in steelData"
              :key="item.hasSteel"
              :label="item.dictName"
              :value="item.hasSteel"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="环号:" prop="ringNum">
          <el-input v-model="formInsert.ringNum" clearable placeholder="请输入环号"></el-input>
          <el-input
            v-model="formInsert.ringNum"
            clearable
            placeholder="请输入环号"
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer">
        <el-button @click="asyncInsert = false">取 消</el-button>
        <el-button class="submit_btn" @click="asyncTitle ? submitInsertPipe() : submitUpdatePipe()">提 交</el-button>
        <el-button
          class="submit_btn"
          @click="asyncTitle ? submitInsertPipe() : submitUpdatePipe()"
          >提 交</el-button
        >
      </div>
    </el-dialog>
    <el-dialog
      class="prop_dialog"
      title="修改时间"
      :visible.sync="asyncTime"
      width="35%">
      <el-form
        ref="formTime"
        :model="formTime"
        :rules="rulesTime"
        label-width="auto"
        class="rule_form">
        <el-form-item label="入模时间:" prop="inModTime">
          <el-date-picker
            v-model="formTime.inModTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入模时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="浇筑时间:" prop="pouringTime">
          <el-date-picker
            v-model="formTime.pouringTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择浇筑时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="入窑时间:" prop="placingInTime">
          <el-date-picker
            v-model="formTime.placingInTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入窑时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="出窑时间:" prop="placingOutTime">
          <el-date-picker
            v-model="formTime.placingOutTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择出窑时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="出模时间:" prop="outModTime">
          <el-date-picker
            v-model="formTime.outModTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入窑时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="质检时间:" prop="checkTime">
          <el-date-picker
            v-model="formTime.checkTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择质检时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="入水养时间:" prop="inWaterTime" v-if="formTime.inWaterTime">
          <el-date-picker
            v-model="formTime.inWaterTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入水养时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="出水养时间:" prop="outWaterTime" v-if="formTime.outWaterTime">
          <el-date-picker
            v-model="formTime.outWaterTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择出水养时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="入库时间:" prop="inRepoTime" v-if="formTime.inRepoTime">
          <el-date-picker
            v-model="formTime.inRepoTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择入库时间"
          >
          </el-date-picker>
        </el-form-item>
        <!-- <el-form-item label="出库时间:" prop="intoModTime">
          <el-date-picker
            v-model="formTime.intoModTime"
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            placeholder="选择出库时间"
          >
          </el-date-picker>
        </el-form-item> -->
      </el-form>
      <div slot="footer">
        <el-button @click="asyncTime = false">取 消</el-button>
        <el-button
          class="submit_btn"
          @click="submitUpdateTime()"
          >提 交
        </el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { cageInfo, mouldInfo, ductpiedceInfo } from './file/retrospect';
import { cageInfo, mouldInfo, ductpiedceInfo } from "./file/retrospect";
import { downLoadFile, throttle } from "../../plugins/public";
import { buttonPinia } from '../../pinia';
import { downLoadFile, throttle } from '../../plugins/public';
  export default {
    data() {
    // const validatePass = (rule, value, callback) => {
    //   if(value === '') {
    //     callback(new Error('请再次输入密码'));
    //   } else if(value < ) {
    //   } else {
    //     callback();
    //   }
    // }
      return {
        projectId: '',
      projectId: "",
        projectData: [],
        ringNum: '', // 环号
        groupId: '', // 班组
      ringNum: "", // 环号
      groupId: "", // 班组
        groupData: [], // 班组信息
        checkResult: '', // 质量标注
        reinforcement: '', // 配筋
      checkResult: "", // 质量标注
      reinforcement: "", // 配筋
        reinforcementData: [], // 配筋信息
        groutingHoles: '', // 注浆孔
      groutingHoles: "", // 注浆孔
        groutingHolesData: [], // 注浆孔信息
        blockNum: '', // 块号
      blockNum: "", // 块号
        blockNumData: [], // 块号信息
        inModTime: '', // 入模时间
        pouringTime: '', // 浇筑时间
        checkTime: '', // 质检时间
      inModTime: "", // 入模时间
      pouringTime: "", // 浇筑时间
      checkTime: "", // 质检时间
        pageNum: 1,
        pageSize: 10,
        total: 0,
@@ -315,33 +565,95 @@
        asyncDuctPiece: false, // 存在问题弹窗
        formDuctPiece: {}, // 表单信息
        rulesDuctPiece: {}, // 表单校验规则
        issueType: '',
      issueType: "",
        asyncRetrospect: false, // 质量追溯弹窗
        asyncCageInfo: cageInfo, // 钢筋笼信息
        asyncMouldInfo: mouldInfo, // 模具信息
        asyncDuctpieceInfo: ductpiedceInfo, // 管片信息
        retrospectInfo: {},// 质量追溯信息
        pipeId: '',
        checkResultStr: '',
      fileList: [],
      pipeId: "",
      checkResultStr: "",
        asyncTitle: true,
        asyncInsert: false,
        formInsert: {},
        rulesInsert: {
          proId: [{
        proId: [
          {
            required: true,
            message: '请选择项目名称',
            trigger: 'blur'
          }],
          ringNum: [{
            message: "请选择项目名称",
            trigger: ["blur", "change"],
          },
        ],
        reinforcementId: [
          {
            required: true,
            message: '请输入环号',
            trigger: 'blur'
          }],
            message: "请选择配筋",
            trigger: ["blur", "change"],
          },
        ],
        ringNum: [
          {
            required: true,
            message: "请输入环号",
            trigger: "blur",
          },
        ]
        },
        proData: [],
        steelData: [],
        mouldData: [],
      changeTime: false,
      asyncTime: false,
      formTime: {},
      rulesTime: {
        inModTime: [{
          required: true,
          message: "请选择入模时间",
          trigger: ["blur", "change"],
        }],
        outModTime: [{
          required: true,
          message: "请选择出模时间",
          trigger: ["blur", "change"],
        }],
        pouringTime: [{
          required: true,
          message: "请选择浇筑时间",
          trigger: ["blur", "change"],
        }],
        placingInTime: [{
          required: true,
          message: "请选择入窑时间",
          trigger: ["blur", "change"],
        }],
        placingOutTime: [{
          required: true,
          message: "请选择出窑时间",
          trigger: ["blur", "change"],
        }],
        checkTime: [{
          required: true,
          message: "请选择质检时间",
          trigger: ["blur", "change"],
        }],
        inWaterTime: [{
          required: true,
          message: "请选择入池时间",
          trigger: ["blur", "change"],
        }],
        outWaterTime: [{
          required: true,
          message: "请选择出池时间",
          trigger: ["blur", "change"],
        }],
        inRepoTime: [{
          required: true,
          message: "请选择入库时间",
          trigger: ["blur", "change"],
        }]
      }
    };
    },
    mounted() {
      this.getAllProjects();
@@ -351,13 +663,16 @@
    methods: {
      // 根据项目获取钢筋笼 模具信息
      async getAllSteelPipeData(proId) {
      if (proId) {
        this.steelData = [];
        this.mouldData = [];
        const { data } = await this.$api.DuctpiecePLM.getAllSteelPipeData({
          proId: proId
        const { data } = await this.$api.Basics.getProjectSystemInfoData({
          proId: proId,
        });
        this.steelData = data.steel;
        this.mouldData = data.mod;
        this.steelData = data.proHas;
      } else {
        this.$set(this.formInsert, "reinforcementId", "");
        this.steelData = [];
      }
      },
      // 获取全部班组
      async getAllGroupData() {
@@ -386,21 +701,23 @@
          reinforcement: this.reinforcement,
          groutingHoles: this.groutingHoles,
          blockNum: this.blockNum,
          inModStartTime: this.inModTime ? this.inModTime[0] + ' 00:00:00' : '',
          inModEndTime: this.inModTime ? this.inModTime[1] + ' 23:59:59' : '',
          pouringStartTime: this.pouringTime ? this.pouringTime[0] + ' 00:00:00' : '',
          pouringEndTime: this.pouringTime ? this.pouringTime[1] + ' 23:59:59' : '',
          checkStartTime: this.checkTime ? this.checkTime[0] + ' 00:00:00' : '',
          checkEndTime: this.checkTime ? this.checkTime[1] + ' 23:59:59' : ''
        }).then((res) => {
        inModStartTime: this.inModTime ? this.inModTime[0] + " 00:00:00" : "",
        inModEndTime: this.inModTime ? this.inModTime[1] + " 23:59:59" : "",
        pouringStartTime: this.pouringTime ? this.pouringTime[0] + " 00:00:00" : "",
        pouringEndTime: this.pouringTime ? this.pouringTime[1] + " 23:59:59" : "",
        checkStartTime: this.checkTime ? this.checkTime[0] + " 00:00:00" : "",
        checkEndTime: this.checkTime ? this.checkTime[1] + " 23:59:59" : "",
      })
        .then((res) => {
          if(res.success) {
            this.total = res.data.total;
            this.ductpieceList = res.data.list;
          }
          this.loading = false;
        }).catch(() => {
          this.loading = false;
        })
        .catch(() => {
          this.loading = false;
        });
      },
      // 打开新增管片信息
      propInsert() {
@@ -412,8 +729,38 @@
      propUpdate(row) {
        this.asyncTitle = false;
        this.asyncInsert = true;
        this.$set(this.formInsert, 'pipeNum', row.pipeNum);
        this.$set(this.formInsert, 'ringNum', row.ringNum);
      this.$set(this.formInsert, "pipeNum", row.pipeNum);
      this.$set(this.formInsert, "ringNum", row.ringNum);
    },
    // 打开修改时间
    propUpdateTime(row) {
      this.asyncTime = true;
      this.$set(this.formTime, "pipeNum", row.pipeNum);
      this.$set(this.formTime, "ringNum", row.ringNum);
      this.$api.DuctpiecePLM.getPipeTimeData({
        pipeNum: row.pipeNum
      }).then(res => {
        if(res.success) {
          this.$set(this.formTime, 'inModTime', res.data.inModTime);
          this.$set(this.formTime, 'outModTime', res.data.outModTime);
          this.$set(this.formTime, 'pouringTime', res.data.pouringTime);
          this.$set(this.formTime, 'placingInTime', res.data.placingInTime);
          this.$set(this.formTime, 'placingOutTime', res.data.placingOutTime);
          this.$set(this.formTime, 'checkTime', res.data.checkTime);
          if(res.data.inWaterFlag) {
            this.$set(this.formTime, 'inWaterTime', res.data.inWaterTime);
          }
          if(res.data.OutWaterFlag) {
            this.$set(this.formTime, 'outWaterTime', res.data.outWaterTime);
          }
          if(res.data.inRepoFlag) {
            this.$set(this.formTime, 'inRepoTime', res.data.inRepoTime);
          }
          // this.$set(this.formInsert, '', res.data.);
        } else {
         this.$message.warning(res.statusMsg);
        }
      })
      },
      // 导出Excel
      exportExcel() {
@@ -429,47 +776,47 @@
          pouringStartTime: this.pouringTime[0],
          pouringEndTime: this.pouringTime[1],
          checkStartTime: this.checkTime[0],
          checkEndTime: this.checkTime[1]
        checkEndTime: this.checkTime[1],
        }).then((res) => {
          if(res.success) {
            downLoadFile(res.data, '/m/pipeInfo/export');
          downLoadFile(res.data, "/m/pipeInfo/export");
          }
        })
      });
      },
      // 打开存在问题
      propIssue(row) {
        this.pipeId = row.pipeId
      this.pipeId = row.pipeId;
        this.checkResultStr = row.checkResultStr;
        this.issueType = row.type;
        this.asyncDuctPiece = true;
        this.$api.DuctpiecePLM.getProblemInfo({
          pipeId: row.pipeId
        pipeId: row.pipeId,
        }).then((res) => {
          if(res.success) {
            this.$set(this.formDuctPiece, 'pipeCheckId', res.data.pipeCheckId);
            this.$set(this.formDuctPiece, 'existProblem', res.data.existProblem);
            this.$set(this.formDuctPiece, 'exeProResult', res.data.exeProResult);
            this.$set(this.formDuctPiece, 'exeProNote', res.data.exeProNote);
          this.$set(this.formDuctPiece, "pipeCheckId", res.data.pipeCheckId);
          this.$set(this.formDuctPiece, "existProblem", res.data.existProblem);
          this.$set(this.formDuctPiece, "exeProResult", res.data.exeProResult);
          this.$set(this.formDuctPiece, "exeProNote", res.data.exeProNote);
            this.fileList = res.data.files.map((item, index) => {
              return {
                id: index + 1,
                url: `https://szpipe.thhy-tj.com/${item}`
              url: `https://pipe.thhy-tj.com/${item}`,
            };
          });
              }
            })
          }
        })
      });
      },
      // 打开质量追溯
      propCheckHistory(row) {
        this.asyncRetrospect = true;
        this.retrospectInfo = {};
        this.$api.DuctpiecePLM.getCheckHistoryInfo({
          pipeId: row.pipeId
        pipeId: row.pipeId,
        }).then((res) => {
          if(res.success) {
            this.retrospectInfo = res.data;
          }
        })
      });
      },
      // 提交存在问题
      submitInsertForm: throttle(function() {
@@ -480,11 +827,11 @@
          if(res.success) {
            this.asyncDuctPiece = false;
            this.searchDuctpiecePLMList(true);
            this.$message.success('添加成功!');
          this.$message.success("添加成功!");
          } else {
            this.$message.warning(res.statusMsg);
          }
        })
      });
      }, 3000),
      // 提交新增管片信息
      submitInsertPipe: throttle(function() {
@@ -492,16 +839,16 @@
          if(valid) {
            const params = Object.assign({}, this.formInsert);
            this.$api.DuctpiecePLM.insertPipeData(params).then((res) => {
              if(res.statusMsg === 'ok') {
            if (res.statusMsg === "ok") {
                this.asyncInsert = false;
                this.searchDuctpiecePLMList(true);
                this.$message.success('新增成功!');
              this.$message.success("新增成功!");
              } else {
                this.$message.warning(res.statusMsg);
              }
            })
          });
          }
        })
      });
      }, 3000),
      // 提交修改环号信息
      submitUpdatePipe: throttle(function() {
@@ -509,38 +856,62 @@
          if(valid) {
            const params = Object.assign({}, this.formInsert);
            this.$api.DuctpiecePLM.updataRingNumData(params).then((res) => {
              if(res.statusMsg === 'ok') {
            if (res.statusMsg === "ok") {
                this.asyncInsert = false;
                this.searchDuctpiecePLMList(true);
                this.$message.success('修改成功!');
              this.$message.success("修改成功!");
              } else {
                this.$message.warning(res.statusMsg);
              }
            })
          });
        }
      });
    }, 3000),
    // 提交修改时间信息
    submitUpdateTime: throttle(function() {
      this.$refs.formTime.validate((valid) => {
        if(valid) {
          const params = Object.assign({}, this.formTime);
          this.$api.DuctpiecePLM.updatePipeTimeData(params).then((res) => {
            if (res.statusMsg === "ok") {
              this.asyncTime = false;
              this.searchDuctpiecePLMList(true);
              this.$message.success("修改成功!");
            } else {
              this.$message.warning(res.statusMsg);
            }
          });
          }
        })
      }, 3000),
      // 
      showCheckResult(value) {
        return !value ? '' : value == 1 ? '合格' : '存在问题';
      return !value ? "" : value == 1 ? "合格" : "存在问题";
      },
      // 根据项目获取尺寸 配筋 块号信息
      changeHeaderProject(data) {
          this.blockNum = '';
          this.reinforcement = '';
          this.groutingHoles = '';
      this.blockNum = "";
      this.reinforcement = "";
      this.groutingHoles = "";
          this.groutingHolesData = [];
          this.blockNumData = [];
          this.reinforcementData = [];
        if(data) {
          this.$api.Basics.getProjectSystemInfoData({
            proId: data
          proId: data,
          }).then((res) => {
            this.groutingHolesData = res.data.proGroutings;
            this.blockNumData = res.data.proBloks;
            this.reinforcementData = res.data.proHas;
          })
        });
        }
    },
    // 转换毫秒
    transitionMsec(time) {
      let msec = 0;
      const date = Date.parse(new Date(time));
      console.log(date,'==-=-=-')
      return msec;
      },
      // 切换页数
      changePageNum(page) {
@@ -562,28 +933,33 @@
      asyncDuctpieceInfo(bol) {
        if(!bol) {
          this.formDuctPiece = {};
          this.pipeId = '';
          this.checkResultStr = '';
        this.pipeId = "";
        this.checkResultStr = "";
          this.fileList = [];
        }
      },
      asyncInsert(bol) {
        if(!bol) {
          this.steelData = [];
          this.mouldData = [];
          this.formInsert = {};
          this.$refs.formInsert.resetFields();
        }
    },
    asyncTime(bol) {
      if(!bol) {
        this.formTime = {};
        this.$refs.formTime.resetFields();
      }
    }
  }
  },
};
</script>
<style lang="scss" scoped>
@import '../../style/layout-main.scss';
@import "../../style/layout-main.scss";
.issue_status {
  color: #F42829;
  color: #f42829;
}
.retrospect_content {
@@ -594,7 +970,7 @@
    padding: 0 15px 15px;
    font-size: 16px;
    font-weight: 600;
    color: #FFF;
    color: #fff;
    border-bottom: 1px solid #0d5274;
    &::before {
@@ -605,7 +981,7 @@
      transform: translateY(-85%);
      width: 3px;
      height: 50%;
      background: #18F6F8;
      background: #18f6f8;
    }
  }
@@ -614,22 +990,22 @@
    margin: 10px 10px 10px 0;
    .table_item {
      border: 1px solid #1CB7E0;
      border: 1px solid #1cb7e0;
      border-right: none;
      &:last-child {
        border-right: 1px solid #1CB7E0;
        border-right: 1px solid #1cb7e0;
      }
      .table_item_chunk {
        padding: 10px;
        color: #18F6F8;
        color: #18f6f8;
        text-align: center;
      }
      .table_th {
        border-bottom: 1px solid #1CB7E0;
        background: #082F57;
        border-bottom: 1px solid #1cb7e0;
        background: #082f57;
      }
    }
  }