吴健
2024-11-27 fb3b3e41804abeeb4a54d9df3030bc3cdb75c245
add 工艺配方
已添加16个文件
已修改8个文件
1966 ■■■■■ 文件已修改
billion-main/src/main/java/com/billion/main/bs/controller/BsFormulaChildInfoController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/controller/BsFormulaInfoController.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/domain/BsFormulaChildInfo.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/domain/BsFormulaInfo.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/mapper/BsFormulaChildInfoMapper.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/mapper/BsFormulaInfoMapper.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/service/IBsFormulaChildInfoService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/service/IBsFormulaInfoService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/service/impl/BsFormulaChildInfoServiceImpl.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/service/impl/BsFormulaInfoServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/resources/mapper/bs/BsFormulaChildInfoMapper.xml 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/resources/mapper/bs/BsFormulaInfoMapper.xml 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/api/main/bs/formulaChildinfo.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/api/main/bs/formulaInfo.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/plugins/download.js 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/router/index.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/utils/auth.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/utils/request.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/views/main/bs/formulaInfo/index.vue 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/views/main/bs/formulaInfoChild/index.vue 404 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/views/main/om/info/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/views/tool/build/RightPanel.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/vue.config.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/controller/BsFormulaChildInfoController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.billion.main.bs.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.billion.common.utils.poi.ExcelUtil;
import com.billion.main.bs.domain.BsFormulaChildInfo;
import com.billion.main.bs.service.IBsFormulaChildInfoService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.billion.common.annotation.Log;
import com.billion.common.core.controller.BaseController;
import com.billion.common.core.domain.AjaxResult;
import com.billion.common.enums.BusinessType;
import com.billion.common.core.page.TableDataInfo;
/**
 * é…æ–¹é…ç½®å­ä¿¡æ¯Controller
 *
 * @author Billion
 * @date 2024-11-26
 */
