叶松
2023-12-01 5efd01db698683e95a63053da43aaa08fa35a185
Merge branch 'master' of http://111.30.93.211:10101/r/supipe
已修改8个文件
已添加22个文件
1528 ■■■■■ 文件已修改
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/MixingPlantNewScheduled.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/controller/WeighController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/TSuMaterialWarehouseRecord.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/dto/AssistGoodDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/dto/MaterialStockRecordDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/dto/MouldDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/dto/SteelDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/mapper/WeighMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/service/WeighService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/service/impl/WeighServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/resources/mapping/WeighMapper.xml 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/api/modules/mixing.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/container_10.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/container_100.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/container_20.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/container_40.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/container_60.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/container_80.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/container_90.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/header.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/list_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/list_l_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/list_r_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/assets/mixing/name_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
web/src/router/index.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/GoodManage/MixRatioScreen.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/GoodManage/MixingScreen.vue 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/MixingInfo/components/List.vue 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/MixingInfo/mixRatio.vue 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/MixingInfo/mixing.vue 314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/concret/controller/MixingPlantNewScheduled.java
@@ -1,6 +1,7 @@
package com.thhy.materials.modules.biz.concret.controller;
import com.thhy.materials.modules.biz.concret.entity.SysSteel;
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;
@@ -238,5 +239,39 @@
    }
    //苏州项目------- 地磅入库  记录,及库存修改 钢筋
    @Scheduled(fixedRate = 2000000) // 每隔3秒执行一次任务
    public void weighbridgeSteel() {
        //查询搅拌 所有类型
        List<SysSteel> steels = weighService.steelType();
        List<TWeighbridge> tWeighbridges = weighMapper.weighbridgeListType();
        for (SysSteel steel : steels){
            for (TWeighbridge weighbridge :tWeighbridges){
                if(steel.getSteelName().equals(weighbridge.getMatname())&&steel.getSteelModel().equals(weighbridge.getMatmodel())){
                    //净重
                    String jweight = weighbridge.getJweight();
                    HashMap<String, Object> hashMap = new HashMap<>();
                    hashMap.put("id","");
                    hashMap.put("steelId",steel.getSteelId());
                    hashMap.put("stockType",1);
                    hashMap.put("changeStock",jweight);
                    hashMap.put("companyId","031e3dd577e8ed28e96aa69b");
                    BigDecimal b1 = new BigDecimal(jweight);
                    BigDecimal b2 = new BigDecimal(steel.getStock());
                    RLock lock = redissonclient.getLock("materlock");
                    if(!lock.isLocked()) {
                        lock.lock(10, TimeUnit.SECONDS);
                        //插入记录表//苏州项目(入库计入增加)
                        weighMapper.steelRecordIn(hashMap);
                        //更改记录值
                        weighMapper.steelUp(steel.getSteelId(),b1.add(b2).doubleValue());
                        lock.unlock();
                    }
                    weighMapper.weighbridgeUpdateType(weighbridge.getWeighbridgeId());
                }
            }
        }
    }
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/controller/WeighController.java
@@ -8,10 +8,7 @@
import com.thhy.materials.modules.biz.weigh.service.WeighService;
import org.omg.CORBA.StringHolder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@@ -40,6 +37,31 @@
        return weighService.weighbridgeList(values);
    }
    //原料库存
    @PostMapping("/headThingJsInventory")
    public BasicResult headThingJsInventory(){
        return weighService.headThingJsInventory();
    }
    //料仓列表
    @PostMapping("/materialWarehouseRecordList")
    public BasicResult materialWarehouseRecordList(@RequestBody Map<String,Object> values){
        return weighService.materialWarehouseRecordList(values);
    }
    //料仓添加进仓
    @PostMapping("/materialWarehouseRecordInsert")
    public BasicResult materialWarehouseRecordInsert(@RequestBody Map<String,Object> values){
        return weighService.materialWarehouseRecordInsert(values);
    }
    //料仓修改进仓
    @PostMapping("/materialWarehouseRecordUpdate")
    public BasicResult materialWarehouseRecordUpdate(@RequestBody Map<String,Object> values){
        return weighService.materialWarehouseRecordUpdate(values);
    }
    //删除
    @GetMapping("/materialWarehouseRecordDel")
    public BasicResult materialWarehouseRecordDel(@RequestParam String id){
        return weighService.materialWarehouseRecordDel(id);
    }
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/TSuMaterialWarehouseRecord.java
对比新文件
@@ -0,0 +1,103 @@
package com.thhy.materials.modules.biz.weigh.entity;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.util.Date;
@Data
@Getter
@Setter
@ToString
public class TSuMaterialWarehouseRecord implements Serializable {
    /**
     *
     */
    private String id;
    /**
     * 桌号
     */
    private Integer tableNum;
    /**
     * 产地名称
     */
    private String nameOfOrigin;
    /**
     * 物料名称
     */
    private String materialName;
    /**
     * 进厂数量
     */
    private Double incomingQuantity;
    /**
     * 进厂日期
     */
    private Date inTime;
    /**
     * 检验状态
     */
    private Integer status;
    /**
     * 检验日期
     */
    private Date inspectionDate;
    /**
     * 报告编号
     */
    private String reportNumber;
    /**
     * 创建日期
     */
    private Date createTime;
    /**
     *
     */
    private String createUser;
    /**
     *
     */
    private Date updateTime;
    /**
     *
     */
    private String updateUser;
    /**
     *
     */
    private Integer isUse;
    /**
     *
     */
    private String companyId;
    /**
     * 入库方式 1手动 2自动
     */
    private Integer type;
    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table t_su_material_warehouse_record
     *
     * @mbg.generated Thu Nov 30 14:55:49 CST 2023
     */
    private static final long serialVersionUID = 1L;
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/dto/AssistGoodDto.java
对比新文件
@@ -0,0 +1,16 @@
package com.thhy.materials.modules.biz.weigh.entity.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class AssistGoodDto implements Serializable {
    //辅材名称
    private String  assistName;
    //辅材类型
    private String assistType;
    //辅材库存
    private String stock;
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/dto/MaterialStockRecordDto.java
对比新文件
@@ -0,0 +1,14 @@
package com.thhy.materials.modules.biz.weigh.entity.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class MaterialStockRecordDto implements Serializable {
    //原料名称
    private String materialName;
    //原料值
    private String materialValue;
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/dto/MouldDto.java
对比新文件
@@ -0,0 +1,15 @@
package com.thhy.materials.modules.biz.weigh.entity.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class MouldDto implements Serializable {
    //模具编号
    private String mouldNum;
    //使用状态
    private String free;
    //次数
    private String currentCycleTime;
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/entity/dto/SteelDto.java
对比新文件
@@ -0,0 +1,16 @@
package com.thhy.materials.modules.biz.weigh.entity.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class SteelDto implements Serializable {
    //钢筋名
    private String steelName;
    //钢筋型号
    private String steelModel;
    //库存
    private String stock;
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/mapper/WeighMapper.java
@@ -1,13 +1,19 @@
package com.thhy.materials.modules.biz.weigh.mapper;
import com.thhy.general.annotations.Idkey;
import com.thhy.materials.modules.biz.concret.entity.SysSteel;
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.video.entity.TVideoNo;
import com.thhy.materials.modules.biz.weigh.dto.QueryWeighDto;
import com.thhy.materials.modules.biz.weigh.entity.TSuMaterialWarehouseRecord;
import com.thhy.materials.modules.biz.weigh.entity.TWeighbridge;
import com.thhy.materials.modules.biz.weigh.entity.WeighVo;
import com.thhy.materials.modules.biz.weigh.entity.dto.AssistGoodDto;
import com.thhy.materials.modules.biz.weigh.entity.dto.MaterialStockRecordDto;
import com.thhy.materials.modules.biz.weigh.entity.dto.MouldDto;
import com.thhy.materials.modules.biz.weigh.entity.dto.SteelDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PostMapping;
@@ -81,4 +87,26 @@
    void materialStockRecordIns(HashMap<String, Object> hashMap);
    void weighbridgeUpdateType(Integer weighbridgeId);
    List<MaterialStockRecordDto> materialStockInventory();
    List<SteelDto> steelInventory();
    List<AssistGoodDto> assistGoodInventory();
    List<MouldDto> mouldInventory();
    List<SysSteel> steelType();
    void steelRecordIn(@Idkey("id") HashMap<String, Object> hashMap);
    void steelUp(@Param("steelId") String steelId,@Param("doubleValue") double doubleValue);
    List<TSuMaterialWarehouseRecord> materialWarehouseRecordList(Map<String, Object> values);
    void materialWarehouseRecordInsert(@Idkey("id") Map<String, Object> values);
    void materialWarehouseRecordUpdate(Map<String, Object> values);
    void materialWarehouseRecordDel(String id);
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/service/WeighService.java
@@ -1,6 +1,7 @@
package com.thhy.materials.modules.biz.weigh.service;
import com.thhy.general.common.BasicResult;
import com.thhy.materials.modules.biz.concret.entity.SysSteel;
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;
@@ -40,4 +41,15 @@
    BasicResult weighbridgeList(Map<String, Object> values);
    BasicResult headThingJsInventory();
    List<SysSteel> steelType();
    BasicResult materialWarehouseRecordList(Map<String, Object> values);
    BasicResult materialWarehouseRecordInsert(Map<String, Object> values);
    BasicResult materialWarehouseRecordUpdate(Map<String, Object> values);
    BasicResult materialWarehouseRecordDel(String id);
}
hd/pipe/materialsManage/src/main/java/com/thhy/materials/modules/biz/weigh/service/impl/WeighServiceImpl.java
@@ -3,18 +3,25 @@
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.thhy.general.common.BasicResult;
import com.thhy.materials.modules.biz.concret.entity.SysSteel;
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.dto.QueryWeighDto;
import com.thhy.materials.modules.biz.weigh.entity.TSuMaterialWarehouseRecord;
import com.thhy.materials.modules.biz.weigh.entity.TWeighbridge;
import com.thhy.materials.modules.biz.weigh.entity.WeighVo;
import com.thhy.materials.modules.biz.weigh.entity.dto.AssistGoodDto;
import com.thhy.materials.modules.biz.weigh.entity.dto.MaterialStockRecordDto;
import com.thhy.materials.modules.biz.weigh.entity.dto.MouldDto;
import com.thhy.materials.modules.biz.weigh.entity.dto.SteelDto;
import com.thhy.materials.modules.biz.weigh.mapper.WeighMapper;
import com.thhy.materials.modules.biz.weigh.service.WeighService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -95,4 +102,58 @@
        PageInfo<TWeighbridge> tWeighbridgePageInfo = new PageInfo<>(weighbridges);
        return BasicResult.success(tWeighbridgePageInfo);
    }
    @Override
    public BasicResult headThingJsInventory() {
        //原料库存
        List<MaterialStockRecordDto> materialStockDtos =weighMapper.materialStockInventory();
        //钢筋
        List<SteelDto> steelDtos = weighMapper.steelInventory();
        //辅材
        List<AssistGoodDto> assistGoodDtos = weighMapper.assistGoodInventory();
        //模具
        List<MouldDto> mouldDtos = weighMapper.mouldInventory();
        HashMap<String, Object> map = new HashMap<>();
        map.put("materialStockDtos",materialStockDtos);
        map.put("steelDtos",steelDtos);
        map.put("assistGoodDtos",assistGoodDtos);
        map.put("mouldDtos",mouldDtos);
        return BasicResult.success(map);
    }
    @Override
    public List<SysSteel> steelType() {
        return weighMapper.steelType();
    }
    @Override
    public BasicResult materialWarehouseRecordList(Map<String, Object> values) {
        Integer pageSize = Integer.valueOf(values.get("pageSize").toString());
        Integer pageNum = Integer.valueOf(values.get("pageNum").toString());
        PageHelper.startPage(pageNum,pageSize);
        List<TSuMaterialWarehouseRecord> records = weighMapper.materialWarehouseRecordList(values);
        PageInfo<TSuMaterialWarehouseRecord> recordPageInfo = new PageInfo<>(records);
        return BasicResult.success(recordPageInfo);
    }
    @Override
    public BasicResult materialWarehouseRecordInsert(Map<String, Object> values) {
        values.put("id","");
        weighMapper.materialWarehouseRecordInsert(values);
        return BasicResult.success();
    }
    @Override
    public BasicResult materialWarehouseRecordUpdate(Map<String, Object> values) {
        weighMapper.materialWarehouseRecordUpdate(values);
        return BasicResult.success();
    }
    @Override
    public BasicResult materialWarehouseRecordDel(String id) {
        weighMapper.materialWarehouseRecordDel(id);
        return BasicResult.success();
    }
}
hd/pipe/materialsManage/src/main/resources/mapping/WeighMapper.xml
@@ -711,4 +711,316 @@
        types=2
        where weighbridge_id=#{weighbridgeId}
    </update>
    <select id="materialStockInventory" resultType="com.thhy.materials.modules.biz.weigh.entity.dto.MaterialStockRecordDto">
    SELECT
    s.dict_name AS materialName,
    t.material_value AS materialValue
FROM
    t_material_stock t
    LEFT JOIN sys_dict s ON t.material_name = s.dict_id
    </select>
    <select id="steelInventory" resultType="com.thhy.materials.modules.biz.weigh.entity.dto.SteelDto">
        select
         steel_name as steelName,
         steel_model as steelModel,
         stock as stock
         from sys_steel
    </select>
    <select id="assistGoodInventory" resultType="com.thhy.materials.modules.biz.weigh.entity.dto.AssistGoodDto">
        select s.assist_name as s.assistName,
        d.dict_name as assistType,
        s.stock as stock
         from  sys_assist_good s left join sys_dict d on  s.assist_type=d.dict_id
    </select>
    <select id="mouldInventory" resultType="com.thhy.materials.modules.biz.weigh.entity.dto.MouldDto">
        select
         mould_num as mouldNum,
         free as free,
         current_cycle_time as currentCycleTime
         from sys_mould
    </select>
    <select id="steelType" resultType="com.thhy.materials.modules.biz.concret.entity.SysSteel">
        select
         steel_id as steelId,
         steel_name as steelName,
         steel_model as steelModel,
         stock as stock
         from
            sys_steel
    </select>
    <insert id="steelRecordIn" >
        insert into sys_steel_record
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="steelId != null">
                steel_id,
            </if>
            <if test="stockType != null">
                stock_type,
            </if>
            <if test="createTime != null">
                create_time,
            </if>
            <if test="changeStock != null">
                change_stock,
            </if>
            <if test="supplierId != null">
                supplier_id,
            </if>
            <if test="factoryName != null">
                factory_name,
            </if>
            <if test="brand != null">
                brand,
            </if>
            <if test="lineCode != null">
                line_code,
            </if>
            <if test="proId != null">
                pro_id,
            </if>
            <if test="createUser != null">
                create_user,
            </if>
            <if test="companyId != null">
                company_id,
            </if>
            <if test="carName != null">
                car_name,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=VARCHAR},
            </if>
            <if test="steelId != null">
                #{steelId,jdbcType=VARCHAR},
            </if>
            <if test="stockType != null">
                #{stockType,jdbcType=INTEGER},
            </if>
            <if test="createTime != null">
                #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="changeStock != null">
                #{changeStock,jdbcType=DOUBLE},
            </if>
            <if test="supplierId != null">
                #{supplierId,jdbcType=VARCHAR},
            </if>
            <if test="factoryName != null">
                #{factoryName,jdbcType=VARCHAR},
            </if>
            <if test="brand != null">
                #{brand,jdbcType=VARCHAR},
            </if>
            <if test="lineCode != null">
                #{lineCode,jdbcType=VARCHAR},
            </if>
            <if test="proId != null">
                #{proId,jdbcType=VARCHAR},
            </if>
            <if test="createUser != null">
                #{createUser,jdbcType=VARCHAR},
            </if>
            <if test="companyId != null">
                #{companyId,jdbcType=VARCHAR},
            </if>
            <if test="carName != null">
                #{carName,jdbcType=VARCHAR},
            </if>
        </trim>
    </insert>
    <update id="steelUp" >
        update sys_steel set
        stock=#{doubleValue}
        where steel_id=#{steelId}
    </update>
    <select id="materialWarehouseRecordList" resultType="com.thhy.materials.modules.biz.weigh.entity.TSuMaterialWarehouseRecord">
        select
        id,
        table_num as tableNum,
        name_of_origin as nameOfOrigin,
        material_name as materialName,
        incoming_quantity as incomingQuantity,
        in_time as inTime,
        status as status,
        inspection_date as inspectionDate,
        report_number as reportNumber,
        create_time as createTime,
        `type`
         from t_su_material_warehouse_record
        where 1=1
        <if test="tableNum!=null and tableNum!='' ">
            and table_num=#{tableNum}
        </if>
        <if test="type!=null and type!='' ">
            and `type`=#{type}
        </if>
        <if test="strTime!=null and strTime!='' and endTime!=null and endTime!='' ">
            and create_time between #{strTime} and #{endTime}
        </if>
        order by create_time desc
    </select>
    <insert id="materialWarehouseRecordInsert" >
        insert into t_su_material_warehouse_record
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="tableNum != null">
                table_num,
            </if>
            <if test="nameOfOrigin != null">
                name_of_origin,
            </if>
            <if test="materialName != null">
                material_name,
            </if>
            <if test="incomingQuantity != null">
                incoming_quantity,
            </if>
            <if test="inTime != null">
                in_time,
            </if>
            <if test="status != null">
                status,
            </if>
            <if test="inspectionDate != null">
                inspection_date,
            </if>
            <if test="reportNumber != null">
                report_number,
            </if>
            <if test="createTime != null">
                create_time,
            </if>
            <if test="createUser != null">
                create_user,
            </if>
            <if test="updateTime != null">
                update_time,
            </if>
            <if test="updateUser != null">
                update_user,
            </if>
            <if test="isUse != null">
                is_use,
            </if>
            <if test="companyId != null">
                company_id,
            </if>
            <if test="type != null">
                type,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=VARCHAR},
            </if>
            <if test="tableNum != null">
                #{tableNum,jdbcType=INTEGER},
            </if>
            <if test="nameOfOrigin != null">
                #{nameOfOrigin,jdbcType=VARCHAR},
            </if>
            <if test="materialName != null">
                #{materialName,jdbcType=VARCHAR},
            </if>
            <if test="incomingQuantity != null">
                #{incomingQuantity,jdbcType=DOUBLE},
            </if>
            <if test="inTime != null">
                #{inTime,jdbcType=TIMESTAMP},
            </if>
            <if test="status != null">
                #{status,jdbcType=INTEGER},
            </if>
            <if test="inspectionDate != null">
                #{inspectionDate,jdbcType=TIMESTAMP},
            </if>
            <if test="reportNumber != null">
                #{reportNumber,jdbcType=VARCHAR},
            </if>
            <if test="createTime != null">
                #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="createUser != null">
                #{createUser,jdbcType=VARCHAR},
            </if>
            <if test="updateTime != null">
                #{updateTime,jdbcType=TIMESTAMP},
            </if>
            <if test="updateUser != null">
                #{updateUser,jdbcType=VARCHAR},
            </if>
            <if test="isUse != null">
                #{isUse,jdbcType=INTEGER},
            </if>
            <if test="companyId != null">
                #{companyId,jdbcType=VARCHAR},
            </if>
            <if test="type != null">
                #{type,jdbcType=INTEGER},
            </if>
        </trim>
    </insert>
    <update id="materialWarehouseRecordUpdate" >
        update t_su_material_warehouse_record
        <set>
            <if test="tableNum != null">
                table_num = #{tableNum,jdbcType=INTEGER},
            </if>
            <if test="nameOfOrigin != null">
                name_of_origin = #{nameOfOrigin,jdbcType=VARCHAR},
            </if>
            <if test="materialName != null">
                material_name = #{materialName,jdbcType=VARCHAR},
            </if>
            <if test="incomingQuantity != null">
                incoming_quantity = #{incomingQuantity,jdbcType=DOUBLE},
            </if>
            <if test="inTime != null">
                in_time = #{inTime,jdbcType=TIMESTAMP},
            </if>
            <if test="status != null">
                status = #{status,jdbcType=INTEGER},
            </if>
            <if test="inspectionDate != null">
                inspection_date = #{inspectionDate,jdbcType=TIMESTAMP},
            </if>
            <if test="reportNumber != null">
                report_number = #{reportNumber,jdbcType=VARCHAR},
            </if>
            <if test="createTime != null">
                create_time = #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="createUser != null">
                create_user = #{createUser,jdbcType=VARCHAR},
            </if>
            <if test="updateTime != null">
                update_time = #{updateTime,jdbcType=TIMESTAMP},
            </if>
            <if test="updateUser != null">
                update_user = #{updateUser,jdbcType=VARCHAR},
            </if>
            <if test="isUse != null">
                is_use = #{isUse,jdbcType=INTEGER},
            </if>
            <if test="companyId != null">
                company_id = #{companyId,jdbcType=VARCHAR},
            </if>
            <if test="type != null">
                type = #{type,jdbcType=INTEGER},
            </if>
        </set>
        where id = #{id,jdbcType=VARCHAR}
    </update>
    <delete id="materialWarehouseRecordDel" parameterType="java.lang.String">
        delete from t_su_material_warehouse_record where id=#{id}
    </delete>
