hdy
2024-11-22 04f79eab65aec630b36ded8b329c4f2dd2eecd4e
opcUA界面优化
已添加8个文件
已修改1个文件
1098 ■■■■■ 文件已修改
billion-main/src/main/java/com/billion/main/sc/controller/ScCollectionParamConfController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sc/domain/ScCollectionParamConf.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sc/mapper/ScCollectionParamConfMapper.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sc/service/IScCollectionParamConfService.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sc/service/impl/ScCollectionParamConfServiceImpl.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/resources/mapper/sc/ScCollectionParamConfMapper.xml 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/api/main/sc/collectionParamConf.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/views/main/sc/collectionParamConf/index.vue 427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/views/main/sc/opcConf/index.vue 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/sc/controller/ScCollectionParamConfController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package com.billion.main.sc.controller;
import com.billion.common.annotation.Log;
import com.billion.common.core.controller.BaseController;
import com.billion.common.core.domain.AjaxResult;
import com.billion.common.core.page.TableDataInfo;
import com.billion.common.enums.BusinessType;
import com.billion.common.utils.poi.ExcelUtil;
import com.billion.main.sc.domain.ScCollectionParamConf;
import com.billion.main.sc.service.IScCollectionParamConfService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * å‚数采集配置Controller
 *
 * @author HDY
 * @date 2024-11-21
 */
@RestController
@RequestMapping("/sc/collectionParamConf")
public class ScCollectionParamConfController extends BaseController
{
    @Autowired
    private IScCollectionParamConfService scCollectionParamConfService;
    /**
     * æŸ¥è¯¢å‚数采集配置列表
     */
    @PreAuthorize("@ss.hasPermi('sc:collectionParamConf:list')")
    @GetMapping("/list")
    public TableDataInfo list(ScCollectionParamConf scCollectionParamConf)
    {
        startPage();
        List<ScCollectionParamConf> list = scCollectionParamConfService.selectScCollectionParamConfList(scCollectionParamConf);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºå‚数采集配置列表
     */
    @PreAuthorize("@ss.hasPermi('sc:collectionParamConf:export')")
    @Log(title = "参数采集配置", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ScCollectionParamConf scCollectionParamConf)
    {
        List<ScCollectionParamConf> list = scCollectionParamConfService.selectScCollectionParamConfList(scCollectionParamConf);
        ExcelUtil<ScCollectionParamConf> util = new ExcelUtil<ScCollectionParamConf>(ScCollectionParamConf.class);
        util.exportExcel(response, list, "参数采集配置数据");
    }
    /**
     * èŽ·å–参数采集配置详细信息
     */
    @PreAuthorize("@ss.hasPermi('sc:collectionParamConf:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(scCollectionParamConfService.selectScCollectionParamConfById(id));
    }
    /**
     * æ–°å¢žå‚数采集配置
     */
    @PreAuthorize("@ss.hasPermi('sc:collectionParamConf:add')")
    @Log(title = "参数采集配置", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ScCollectionParamConf scCollectionParamConf)
    {
        return toAjax(scCollectionParamConfService.insertScCollectionParamConf(scCollectionParamConf));
    }
    /**
     * ä¿®æ”¹å‚数采集配置
     */
    @PreAuthorize("@ss.hasPermi('sc:collectionParamConf:edit')")
    @Log(title = "参数采集配置", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ScCollectionParamConf scCollectionParamConf)
    {
        return toAjax(scCollectionParamConfService.updateScCollectionParamConf(scCollectionParamConf));
    }
    /**
     * åˆ é™¤å‚数采集配置
     */
    @PreAuthorize("@ss.hasPermi('sc:collectionParamConf:remove')")
    @Log(title = "参数采集配置", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(scCollectionParamConfService.deleteScCollectionParamConfByIds(ids));
    }
}
billion-main/src/main/java/com/billion/main/sc/domain/ScCollectionParamConf.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.billion.main.sc.domain;
import com.billion.common.annotation.Excel;
import com.billion.main.common.BaseEntity;
import lombok.Data;
/**
 * å‚数采集配置对象 sc_collection_param_conf
 *
 * @author HDY
 * @date 2024-11-21
 */
@Data
public class ScCollectionParamConf extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ä¸»é”®id */
    private Long id;
    /** äº§å“ç¼–码 */
    @Excel(name = "产品编码")
    private String productCode;
    /** äº§å“åž‹å· */
    @Excel(name = "产品型号")
    private String productType;
    /** å·¥ä½ç¼–码 */
    @Excel(name = "工位编码")
    private String locationCode;
    /** å‚数编码 */
    @Excel(name = "参数编码")
    private String paramCode;
    /** å‚数名称 */
    @Excel(name = "参数名称")
    private String paramName;
    /** å‚数集编码 */
    @Excel(name = "参数集编码")
    private String paramSetCode;
    /** å‚数集名称 */
    @Excel(name = "参数集名称")
    private String paramSetName;
    /** é‡‡é›†åœ°å€ */
    @Excel(name = "采集地址")
    private String node;
    /** é‡‡é›†ç±»åž‹ï¼ˆ1物料追溯,2拧紧追溯,其他) */
    @Excel(name = "采集类型", readConverterExp = "1=物料追溯,2拧紧追溯,其他")
    private String type;
    /** å•ä½ */
    @Excel(name = "单位")
    private String unit;
    /** ä¸Šé™å€¼ */
    @Excel(name = "上限值")
    private String paramUpper;
    /** ä¸‹é™å€¼ */
    @Excel(name = "下限值")
    private String paramLower;
    /** ä¸­å¿ƒå€¼ */
    @Excel(name = "中心值")
    private String paramCentral;
    /** æ˜¾ç¤ºé¡ºåº */
    @Excel(name = "显示顺序")
    private Integer orderNum;
    /** æ˜¯å¦è®¢é˜… */
    @Excel(name = "是否订阅")
    private String subscribe;
    /** åˆ é™¤æ ‡å¿—(0代表存在 1代表删除) */
    private String delFlag;
}
billion-main/src/main/java/com/billion/main/sc/mapper/ScCollectionParamConfMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.billion.main.sc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.billion.main.sc.domain.ScCollectionParamConf;
import java.util.List;
/**
 * å‚数采集配置Mapper接口
 *
 * @author HDY
 * @date 2024-11-21
 */