@RestController
@RequestMapping("/formulaChildInfo")
public class BsFormulaChildInfoController extends BaseController
{
    @Autowired
    private IBsFormulaChildInfoService bsFormulaChildInfoService;
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('main:info:list')")
    @GetMapping("/list")
    public TableDataInfo list(BsFormulaChildInfo bsFormulaChildInfo)
    {
        startPage();
        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.selectBsFormulaChildInfoList(bsFormulaChildInfo);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºé…æ–¹é…ç½®å­ä¿¡æ¯åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('main:info:export')")
    @Log(title = "配方配置子信息", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, BsFormulaChildInfo bsFormulaChildInfo)
    {
        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.selectBsFormulaChildInfoList(bsFormulaChildInfo);
        ExcelUtil<BsFormulaChildInfo> util = new ExcelUtil<BsFormulaChildInfo>(BsFormulaChildInfo.class);
        util.exportExcel(response, list, "配方配置子信息数据");
    }
    /**
     * èŽ·å–配方配置子信息详细信息
     */
    @PreAuthorize("@ss.hasPermi('main:info:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(bsFormulaChildInfoService.selectBsFormulaChildInfoById(id));
    }
    /**
     * æ–°å¢žé…æ–¹é…ç½®å­ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('main:info:add')")
    @Log(title = "配方配置子信息", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody BsFormulaChildInfo bsFormulaChildInfo)
    {
        return toAjax(bsFormulaChildInfoService.insertBsFormulaChildInfo(bsFormulaChildInfo));
    }
    /**
     * ä¿®æ”¹é…æ–¹é…ç½®å­ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('main:info:edit')")
    @Log(title = "配方配置子信息", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody BsFormulaChildInfo bsFormulaChildInfo)
    {
        return toAjax(bsFormulaChildInfoService.updateBsFormulaChildInfo(bsFormulaChildInfo));
    }
    /**
     * åˆ é™¤é…æ–¹é…ç½®å­ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('main:info:remove')")
    @Log(title = "配方配置子信息", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(bsFormulaChildInfoService.deleteBsFormulaChildInfoByIds(ids));
    }
}
billion-main/src/main/java/com/billion/main/bs/controller/BsFormulaInfoController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
package com.billion.main.bs.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.billion.common.core.domain.R;
import com.billion.common.utils.poi.ExcelUtil;
import com.billion.main.bs.domain.BsFormulaInfo;
import com.billion.main.bs.service.IBsFormulaInfoService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.billion.common.annotation.Log;
import com.billion.common.core.controller.BaseController;
import com.billion.common.core.domain.AjaxResult;
import com.billion.common.enums.BusinessType;
import com.billion.common.core.page.TableDataInfo;
/**
 * é…æ–¹é…ç½®Controller
 *
 * @author Billion
 * @date 2024-11-26
 */
@RestController
@RequestMapping("/formulaInfo")
public class BsFormulaInfoController extends BaseController
{
    @Autowired
    private IBsFormulaInfoService bsFormulaInfoService;
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('main:info:list')")
    @GetMapping("/list")
    public TableDataInfo list(BsFormulaInfo bsFormulaInfo)
    {
        startPage();
        List<BsFormulaInfo> list = bsFormulaInfoService.selectBsFormulaInfoList(bsFormulaInfo);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºé…æ–¹é…ç½®åˆ—表
     */
    @PreAuthorize("@ss.hasPermi('main:info:export')")
    @Log(title = "配方配置", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, BsFormulaInfo bsFormulaInfo)
    {
        List<BsFormulaInfo> list = bsFormulaInfoService.selectBsFormulaInfoList(bsFormulaInfo);
        ExcelUtil<BsFormulaInfo> util = new ExcelUtil<BsFormulaInfo>(BsFormulaInfo.class);
        util.exportExcel(response, list, "配方配置数据");
    }
    /**
     * èŽ·å–配方配置详细信息
     */
    @PreAuthorize("@ss.hasPermi('main:info:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(bsFormulaInfoService.selectBsFormulaInfoById(id));
    }
    /**
     * æ–°å¢žé…æ–¹é…ç½®
     */
    @PreAuthorize("@ss.hasPermi('main:info:add')")
    @Log(title = "配方配置", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody BsFormulaInfo bsFormulaInfo)
    {
        return toAjax(bsFormulaInfoService.insertBsFormulaInfo(bsFormulaInfo));
    }
    /**
     * ä¿®æ”¹é…æ–¹é…ç½®
     */
    @PreAuthorize("@ss.hasPermi('main:info:edit')")
    @Log(title = "配方配置", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody BsFormulaInfo bsFormulaInfo)
    {
        return toAjax(bsFormulaInfoService.updateBsFormulaInfo(bsFormulaInfo));
    }
    /**
     * åˆ é™¤é…æ–¹é…ç½®
     */
    @PreAuthorize("@ss.hasPermi('main:info:remove')")
    @Log(title = "配方配置", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(bsFormulaInfoService.deleteBsFormulaInfoByIds(ids));
    }
    @GetMapping("/getOne")
    public R getOne(BsFormulaInfo bsFormulaInfo){
        BsFormulaInfo one = bsFormulaInfoService.getOne(new LambdaQueryWrapper<BsFormulaInfo>()
                .eq(BsFormulaInfo::getFormulaCode, bsFormulaInfo.getFormulaCode()));
        return R.ok(one);
    }
}
billion-main/src/main/java/com/billion/main/bs/domain/BsFormulaChildInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.billion.main.bs.domain;
import com.billion.common.annotation.Excel;
import com.billion.main.common.BaseEntity;
import lombok.Data;
/**
 * é…æ–¹é…ç½®å­ä¿¡æ¯å¯¹è±¡ bs_formula_child_info
 *
 * @author Billion
 * @date 2024-11-26
 */
@Data
public class BsFormulaChildInfo extends BaseEntity
{
    /** é…æ–¹ç¼–码 */
    @Excel(name = "配方编码")
    private String formulaCode;
    /** äº§çº¿ */
    @Excel(name = "产线编码")
    private String lineCode;
    /** å·¥ä½ç¼–号 */
    @Excel(name = "工位编号")
    private String locationCode;
    /** äº§å“ç¼–号 */
    @Excel(name = "产品编号")
    private String productCode;
    /** æ“ä½œå†…容 */
    @Excel(name = "操作内容")
    private String operationContent;
    /** æ“ä½œç±»åž‹ */
    @Excel(name = "操作类型", readConverterExp = "1=扫描产品条码,2=拧紧数据采集")
    private String operationType;
    /** æŽ’序 */
    @Excel(name = "排序")
    private Integer stepSort;
    /** å‚数编码 */
    @Excel(name = "参数编码")
    private String paramCode;
    /** å›¾ç‰‡ */
    private String picture;
    /** å¤‡æ³¨ */
    @Excel(name = "备注")
    private String remarks;
    /** é‡‡é›†æ•°æ® */
    private String collectData;
    /** ç»“æžœ */
    private String results;
}
billion-main/src/main/java/com/billion/main/bs/domain/BsFormulaInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.billion.main.bs.domain;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.billion.common.annotation.Excel;
import com.billion.main.common.BaseEntity;
/**
 * é…æ–¹é…ç½®å¯¹è±¡ bs_formula_info
 *
 * @author Billion
 * @date 2024-11-26
 */
@Data
public class BsFormulaInfo extends BaseEntity
{
    /** äº§å“ç¼–码 */
    @Excel(name = "产品编码")
    private String productCode;
    /** äº§å“åç§° */
    @Excel(name = "产品名称")
    private String productName;
    /** é…æ–¹ç¼–码 */
    @Excel(name = "配方编码")
    private String formulaCode;
    /** é…æ–¹åç§° */
    @Excel(name = "配方名称")
    private String formulaName;
    /** çŠ¶æ€ */
    @Excel(name = "状态", readConverterExp = "1=启用,0=未启用")
    private String status;
    @Excel(name = "备注")
    private String remark;
}
billion-main/src/main/java/com/billion/main/bs/mapper/BsFormulaChildInfoMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.billion.main.bs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.billion.main.bs.domain.BsFormulaChildInfo;
import java.util.List;
/**
 * é…æ–¹é…ç½®å­ä¿¡æ¯Mapper接口
 *
 * @author Billion
 * @date 2024-11-26
 */
public interface BsFormulaChildInfoMapper extends BaseMapper<BsFormulaChildInfo>
{
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param id é…æ–¹é…ç½®å­ä¿¡æ¯ä¸»é”®
     * @return é…æ–¹é…ç½®å­ä¿¡æ¯
     */
    public BsFormulaChildInfo selectBsFormulaChildInfoById(Long id);
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯åˆ—表
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return é…æ–¹é…ç½®å­ä¿¡æ¯é›†åˆ
     */
    public List<BsFormulaChildInfo> selectBsFormulaChildInfoList(BsFormulaChildInfo bsFormulaChildInfo);
    /**
     * æ–°å¢žé…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return ç»“æžœ
     */
    public int insertBsFormulaChildInfo(BsFormulaChildInfo bsFormulaChildInfo);
    /**
     * ä¿®æ”¹é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return ç»“æžœ
     */
    public int updateBsFormulaChildInfo(BsFormulaChildInfo bsFormulaChildInfo);
    /**
     * åˆ é™¤é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param id é…æ–¹é…ç½®å­ä¿¡æ¯ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteBsFormulaChildInfoById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param ids éœ€è¦åˆ é™¤çš„数据主键集合
     * @return ç»“æžœ
     */
    public int deleteBsFormulaChildInfoByIds(Long[] ids);
}
billion-main/src/main/java/com/billion/main/bs/mapper/BsFormulaInfoMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.billion.main.bs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.billion.main.bs.domain.BsFormulaInfo;
import java.util.List;
/**
 * é…æ–¹é…ç½®Mapper接口
 *
 * @author Billion
 * @date 2024-11-26
 */
public interface BsFormulaInfoMapper extends BaseMapper<BsFormulaInfo>
{
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®
     *
     * @param id é…æ–¹é…ç½®ä¸»é”®
     * @return é…æ–¹é…ç½®
     */
    public BsFormulaInfo selectBsFormulaInfoById(Long id);
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®åˆ—表
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return é…æ–¹é…ç½®é›†åˆ
     */
    public List<BsFormulaInfo> selectBsFormulaInfoList(BsFormulaInfo bsFormulaInfo);
    /**
     * æ–°å¢žé…æ–¹é…ç½®
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return ç»“æžœ
     */
    public int insertBsFormulaInfo(BsFormulaInfo bsFormulaInfo);
    /**
     * ä¿®æ”¹é…æ–¹é…ç½®
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return ç»“æžœ
     */
    public int updateBsFormulaInfo(BsFormulaInfo bsFormulaInfo);
    /**
     * åˆ é™¤é…æ–¹é…ç½®
     *
     * @param id é…æ–¹é…ç½®ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteBsFormulaInfoById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤é…æ–¹é…ç½®
     *
     * @param ids éœ€è¦åˆ é™¤çš„数据主键集合
     * @return ç»“æžœ
     */
    public int deleteBsFormulaInfoByIds(Long[] ids);
}
billion-main/src/main/java/com/billion/main/bs/service/IBsFormulaChildInfoService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.billion.main.bs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.billion.main.bs.domain.BsFormulaChildInfo;
import java.util.List;
/**
 * é…æ–¹é…ç½®å­ä¿¡æ¯Service接口
 *
 * @author Billion
 * @date 2024-11-26
 */
public interface IBsFormulaChildInfoService extends IService<BsFormulaChildInfo>
{
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param id é…æ–¹é…ç½®å­ä¿¡æ¯ä¸»é”®
     * @return é…æ–¹é…ç½®å­ä¿¡æ¯
     */
    public BsFormulaChildInfo selectBsFormulaChildInfoById(Long id);
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯åˆ—表
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return é…æ–¹é…ç½®å­ä¿¡æ¯é›†åˆ
     */
    public List<BsFormulaChildInfo> selectBsFormulaChildInfoList(BsFormulaChildInfo bsFormulaChildInfo);
    /**
     * æ–°å¢žé…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return ç»“æžœ
     */
    public int insertBsFormulaChildInfo(BsFormulaChildInfo bsFormulaChildInfo);
    /**
     * ä¿®æ”¹é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return ç»“æžœ
     */
    public int updateBsFormulaChildInfo(BsFormulaChildInfo bsFormulaChildInfo);
    /**
     * æ‰¹é‡åˆ é™¤é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param ids éœ€è¦åˆ é™¤çš„配方配置子信息主键集合
     * @return ç»“æžœ
     */
    public int deleteBsFormulaChildInfoByIds(Long[] ids);
    /**
     * åˆ é™¤é…æ–¹é…ç½®å­ä¿¡æ¯ä¿¡æ¯
     *
     * @param id é…æ–¹é…ç½®å­ä¿¡æ¯ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteBsFormulaChildInfoById(Long id);
}
billion-main/src/main/java/com/billion/main/bs/service/IBsFormulaInfoService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.billion.main.bs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.billion.main.bs.domain.BsFormulaInfo;
import java.util.List;
/**
 * é…æ–¹é…ç½®Service接口
 *
 * @author Billion
 * @date 2024-11-26
 */
public interface IBsFormulaInfoService extends IService<BsFormulaInfo>
{
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®
     *
     * @param id é…æ–¹é…ç½®ä¸»é”®
     * @return é…æ–¹é…ç½®
     */
    public BsFormulaInfo selectBsFormulaInfoById(Long id);
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®åˆ—表
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return é…æ–¹é…ç½®é›†åˆ
     */
    public List<BsFormulaInfo> selectBsFormulaInfoList(BsFormulaInfo bsFormulaInfo);
    /**
     * æ–°å¢žé…æ–¹é…ç½®
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return ç»“æžœ
     */
    public int insertBsFormulaInfo(BsFormulaInfo bsFormulaInfo);
    /**
     * ä¿®æ”¹é…æ–¹é…ç½®
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return ç»“æžœ
     */
    public int updateBsFormulaInfo(BsFormulaInfo bsFormulaInfo);
    /**
     * æ‰¹é‡åˆ é™¤é…æ–¹é…ç½®
     *
     * @param ids éœ€è¦åˆ é™¤çš„配方配置主键集合
     * @return ç»“æžœ
     */
    public int deleteBsFormulaInfoByIds(Long[] ids);
    /**
     * åˆ é™¤é…æ–¹é…ç½®ä¿¡æ¯
     *
     * @param id é…æ–¹é…ç½®ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteBsFormulaInfoById(Long id);
}
billion-main/src/main/java/com/billion/main/bs/service/impl/BsFormulaChildInfoServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,111 @@
package com.billion.main.bs.service.impl;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.billion.common.core.domain.entity.SysUser;
import com.billion.common.core.domain.model.LoginUser;
import com.billion.common.utils.DateUtils;
import com.billion.common.utils.SecurityUtils;
import com.billion.main.bs.domain.BsFormulaChildInfo;
import com.billion.main.bs.mapper.BsFormulaChildInfoMapper;
import com.billion.main.bs.service.IBsFormulaChildInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * é…æ–¹é…ç½®å­ä¿¡æ¯Service业务层处理
 *
 * @author Billion
 * @date 2024-11-26
 */
@Service
public class BsFormulaChildInfoServiceImpl extends ServiceImpl<BsFormulaChildInfoMapper, BsFormulaChildInfo> implements IBsFormulaChildInfoService
{
    @Autowired
    private BsFormulaChildInfoMapper bsFormulaChildInfoMapper;
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param id é…æ–¹é…ç½®å­ä¿¡æ¯ä¸»é”®
     * @return é…æ–¹é…ç½®å­ä¿¡æ¯
     */
    @Override
    public BsFormulaChildInfo selectBsFormulaChildInfoById(Long id)
    {
        return bsFormulaChildInfoMapper.selectBsFormulaChildInfoById(id);
    }
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯åˆ—表
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return é…æ–¹é…ç½®å­ä¿¡æ¯
     */
    @Override
    public List<BsFormulaChildInfo> selectBsFormulaChildInfoList(BsFormulaChildInfo bsFormulaChildInfo)
    {
        return bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(bsFormulaChildInfo);
    }
    /**
     * æ–°å¢žé…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return ç»“æžœ
     */
    @Override
    public int insertBsFormulaChildInfo(BsFormulaChildInfo bsFormulaChildInfo)
    {
        bsFormulaChildInfo.setCreateTime(DateUtils.getNowDate());
        LoginUser loginUser = SecurityUtils.getLoginUser();
        SysUser user = loginUser.getUser();
        bsFormulaChildInfo.setCreateTime(new Date());
        bsFormulaChildInfo.setUpdateTime(new Date());
        bsFormulaChildInfo.setCreateBy(user.getUserName());
        bsFormulaChildInfo.setUpdateBy(user.getUserName());
        return bsFormulaChildInfoMapper.insertBsFormulaChildInfo(bsFormulaChildInfo);
    }
    /**
     * ä¿®æ”¹é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param bsFormulaChildInfo é…æ–¹é…ç½®å­ä¿¡æ¯
     * @return ç»“æžœ
     */
    @Override
    public int updateBsFormulaChildInfo(BsFormulaChildInfo bsFormulaChildInfo)
    {
        bsFormulaChildInfo.setUpdateTime(DateUtils.getNowDate());
        LoginUser loginUser = SecurityUtils.getLoginUser();
        SysUser user = loginUser.getUser();
        bsFormulaChildInfo.setUpdateBy(user.getUserName());
        return bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfo);
    }
    /**
     * æ‰¹é‡åˆ é™¤é…æ–¹é…ç½®å­ä¿¡æ¯
     *
     * @param ids éœ€è¦åˆ é™¤çš„配方配置子信息主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteBsFormulaChildInfoByIds(Long[] ids)
    {
        return bsFormulaChildInfoMapper.deleteBsFormulaChildInfoByIds(ids);
    }
    /**
     * åˆ é™¤é…æ–¹é…ç½®å­ä¿¡æ¯ä¿¡æ¯
     *
     * @param id é…æ–¹é…ç½®å­ä¿¡æ¯ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteBsFormulaChildInfoById(Long id)
    {
        return bsFormulaChildInfoMapper.deleteBsFormulaChildInfoById(id);
    }
}
billion-main/src/main/java/com/billion/main/bs/service/impl/BsFormulaInfoServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package com.billion.main.bs.service.impl;
import java.util.Date;
import java.util.List;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.billion.common.core.domain.entity.SysUser;
import com.billion.common.core.domain.model.LoginUser;
import com.billion.common.exception.ServiceException;
import com.billion.common.utils.DateUtils;
import com.billion.common.utils.SecurityUtils;
import com.billion.main.bs.domain.BsFormulaInfo;
import com.billion.main.bs.mapper.BsFormulaInfoMapper;
import com.billion.main.bs.service.IBsFormulaInfoService;
import com.billion.main.common.BaseEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * é…æ–¹é…ç½®Service业务层处理
 *
 * @author Billion
 * @date 2024-11-26
 */
@Service
public class BsFormulaInfoServiceImpl extends ServiceImpl<BsFormulaInfoMapper, BsFormulaInfo> implements IBsFormulaInfoService
{
    @Autowired
    private BsFormulaInfoMapper bsFormulaInfoMapper;
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®
     *
     * @param id é…æ–¹é…ç½®ä¸»é”®
     * @return é…æ–¹é…ç½®
     */
    @Override
    public BsFormulaInfo selectBsFormulaInfoById(Long id)
    {
        return bsFormulaInfoMapper.selectBsFormulaInfoById(id);
    }
    /**
     * æŸ¥è¯¢é…æ–¹é…ç½®åˆ—表
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return é…æ–¹é…ç½®
     */
    @Override
    public List<BsFormulaInfo> selectBsFormulaInfoList(BsFormulaInfo bsFormulaInfo)
    {
        return bsFormulaInfoMapper.selectBsFormulaInfoList(bsFormulaInfo);
    }
    /**
     * æ–°å¢žé…æ–¹é…ç½®
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return ç»“æžœ
     */
    @Override
    public int insertBsFormulaInfo(BsFormulaInfo bsFormulaInfo)
    {
        List<BsFormulaInfo> check = this.list(new LambdaQueryWrapper<BsFormulaInfo>().eq(BsFormulaInfo::getFormulaCode, bsFormulaInfo.getFormulaCode()));
        if (CollUtil.isNotEmpty(check)){
            throw new ServiceException("已存在此配方编码");
        }
        List<BsFormulaInfo> check1 = this.list(new LambdaQueryWrapper<BsFormulaInfo>().eq(BsFormulaInfo::getProductCode, bsFormulaInfo.getProductCode()));
        if (CollUtil.isNotEmpty(check1)){
            throw new ServiceException("已存在此产品编码");
        }
        bsFormulaInfo.setCreateTime(DateUtils.getNowDate());
        LoginUser loginUser = SecurityUtils.getLoginUser();
        SysUser user = loginUser.getUser();
        bsFormulaInfo.setCreateTime(new Date());
        bsFormulaInfo.setUpdateTime(new Date());
        bsFormulaInfo.setCreateBy(user.getUserName());
        bsFormulaInfo.setUpdateBy(user.getUserName());
        return bsFormulaInfoMapper.insertBsFormulaInfo(bsFormulaInfo);
    }
    /**
     * ä¿®æ”¹é…æ–¹é…ç½®
     *
     * @param bsFormulaInfo é…æ–¹é…ç½®
     * @return ç»“æžœ
     */
    @Override
    public int updateBsFormulaInfo(BsFormulaInfo bsFormulaInfo)
    {
        List<BsFormulaInfo> check = this.list(new LambdaQueryWrapper<BsFormulaInfo>().eq(BsFormulaInfo::getFormulaCode, bsFormulaInfo.getFormulaCode())
                .notIn(BaseEntity::getId,bsFormulaInfo.getId()));
        if (CollUtil.isNotEmpty(check)){
            throw new ServiceException("已存在此配方编码");
        }
        List<BsFormulaInfo> check1 = this.list(new LambdaQueryWrapper<BsFormulaInfo>().eq(BsFormulaInfo::getProductCode, bsFormulaInfo.getProductCode())
                .notIn(BaseEntity::getId,bsFormulaInfo.getId()));
        if (CollUtil.isNotEmpty(check1)){
            throw new ServiceException("已存在此产品编码");
        }
        bsFormulaInfo.setUpdateTime(DateUtils.getNowDate());
        LoginUser loginUser = SecurityUtils.getLoginUser();
        SysUser user = loginUser.getUser();
        bsFormulaInfo.setUpdateBy(user.getUserName());
        return bsFormulaInfoMapper.updateBsFormulaInfo(bsFormulaInfo);
    }
    /**
     * æ‰¹é‡åˆ é™¤é…æ–¹é…ç½®
     *
     * @param ids éœ€è¦åˆ é™¤çš„配方配置主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteBsFormulaInfoByIds(Long[] ids)
    {
        return bsFormulaInfoMapper.deleteBsFormulaInfoByIds(ids);
    }
    /**
     * åˆ é™¤é…æ–¹é…ç½®ä¿¡æ¯
     *
     * @param id é…æ–¹é…ç½®ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteBsFormulaInfoById(Long id)
    {
        return bsFormulaInfoMapper.deleteBsFormulaInfoById(id);
    }
}
billion-main/src/main/resources/mapper/bs/BsFormulaChildInfoMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
<?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.bs.mapper.BsFormulaChildInfoMapper">
    <resultMap type="BsFormulaChildInfo" id="BsFormulaChildInfoResult">
        <result property="id"    column="id"    />
        <result property="lineCode"    column="line_code"    />
        <result property="locationCode"    column="location_code"    />
        <result property="productCode"    column="product_code"    />
        <result property="operationContent"    column="operation_content"    />
        <result property="operationType"    column="operation_type"    />
        <result property="stepSort"    column="step_sort"    />
        <result property="paramCode"    column="param_code"    />
        <result property="picture"    column="picture"    />
        <result property="remarks"    column="remarks"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="collectData"    column="collect_data"    />
        <result property="results"    column="results"    />
        <result property="formulaCode"    column="formula_code"    />
        <result property="delFlag"    column="del_flag"    />
    </resultMap>
    <sql id="selectBsFormulaChildInfoVo">
        select id, line_code, location_code, product_code, operation_content, operation_type, step_sort, param_code, picture, remarks, create_by, create_time, update_by, update_time, collect_data, results, formula_code, del_flag from bs_formula_child_info
    </sql>
    <select id="selectBsFormulaChildInfoList" parameterType="BsFormulaChildInfo" resultMap="BsFormulaChildInfoResult">
        <include refid="selectBsFormulaChildInfoVo"/>
        <where>
            <if test="lineCode != null  and lineCode != ''"> and line_code = #{lineCode}</if>
            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
            <if test="productCode != null  and productCode != ''"> and product_code = #{productCode}</if>
            <if test="operationType != null  and operationType != ''"> and operation_type = #{operationType}</if>
            <if test="stepSort != null "> and step_sort = #{stepSort}</if>
            <if test="paramCode != null  and paramCode != ''"> and param_code = #{paramCode}</if>
            <if test="formulaCode != null  and formulaCode != ''"> and formula_code = #{formulaCode}</if>
             and del_flag = "0"
        </where>
    </select>
    <select id="selectBsFormulaChildInfoById" parameterType="Long" resultMap="BsFormulaChildInfoResult">
        <include refid="selectBsFormulaChildInfoVo"/>
        where id = #{id}
        and del_flag = "0"
    </select>
    <insert id="insertBsFormulaChildInfo" parameterType="BsFormulaChildInfo">
        insert into bs_formula_child_info
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="lineCode != null and lineCode != ''">line_code,</if>
            <if test="locationCode != null and locationCode != ''">location_code,</if>
            <if test="productCode != null and productCode != ''">product_code,</if>
            <if test="operationContent != null and operationContent != ''">operation_content,</if>
            <if test="operationType != null and operationType != ''">operation_type,</if>
            <if test="stepSort != null">step_sort,</if>
            <if test="paramCode != null and paramCode != ''">param_code,</if>
            <if test="picture != null">picture,</if>
            <if test="remarks != null">remarks,</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>
            <if test="collectData != null">collect_data,</if>
            <if test="results != null">results,</if>
            <if test="formulaCode != null">formula_code,</if>
            <if test="delFlag != null">del_flag,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="lineCode != null and lineCode != ''">#{lineCode},</if>
            <if test="locationCode != null and locationCode != ''">#{locationCode},</if>
            <if test="productCode != null and productCode != ''">#{productCode},</if>
            <if test="operationContent != null and operationContent != ''">#{operationContent},</if>
            <if test="operationType != null and operationType != ''">#{operationType},</if>
            <if test="stepSort != null">#{stepSort},</if>
            <if test="paramCode != null and paramCode != ''">#{paramCode},</if>
            <if test="picture != null">#{picture},</if>
            <if test="remarks != null">#{remarks},</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>
            <if test="collectData != null">#{collectData},</if>
            <if test="results != null">#{results},</if>
            <if test="formulaCode != null">#{formulaCode},</if>
            <if test="delFlag != null">#{delFlag},</if>
         </trim>
    </insert>
    <update id="updateBsFormulaChildInfo" parameterType="BsFormulaChildInfo">
        update bs_formula_child_info
        <trim prefix="SET" suffixOverrides=",">
            <if test="lineCode != null and lineCode != ''">line_code = #{lineCode},</if>
            <if test="locationCode != null and locationCode != ''">location_code = #{locationCode},</if>
            <if test="productCode != null and productCode != ''">product_code = #{productCode},</if>
            <if test="operationContent != null and operationContent != ''">operation_content = #{operationContent},</if>
            <if test="operationType != null and operationType != ''">operation_type = #{operationType},</if>
            <if test="stepSort != null">step_sort = #{stepSort},</if>
            <if test="paramCode != null and paramCode != ''">param_code = #{paramCode},</if>
            <if test="picture != null">picture = #{picture},</if>
            <if test="remarks != null">remarks = #{remarks},</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>
            <if test="collectData != null">collect_data = #{collectData},</if>
            <if test="results != null">results = #{results},</if>
            <if test="formulaCode != null">formula_code = #{formulaCode},</if>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
        </trim>
        where id = #{id}
    </update>
    <update id="deleteBsFormulaChildInfoById" parameterType="Long">
        update bs_formula_child_info set del_flag = "1" where id = #{id}
    </update>
    <update id="deleteBsFormulaChildInfoByIds" parameterType="String">
        update bs_formula_child_info set del_flag = "1" where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </update>
</mapper>
billion-main/src/main/resources/mapper/bs/BsFormulaInfoMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
<?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.bs.mapper.BsFormulaInfoMapper">
    <resultMap type="BsFormulaInfo" id="BsFormulaInfoResult">
        <result property="id"    column="id"    />
        <result property="productCode"    column="product_code"    />
        <result property="productName"    column="product_name"    />
        <result property="formulaCode"    column="formula_code"    />
        <result property="formulaName"    column="formula_name"    />
        <result property="status"    column="status"    />
        <result property="remark"    column="remark"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="delFlag"    column="del_flag"    />
    </resultMap>
    <sql id="selectBsFormulaInfoVo">
        select id, product_code, product_name, formula_code, formula_name, status, remark, create_by, create_time, update_by, update_time, del_flag from bs_formula_info
    </sql>
    <select id="selectBsFormulaInfoList" parameterType="BsFormulaInfo" resultMap="BsFormulaInfoResult">
        <include refid="selectBsFormulaInfoVo"/>
        <where>
            <if test="productCode != null  and productCode != ''"> and product_code = #{productCode}</if>
            <if test="productName != null  and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
            <if test="formulaCode != null  and formulaCode != ''"> and formula_code = #{formulaCode}</if>
            <if test="formulaName != null  and formulaName != ''"> and formula_name like concat('%', #{formulaName}, '%')</if>
            <if test="status != null  and status != ''"> and status = #{status}</if>
            and del_flag = "0"
        </where>
    </select>
    <select id="selectBsFormulaInfoById" parameterType="Long" resultMap="BsFormulaInfoResult">
        <include refid="selectBsFormulaInfoVo"/>
        where id = #{id}
        and del_flag = "0"
    </select>
    <insert id="insertBsFormulaInfo" parameterType="BsFormulaInfo">
        insert into bs_formula_info
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="productCode != null and productCode != ''">product_code,</if>
            <if test="productName != null and productName != ''">product_name,</if>
            <if test="formulaCode != null and formulaCode != ''">formula_code,</if>
            <if test="formulaName != null and formulaName != ''">formula_name,</if>
            <if test="status != null and status != ''">status,</if>
            <if test="remark != null">remark,</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>
            <if test="delFlag != null">del_flag,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="productCode != null and productCode != ''">#{productCode},</if>
            <if test="productName != null and productName != ''">#{productName},</if>
            <if test="formulaCode != null and formulaCode != ''">#{formulaCode},</if>
            <if test="formulaName != null and formulaName != ''">#{formulaName},</if>
            <if test="status != null and status != ''">#{status},</if>
            <if test="remark != null">#{remark},</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>
            <if test="delFlag != null">#{delFlag},</if>
         </trim>
    </insert>
    <update id="updateBsFormulaInfo" parameterType="BsFormulaInfo">
        update bs_formula_info
        <trim prefix="SET" suffixOverrides=",">
            <if test="productCode != null and productCode != ''">product_code = #{productCode},</if>
            <if test="productName != null and productName != ''">product_name = #{productName},</if>
            <if test="formulaCode != null and formulaCode != ''">formula_code = #{formulaCode},</if>
            <if test="formulaName != null and formulaName != ''">formula_name = #{formulaName},</if>
            <if test="status != null and status != ''">status = #{status},</if>
            <if test="remark != null">remark = #{remark},</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>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
        </trim>
        where id = #{id}
    </update>
    <update id="deleteBsFormulaInfoById" parameterType="Long">
        update bs_formula_info set del_flag = "1" where id = #{id}
    </update>
    <update id="deleteBsFormulaInfoByIds" parameterType="String">
        update bs_formula_info set del_flag = "1" where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </update>
</mapper>
billion-ui/package.json
@@ -41,6 +41,7 @@
    "clipboard": "2.0.8",
    "core-js": "3.37.1",
    "echarts": "5.4.0",
    "electron": "^33.2.0",
    "element-ui": "2.15.14",
    "file-saver": "2.0.5",
    "fuse.js": "6.4.3",
billion-ui/src/api/main/bs/formulaChildinfo.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯åˆ—表
export function listInfo(query) {
  return request({
    url: '/formulaChildInfo/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯è¯¦ç»†
export function getInfo(id) {
  return request({
    url: '/formulaChildInfo/' + id,
    method: 'get'
  })
}
// æ–°å¢žé…æ–¹é…ç½®å­ä¿¡æ¯
export function addInfo(data) {
  return request({
    url: '/formulaChildInfo',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹é…æ–¹é…ç½®å­ä¿¡æ¯
export function updateInfo(data) {
  return request({
    url: '/formulaChildInfo',
    method: 'put',
    data: data
  })
}
// åˆ é™¤é…æ–¹é…ç½®å­ä¿¡æ¯
export function delInfo(id) {
  return request({
    url: '/formulaChildInfo/' + id,
    method: 'delete'
  })
}
billion-ui/src/api/main/bs/formulaInfo.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
import request from '@/utils/request'
// æŸ¥è¯¢é…æ–¹é…ç½®åˆ—表
export function listInfo(query) {
  return request({
    url: '/formulaInfo/list',
    method: 'get',
    params: query
  })
}
export function getOne(query) {
  return request({
    url: '/formulaInfo/getOne',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢é…æ–¹é…ç½®è¯¦ç»†
export function getInfo(id) {
  return request({
    url: '/formulaInfo/' + id,
    method: 'get'
  })
}
// æ–°å¢žé…æ–¹é…ç½®
export function addInfo(data) {
  return request({
    url: '/formulaInfo',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹é…æ–¹é…ç½®
export function updateInfo(data) {
  return request({
    url: '/formulaInfo',
    method: 'put',
    data: data
  })
}
// åˆ é™¤é…æ–¹é…ç½®
export function delInfo(id) {
  return request({
    url: '/formulaInfo/' + id,
    method: 'delete'
  })
}
billion-ui/src/plugins/download.js
@@ -17,12 +17,12 @@
      responseType: 'blob',
      headers: { 'Authorization': 'Bearer ' + getToken() }
    }).then((res) => {
      const isBlob = blobValidate(res.data);
      const isBlob = blobValidate(res.index);
      if (isBlob) {
        const blob = new Blob([res.data])
        const blob = new Blob([res.index])
        this.saveAs(blob, decodeURIComponent(res.headers['download-filename']))
      } else {
        this.printErrMsg(res.data);
        this.printErrMsg(res.index);
      }
    })
  },
@@ -34,12 +34,12 @@
      responseType: 'blob',
      headers: { 'Authorization': 'Bearer ' + getToken() }
    }).then((res) => {
      const isBlob = blobValidate(res.data);
      const isBlob = blobValidate(res.index);
      if (isBlob) {
        const blob = new Blob([res.data])
        const blob = new Blob([res.index])
        this.saveAs(blob, decodeURIComponent(res.headers['download-filename']))
      } else {
        this.printErrMsg(res.data);
        this.printErrMsg(res.index);
      }
    })
  },
@@ -52,12 +52,12 @@
      responseType: 'blob',
      headers: { 'Authorization': 'Bearer ' + getToken() }
    }).then((res) => {
      const isBlob = blobValidate(res.data);
      const isBlob = blobValidate(res.index);
      if (isBlob) {
        const blob = new Blob([res.data], { type: 'application/zip' })
        const blob = new Blob([res.index], { type: 'application/zip' })
        this.saveAs(blob, name)
      } else {
        this.printErrMsg(res.data);
        this.printErrMsg(res.index);
      }
      downloadLoadingInstance.close();
    }).catch((r) => {
billion-ui/src/router/index.js
@@ -135,6 +135,20 @@
    ]
  },
  {
    path: '/main/formula-data',
    component: Layout,
    hidden: true,
    permissions: ['bs:formulaInfo:list'],
    children: [
      {
        path: 'index',
        component: () => import('@/views/main/bs/formulaInfoChild/index'),
        name: 'Data',
        meta: { title: '工艺配方详情', activeMenu: '/main/bs/formulaInfoChild' }
      }
    ]
  },
  {
    path: '/main/route-data',
    component: Layout,
    hidden: true,
@@ -205,7 +219,7 @@
}
export default new Router({
  mode: 'history', // åŽ»æŽ‰url中的#
  mode: 'hash', // åŽ»æŽ‰url中的#
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})
billion-ui/src/utils/auth.js
@@ -3,13 +3,13 @@
const TokenKey = 'Admin-Token'
export function getToken() {
  return Cookies.get(TokenKey)
  return localStorage.getItem(TokenKey)
}
export function setToken(token) {
  return Cookies.set(TokenKey, token)
  return localStorage.setItem(TokenKey, token)
}
export function removeToken() {
  return Cookies.remove(TokenKey)
  return localStorage.removeItem(TokenKey)
}
billion-ui/src/utils/request.js
@@ -15,7 +15,7 @@
// åˆ›å»ºaxios实例
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  baseURL: process.env.VUE_APP_BASE_API,
  baseURL: `http://192.168.20.9:8080`,
  // è¶…æ—¶
  timeout: 10000
})
@@ -53,7 +53,7 @@
      cache.session.setJSON('sessionObj', requestObj)
    } else {
      const s_url = sessionObj.url;                  // è¯·æ±‚地址
      const s_data = sessionObj.data;                // è¯·æ±‚数据
      const s_data = sessionObj.index;                // è¯·æ±‚数据
      const s_time = sessionObj.time;                // è¯·æ±‚时间
      const interval = 1000;                         // é—´éš”时间(ms),小于此时间视为重复提交
      if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
billion-ui/src/views/main/bs/formulaInfo/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,335 @@
<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="productName">
        <el-input
          v-model="queryParams.productName"
          placeholder="请输入产品名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="配方编码" prop="formulaCode">
        <el-input
          v-model="queryParams.formulaCode"
          placeholder="请输入配方编码"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="配方名称" prop="formulaName">
        <el-input
          v-model="queryParams.formulaName"
          placeholder="请输入配方名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="状态" prop="status">
        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
          <el-option
            v-for="dict in dict.type.open_status"
            :key="dict.value"
            :label="dict.label"
            :value="dict.value"
          />
        </el-select>
      </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-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="['main:info: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="['main:info: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="['main:info: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="['main:info:export']"
        >导出</el-button>
      </el-col>
    </el-row>
    <el-table border v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column show-overflow-tooltip label="产品编码" align="center" prop="productCode" />
      <el-table-column show-overflow-tooltip label="产品名称" align="center" prop="productName" />
      <el-table-column show-overflow-tooltip label="配方编码" align="center" prop="formulaCode" >
        <template slot-scope="scope">
          <router-link :to="{path: '/main/formula-data/index/', query: {formulaCode: scope.row.formulaCode} }" class="link-type">
            <span>{{ scope.row.formulaCode }}</span>
          </router-link>
        </template>
      </el-table-column>
      <el-table-column show-overflow-tooltip label="配方名称" align="center" prop="formulaName" />
      <el-table-column label="状态" align="center" prop="status">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.open_status" :value="scope.row.status"/>
        </template>
      </el-table-column>
      <el-table-column label="备注" width="180px" show-overflow-tooltip align="center" prop="remark" />
      <el-table-column show-overflow-tooltip label="更新用户" align="center" prop="updateBy" />
      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
      </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="productName">
          <el-input v-model="form.productName" placeholder="请输入产品名称" />
        </el-form-item>
        <el-form-item label="配方编码" prop="formulaCode">
          <el-input v-model="form.formulaCode" placeholder="请输入配方编码" />
        </el-form-item>
        <el-form-item label="配方名称" prop="formulaName">
          <el-input v-model="form.formulaName" placeholder="请输入配方名称" />
        </el-form-item>
        <el-form-item label="状态" prop="status">
          <el-radio-group v-model="form.status">
            <el-radio
              v-for="dict in dict.type.open_status"
              :key="dict.value"
              :label="dict.value"
            >{{dict.label}}</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input
            type="textarea"
            placeholder="请输入备注"
            v-model="form.remark"
            maxlength="30"
            show-word-limit
          >
          </el-input>
        </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 { listInfo, getInfo, delInfo, addInfo, updateInfo } from "@/api/main/bs/formulaInfo";
export default {
  name: "Info",
  dicts: ['open_status'],
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•ä¸ªç¦ç”¨
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // é…æ–¹é…ç½®è¡¨æ ¼æ•°æ®
      infoList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        productCode: null,
        productName: null,
        formulaCode: null,
        formulaName: null,
        status: null,
      },
      // è¡¨å•å‚æ•°
      form: {},
      // è¡¨å•æ ¡éªŒ
      rules: {
        productCode: [
          { required: true, message: "产品编码不能为空", trigger: "blur" }
        ],
        productName: [
          { required: true, message: "产品名称不能为空", trigger: "blur" }
        ],
        formulaCode: [
          { required: true, message: "配方编码不能为空", trigger: "blur" }
        ],
        formulaName: [
          { required: true, message: "配方名称不能为空", trigger: "blur" }
        ],
        status: [
          { required: true, message: "状态不能为空", trigger: "change" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢é…æ–¹é…ç½®åˆ—表 */
    getList() {
      this.loading = true;
      listInfo(this.queryParams).then(response => {
        this.infoList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•é‡ç½®
    reset() {
      this.form = {
        id: null,
        productCode: null,
        productName: null,
        formulaCode: null,
        formulaName: null,
        status: null,
        remark: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null,
        delFlag: 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
      getInfo(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) {
            updateInfo(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addInfo(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除').then(function() {
        return delInfo(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('formulaInfo/export', {
        ...this.queryParams
      }, `info_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
billion-ui/src/views/main/bs/formulaInfoChild/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,404 @@
<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="lineCode">
        <el-input
          v-model="queryParams.lineCode"
          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="operationType">
        <el-select v-model="queryParams.operationType" placeholder="请选择操作类型" clearable>
          <el-option
            v-for="dict in dict.type.operation_type"
            :key="dict.value"
            :label="dict.label"
            :value="dict.value"
          />
        </el-select>
      </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 style="float: right">
        <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>
    <div style="width: 600px">
      <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="['main:info: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="['main:info: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="['main:info: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="['main:info:export']"
          >导出</el-button>
        </el-col>
      </el-row>
    </div>
    <el-descriptions class="margin-top" :column="3" :size="size" border>
      <el-descriptions-item>
        <template slot="label">
          <i class="el-icon-user"></i>
          é…æ–¹ç¼–码
        </template>
        {{queryParams.formulaCode}}
      </el-descriptions-item>
      <el-descriptions-item>
        <template slot="label">
          <i class="el-icon-mobile-phone"></i>
          é…æ–¹åç§°
        </template>
        {{showData.formulaName}}
      </el-descriptions-item>
      <el-descriptions-item>
        <template slot="label">
          <i class="el-icon-location-outline"></i>
          äº§å“ç¼–号
        </template>
        {{showData.productCode}}
      </el-descriptions-item>
      <el-descriptions-item>
        <template slot="label">
          <i class="el-icon-tickets"></i>
          äº§å“åç§°
        </template>
        {{showData.productName}}
      </el-descriptions-item>
    </el-descriptions>
    <el-table border v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column show-overflow-tooltip label="配方编码" align="center" prop="formulaCode" />
      <el-table-column show-overflow-tooltip label="产线编号" align="center" prop="lineCode" />
      <el-table-column show-overflow-tooltip label="工位编号" align="center" prop="locationCode" />
      <el-table-column show-overflow-tooltip label="产品编号" align="center" prop="productCode" />
      <el-table-column show-overflow-tooltip label="操作内容" align="center" prop="operationContent" />
      <el-table-column label="操作类型" align="center" prop="operationType">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.operation_type" :value="scope.row.operationType"/>
        </template>
      </el-table-column>
      <el-table-column show-overflow-tooltip label="排序" align="center" prop="stepSort" />
      <el-table-column show-overflow-tooltip label="参数编码" align="center" prop="paramCode" />
      <el-table-column label="图片" align="center" prop="picture" width="100">
        <template slot-scope="scope">
          <image-preview :src="scope.row.picture" :width="50" :height="50"/>
        </template>
      </el-table-column>
      <el-table-column show-overflow-tooltip label="备注" align="center" prop="remarks" />
    </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="formulaCode">
          <el-input v-model="form.formulaCode" placeholder="请输入配方编码" disabled />
        </el-form-item>
        <el-form-item label="产品编号" prop="productCode">
          <el-input v-model="form.productCode" placeholder="请输入产品编号" disabled/>
        </el-form-item>
        <el-form-item label="产线编号" prop="lineCode">
          <el-input v-model="form.lineCode" placeholder="请输入产线编号" />
        </el-form-item>
        <el-form-item label="工位编号" prop="locationCode">
          <el-input v-model="form.locationCode" placeholder="请输入工位编号" />
        </el-form-item>
        <el-form-item label="操作内容">
          <editor v-model="form.operationContent" :min-height="192"/>
        </el-form-item>
        <el-form-item label="操作类型" prop="operationType">
          <el-select v-model="form.operationType" placeholder="请选择操作类型">
            <el-option
              v-for="dict in dict.type.operation_type"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="排序" prop="stepSort">
          <el-input v-model="form.stepSort" 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="picture">
          <image-upload v-model="form.picture"/>
        </el-form-item>
        <el-form-item label="备注" prop="remarks">
          <el-input v-model="form.remarks" type="textarea" placeholder="请输入内容"
                    maxlength="30"
                    show-word-limit />
        </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 {addInfo, delInfo, getInfo, listInfo, updateInfo} from "@/api/main/bs/formulaChildinfo";
import { getOne } from '@/api/main/bs/formulaInfo'
export default {
  name: "formulaInfoChild",
  dicts: ['operation_type'],
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•ä¸ªç¦ç”¨
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // é…æ–¹é…ç½®å­ä¿¡æ¯è¡¨æ ¼æ•°æ®
      infoList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        lineCode: null,
        locationCode: null,
        productCode: null,
        operationType: null,
        stepSort: null,
        paramCode: null,
        formulaCode: null,
      },
      showData: {
        formulaCode: null,
        productCode: null,
        productName: null,
        formulaName: null,
      },
      // è¡¨å•å‚æ•°
      form: {},
      // è¡¨å•æ ¡éªŒ
      rules: {
        lineCode: [
          { required: true, message: "产线编号不能为空", trigger: "blur" }
        ],
        locationCode: [
          { required: true, message: "工位编号不能为空", trigger: "blur" }
        ],
        productCode: [
          { required: true, message: "产品编号不能为空", trigger: "blur" }
        ],
        operationContent: [
          { required: true, message: "操作内容不能为空", trigger: "blur" }
        ],
        operationType: [
          { required: true, message: "操作类型不能为空", trigger: "change" }
        ],
        stepSort: [
          { required: true, message: "排序不能为空", trigger: "blur" }
        ],
        paramCode: [
          { required: true, message: "参数编码不能为空", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.queryParams.formulaCode = this.$route.query.formulaCode
    this.getOne()
    console.log('this.queryParams.formulaCode',this.queryParams.formulaCode)
    this.getList();
  },
  methods: {
    getOne(){
      getOne({formulaCode: this.queryParams.formulaCode}).then(res => {
        if (res.code === 200){
          this.showData.productCode = res.data.productCode
          this.showData.productName = res.data.productName
          this.showData.formulaName = res.data.formulaName
        }
      })
    },
    /** æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯åˆ—表 */
    getList() {
      this.loading = true;
      listInfo(this.queryParams).then(response => {
        this.infoList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•é‡ç½®
    reset() {
      this.form = {
        id: null,
        lineCode: null,
        locationCode: null,
        productCode: null,
        operationContent: null,
        operationType: null,
        stepSort: null,
        paramCode: null,
        picture: null,
        remarks: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null,
        collectData: null,
        results: null,
        formulaCode: null,
        delFlag: 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.form.productCode = this.showData.productCode
      this.form.formulaCode = this.queryParams.formulaCode
      this.open = true;
      this.title = "添加配方配置子信息";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const id = row.id || this.ids
      getInfo(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) {
            updateInfo(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addInfo(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除').then(function() {
        return delInfo(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('formulaChildInfo/export', {
        ...this.queryParams
      }, `info_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
billion-ui/src/views/main/om/info/index.vue
@@ -147,24 +147,6 @@
      </el-table-column>
      <el-table-column label="更新用户" align="center" prop="updateBy" />
      <el-table-column label="备注" width="180px" show-overflow-tooltip align="center" prop="remarks" />
<!--      <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="['main:info:edit']"-->
<!--          >修改</el-button>-->
<!--          <el-button-->
<!--            size="mini"-->
<!--            type="text"-->
<!--            icon="el-icon-delete"-->
<!--            @click="handleDelete(scope.row)"-->
<!--            v-hasPermi="['main:info:remove']"-->
<!--          >删除</el-button>-->
<!--        </template>-->
<!--      </el-table-column>-->
    </el-table>
    <pagination
billion-ui/src/views/tool/build/RightPanel.vue
@@ -771,7 +771,7 @@
    },
    remove(node, data) {
      const { parent } = node
      const children = parent.data.children || parent.data
      const children = parent.index.children || parent.index
      const index = children.findIndex(d => d.id === data.id)
      children.splice(index, 1)
    },
billion-ui/vue.config.js
@@ -18,7 +18,8 @@
  // éƒ¨ç½²ç”Ÿäº§çŽ¯å¢ƒå’Œå¼€å‘环境下的URL。
  // é»˜è®¤æƒ…况下,Vue CLI ä¼šå‡è®¾ä½ çš„应用是被部署在一个域名的根路径上
  // ä¾‹å¦‚ https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl ä¸º /admin/。
  publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
  // publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
  publicPath: "./",
  // åœ¨npm run build æˆ– yarn build æ—¶ ï¼Œç”Ÿæˆæ–‡ä»¶çš„目录名称(要和baseUrl的生产环境路径一致)(默认dist)
  outputDir: 'dist',
  // ç”¨äºŽæ”¾ç½®ç”Ÿæˆçš„静态资源 (js、css、img、fonts) çš„;(项目打包之后,静态资源会放在这个文件夹下)
@@ -26,7 +27,7 @@
  // æ˜¯å¦å¼€å¯eslint保存检测,有效值:ture | false | 'error'
  lintOnSave: process.env.NODE_ENV === 'development',
  // å¦‚果你不需要生产环境的 source map,可以将其设置为 false ä»¥åŠ é€Ÿç”Ÿäº§çŽ¯å¢ƒæž„建。
  productionSourceMap: false,
  productionSourceMap: true,
  transpileDependencies: ['quill'],
  // webpack-dev-server ç›¸å…³é…ç½®
  devServer: {
@@ -36,7 +37,7 @@
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://localhost:8080`,
        target: `http://192.168.20.9:8080`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''