</mapper>
web/src/api/modules/mixing.js
@@ -6,5 +6,8 @@
    // H5搅拌站大屏展示数据信息
    showHmixings: params =>
        axios.get('/materials/suMaterialWarehouse/selectNewOneByTableNum', {params}),
    getMixing: params =>
        axios.get('/materials/materialRelease/siloList', {params}),
    getMixRatio: params =>
        axios.post('/materials/materialRelease/mixingConsumeList', params),
 }
web/src/assets/mixing/container_10.png
web/src/assets/mixing/container_100.png
web/src/assets/mixing/container_20.png
web/src/assets/mixing/container_40.png
web/src/assets/mixing/container_60.png
web/src/assets/mixing/container_80.png
web/src/assets/mixing/container_90.png
web/src/assets/mixing/header.png
web/src/assets/mixing/list_bg.png
web/src/assets/mixing/list_l_bg.png
web/src/assets/mixing/list_r_bg.png
web/src/assets/mixing/name_bg.png
web/src/router/index.js
@@ -15,6 +15,22 @@
    }
  },
  {
    path: '/mixing/*',
    name: 'mixing',
    meta: {
      title: '管片场拌合站'
    },
    component: () => import('../views/MixingInfo/mixing.vue'),
  },
  {
    path: '/mixratio/*',
    name: 'mixratio',
    meta: {
      title: '管片场拌合站表格'
    },
    component: () => import('../views/MixingInfo/mixRatio.vue'),
  },
  {
    path: `/mixingInfo/num=1`,
    name: 'mixingInfo',
    meta: {
web/src/views/GoodManage/MixRatioScreen.vue
对比新文件
@@ -0,0 +1,11 @@
<template>
  <div>222222222222222</div>
</template>
<script>
</script>
<style lang="sass" scoped>
@import '../../style/layout-main.scss';
</style>
web/src/views/GoodManage/MixingScreen.vue
对比新文件
@@ -0,0 +1,202 @@
<!-- 设备管理 ==> 拌合站屏管理-->
<template>
  <div class="main">
    <div class="main_header">
      <div class="header_item">
        <span class="header_label">拌合站屏:</span>
        <el-select size="mini" v-model="queryInfo.screen" placeholder="请选择拌合站屏">
          <el-option v-for="item in queryInfoScreens" :key="item.value" :label="item.label"
            :value="item.value"></el-option>
        </el-select>
      </div>
      <div class="header_item">
        <span class="header_label">录入方式:</span>
        <el-select size="mini" v-model="queryInfo.inmode" placeholder="请选择录入方式">
          <el-option v-for="item in queryInfoInmodes" :key="item.value" :label="item.label"
            :value="item.value"></el-option>
        </el-select>
      </div>
      <div class="header_item">
        <span class="header_label">创建时间:</span>
        <el-date-picker type="daterange" v-model="times" value-format="yyyy-MM-dd" start-placeholder="起始时间"
          end-placeholder="结束时间" @change="changeTime" clear></el-date-picker>
      </div>
      <div class="header_item">
        <el-button icon="el-icon-search" v-permission="'search'" @click="queryReset">查询</el-button>
        <el-button icon="el-icon-plus" v-permission="'insert'" @click="addRow">新增</el-button>
      </div>
    </div>
    <div class="main_content">
      <div class="main_content_item" v-for="(item, index) in ['', '', '', '', '',]" :key="index">
      </div>
    </div>
    <!-- 详情dialog -->
    <el-dialog width="400px" class="prop_dialog" v-if="isRenderDialog" title="详情" :visible.sync="asyncVisible">
      <el-form class="rule_form" label-width="auto">
        <div class="divider"></div>
        <el-form-item label="巡检任务:">{{ info.task }}</el-form-item>
        <el-form-item label="巡检标准:">{{ info.standard }}</el-form-item>
        <el-form-item label="巡检人员:">{{ info.name }}</el-form-item>
        <div class="divider"><span>巡检路线</span></div>
        <div class="regions">
          <div class="region" v-for="     item      in      info.regions     " :key="item.regionId">{{
            item.region }}
          </div>
        </div>
      </el-form>
    </el-dialog>
  </div>
</template>
<script>
export default {
  data() {
    return {
      loading: false,
      isRenderDialog: false,
      asyncVisible: false,
      info: { // 详情信息
        task: '',
        standard: '',
        name: '',
        regions: [],
      },
      userId: '', // 存储点击后的用户id
      taskId: '', // 存储点击后的巡检任务id
      times: [], // 时间范围
      queryInfo: {
        pageNum: 1,
        pageSize: 10,
        inmode: '', // 录入方式
        screen: '', // 拌合站屏
        startTime: '',
        endTime: '',
      },
      regionInfos: { // 巡检路线详情
        isRenderDialog: false,
        asyncVisible: false,
        time: '', // 巡检时间
        region: '', // 巡检区域
        res: '', // 巡检结果
        img: '', // 上传的图片
        location: '', // 位置
      }
    }
  },
  beforeCreate() {
    this.queryInfoInmodes = [
      {value: '0', label: '手动'},
      {value: '1', label: '自动'},
    ]
    this.queryInfoScreens = [
      {value: '0', label: '1-1'},
      {value: '1', label: '1-2'},
    ]
    this.$http = this.$api.Safety.RiskGrad.polling
  },
  created() {
    this.setTableColumn()
    this.getLists()
  },
  methods: {
    // 获取table列表数据
    getLists() {
      let params = this.queryInfo
      this.loading = true
      this.$http.taskcardGetlists(params).then(res => {
        if (res.statusMsg === 'ok') {
          console.log(res)
        }
        this.loading = false
      })
    },
    // 初始化 table 配置
    setTableColumn() {
    },
    addRow() { },
    // 查询按钮列表信息
    queryReset() {
      this.queryInfo.pageNum = 1
      this.queryInfo.pageSize = 10
      this.getLists()
    },
    changeTime(times) {
      times = times || ['', '']
      this.queryInfo.startTime = times[0]
      this.queryInfo.endTime = times[1]
    },
  }
}
</script>
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
.rule_form {
  color: #fff;
  ::v-deep .el-form-item__content {
    display: block;
  }
  .image {
    flex: none;
    width: 91px;
    height: 120px;
    margin-right: 15px;
    border-radius: 5px;
    border: 1px solid #0c5983;
    img {
      width: 100%;
    }
  }
}
.regions {
  text-align: center;
  .region {
    line-height: 34px;
    margin-bottom: 16px;
    background: rgba(56, 175, 247, .25);
    cursor: pointer;
  }
}
.divider {
  position: relative;
  margin-bottom: 30px;
  text-indent: 10px;
  color: #fff;
  border-left: 3px solid #18F6F8;
  &::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -8px;
    width: 100%;
    padding: 20px 0;
    border-bottom: 1px solid #0C4D6F;
  }
}
.main_content .main_content_item {
  float: left;
  width: 48%;
  height: 200px;
  margin: 1%;
  border: 1px solid red;
}
</style>
web/src/views/MixingInfo/components/List.vue
对比新文件
@@ -0,0 +1,91 @@
<template>
  <div class="list">
    <div class="item" v-for="item in fieldMap" :key="item.name">
      <span class="name">{{ item.name }}:</span>
      <template v-if="item.formatter">
        <span class="value" :class="item.class(data)">{{ item.formatter(data) }}</span>
      </template>
      <template v-else>
        <span class="value">{{ data && data[item.type] || '' }}</span>
      </template>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {}
  },
  props: {
    data: {
      type: Object,
      default: () => { }
    }
  },
  beforeCreate() {
    // 字段映射表
    this.fieldMap = [
      {name: '规格型号', type: 'spec'},
      {name: '产地名称', type: 'producer'},
      {name: '炉(批)号', type: 'stove'},
      {name: '进场数量', type: 'inNum'},
      {name: '进场日期', type: 'inDate'},
      {name: '检验日期', type: 'inspectDate'},
      {
        name: '检验状态', class(row) {
          let state = row && row.inspectState
          return {1: 'style1', 2: 'style2', 3: 'style3'}[state] || ''
        }, formatter(row) {
          let state = row && row.inspectState || ''
          return {1: '合格', 2: '不合格', 3: '待检测'}[state] || ''
        }
      },
      {name: '报告编号', type: 'reportNumber'},
    ]
  },
}
</script>
<style scoped>
.list {
  display: flex;
  flex-direction: column;
  height: 100%;
  .item {
    display: flex;
    flex: 1;
    margin-top: 4px;
    .name {
      margin-right: 4px;
      text-indent: 6px;
      white-space: nowrap;
    }
    .value {
      color: #03F1FF;
      &.style1 {
        font-size: 1.5rem;
        line-height: 1.2rem;
        color: #16F849;
      }
      &.style2 {
        font-size: 1.5rem;
        line-height: 1.2rem;
        color: red;
      }
      &.style3 {
        font-size: 1.5rem;
        line-height: 1.2rem;
        color: #FF6600;
      }
    }
  }
}
</style>
web/src/views/MixingInfo/mixRatio.vue
对比新文件
@@ -0,0 +1,247 @@
<template>
    <div class="wrap">
        <div class="header">
            <div class="header_name">中铁十四局通甬站前I标管片场拌合站</div>
        </div>
        <div class="table">
            <div class="row title">{{ info.signboardName }}</div>
            <div class="row">
                <div class="name">工程名称</div>
                <div class="value">{{ info.proName }}</div>
            </div>
            <div class="row">
                <div class="name">施工单位</div>
                <div class="value">{{ info.constructionUnit }}</div>
            </div>
            <div class="row line">
                <div>
                    <div class="name">施工日期</div>
                    <div class="value">{{ info.saveStamp }}</div>
                </div>
                <div>
                    <div class="name">施工部位</div>
                    <div class="value">{{ info.construction }}</div>
                </div>
            </div>
            <div class="row" v-for="item in dataLists" :key="item.name">
                <div class="name">{{ item.name }}</div>
                <div class="column">
                    <div class="column-item" v-for="(sub, index) in item.value" :key="index">{{ sub }}</div>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