public interface ScCollectionParamConfMapper extends BaseMapper<ScCollectionParamConf>
{
    /**
     * æŸ¥è¯¢å‚数采集配置
     *
     * @param id å‚数采集配置主键
     * @return å‚数采集配置
     */
    public ScCollectionParamConf selectScCollectionParamConfById(Long id);
    /**
     * æŸ¥è¯¢å‚数采集配置列表
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return å‚数采集配置集合
     */
    public List<ScCollectionParamConf> selectScCollectionParamConfList(ScCollectionParamConf scCollectionParamConf);
    /**
     * æ–°å¢žå‚数采集配置
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return ç»“æžœ
     */
    public int insertScCollectionParamConf(ScCollectionParamConf scCollectionParamConf);
    /**
     * ä¿®æ”¹å‚数采集配置
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return ç»“æžœ
     */
    public int updateScCollectionParamConf(ScCollectionParamConf scCollectionParamConf);
    /**
     * åˆ é™¤å‚数采集配置
     *
     * @param id å‚数采集配置主键
     * @return ç»“æžœ
     */
    public int deleteScCollectionParamConfById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤å‚数采集配置
     *
     * @param ids éœ€è¦åˆ é™¤çš„数据主键集合
     * @return ç»“æžœ
     */
    public int deleteScCollectionParamConfByIds(Long[] ids);
}
billion-main/src/main/java/com/billion/main/sc/service/IScCollectionParamConfService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.billion.main.sc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.billion.main.sc.domain.ScCollectionParamConf;
import java.util.List;
/**
 * å‚数采集配置Service接口
 *
 * @author HDY
 * @date 2024-11-21
 */
public interface IScCollectionParamConfService extends IService<ScCollectionParamConf>
{
    /**
     * æŸ¥è¯¢å‚数采集配置
     *
     * @param id å‚数采集配置主键
     * @return å‚数采集配置
     */
    public ScCollectionParamConf selectScCollectionParamConfById(Long id);
    /**
     * æŸ¥è¯¢å‚数采集配置列表
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return å‚数采集配置集合
     */
    public List<ScCollectionParamConf> selectScCollectionParamConfList(ScCollectionParamConf scCollectionParamConf);
    /**
     * æ–°å¢žå‚数采集配置
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return ç»“æžœ
     */
    public int insertScCollectionParamConf(ScCollectionParamConf scCollectionParamConf);
    /**
     * ä¿®æ”¹å‚数采集配置
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return ç»“æžœ
     */
    public int updateScCollectionParamConf(ScCollectionParamConf scCollectionParamConf);
    /**
     * æ‰¹é‡åˆ é™¤å‚数采集配置
     *
     * @param ids éœ€è¦åˆ é™¤çš„参数采集配置主键集合
     * @return ç»“æžœ
     */
    public int deleteScCollectionParamConfByIds(Long[] ids);
    /**
     * åˆ é™¤å‚数采集配置信息
     *
     * @param id å‚数采集配置主键
     * @return ç»“æžœ
     */
    public int deleteScCollectionParamConfById(Long id);
}
billion-main/src/main/java/com/billion/main/sc/service/impl/ScCollectionParamConfServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package com.billion.main.sc.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.billion.common.utils.DateUtils;
import com.billion.main.sc.domain.ScCollectionParamConf;
import com.billion.main.sc.mapper.ScCollectionParamConfMapper;
import com.billion.main.sc.service.IScCollectionParamConfService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * å‚数采集配置Service业务层处理
 *
 * @author HDY
 * @date 2024-11-21
 */