const interval = function (fn, Vue) {
    let timer = setInterval(
        (() => {
            fn()
            return fn
        })(),
        1000 * 60 * 1
    )
    if (Vue) {
        Vue.$once('hook:beforeDestroy', function () {
            timer && clearInterval(timer)
        })
    }
}
export default {
    name: 'Page2',
    data() {
        return {
            info: {
                signboardName: '', // 标识排
                proName: '', // 工程名称
                constructionUnit: '', // 施工单位
                saveStamp: '',  // 施工日期
                construction: '',  // 施工部位
            },
            dataLists: [
                {name: '材料名称', type: 'dictName', value: []}, // 材料名称
                {name: '规格型号', type: 'spec', value: []}, // 规格型号
                {name: '生产厂家', type: 'manufacturer', value: []}, // 生产厂家
                {name: '材料含水率(%)', type: 'watFull', value: []}, // 含水率
                {name: '理论用量(kg/m³)', type: 'planAmnt', value: []}, // 理论用量
                {name: '实际用量(kg/m³)', type: 'factAmnt', value: []}, // 实际用量
            ]
        }
    },
    beforeCreate() {
        this.$http = this.$api.Infos
    },
    beforeRouteEnter(to, form, next) {
        const {path} = to
        const type = path.slice(-1)
        next(vm => {
            vm.type = type
            interval(vm.getLists, vm)
        })
    },
    mounted() {
        let width = document.getElementsByClassName('wrap')[0].clientWidth
        let $html = document.getElementsByTagName('html')[0]
        let fontsize = width / 1920 * 35.2
        $html.style.fontSize = `${fontsize}px`
        window.onresize = () => {
            let width = document.getElementById('app').clientWidth
            let fontsize = width / 1920 * 35.2
            $html.style.fontSize = `${fontsize}px`
        }
    },
    beforeDestroy() {
        let $html = document.getElementsByTagName('html')[0]
        $html.style.fontSize = ''
    },
    methods: {
        async getLists() {
            const params = {
                pageNum: --this.type, // 传 0 1对应两个页面
                pageSize: 1,
            }
            this.$api.Infos.getMixRatio(params).then(res => {
                if (res.statusMsg === 'ok' && res.data) {
                    const {list} = res.data
                    if (list && list.length) {
                        const item = list[0]
                        const {tmixingConsumes} = item
                        this.info.signboardName = item.signboardName
                        this.info.proName = item.proName
                        this.info.constructionUnit = item.constructionUnit
                        if (tmixingConsumes && tmixingConsumes.length) {
                            this.info.saveStamp = tmixingConsumes[0].saveStamp
                            this.info.construction = tmixingConsumes[0].construction
                            tmixingConsumes.forEach(item => {
                                this.dataLists.forEach(val => {
                                    item[val.type] && val.value.push(item[val.type])
                                })
                            })
                        }
                    }
                } else {
                    this.$message.warning('请检查网络或联系管理员!!!')
                }
            })
        },
    }
}
</script>
<style scoped>
.wrap {
    position: absolute;
    width: 100%;
    height: 100%;
    font-size: 1rem;
    background: #040A3F;
    overflow: hidden;
}
.header {
    position: absolute;
    top: 0;
    width: 100%;
    height: 3rem;
    text-align: center;
    color: #fff;
    background: url('../../assets/mixing/header.png') no-repeat center center;
    background-size: 100% auto;
    .header_name {
        font-size: 1.6rem;
        font-weight: bold;
        line-height: 3.2rem;
        letter-spacing: 2px;
        text-shadow: 0px 3px 3px rgba(25, 63, 95, 0.05);
        background: -webkit-linear-gradient(90deg, #2AC0FF 0%, #FFFFFF 70%);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
    }
}
.table {
    display: flex;
    flex-direction: column;
    position: absolute;
    top: 4rem;
    bottom: 2rem;
    left: 2rem;
    right: 2rem;
    font-size: 0.8rem;
    color: #fff;
    .title {
        display: flex;
        justify-content: center;
        align-items: center;
        color: #BEE2F0;
        background: rgba(1, 142, 196, .35);
    }
    .row {
        flex: 1;
        width: 100%;
        height: 2rem;
        margin: 0 -1px -1px 0;
        text-align: center;
        line-height: 2rem;
        border: 1px solid #01B3EF;
        .name {
            display: flex;
            justify-content: center;
            align-items: center;
            float: left;
            width: 8rem;
            height: 100%;
            margin: -1px -1px -1px 0;
            color: #BEE2F0;
            border: 1px solid #01B3EF;
            background: rgba(1, 142, 196, .75);
            box-sizing: unset;
        }
        .value {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100%;
            overflow: hidden;
        }
        .column {
            display: flex;
            height: 100%;
            .column-item {
                display: flex;
                justify-content: center;
                align-items: center;
                flex: 1;
                margin: -1px -1px -1px 0;
                border: 1px solid #01B3EF;
            }
        }
    }
    .row.line {
        display: flex;
        >div {
            flex: 1;
        }
    }
}
</style>
web/src/views/MixingInfo/mixing.vue
对比新文件
@@ -0,0 +1,314 @@
<template>
    <div class="wrap">
        <div class="header">
            <div class="header_name">中铁十四局通甬站前I标管片场拌合站</div>
        </div>
        <div class="container">
            <div class="con_name">
                <div class="line left"></div>
                <div class="name">
                    <p class="p">{{ infoL.siloName }}</p>
                    <p class="p">{{ infoR.siloName }}</p>
                </div>
                <div class="line right"></div>
            </div>
            <div class="con_main">
                <div class="con_main_item con_main_l">
                    <div class="placeholder"></div>
                    <div class="list_wrap">
                        <list :data="infoL.mixing"></list>
                    </div>
                </div>
                <div class="con_main_item con_main_c">
                    <div :class="`image ${infoL.percentImgName || ''}`">
                        <p>{{ infoL.siloName }}</p>
                    </div>
                    <div :class="`image ${infoR.percentImgName || ''}`">
                        <p>{{ infoR.siloName }}</p>
                    </div>
                </div>
                <div class="con_main_item con_main_r">
                    <div class="placeholder"></div>
                    <div class="list_wrap">
                        <list :data="infoR.mixing"></list>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
import List from './components/List'
const interval = function (fn, Vue) {
    let timer = setInterval(
        (() => {
            fn()
            return fn
        })(),
        1000 * 60 * 1
    )
    if (Vue) {
        Vue.$once('hook:beforeDestroy', function () {
            timer && clearInterval(timer)
        })
    }
}
export default {
    name: 'mixing',
    data() {
        return {
            type: '',
            infoL: {},
            infoR: {},
            percents: {
                0: 'container_10',
                10: 'container_10',
                20: 'container_20',
                40: 'container_40',
                60: 'container_60',
                80: 'container_80',
                90: 'container_90',
                100: 'container_100',
            }
        };
    },
    components: {
        List
    },
    beforeCreate() {
        this.$http = this.$api.Infos
    },
    beforeRouteEnter(to, form, next) {
        const {path} = to
        const type = path.slice(-1)
        next(vm => {
            vm.type = type
            interval(vm.getLists, vm)
        })
    },
    mounted() {
        let width = document.getElementsByClassName('wrap')[0].clientWidth
        let $html = document.getElementsByTagName('html')[0]
        let fontsize = width / 1920 * 35.2
        $html.style.fontSize = `${fontsize}px`
        window.onresize = () => {
            let width = document.getElementById('app').clientWidth
            let fontsize = width / 1920 * 35.2
            $html.style.fontSize = `${fontsize}px`
        }
    },
    beforeDestroy() {
        let $html = document.getElementsByTagName('html')[0]
        $html.style.fontSize = ''
    },
    methods: {
        getLists() {
            const percentArr = Object.keys(this.percents)
            this.$api.Infos.getMixing({types: this.type}).then(res => {
                if (res.statusMsg === 'ok' && res.data && res.data.length) {
                    res.data.forEach((item, index) => {
                        if (item && item.mixing && item.mixing.percentage) {
                            let targetVal = +item.mixing.percentage
                            for (let index = 0; index < percentArr.length - 1; index++) {
                                const val = percentArr[index]
                                const valNext = percentArr[index + 1]
                                if (val <= targetVal && targetVal <= valNext) {
                                    item.percentImgName = this.percents[val]
                                    break
                                }
                            }
                        } else {
                            item.percentImgName = this.percents[0]
                        }
                        index === 0 && (this.infoL = item)
                        index === 1 && (this.infoR = item)
                    })
                } else {
                    this.$message.warning('请检查网络或联系管理员!!!')
                }
            })
        },
    }
}
</script>
<style scoped>
li {
    list-style: none;
}
.wrap {
    position: absolute;
    width: 100%;
    height: 100%;
    font-size: 1rem;
    background: #040A3F;
    overflow: hidden;
}
.header {
    position: absolute;
    width: 100%;
    height: 3rem;
    text-align: center;
    font-family: 'Microsoft YaHei';
    color: #fff;
    background: url('../../assets/mixing/header.png') no-repeat center center;
    background-size: 100% auto;
    .header_name {
        font-size: 1.6rem;
        font-weight: bold;
        line-height: 3.2rem;
        letter-spacing: 2px;
        text-shadow: 0px 3px 3px rgba(25, 63, 95, 0.05);
        background: -webkit-linear-gradient(90deg, #2AC0FF 0%, #FFFFFF 70%);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
    }
}
.container {
    flex: 1;
    display: flex;
    flex-direction: column;
    position: absolute;
    left: 20px;
    right: 20px;
    top: 3.6rem;
    bottom: 20px;
    color: #fff;
    .con_name {
        display: flex;
        align-items: center;
        height: 2.2rem;
        .name {
            width: 20rem;
            display: flex;
            justify-content: space-evenly;
            .p {
                height: 2rem;
                padding: 0 2rem;
                line-height: 2rem;
                font-size: 1.2rem;
                font-weight: bold;
                white-space: nowrap;
                background: url(../../assets/mixing/name_bg.png) no-repeat;
                background-size: 100% 100%;
            }
        }
        .line {
            flex: 1;
            height: 14px;
            &.left {
                background: -webkit-linear-gradient(right, rgba(18, 99, 162, 1) 0, rgba(18, 99, 162, 0) 100%);
            }
            &.right {
                background: -webkit-linear-gradient(left, rgba(18, 99, 162, 1) 0, rgba(18, 99, 162, 0) 100%);
            }
        }
    }
    .con_main {
        margin-top: 10px;
        flex: 1;
        display: flex;
        .con_main_item {
            padding: 15px 15px 0 15px;
            position: relative;
            flex: 1;
            &.con_main_l,
            &.con_main_r {
                background: url(../../assets/mixing/list_bg.png) no-repeat;
                background-size: 100% 100%;
            }
            &.con_main_l .placeholder {
                width: 100%;
                height: 8%;
                background: url(../../assets/mixing/list_l_bg.png) no-repeat;
                background-size: 100% 100%;
            }
            &.con_main_r .placeholder {
                width: 100%;
                height: 8%;
                background: url(../../assets/mixing/list_r_bg.png) no-repeat;
                background-size: 100% 100%;
            }
            &.con_main_c .image {
                position: relative;
                float: left;
                width: 50%;
                height: 100%;
                min-height: 480px;
                text-align: center;
                >p {
                    position: absolute;
                    left: 50%;
                    top: 21%;
                    white-space: nowrap;
                    transform: translate(-50%, -50%);
                }
                &.container_10 {
                    background: url(../../assets/mixing/container_10.png) center 30% no-repeat;
                    background-size: auto 70%;
                }
                &.container_20 {
                    background: url(../../assets/mixing/container_20.png) center 30% no-repeat;
                    background-size: auto 70%;
                }
                &.container_40 {
                    background: url(../../assets/mixing/container_40.png) center 30% no-repeat;
                    background-size: auto 70%;
                }
                &.container_60 {
                    background: url(../../assets/mixing/container_60.png) center 30% no-repeat;
                    background-size: auto 70%;
                }
                &.container_80 {
                    background: url(../../assets/mixing/container_80.png) center 30% no-repeat;
                    background-size: auto 70%;
                }
                &.container_90 {
                    background: url(../../assets/mixing/container_90.png) center 30% no-repeat;
                    background-size: auto 70%;
                }
                &.container_100 {
                    background: url(../../assets/mixing/container_100.png) center 30% no-repeat;
                    background-size: auto 70%;
                }
            }
            .list_wrap {
                position: absolute;
                top: 12%;
                bottom: 0;
            }
        }
    }
}
</style>