@Service
public class ScCollectionParamConfServiceImpl extends ServiceImpl<ScCollectionParamConfMapper, ScCollectionParamConf> implements IScCollectionParamConfService
{
    @Autowired
    private ScCollectionParamConfMapper scCollectionParamConfMapper;
    /**
     * æŸ¥è¯¢å‚数采集配置
     *
     * @param id å‚数采集配置主键
     * @return å‚数采集配置
     */
    @Override
    public ScCollectionParamConf selectScCollectionParamConfById(Long id)
    {
        return scCollectionParamConfMapper.selectScCollectionParamConfById(id);
    }
    /**
     * æŸ¥è¯¢å‚数采集配置列表
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return å‚数采集配置
     */
    @Override
    public List<ScCollectionParamConf> selectScCollectionParamConfList(ScCollectionParamConf scCollectionParamConf)
    {
        return scCollectionParamConfMapper.selectScCollectionParamConfList(scCollectionParamConf);
    }
    /**
     * æ–°å¢žå‚数采集配置
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return ç»“æžœ
     */
    @Override
    public int insertScCollectionParamConf(ScCollectionParamConf scCollectionParamConf)
    {
        scCollectionParamConf.setCreateTime(DateUtils.getNowDate());
        return scCollectionParamConfMapper.insertScCollectionParamConf(scCollectionParamConf);
    }
    /**
     * ä¿®æ”¹å‚数采集配置
     *
     * @param scCollectionParamConf å‚数采集配置
     * @return ç»“æžœ
     */
    @Override
    public int updateScCollectionParamConf(ScCollectionParamConf scCollectionParamConf)
    {
        scCollectionParamConf.setUpdateTime(DateUtils.getNowDate());
        return scCollectionParamConfMapper.updateScCollectionParamConf(scCollectionParamConf);
    }
    /**
     * æ‰¹é‡åˆ é™¤å‚数采集配置
     *
     * @param ids éœ€è¦åˆ é™¤çš„参数采集配置主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteScCollectionParamConfByIds(Long[] ids)
    {
        return scCollectionParamConfMapper.deleteScCollectionParamConfByIds(ids);
    }
    /**
     * åˆ é™¤å‚数采集配置信息
     *
     * @param id å‚数采集配置主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteScCollectionParamConfById(Long id)
    {
        return scCollectionParamConfMapper.deleteScCollectionParamConfById(id);
    }
}
billion-main/src/main/resources/mapper/sc/ScCollectionParamConfMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,146 @@
<?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.billion.main.sc.mapper.ScCollectionParamConfMapper">
    <resultMap type="ScCollectionParamConf" id="ScCollectionParamConfResult">
        <result property="id"    column="id"    />
        <result property="productCode"    column="product_code"    />
        <result property="productType"    column="product_type"    />
        <result property="locationCode"    column="location_code"    />
        <result property="paramCode"    column="param_code"    />
        <result property="paramName"    column="param_name"    />
        <result property="paramSetCode"    column="param_set_code"    />
        <result property="paramSetName"    column="param_set_name"    />
        <result property="node"    column="node"    />
        <result property="type"    column="type"    />
        <result property="unit"    column="unit"    />
        <result property="paramUpper"    column="param_upper"    />
        <result property="paramLower"    column="param_lower"    />
        <result property="paramCentral"    column="param_central"    />
        <result property="orderNum"    column="order_num"    />
        <result property="subscribe"    column="subscribe"    />
        <result property="delFlag"    column="del_flag"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
    </resultMap>
    <sql id="selectScCollectionParamConfVo">
        select id, product_code, product_type, location_code, param_code, param_name, param_set_code, param_set_name, node, type, unit, param_upper, param_lower, param_central, order_num, subscribe, del_flag, create_by, create_time, update_by, update_time from sc_collection_param_conf
    </sql>
    <select id="selectScCollectionParamConfList" parameterType="ScCollectionParamConf" resultMap="ScCollectionParamConfResult">
        <include refid="selectScCollectionParamConfVo"/>
        <where>
            <if test="productCode != null  and productCode != ''"> and product_code = #{productCode}</if>
            <if test="productType != null  and productType != ''"> and product_type = #{productType}</if>
            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
            <if test="paramCode != null  and paramCode != ''"> and param_code = #{paramCode}</if>
            <if test="paramName != null  and paramName != ''"> and param_name like concat('%', #{paramName}, '%')</if>
            <if test="paramSetCode != null  and paramSetCode != ''"> and param_set_code = #{paramSetCode}</if>
            <if test="paramSetName != null  and paramSetName != ''"> and param_set_name like concat('%', #{paramSetName}, '%')</if>
            <if test="node != null  and node != ''"> and node = #{node}</if>
            <if test="type != null  and type != ''"> and type = #{type}</if>
            <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
            <if test="paramUpper != null  and paramUpper != ''"> and param_upper = #{paramUpper}</if>
            <if test="paramLower != null  and paramLower != ''"> and param_lower = #{paramLower}</if>
            <if test="paramCentral != null  and paramCentral != ''"> and param_central = #{paramCentral}</if>
            <if test="orderNum != null "> and order_num = #{orderNum}</if>
            <if test="subscribe != null  and subscribe != ''"> and subscribe = #{subscribe}</if>
        </where>
    </select>
    <select id="selectScCollectionParamConfById" parameterType="Long" resultMap="ScCollectionParamConfResult">
        <include refid="selectScCollectionParamConfVo"/>
        where id = #{id}
    </select>
    <insert id="insertScCollectionParamConf" parameterType="ScCollectionParamConf" useGeneratedKeys="true" keyProperty="id">
        insert into sc_collection_param_conf
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="productCode != null">product_code,</if>
            <if test="productType != null">product_type,</if>
            <if test="locationCode != null">location_code,</if>
            <if test="paramCode != null">param_code,</if>
            <if test="paramName != null">param_name,</if>
            <if test="paramSetCode != null">param_set_code,</if>
            <if test="paramSetName != null">param_set_name,</if>
            <if test="node != null">node,</if>
            <if test="type != null">type,</if>
            <if test="unit != null">unit,</if>
            <if test="paramUpper != null">param_upper,</if>
            <if test="paramLower != null">param_lower,</if>
            <if test="paramCentral != null">param_central,</if>
            <if test="orderNum != null">order_num,</if>
            <if test="subscribe != null">subscribe,</if>
            <if test="delFlag != null">del_flag,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="productCode != null">#{productCode},</if>
            <if test="productType != null">#{productType},</if>
            <if test="locationCode != null">#{locationCode},</if>
            <if test="paramCode != null">#{paramCode},</if>
            <if test="paramName != null">#{paramName},</if>
            <if test="paramSetCode != null">#{paramSetCode},</if>
            <if test="paramSetName != null">#{paramSetName},</if>
            <if test="node != null">#{node},</if>
            <if test="type != null">#{type},</if>
            <if test="unit != null">#{unit},</if>
            <if test="paramUpper != null">#{paramUpper},</if>
            <if test="paramLower != null">#{paramLower},</if>
            <if test="paramCentral != null">#{paramCentral},</if>
            <if test="orderNum != null">#{orderNum},</if>
            <if test="subscribe != null">#{subscribe},</if>
            <if test="delFlag != null">#{delFlag},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
         </trim>
    </insert>
    <update id="updateScCollectionParamConf" parameterType="ScCollectionParamConf">
        update sc_collection_param_conf
        <trim prefix="SET" suffixOverrides=",">
            <if test="productCode != null">product_code = #{productCode},</if>
            <if test="productType != null">product_type = #{productType},</if>
            <if test="locationCode != null">location_code = #{locationCode},</if>
            <if test="paramCode != null">param_code = #{paramCode},</if>
            <if test="paramName != null">param_name = #{paramName},</if>
            <if test="paramSetCode != null">param_set_code = #{paramSetCode},</if>
            <if test="paramSetName != null">param_set_name = #{paramSetName},</if>
            <if test="node != null">node = #{node},</if>
            <if test="type != null">type = #{type},</if>
            <if test="unit != null">unit = #{unit},</if>
            <if test="paramUpper != null">param_upper = #{paramUpper},</if>
            <if test="paramLower != null">param_lower = #{paramLower},</if>
            <if test="paramCentral != null">param_central = #{paramCentral},</if>
            <if test="orderNum != null">order_num = #{orderNum},</if>
            <if test="subscribe != null">subscribe = #{subscribe},</if>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteScCollectionParamConfById" parameterType="Long">
        delete from sc_collection_param_conf where id = #{id}
    </delete>
    <delete id="deleteScCollectionParamConfByIds" parameterType="String">
        delete from sc_collection_param_conf where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
billion-ui/src/api/main/sc/collectionParamConf.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢å‚数采集配置列表
export function listCollectionParamConf(query) {
  return request({
    url: '/sc/collectionParamConf/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢å‚数采集配置详细
export function getCollectionParamConf(id) {
  return request({
    url: '/sc/collectionParamConf/' + id,
    method: 'get'
  })
}
// æ–°å¢žå‚数采集配置
export function addCollectionParamConf(data) {
  return request({
    url: '/sc/collectionParamConf',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹å‚数采集配置
export function updateCollectionParamConf(data) {
  return request({
    url: '/sc/collectionParamConf',
    method: 'put',
    data: data
  })
}
// åˆ é™¤å‚数采集配置
export function delCollectionParamConf(id) {
  return request({
    url: '/sc/collectionParamConf/' + id,
    method: 'delete'
  })
}
billion-ui/src/views/main/sc/collectionParamConf/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,427 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="产品编码" prop="productCode">
        <el-input
          v-model="queryParams.productCode"
          placeholder="请输入产品编码"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="工位编码" prop="locationCode">
        <el-input
          v-model="queryParams.locationCode"
          placeholder="请输入工位编码"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数编码" prop="paramCode">
        <el-input
          v-model="queryParams.paramCode"
          placeholder="请输入参数编码"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数名称" prop="paramName">
        <el-input
          v-model="queryParams.paramName"
          placeholder="请输入参数名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数集编码" prop="paramSetCode">
        <el-input
          v-model="queryParams.paramSetCode"
          placeholder="请输入参数集编码"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数集名称" prop="paramSetName">
        <el-input
          v-model="queryParams.paramSetName"
          placeholder="请输入参数集名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="采集地址" prop="node">
        <el-input
          v-model="queryParams.node"
          placeholder="请输入采集地址"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="单位" prop="unit">
        <el-input
          v-model="queryParams.unit"
          placeholder="请输入单位"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="上限值" prop="paramUpper">
        <el-input
          v-model="queryParams.paramUpper"
          placeholder="请输入上限值"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="下限值" prop="paramLower">
        <el-input
          v-model="queryParams.paramLower"
          placeholder="请输入下限值"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="中心值" prop="paramCentral">
        <el-input
          v-model="queryParams.paramCentral"
          placeholder="请输入中心值"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="显示顺序" prop="orderNum">
        <el-input
          v-model="queryParams.orderNum"
          placeholder="请输入显示顺序"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="是否订阅" prop="subscribe">
        <el-input
          v-model="queryParams.subscribe"
          placeholder="请输入是否订阅"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['sc:collectionParamConf:add']"
        >新增</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['sc:collectionParamConf:edit']"
        >修改</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="el-icon-delete"
          size="mini"
          :disabled="multiple"
          @click="handleDelete"
          v-hasPermi="['sc:collectionParamConf:remove']"
        >删除</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['sc:collectionParamConf:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="collectionParamConfList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="主键id" align="center" prop="id" />
      <el-table-column label="产品编码" align="center" prop="productCode" />
      <el-table-column label="产品型号" align="center" prop="productType" />
      <el-table-column label="工位编码" align="center" prop="locationCode" />
      <el-table-column label="参数编码" align="center" prop="paramCode" />
      <el-table-column label="参数名称" align="center" prop="paramName" />
      <el-table-column label="参数集编码" align="center" prop="paramSetCode" />
      <el-table-column label="参数集名称" align="center" prop="paramSetName" />
      <el-table-column label="采集地址" align="center" prop="node" />
      <el-table-column label="采集类型" align="center" prop="type" />
      <el-table-column label="单位" align="center" prop="unit" />
      <el-table-column label="上限值" align="center" prop="paramUpper" />
      <el-table-column label="下限值" align="center" prop="paramLower" />
      <el-table-column label="中心值" align="center" prop="paramCentral" />
      <el-table-column label="显示顺序" align="center" prop="orderNum" />
      <el-table-column label="是否订阅" align="center" prop="subscribe" />
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['sc:collectionParamConf:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['sc:collectionParamConf:remove']"
          >删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!-- æ·»åŠ æˆ–修改参数采集配置对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="产品编码" prop="productCode">
          <el-input v-model="form.productCode" placeholder="请输入产品编码" />
        </el-form-item>
        <el-form-item label="工位编码" prop="locationCode">
          <el-input v-model="form.locationCode" placeholder="请输入工位编码" />
        </el-form-item>
        <el-form-item label="参数编码" prop="paramCode">
          <el-input v-model="form.paramCode" placeholder="请输入参数编码" />
        </el-form-item>
        <el-form-item label="参数名称" prop="paramName">
          <el-input v-model="form.paramName" placeholder="请输入参数名称" />
        </el-form-item>
        <el-form-item label="参数集编码" prop="paramSetCode">
          <el-input v-model="form.paramSetCode" placeholder="请输入参数集编码" />
        </el-form-item>
        <el-form-item label="参数集名称" prop="paramSetName">
          <el-input v-model="form.paramSetName" placeholder="请输入参数集名称" />
        </el-form-item>
        <el-form-item label="采集地址" prop="node">
          <el-input v-model="form.node" placeholder="请输入采集地址" />
        </el-form-item>
        <el-form-item label="单位" prop="unit">
          <el-input v-model="form.unit" placeholder="请输入单位" />
        </el-form-item>
        <el-form-item label="上限值" prop="paramUpper">
          <el-input v-model="form.paramUpper" placeholder="请输入上限值" />
        </el-form-item>
        <el-form-item label="下限值" prop="paramLower">
          <el-input v-model="form.paramLower" placeholder="请输入下限值" />
        </el-form-item>
        <el-form-item label="中心值" prop="paramCentral">
          <el-input v-model="form.paramCentral" placeholder="请输入中心值" />
        </el-form-item>
        <el-form-item label="显示顺序" prop="orderNum">
          <el-input v-model="form.orderNum" placeholder="请输入显示顺序" />
        </el-form-item>
        <el-form-item label="是否订阅" prop="subscribe">
          <el-input v-model="form.subscribe" placeholder="请输入是否订阅" />
        </el-form-item>
        <el-form-item label="删除标志" prop="delFlag">
          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">ç¡® å®š</el-button>
        <el-button @click="cancel">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { listCollectionParamConf, getCollectionParamConf, delCollectionParamConf, addCollectionParamConf, updateCollectionParamConf } from "@/api/main/sc/collectionParamConf";
export default {
  name: "CollectionParamConf",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•ä¸ªç¦ç”¨
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // å‚数采集配置表格数据
      collectionParamConfList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        productCode: null,
        productType: null,
        locationCode: null,
        paramCode: null,
        paramName: null,
        paramSetCode: null,
        paramSetName: null,
        node: null,
        type: null,
        unit: null,
        paramUpper: null,
        paramLower: null,
        paramCentral: null,
        orderNum: null,
        subscribe: null,
      },
      // è¡¨å•å‚æ•°
      form: {},
      // è¡¨å•æ ¡éªŒ
      rules: {
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢å‚数采集配置列表 */
    getList() {
      this.loading = true;
      listCollectionParamConf(this.queryParams).then(response => {
        this.collectionParamConfList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•é‡ç½®
    reset() {
      this.form = {
        id: null,
        productCode: null,
        productType: null,
        locationCode: null,
        paramCode: null,
        paramName: null,
        paramSetCode: null,
        paramSetName: null,
        node: null,
        type: null,
        unit: null,
        paramUpper: null,
        paramLower: null,
        paramCentral: null,
        orderNum: null,
        subscribe: null,
        delFlag: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null
      };
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.id)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加参数采集配置";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const id = row.id || this.ids
      getCollectionParamConf(id).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改参数采集配置";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.id != null) {
            updateCollectionParamConf(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addCollectionParamConf(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除参数采集配置编号为"' + ids + '"的数据项?').then(function() {
        return delCollectionParamConf(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('sc/collectionParamConf/export', {
        ...this.queryParams
      }, `collectionParamConf_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
billion-ui/src/views/main/sc/opcConf/index.vue
@@ -1,6 +1,14 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="工位编号" prop="locationCode">
        <el-input
          v-model="queryParams.locationCode"
          placeholder="请输入工位编号"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="工位名称" prop="locationName">
        <el-input
          v-model="queryParams.locationName"
@@ -17,9 +25,20 @@
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item>
      <el-form-item label="采集类型" prop="type">
        <el-input
          v-model="queryParams.node"
          placeholder="请输入采集类型"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item style="float: right" >
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<!--        <el-button icon="el-icon-setting" size="mini" @click="toggleAdvancedSearch">高级查询</el-button>-->
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
@@ -69,26 +88,33 @@
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="opcConfList" @selection-change="handleSelectionChange">
    <el-table v-loading="loading" border :data="opcConfList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="主键id" align="center" prop="id" />
      <el-table-column label="工位编码" align="center" prop="locationCode" />
      <el-table-column label="工位名称" align="center" prop="locationName" />
      <el-table-column label="地址" align="center" prop="node" />
      <el-table-column label="采集类型" align="center" prop="type" />
      <el-table-column label="是否订阅" align="center" prop="subscribe" />
      <el-table-column label="是否订阅" align="center" prop="subscribe" >
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.subscribe"/>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            style="width: 72px"
            type="success"
            plain
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['sc:opcConf:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            style="width: 72px"
            type="danger"
            plain
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['sc:opcConf:remove']"
@@ -106,10 +132,10 @@
    />
    <!-- æ·»åŠ æˆ–修改OPC交互配置对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body >
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="工位编码" prop="locationCode">
          <el-input v-model="form.locationCode" type="textarea" placeholder="请输入内容" />
          <el-input v-model="form.locationCode"  placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label="工位名称" prop="locationName">
          <el-input v-model="form.locationName" placeholder="请输入工位名称" />
@@ -117,9 +143,18 @@
        <el-form-item label="地址" prop="node">
          <el-input v-model="form.node" placeholder="请输入地址" />
        </el-form-item>
<!--        <el-form-item label="删除标志" prop="delFlag">-->
<!--          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />-->
<!--        </el-form-item>-->
        <el-form-item label="采集类型" prop="type">
          <el-input v-model="form.type" placeholder="请输入采集类型" />
        </el-form-item>
        <el-form-item label="是否订阅" prop="subscribe">
          <el-radio-group v-model="form.subscribe">
            <el-radio
              v-for="dict in dict.type.sys_yes_no"
              :key="dict.value"
              :label="dict.value"
            >{{dict.label}}</el-radio>
          </el-radio-group>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">ç¡® å®š</el-button>
@@ -134,8 +169,10 @@
export default {
  name: "OpcConf",
  dicts: ['sys_yes_no'],
  data() {
    return {
      advancedSearchVisible: false,
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
@@ -168,6 +205,17 @@
      form: {},
      // è¡¨å•æ ¡éªŒ
      rules: {
        locationCode: [
          { required: true, message: "工位编码不能为空", trigger: "blur" },
          { pattern: /^[a-zA-Z0-9]*$/, message: "总成序列号不能包含中文字符", trigger: "blur" }
        ],
        locationName: [
          { required: true, message: "工位名称不能为空", trigger: "blur" },
        ],
        node: [
          { required: true, message: "地址不能为空", trigger: "blur" },
          { pattern: /^[a-zA-Z0-9]*$/, message: "地址不能包含中文字符", trigger: "blur" }
        ],
      }
    };
  },
@@ -175,6 +223,10 @@
    this.getList();
  },
  methods: {
    toggleAdvancedSearch() {
      this.advancedSearchVisible = !this.advancedSearchVisible;
    },
    /** æŸ¥è¯¢OPC交互配置列表 */
    getList() {
      this.loading = true;