From ffeba3afc3a78c0f479f500f3d68d5c6915c7851 Mon Sep 17 00:00:00 2001
From: 懒羊羊 <15939171744@163.com>
Date: 星期一, 09 十月 2023 16:58:18 +0800
Subject: [PATCH] 配方基础表

---
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/service/impl/FormulaInfoServiceImpl.java           |   84 +
 guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo_edit.js                               |   62 +
 guns-vip-main/src/main/sqls/formulaChildInfo_menus.sql                                                                  |    4 
 guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo_edit.html                              |   94 +
 guns-vip-main/src/main/webapp/pages/modular/kb/formula/formulaView.html                                                 |    6 
 guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo_add.js                                          |   63 +
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/controller/FormulaInfoController.java              |  136 ++
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/service/FormulaChildInfoService.java          |   69 +
 guns-vip-main/src/main/webapp/assets/modular/kb/formula/formulaView.js                                                  |    1 
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/mapper/mapping/FormulaChildInfoMapper.xml     |  120 ++
 guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo_edit.js                                         |   67 +
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/entity/FormulaInfo.java                            |  195 ++++
 guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo.html                                             |   38 
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/model/result/FormulaChildInfoResult.java      |  127 ++
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/model/result/FormulaInfoResult.java                |   77 +
 guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo_add.js                                |   57 +
 guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo_add.html                               |  118 ++
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/model/params/FormulaInfoParam.java                 |   83 +
 guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo.js                                    |  164 +++
 guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo.js                                              |  139 ++
 guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo.html                                   |   49 +
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/mapper/FormulaChildInfoMapper.java            |   56 +
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/mapper/FormulaInfoMapper.java                      |   56 +
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/mapper/mapping/FormulaInfoMapper.xml               |   74 +
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/model/params/FormulaChildInfoParam.java       |  133 ++
 guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo_add.html                                         |   58 +
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/service/impl/FormulaChildInfoServiceImpl.java |   84 +
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/controller/FormulaChildInfoController.java    |  158 +++
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/entity/FormulaChildInfo.java                  |  345 +++++++
 guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/service/FormulaInfoService.java                    |   69 +
 guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo_edit.html                                        |   58 +
 guns-vip-main/src/main/sqls/formulaInfo_menus.sql                                                                       |    4 
 32 files changed, 2,847 insertions(+), 1 deletions(-)

diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/controller/FormulaInfoController.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/controller/FormulaInfoController.java
new file mode 100644
index 0000000..3313fb3
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/controller/FormulaInfoController.java
@@ -0,0 +1,136 @@
+package cn.stylefeng.guns.modular.zsx.bs.formula.controller;
+
+import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.entity.FormulaInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.model.params.FormulaInfoParam;
+import cn.stylefeng.guns.modular.zsx.bs.formula.service.FormulaInfoService;
+import cn.stylefeng.roses.core.base.controller.BaseController;
+import cn.stylefeng.roses.kernel.model.response.ResponseData;
+import cn.stylefeng.roses.core.mutidatasource.annotion.DataSource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+
+
+/**
+ * 閰嶆柟閰嶇疆鎺у埗鍣�
+ *
+ * @author ruimin
+ * @Date 2023-10-09 15:39:01
+ */
+@Controller
+@RequestMapping("/formulaInfo")
+public class FormulaInfoController extends BaseController {
+
+    private String PREFIX = "/modular/bs/formulaInfo";
+
+    @Autowired
+    private FormulaInfoService formulaInfoService;
+
+    /**
+     * 璺宠浆鍒颁富椤甸潰
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("")
+    public String index() {
+        return PREFIX + "/formulaInfo.html";
+    }
+
+    /**
+     * 鏂板椤甸潰
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/add")
+    public String add() {
+        return PREFIX + "/formulaInfo_add.html";
+    }
+
+    /**
+     * 缂栬緫椤甸潰
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/edit")
+    public String edit() {
+        return PREFIX + "/formulaInfo_edit.html";
+    }
+
+    /**
+     * 鏂板鎺ュ彛
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/addItem")
+    @ResponseBody
+    @DataSource(name = "self")
+    public ResponseData addItem(FormulaInfoParam formulaInfoParam) {
+        this.formulaInfoService.add(formulaInfoParam);
+        return ResponseData.success();
+    }
+
+    /**
+     * 缂栬緫鎺ュ彛
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/editItem")
+    @ResponseBody
+    @DataSource(name = "self")
+    public ResponseData editItem(FormulaInfoParam formulaInfoParam) {
+        this.formulaInfoService.update(formulaInfoParam);
+        return ResponseData.success();
+    }
+
+    /**
+     * 鍒犻櫎鎺ュ彛
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/delete")
+    @ResponseBody
+    @DataSource(name = "self")
+    public ResponseData delete(FormulaInfoParam formulaInfoParam) {
+        this.formulaInfoService.delete(formulaInfoParam);
+        return ResponseData.success();
+    }
+
+    /**
+     * 鏌ョ湅璇︽儏鎺ュ彛
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/detail")
+    @ResponseBody
+    @DataSource(name = "self")
+    public ResponseData detail(FormulaInfoParam formulaInfoParam) {
+        FormulaInfo detail = this.formulaInfoService.getById(formulaInfoParam.getId());
+        return ResponseData.success(detail);
+    }
+
+    /**
+     * 鏌ヨ鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @ResponseBody
+    @RequestMapping("/list")
+    @DataSource(name = "self")
+    public LayuiPageInfo list(FormulaInfoParam formulaInfoParam) {
+        return this.formulaInfoService.findPageBySpec(formulaInfoParam);
+    }
+
+}
+
+
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/entity/FormulaInfo.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/entity/FormulaInfo.java
new file mode 100644
index 0000000..1261142
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/entity/FormulaInfo.java
@@ -0,0 +1,195 @@
+package cn.stylefeng.guns.modular.zsx.bs.formula.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+@TableName("bs_formula_info")
+public class FormulaInfo implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 涓婚敭id
+     */
+      @TableId(value = "id", type = IdType.ID_WORKER)
+    private Long id;
+
+    /**
+     * 閰嶆柟缂栫爜
+     */
+    @TableField("formula_code")
+    private String formulaCode;
+
+    /**
+     * 閰嶆柟鍚嶇О
+     */
+    @TableField("formula_name")
+    private String formulaName;
+
+    /**
+     * 鐘舵��(瀛楀吀)
+     */
+    @TableField("status")
+    private String status;
+
+    /**
+     * 棰勭暀瀛楁1
+     */
+    @TableField("spare_field_1")
+    private String spareField1;
+
+    /**
+     * 棰勭暀瀛楁2
+     */
+    @TableField("spare_field_2")
+    private String spareField2;
+
+    /**
+     * 澶囨敞
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 鍒涘缓鐢ㄦ埛
+     */
+      @TableField(value = "create_user", fill = FieldFill.INSERT)
+    private String createUser;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+      @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /**
+     * 鏇存敼鐢ㄦ埛
+     */
+      @TableField(value = "update_user", fill = FieldFill.UPDATE)
+    private String updateUser;
+
+    /**
+     * 鏇存敼鏃堕棿
+     */
+      @TableField(value = "update_time", fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getFormulaCode() {
+        return formulaCode;
+    }
+
+    public void setFormulaCode(String formulaCode) {
+        this.formulaCode = formulaCode;
+    }
+
+    public String getFormulaName() {
+        return formulaName;
+    }
+
+    public void setFormulaName(String formulaName) {
+        this.formulaName = formulaName;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getSpareField1() {
+        return spareField1;
+    }
+
+    public void setSpareField1(String spareField1) {
+        this.spareField1 = spareField1;
+    }
+
+    public String getSpareField2() {
+        return spareField2;
+    }
+
+    public void setSpareField2(String spareField2) {
+        this.spareField2 = spareField2;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateUser() {
+        return updateUser;
+    }
+
+    public void setUpdateUser(String updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String toString() {
+        return "FormulaInfo{" +
+        "id=" + id +
+        ", formulaCode=" + formulaCode +
+        ", formulaName=" + formulaName +
+        ", status=" + status +
+        ", spareField1=" + spareField1 +
+        ", spareField2=" + spareField2 +
+        ", remark=" + remark +
+        ", createUser=" + createUser +
+        ", createTime=" + createTime +
+        ", updateUser=" + updateUser +
+        ", updateTime=" + updateTime +
+        "}";
+    }
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/mapper/FormulaInfoMapper.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/mapper/FormulaInfoMapper.java
new file mode 100644
index 0000000..2de43ad
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/mapper/FormulaInfoMapper.java
@@ -0,0 +1,56 @@
+package cn.stylefeng.guns.modular.zsx.bs.formula.mapper;
+
+import cn.stylefeng.guns.modular.zsx.bs.formula.entity.FormulaInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.model.params.FormulaInfoParam;
+import cn.stylefeng.guns.modular.zsx.bs.formula.model.result.FormulaInfoResult;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+public interface FormulaInfoMapper extends BaseMapper<FormulaInfo> {
+
+    /**
+     * 鑾峰彇鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    List<FormulaInfoResult> customList(@Param("paramCondition") FormulaInfoParam paramCondition);
+
+    /**
+     * 鑾峰彇map鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    List<Map<String, Object>> customMapList(@Param("paramCondition") FormulaInfoParam paramCondition);
+
+    /**
+     * 鑾峰彇鍒嗛〉瀹炰綋鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    Page<FormulaInfoResult> customPageList(@Param("page") Page page, @Param("paramCondition") FormulaInfoParam paramCondition);
+
+    /**
+     * 鑾峰彇鍒嗛〉map鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    Page<Map<String, Object>> customPageMapList(@Param("page") Page page, @Param("paramCondition") FormulaInfoParam paramCondition);
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/mapper/mapping/FormulaInfoMapper.xml b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/mapper/mapping/FormulaInfoMapper.xml
new file mode 100644
index 0000000..6deefb7
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/mapper/mapping/FormulaInfoMapper.xml
@@ -0,0 +1,74 @@
+<?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="cn.stylefeng.guns.modular.zsx.bs.formula.mapper.FormulaInfoMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.zsx.bs.formula.entity.FormulaInfo">
+        <id column="id" property="id" />
+        <result column="formula_code" property="formulaCode" />
+        <result column="formula_name" property="formulaName" />
+        <result column="status" property="status" />
+        <result column="spare_field_1" property="spareField1" />
+        <result column="spare_field_2" property="spareField2" />
+        <result column="remark" property="remark" />
+        <result column="create_user" property="createUser" />
+        <result column="create_time" property="createTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <!-- 閫氱敤鏌ヨ缁撴灉鍒� -->
+    <sql id="Base_Column_List">
+        id AS "id", formula_code AS "formulaCode", formula_name AS "formulaName", status AS "status", spare_field_1 AS "spareField1", spare_field_2 AS "spareField2", remark AS "remark", create_user AS "createUser", create_time AS "createTime", update_user AS "updateUser", update_time AS "updateTime"
+    </sql>
+
+
+    <select id="customList" resultType="cn.stylefeng.guns.modular.zsx.bs.formula.model.result.FormulaInfoResult" parameterType="cn.stylefeng.guns.modular.zsx.bs.formula.model.params.FormulaInfoParam">
+        select
+        <include refid="Base_Column_List"/>
+        from bs_formula_info where 1 = 1
+            <if test="paramCondition.formulaCode != null and paramCondition.formulaCode != ''">
+                and formula_code like CONCAT('%',#{paramCondition.formulaCode},'%')
+            </if>
+            <if test="paramCondition.formulaName != null and paramCondition.formulaName != ''">
+                and formula_name like CONCAT('%',#{paramCondition.formulaName},'%')
+            </if>
+    </select>
+
+    <select id="customMapList" resultType="map" parameterType="cn.stylefeng.guns.modular.zsx.bs.formula.model.params.FormulaInfoParam">
+        select
+        <include refid="Base_Column_List"/>
+        from bs_formula_info where 1 = 1
+            <if test="paramCondition.formulaCode != null and paramCondition.formulaCode != ''">
+                and formula_code like CONCAT('%',#{paramCondition.formulaCode},'%')
+            </if>
+            <if test="paramCondition.formulaName != null and paramCondition.formulaName != ''">
+                and formula_name like CONCAT('%',#{paramCondition.formulaName},'%')
+            </if>
+    </select>
+
+    <select id="customPageList" resultType="cn.stylefeng.guns.modular.zsx.bs.formula.model.result.FormulaInfoResult" parameterType="cn.stylefeng.guns.modular.zsx.bs.formula.model.params.FormulaInfoParam">
+        select
+        <include refid="Base_Column_List"/>
+        from bs_formula_info where 1 = 1
+            <if test="paramCondition.formulaCode != null and paramCondition.formulaCode != ''">
+                and formula_code like CONCAT('%',#{paramCondition.formulaCode},'%')
+            </if>
+            <if test="paramCondition.formulaName != null and paramCondition.formulaName != ''">
+                and formula_name like CONCAT('%',#{paramCondition.formulaName},'%')
+            </if>
+    </select>
+
+    <select id="customPageMapList" resultType="map" parameterType="cn.stylefeng.guns.modular.zsx.bs.formula.model.params.FormulaInfoParam">
+        select
+        <include refid="Base_Column_List"/>
+        from bs_formula_info where 1 = 1
+            <if test="paramCondition.formulaCode != null and paramCondition.formulaCode != ''">
+                and formula_code like CONCAT('%',#{paramCondition.formulaCode},'%')
+            </if>
+            <if test="paramCondition.formulaName != null and paramCondition.formulaName != ''">
+                and formula_name like CONCAT('%',#{paramCondition.formulaName},'%')
+            </if>
+    </select>
+
+</mapper>
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/model/params/FormulaInfoParam.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/model/params/FormulaInfoParam.java
new file mode 100644
index 0000000..57e3aad
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/model/params/FormulaInfoParam.java
@@ -0,0 +1,83 @@
+package cn.stylefeng.guns.modular.zsx.bs.formula.model.params;
+
+import lombok.Data;
+import cn.stylefeng.roses.kernel.model.validator.BaseValidatingParam;
+import java.util.Date;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+@Data
+public class FormulaInfoParam implements Serializable, BaseValidatingParam {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 涓婚敭id
+     */
+    private Long id;
+
+    /**
+     * 閰嶆柟缂栫爜
+     */
+    private String formulaCode;
+
+    /**
+     * 閰嶆柟鍚嶇О
+     */
+    private String formulaName;
+
+    /**
+     * 鐘舵��(瀛楀吀)
+     */
+    private String status;
+
+    /**
+     * 棰勭暀瀛楁1
+     */
+    private String spareField1;
+
+    /**
+     * 棰勭暀瀛楁2
+     */
+    private String spareField2;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+    /**
+     * 鍒涘缓鐢ㄦ埛
+     */
+    private String createUser;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+
+    /**
+     * 鏇存敼鐢ㄦ埛
+     */
+    private String updateUser;
+
+    /**
+     * 鏇存敼鏃堕棿
+     */
+    private Date updateTime;
+
+    @Override
+    public String checkParam() {
+        return null;
+    }
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/model/result/FormulaInfoResult.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/model/result/FormulaInfoResult.java
new file mode 100644
index 0000000..2d7b0ab
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/model/result/FormulaInfoResult.java
@@ -0,0 +1,77 @@
+package cn.stylefeng.guns.modular.zsx.bs.formula.model.result;
+
+import lombok.Data;
+import java.util.Date;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+@Data
+public class FormulaInfoResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 涓婚敭id
+     */
+    private Long id;
+
+    /**
+     * 閰嶆柟缂栫爜
+     */
+    private String formulaCode;
+
+    /**
+     * 閰嶆柟鍚嶇О
+     */
+    private String formulaName;
+
+    /**
+     * 鐘舵��(瀛楀吀)
+     */
+    private String status;
+
+    /**
+     * 棰勭暀瀛楁1
+     */
+    private String spareField1;
+
+    /**
+     * 棰勭暀瀛楁2
+     */
+    private String spareField2;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+    /**
+     * 鍒涘缓鐢ㄦ埛
+     */
+    private String createUser;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+
+    /**
+     * 鏇存敼鐢ㄦ埛
+     */
+    private String updateUser;
+
+    /**
+     * 鏇存敼鏃堕棿
+     */
+    private Date updateTime;
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/service/FormulaInfoService.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/service/FormulaInfoService.java
new file mode 100644
index 0000000..3806e22
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/service/FormulaInfoService.java
@@ -0,0 +1,69 @@
+package cn.stylefeng.guns.modular.zsx.bs.formula.service;
+
+import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.entity.FormulaInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.model.params.FormulaInfoParam;
+import cn.stylefeng.guns.modular.zsx.bs.formula.model.result.FormulaInfoResult;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆 鏈嶅姟绫�
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+public interface FormulaInfoService extends IService<FormulaInfo> {
+
+    /**
+     * 鏂板
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    void add(FormulaInfoParam param);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    void delete(FormulaInfoParam param);
+
+    /**
+     * 鏇存柊
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    void update(FormulaInfoParam param);
+
+    /**
+     * 鏌ヨ鍗曟潯鏁版嵁锛孲pecification妯″紡
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    FormulaInfoResult findBySpec(FormulaInfoParam param);
+
+    /**
+     * 鏌ヨ鍒楄〃锛孲pecification妯″紡
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    List<FormulaInfoResult> findListBySpec(FormulaInfoParam param);
+
+    /**
+     * 鏌ヨ鍒嗛〉鏁版嵁锛孲pecification妯″紡
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+     LayuiPageInfo findPageBySpec(FormulaInfoParam param);
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/service/impl/FormulaInfoServiceImpl.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/service/impl/FormulaInfoServiceImpl.java
new file mode 100644
index 0000000..043cd5b
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formula/service/impl/FormulaInfoServiceImpl.java
@@ -0,0 +1,84 @@
+package cn.stylefeng.guns.modular.zsx.bs.formula.service.impl;
+
+import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
+import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.entity.FormulaInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.mapper.FormulaInfoMapper;
+import cn.stylefeng.guns.modular.zsx.bs.formula.model.params.FormulaInfoParam;
+import cn.stylefeng.guns.modular.zsx.bs.formula.model.result.FormulaInfoResult;
+import  cn.stylefeng.guns.modular.zsx.bs.formula.service.FormulaInfoService;
+import cn.stylefeng.roses.core.util.ToolUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+@Service
+public class FormulaInfoServiceImpl extends ServiceImpl<FormulaInfoMapper, FormulaInfo> implements FormulaInfoService {
+
+    @Override
+    public void add(FormulaInfoParam param){
+        FormulaInfo entity = getEntity(param);
+        this.save(entity);
+    }
+
+    @Override
+    public void delete(FormulaInfoParam param){
+        this.removeById(getKey(param));
+    }
+
+    @Override
+    public void update(FormulaInfoParam param){
+        FormulaInfo oldEntity = getOldEntity(param);
+        FormulaInfo newEntity = getEntity(param);
+        ToolUtil.copyProperties(newEntity, oldEntity);
+        this.updateById(newEntity);
+    }
+
+    @Override
+    public FormulaInfoResult findBySpec(FormulaInfoParam param){
+        return null;
+    }
+
+    @Override
+    public List<FormulaInfoResult> findListBySpec(FormulaInfoParam param){
+        return null;
+    }
+
+    @Override
+    public LayuiPageInfo findPageBySpec(FormulaInfoParam param){
+        Page pageContext = getPageContext();
+        IPage page = this.baseMapper.customPageList(pageContext, param);
+        return LayuiPageFactory.createPageInfo(page);
+    }
+
+    private Serializable getKey(FormulaInfoParam param){
+        return param.getId();
+    }
+
+    private Page getPageContext() {
+        return LayuiPageFactory.defaultPage();
+    }
+
+    private FormulaInfo getOldEntity(FormulaInfoParam param) {
+        return this.getById(getKey(param));
+    }
+
+    private FormulaInfo getEntity(FormulaInfoParam param) {
+        FormulaInfo entity = new FormulaInfo();
+        ToolUtil.copyProperties(param, entity);
+        return entity;
+    }
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/controller/FormulaChildInfoController.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/controller/FormulaChildInfoController.java
new file mode 100644
index 0000000..880ccdf
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/controller/FormulaChildInfoController.java
@@ -0,0 +1,158 @@
+package cn.stylefeng.guns.modular.zsx.bs.formulaChild.controller;
+
+import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.entity.FormulaInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formula.service.FormulaInfoService;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.entity.FormulaChildInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params.FormulaChildInfoParam;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.service.FormulaChildInfoService;
+import cn.stylefeng.guns.modular.zsx.bs.productBomInfo.entity.ProductBomInfo;
+import cn.stylefeng.roses.core.base.controller.BaseController;
+import cn.stylefeng.roses.kernel.model.exception.RequestEmptyException;
+import cn.stylefeng.roses.kernel.model.response.ResponseData;
+import cn.stylefeng.roses.core.mutidatasource.annotion.DataSource;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+
+
+/**
+ * 閰嶆柟閰嶇疆瀛愪俊鎭帶鍒跺櫒
+ *
+ * @author ruimin
+ * @Date 2023-10-09 15:45:10
+ */
+@Controller
+@RequestMapping("/formulaChildInfo")
+public class FormulaChildInfoController extends BaseController {
+
+    private String PREFIX = "/modular/bs/formulaChildInfo";
+
+    @Autowired
+    private FormulaChildInfoService formulaChildInfoService;
+
+    @Autowired
+    private FormulaInfoService formulaInfoService;
+
+    /**
+     * 璺宠浆鍒颁富椤甸潰
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("")
+    @DataSource(name = "self")
+    public String index(@RequestParam("formulaCode") String formulaCode, Model model) {
+        model.addAttribute("formulaInfoCode", formulaCode);
+        FormulaInfo formulaInfo = formulaInfoService.getOne(new QueryWrapper<FormulaInfo>().eq("formula_code", formulaCode));
+        if (formulaInfo == null) {
+            throw new RequestEmptyException();
+        }
+        return PREFIX + "/formulaChildInfo.html";
+    }
+
+    /**
+     * 鏂板椤甸潰
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/add")
+    @DataSource(name = "self")
+    public String add(@RequestParam("formulaInfoCode") String formulaCode, Model model) {
+        model.addAttribute("formulaInfoCode", formulaCode);
+        FormulaInfo formulaInfo = formulaInfoService.getOne(new QueryWrapper<FormulaInfo>().eq("formula_code", formulaCode));
+        if (formulaInfo == null) {
+            throw new RequestEmptyException();
+        }
+        return PREFIX + "/formulaChildInfo_add.html";
+    }
+
+    /**
+     * 缂栬緫椤甸潰
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/edit")
+    public String edit() {
+        return PREFIX + "/formulaChildInfo_edit.html";
+    }
+
+    /**
+     * 鏂板鎺ュ彛
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/addItem")
+    @ResponseBody
+    @DataSource(name = "self")
+    public ResponseData addItem(FormulaChildInfoParam formulaChildInfoParam) {
+        this.formulaChildInfoService.add(formulaChildInfoParam);
+        return ResponseData.success();
+    }
+
+    /**
+     * 缂栬緫鎺ュ彛
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/editItem")
+    @ResponseBody
+    @DataSource(name = "self")
+    public ResponseData editItem(FormulaChildInfoParam formulaChildInfoParam) {
+        this.formulaChildInfoService.update(formulaChildInfoParam);
+        return ResponseData.success();
+    }
+
+    /**
+     * 鍒犻櫎鎺ュ彛
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/delete")
+    @ResponseBody
+    @DataSource(name = "self")
+    public ResponseData delete(FormulaChildInfoParam formulaChildInfoParam) {
+        this.formulaChildInfoService.delete(formulaChildInfoParam);
+        return ResponseData.success();
+    }
+
+    /**
+     * 鏌ョ湅璇︽儏鎺ュ彛
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @RequestMapping("/detail")
+    @ResponseBody
+    @DataSource(name = "self")
+    public ResponseData detail(FormulaChildInfoParam formulaChildInfoParam) {
+        FormulaChildInfo detail = this.formulaChildInfoService.getById(formulaChildInfoParam.getId());
+        return ResponseData.success(detail);
+    }
+
+    /**
+     * 鏌ヨ鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    @ResponseBody
+    @RequestMapping("/list")
+    @DataSource(name = "self")
+    public LayuiPageInfo list(FormulaChildInfoParam formulaChildInfoParam) {
+        return this.formulaChildInfoService.findPageBySpec(formulaChildInfoParam);
+    }
+
+}
+
+
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/entity/FormulaChildInfo.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/entity/FormulaChildInfo.java
new file mode 100644
index 0000000..d3f0b57
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/entity/FormulaChildInfo.java
@@ -0,0 +1,345 @@
+package cn.stylefeng.guns.modular.zsx.bs.formulaChild.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆瀛愪俊鎭�
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+@TableName("bs_formula_child_info")
+public class FormulaChildInfo implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * id
+     */
+      @TableId(value = "id", type = IdType.ID_WORKER)
+    private Long id;
+
+    /**
+     * 閰嶆柟缂栫爜
+     */
+    @TableField("formula_code")
+    private String formulaCode;
+
+    /**
+     * 浜х嚎
+     */
+    @TableField("line_code")
+    private String lineCode;
+
+    /**
+     * 宸ヤ綅
+     */
+    @TableField("location_code")
+    private String locationCode;
+
+    /**
+     * 浜у搧缂栧彿
+     */
+    @TableField("product_code")
+    private String productCode;
+
+    /**
+     * 鎿嶄綔鍐呭
+     */
+    @TableField("operation_steps")
+    private String operationSteps;
+
+    /**
+     * 鎶�鏈姹�
+     */
+    @TableField("tech_requirement")
+    private String techRequirement;
+
+    /**
+     * 绫诲瀷锛堟壂鎻忎骇鍝佹潯鐮�1銆佹壂鎻忕墿鏂欐潯鐮�2銆佹嫥绱х被3锛�
+     */
+    @TableField("operation_type")
+    private String operationType;
+
+    /**
+     * 鎺掑簭
+     */
+    @TableField("step_sort")
+    private String stepSort;
+
+    /**
+     * 鍙傛暟缂栫爜
+     */
+    @TableField("param_code")
+    private String paramCode;
+
+    /**
+     * 鐗╂枡缂栫爜
+     */
+    @TableField("material_code")
+    private String materialCode;
+
+    /**
+     * 鍥剧墖
+     */
+    @TableField("picture")
+    private String picture;
+
+    /**
+     * 澶囨敞
+     */
+    @TableField("remarks")
+    private String remarks;
+
+    /**
+     * 棰勭暀瀛楁1
+     */
+    @TableField("spare_field_1")
+    private String spareField1;
+
+    /**
+     * 棰勭暀瀛楁2
+     */
+    @TableField("spare_field_2")
+    private String spareField2;
+
+    /**
+     * 棰勭暀瀛楁3
+     */
+    @TableField("spare_field_3")
+    private String spareField3;
+
+    /**
+     * 棰勭暀瀛楁4
+     */
+    @TableField("spare_field_4")
+    private String spareField4;
+
+    /**
+     * 鍒涘缓鐢ㄦ埛
+     */
+      @TableField(value = "create_user", fill = FieldFill.INSERT)
+    private String createUser;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+      @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /**
+     * 鏇存敼鐢ㄦ埛
+     */
+      @TableField(value = "update_user", fill = FieldFill.UPDATE)
+    private String updateUser;
+
+    /**
+     * 鏇存敼鏃堕棿
+     */
+      @TableField(value = "update_time", fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getFormulaCode() {
+        return formulaCode;
+    }
+
+    public void setFormulaCode(String formulaCode) {
+        this.formulaCode = formulaCode;
+    }
+
+    public String getLineCode() {
+        return lineCode;
+    }
+
+    public void setLineCode(String lineCode) {
+        this.lineCode = lineCode;
+    }
+
+    public String getLocationCode() {
+        return locationCode;
+    }
+
+    public void setLocationCode(String locationCode) {
+        this.locationCode = locationCode;
+    }
+
+    public String getProductCode() {
+        return productCode;
+    }
+
+    public void setProductCode(String productCode) {
+        this.productCode = productCode;
+    }
+
+    public String getOperationSteps() {
+        return operationSteps;
+    }
+
+    public void setOperationSteps(String operationSteps) {
+        this.operationSteps = operationSteps;
+    }
+
+    public String getTechRequirement() {
+        return techRequirement;
+    }
+
+    public void setTechRequirement(String techRequirement) {
+        this.techRequirement = techRequirement;
+    }
+
+    public String getOperationType() {
+        return operationType;
+    }
+
+    public void setOperationType(String operationType) {
+        this.operationType = operationType;
+    }
+
+    public String getStepSort() {
+        return stepSort;
+    }
+
+    public void setStepSort(String stepSort) {
+        this.stepSort = stepSort;
+    }
+
+    public String getParamCode() {
+        return paramCode;
+    }
+
+    public void setParamCode(String paramCode) {
+        this.paramCode = paramCode;
+    }
+
+    public String getMaterialCode() {
+        return materialCode;
+    }
+
+    public void setMaterialCode(String materialCode) {
+        this.materialCode = materialCode;
+    }
+
+    public String getPicture() {
+        return picture;
+    }
+
+    public void setPicture(String picture) {
+        this.picture = picture;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getSpareField1() {
+        return spareField1;
+    }
+
+    public void setSpareField1(String spareField1) {
+        this.spareField1 = spareField1;
+    }
+
+    public String getSpareField2() {
+        return spareField2;
+    }
+
+    public void setSpareField2(String spareField2) {
+        this.spareField2 = spareField2;
+    }
+
+    public String getSpareField3() {
+        return spareField3;
+    }
+
+    public void setSpareField3(String spareField3) {
+        this.spareField3 = spareField3;
+    }
+
+    public String getSpareField4() {
+        return spareField4;
+    }
+
+    public void setSpareField4(String spareField4) {
+        this.spareField4 = spareField4;
+    }
+
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateUser() {
+        return updateUser;
+    }
+
+    public void setUpdateUser(String updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    @Override
+    public String toString() {
+        return "FormulaChildInfo{" +
+        "id=" + id +
+        ", formulaCode=" + formulaCode +
+        ", lineCode=" + lineCode +
+        ", locationCode=" + locationCode +
+        ", productCode=" + productCode +
+        ", operationSteps=" + operationSteps +
+        ", techRequirement=" + techRequirement +
+        ", operationType=" + operationType +
+        ", stepSort=" + stepSort +
+        ", paramCode=" + paramCode +
+        ", materialCode=" + materialCode +
+        ", picture=" + picture +
+        ", remarks=" + remarks +
+        ", spareField1=" + spareField1 +
+        ", spareField2=" + spareField2 +
+        ", spareField3=" + spareField3 +
+        ", spareField4=" + spareField4 +
+        ", createUser=" + createUser +
+        ", createTime=" + createTime +
+        ", updateUser=" + updateUser +
+        ", updateTime=" + updateTime +
+        "}";
+    }
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/mapper/FormulaChildInfoMapper.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/mapper/FormulaChildInfoMapper.java
new file mode 100644
index 0000000..f51502f
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/mapper/FormulaChildInfoMapper.java
@@ -0,0 +1,56 @@
+package cn.stylefeng.guns.modular.zsx.bs.formulaChild.mapper;
+
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.entity.FormulaChildInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params.FormulaChildInfoParam;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.result.FormulaChildInfoResult;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆瀛愪俊鎭� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+public interface FormulaChildInfoMapper extends BaseMapper<FormulaChildInfo> {
+
+    /**
+     * 鑾峰彇鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    List<FormulaChildInfoResult> customList(@Param("paramCondition") FormulaChildInfoParam paramCondition);
+
+    /**
+     * 鑾峰彇map鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    List<Map<String, Object>> customMapList(@Param("paramCondition") FormulaChildInfoParam paramCondition);
+
+    /**
+     * 鑾峰彇鍒嗛〉瀹炰綋鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    Page<FormulaChildInfoResult> customPageList(@Param("page") Page page, @Param("paramCondition") FormulaChildInfoParam paramCondition);
+
+    /**
+     * 鑾峰彇鍒嗛〉map鍒楄〃
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    Page<Map<String, Object>> customPageMapList(@Param("page") Page page, @Param("paramCondition") FormulaChildInfoParam paramCondition);
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/mapper/mapping/FormulaChildInfoMapper.xml b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/mapper/mapping/FormulaChildInfoMapper.xml
new file mode 100644
index 0000000..796d91a
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/mapper/mapping/FormulaChildInfoMapper.xml
@@ -0,0 +1,120 @@
+<?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="cn.stylefeng.guns.modular.zsx.bs.formulaChild.mapper.FormulaChildInfoMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.zsx.bs.formulaChild.entity.FormulaChildInfo">
+        <id column="id" property="id" />
+        <result column="formula_code" property="formulaCode" />
+        <result column="line_code" property="lineCode" />
+        <result column="location_code" property="locationCode" />
+        <result column="product_code" property="productCode" />
+        <result column="operation_steps" property="operationSteps" />
+        <result column="tech_requirement" property="techRequirement" />
+        <result column="operation_type" property="operationType" />
+        <result column="step_sort" property="stepSort" />
+        <result column="param_code" property="paramCode" />
+        <result column="material_code" property="materialCode" />
+        <result column="picture" property="picture" />
+        <result column="remarks" property="remarks" />
+        <result column="spare_field_1" property="spareField1" />
+        <result column="spare_field_2" property="spareField2" />
+        <result column="spare_field_3" property="spareField3" />
+        <result column="spare_field_4" property="spareField4" />
+        <result column="create_user" property="createUser" />
+        <result column="create_time" property="createTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <!-- 閫氱敤鏌ヨ缁撴灉鍒� -->
+    <sql id="Base_Column_List">
+        id AS "id", formula_code AS "formulaCode", line_code AS "lineCode", location_code AS "locationCode", product_code AS "productCode", operation_steps AS "operationSteps", tech_requirement AS "techRequirement", operation_type AS "operationType", step_sort AS "stepSort", param_code AS "paramCode", material_code AS "materialCode", picture AS "picture", remarks AS "remarks", spare_field_1 AS "spareField1", spare_field_2 AS "spareField2", spare_field_3 AS "spareField3", spare_field_4 AS "spareField4", create_user AS "createUser", create_time AS "createTime", update_user AS "updateUser", update_time AS "updateTime"
+    </sql>
+
+
+    <select id="customList" resultType="cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.result.FormulaChildInfoResult" parameterType="cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params.FormulaChildInfoParam">
+        select
+        <include refid="Base_Column_List"/>
+        from bs_formula_child_info where 1 = 1
+            <if test="paramCondition.formulaCode != null and paramCondition.formulaCode != ''">
+                and formula_code like CONCAT('%',#{paramCondition.formulaCode},'%')
+            </if>
+            <if test="paramCondition.lineCode != null and paramCondition.lineCode != ''">
+                and line_code like CONCAT('%',#{paramCondition.lineCode},'%')
+            </if>
+            <if test="paramCondition.locationCode != null and paramCondition.locationCode != ''">
+                and location_code like CONCAT('%',#{paramCondition.locationCode},'%')
+            </if>
+            <if test="paramCondition.productCode != null and paramCondition.productCode != ''">
+                and product_code like CONCAT('%',#{paramCondition.productCode},'%')
+            </if>
+            <if test="paramCondition.materialCode != null and paramCondition.materialCode != ''">
+                and material_code like CONCAT('%',#{paramCondition.materialCode},'%')
+            </if>
+    </select>
+
+    <select id="customMapList" resultType="map" parameterType="cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params.FormulaChildInfoParam">
+        select
+        <include refid="Base_Column_List"/>
+        from bs_formula_child_info where 1 = 1
+            <if test="paramCondition.formulaCode != null and paramCondition.formulaCode != ''">
+                and formula_code like CONCAT('%',#{paramCondition.formulaCode},'%')
+            </if>
+            <if test="paramCondition.lineCode != null and paramCondition.lineCode != ''">
+                and line_code like CONCAT('%',#{paramCondition.lineCode},'%')
+            </if>
+            <if test="paramCondition.locationCode != null and paramCondition.locationCode != ''">
+                and location_code like CONCAT('%',#{paramCondition.locationCode},'%')
+            </if>
+            <if test="paramCondition.productCode != null and paramCondition.productCode != ''">
+                and product_code like CONCAT('%',#{paramCondition.productCode},'%')
+            </if>
+            <if test="paramCondition.materialCode != null and paramCondition.materialCode != ''">
+                and material_code like CONCAT('%',#{paramCondition.materialCode},'%')
+            </if>
+    </select>
+
+    <select id="customPageList" resultType="cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.result.FormulaChildInfoResult" parameterType="cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params.FormulaChildInfoParam">
+        select
+        <include refid="Base_Column_List"/>
+        from bs_formula_child_info where 1 = 1
+            <if test="paramCondition.formulaCode != null and paramCondition.formulaCode != ''">
+                and formula_code like CONCAT('%',#{paramCondition.formulaCode},'%')
+            </if>
+            <if test="paramCondition.lineCode != null and paramCondition.lineCode != ''">
+                and line_code like CONCAT('%',#{paramCondition.lineCode},'%')
+            </if>
+            <if test="paramCondition.locationCode != null and paramCondition.locationCode != ''">
+                and location_code like CONCAT('%',#{paramCondition.locationCode},'%')
+            </if>
+            <if test="paramCondition.productCode != null and paramCondition.productCode != ''">
+                and product_code like CONCAT('%',#{paramCondition.productCode},'%')
+            </if>
+            <if test="paramCondition.materialCode != null and paramCondition.materialCode != ''">
+                and material_code like CONCAT('%',#{paramCondition.materialCode},'%')
+            </if>
+    </select>
+
+    <select id="customPageMapList" resultType="map" parameterType="cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params.FormulaChildInfoParam">
+        select
+        <include refid="Base_Column_List"/>
+        from bs_formula_child_info where 1 = 1
+            <if test="paramCondition.formulaCode != null and paramCondition.formulaCode != ''">
+                and formula_code like CONCAT('%',#{paramCondition.formulaCode},'%')
+            </if>
+            <if test="paramCondition.lineCode != null and paramCondition.lineCode != ''">
+                and line_code like CONCAT('%',#{paramCondition.lineCode},'%')
+            </if>
+            <if test="paramCondition.locationCode != null and paramCondition.locationCode != ''">
+                and location_code like CONCAT('%',#{paramCondition.locationCode},'%')
+            </if>
+            <if test="paramCondition.productCode != null and paramCondition.productCode != ''">
+                and product_code like CONCAT('%',#{paramCondition.productCode},'%')
+            </if>
+            <if test="paramCondition.materialCode != null and paramCondition.materialCode != ''">
+                and material_code like CONCAT('%',#{paramCondition.materialCode},'%')
+            </if>
+    </select>
+
+</mapper>
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/model/params/FormulaChildInfoParam.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/model/params/FormulaChildInfoParam.java
new file mode 100644
index 0000000..40badd3
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/model/params/FormulaChildInfoParam.java
@@ -0,0 +1,133 @@
+package cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params;
+
+import lombok.Data;
+import cn.stylefeng.roses.kernel.model.validator.BaseValidatingParam;
+import java.util.Date;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆瀛愪俊鎭�
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+@Data
+public class FormulaChildInfoParam implements Serializable, BaseValidatingParam {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 閰嶆柟缂栫爜
+     */
+    private String formulaCode;
+
+    /**
+     * 浜х嚎
+     */
+    private String lineCode;
+
+    /**
+     * 宸ヤ綅
+     */
+    private String locationCode;
+
+    /**
+     * 浜у搧缂栧彿
+     */
+    private String productCode;
+
+    /**
+     * 鎿嶄綔鍐呭
+     */
+    private String operationSteps;
+
+    /**
+     * 鎶�鏈姹�
+     */
+    private String techRequirement;
+
+    /**
+     * 绫诲瀷锛堟壂鎻忎骇鍝佹潯鐮�1銆佹壂鎻忕墿鏂欐潯鐮�2銆佹嫥绱х被3锛�
+     */
+    private String operationType;
+
+    /**
+     * 鎺掑簭
+     */
+    private String stepSort;
+
+    /**
+     * 鍙傛暟缂栫爜
+     */
+    private String paramCode;
+
+    /**
+     * 鐗╂枡缂栫爜
+     */
+    private String materialCode;
+
+    /**
+     * 鍥剧墖
+     */
+    private String picture;
+
+    /**
+     * 澶囨敞
+     */
+    private String remarks;
+
+    /**
+     * 棰勭暀瀛楁1
+     */
+    private String spareField1;
+
+    /**
+     * 棰勭暀瀛楁2
+     */
+    private String spareField2;
+
+    /**
+     * 棰勭暀瀛楁3
+     */
+    private String spareField3;
+
+    /**
+     * 棰勭暀瀛楁4
+     */
+    private String spareField4;
+
+    /**
+     * 鍒涘缓鐢ㄦ埛
+     */
+    private String createUser;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+
+    /**
+     * 鏇存敼鐢ㄦ埛
+     */
+    private String updateUser;
+
+    /**
+     * 鏇存敼鏃堕棿
+     */
+    private Date updateTime;
+
+    @Override
+    public String checkParam() {
+        return null;
+    }
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/model/result/FormulaChildInfoResult.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/model/result/FormulaChildInfoResult.java
new file mode 100644
index 0000000..f4d2cf4
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/model/result/FormulaChildInfoResult.java
@@ -0,0 +1,127 @@
+package cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.result;
+
+import lombok.Data;
+import java.util.Date;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆瀛愪俊鎭�
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+@Data
+public class FormulaChildInfoResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 閰嶆柟缂栫爜
+     */
+    private String formulaCode;
+
+    /**
+     * 浜х嚎
+     */
+    private String lineCode;
+
+    /**
+     * 宸ヤ綅
+     */
+    private String locationCode;
+
+    /**
+     * 浜у搧缂栧彿
+     */
+    private String productCode;
+
+    /**
+     * 鎿嶄綔鍐呭
+     */
+    private String operationSteps;
+
+    /**
+     * 鎶�鏈姹�
+     */
+    private String techRequirement;
+
+    /**
+     * 绫诲瀷锛堟壂鎻忎骇鍝佹潯鐮�1銆佹壂鎻忕墿鏂欐潯鐮�2銆佹嫥绱х被3锛�
+     */
+    private String operationType;
+
+    /**
+     * 鎺掑簭
+     */
+    private String stepSort;
+
+    /**
+     * 鍙傛暟缂栫爜
+     */
+    private String paramCode;
+
+    /**
+     * 鐗╂枡缂栫爜
+     */
+    private String materialCode;
+
+    /**
+     * 鍥剧墖
+     */
+    private String picture;
+
+    /**
+     * 澶囨敞
+     */
+    private String remarks;
+
+    /**
+     * 棰勭暀瀛楁1
+     */
+    private String spareField1;
+
+    /**
+     * 棰勭暀瀛楁2
+     */
+    private String spareField2;
+
+    /**
+     * 棰勭暀瀛楁3
+     */
+    private String spareField3;
+
+    /**
+     * 棰勭暀瀛楁4
+     */
+    private String spareField4;
+
+    /**
+     * 鍒涘缓鐢ㄦ埛
+     */
+    private String createUser;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+
+    /**
+     * 鏇存敼鐢ㄦ埛
+     */
+    private String updateUser;
+
+    /**
+     * 鏇存敼鏃堕棿
+     */
+    private Date updateTime;
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/service/FormulaChildInfoService.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/service/FormulaChildInfoService.java
new file mode 100644
index 0000000..a39bcc6
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/service/FormulaChildInfoService.java
@@ -0,0 +1,69 @@
+package cn.stylefeng.guns.modular.zsx.bs.formulaChild.service;
+
+import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.entity.FormulaChildInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params.FormulaChildInfoParam;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.result.FormulaChildInfoResult;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆瀛愪俊鎭� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+public interface FormulaChildInfoService extends IService<FormulaChildInfo> {
+
+    /**
+     * 鏂板
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    void add(FormulaChildInfoParam param);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    void delete(FormulaChildInfoParam param);
+
+    /**
+     * 鏇存柊
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    void update(FormulaChildInfoParam param);
+
+    /**
+     * 鏌ヨ鍗曟潯鏁版嵁锛孲pecification妯″紡
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    FormulaChildInfoResult findBySpec(FormulaChildInfoParam param);
+
+    /**
+     * 鏌ヨ鍒楄〃锛孲pecification妯″紡
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+    List<FormulaChildInfoResult> findListBySpec(FormulaChildInfoParam param);
+
+    /**
+     * 鏌ヨ鍒嗛〉鏁版嵁锛孲pecification妯″紡
+     *
+     * @author ruimin
+     * @Date 2023-10-09
+     */
+     LayuiPageInfo findPageBySpec(FormulaChildInfoParam param);
+
+}
diff --git a/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/service/impl/FormulaChildInfoServiceImpl.java b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/service/impl/FormulaChildInfoServiceImpl.java
new file mode 100644
index 0000000..17c2130
--- /dev/null
+++ b/guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/bs/formulaChild/service/impl/FormulaChildInfoServiceImpl.java
@@ -0,0 +1,84 @@
+package cn.stylefeng.guns.modular.zsx.bs.formulaChild.service.impl;
+
+import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
+import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.entity.FormulaChildInfo;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.mapper.FormulaChildInfoMapper;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.params.FormulaChildInfoParam;
+import cn.stylefeng.guns.modular.zsx.bs.formulaChild.model.result.FormulaChildInfoResult;
+import  cn.stylefeng.guns.modular.zsx.bs.formulaChild.service.FormulaChildInfoService;
+import cn.stylefeng.roses.core.util.ToolUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 閰嶆柟閰嶇疆瀛愪俊鎭� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author ruimin
+ * @since 2023-10-09
+ */
+@Service
+public class FormulaChildInfoServiceImpl extends ServiceImpl<FormulaChildInfoMapper, FormulaChildInfo> implements FormulaChildInfoService {
+
+    @Override
+    public void add(FormulaChildInfoParam param){
+        FormulaChildInfo entity = getEntity(param);
+        this.save(entity);
+    }
+
+    @Override
+    public void delete(FormulaChildInfoParam param){
+        this.removeById(getKey(param));
+    }
+
+    @Override
+    public void update(FormulaChildInfoParam param){
+        FormulaChildInfo oldEntity = getOldEntity(param);
+        FormulaChildInfo newEntity = getEntity(param);
+        ToolUtil.copyProperties(newEntity, oldEntity);
+        this.updateById(newEntity);
+    }
+
+    @Override
+    public FormulaChildInfoResult findBySpec(FormulaChildInfoParam param){
+        return null;
+    }
+
+    @Override
+    public List<FormulaChildInfoResult> findListBySpec(FormulaChildInfoParam param){
+        return null;
+    }
+
+    @Override
+    public LayuiPageInfo findPageBySpec(FormulaChildInfoParam param){
+        Page pageContext = getPageContext();
+        IPage page = this.baseMapper.customPageList(pageContext, param);
+        return LayuiPageFactory.createPageInfo(page);
+    }
+
+    private Serializable getKey(FormulaChildInfoParam param){
+        return param.getId();
+    }
+
+    private Page getPageContext() {
+        return LayuiPageFactory.defaultPage();
+    }
+
+    private FormulaChildInfo getOldEntity(FormulaChildInfoParam param) {
+        return this.getById(getKey(param));
+    }
+
+    private FormulaChildInfo getEntity(FormulaChildInfoParam param) {
+        FormulaChildInfo entity = new FormulaChildInfo();
+        ToolUtil.copyProperties(param, entity);
+        return entity;
+    }
+
+}
diff --git a/guns-vip-main/src/main/sqls/formulaChildInfo_menus.sql b/guns-vip-main/src/main/sqls/formulaChildInfo_menus.sql
new file mode 100644
index 0000000..81a9317
--- /dev/null
+++ b/guns-vip-main/src/main/sqls/formulaChildInfo_menus.sql
@@ -0,0 +1,4 @@
+INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1711286667255394305, 'FORMULA_CHILD_INFO', '0', '[0],', '閰嶆柟閰嶇疆瀛愪俊鎭�', 'fa-star', '/formulaChildInfo', 999, 1, 'Y', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-09 15:45:10', '2023-10-09 15:45:10', 1, 1);
+INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1711286667259588609, 'FORMULA_CHILD_INFO_ADD', 'FORMULA_CHILD_INFO', '[0],[FORMULA_CHILD_INFO],', '閰嶆柟閰嶇疆瀛愪俊鎭坊鍔�', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-09 15:45:10', '2023-10-09 15:45:10', 1, 1);
+INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1711286667259588610, 'FORMULA_CHILD_INFO_EDIT', 'FORMULA_CHILD_INFO', '[0],[FORMULA_CHILD_INFO],', '閰嶆柟閰嶇疆瀛愪俊鎭慨鏀�', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-09 15:45:10', '2023-10-09 15:45:10', 1, 1);
+INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1711286667259588611, 'FORMULA_CHILD_INFO_DELETE', 'FORMULA_CHILD_INFO', '[0],[FORMULA_CHILD_INFO],', '閰嶆柟閰嶇疆瀛愪俊鎭垹闄�', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-09 15:45:10', '2023-10-09 15:45:10', 1, 1);
diff --git a/guns-vip-main/src/main/sqls/formulaInfo_menus.sql b/guns-vip-main/src/main/sqls/formulaInfo_menus.sql
new file mode 100644
index 0000000..611bec3
--- /dev/null
+++ b/guns-vip-main/src/main/sqls/formulaInfo_menus.sql
@@ -0,0 +1,4 @@
+INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1711285120836485121, 'FORMULA_INFO', '0', '[0],', '閰嶆柟閰嶇疆', 'fa-star', '/formulaInfo', 999, 1, 'Y', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-09 15:39:01', '2023-10-09 15:39:01', 1, 1);
+INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1711285120836485122, 'FORMULA_INFO_ADD', 'FORMULA_INFO', '[0],[FORMULA_INFO],', '閰嶆柟閰嶇疆娣诲姞', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-09 15:39:01', '2023-10-09 15:39:01', 1, 1);
+INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1711285120836485123, 'FORMULA_INFO_EDIT', 'FORMULA_INFO', '[0],[FORMULA_INFO],', '閰嶆柟閰嶇疆淇敼', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-09 15:39:01', '2023-10-09 15:39:01', 1, 1);
+INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1711285120836485124, 'FORMULA_INFO_DELETE', 'FORMULA_INFO', '[0],[FORMULA_INFO],', '閰嶆柟閰嶇疆鍒犻櫎', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-09 15:39:01', '2023-10-09 15:39:01', 1, 1);
diff --git a/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo.js b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo.js
new file mode 100644
index 0000000..883f3a6
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo.js
@@ -0,0 +1,164 @@
+layui.use(['table', 'admin', 'ax', 'func'], function () {
+    var $ = layui.$;
+    var table = layui.table;
+    var $ax = layui.ax;
+    var admin = layui.admin;
+    var func = layui.func;
+
+    /**
+     * 閰嶆柟閰嶇疆瀛愪俊鎭鐞�
+     */
+    var FormulaChildInfo = {
+        tableId: "formulaChildInfoTable"
+    };
+
+    /**
+     * 鍒濆鍖栬〃鏍肩殑鍒�
+     */
+    FormulaChildInfo.initColumn = function () {
+        return [[
+            {type: 'checkbox'},
+            {field: 'id', hide: true, title: 'id'},
+            {field: 'formulaCode', sort: true, title: '閰嶆柟缂栫爜'},
+            {field: 'lineCode', sort: true, title: '浜х嚎'},
+            {field: 'locationCode', sort: true, title: '宸ヤ綅'},
+            {field: 'productCode', sort: true, title: '浜у搧缂栧彿'},
+            {field: 'operationSteps', sort: true, title: '鎿嶄綔鍐呭'},
+            {field: 'techRequirement', sort: true, title: '鎶�鏈姹�'},
+            {field: 'operationType', sort: true, title: '绫诲瀷'},
+            {field: 'stepSort', sort: true, title: '鎺掑簭'},
+            {field: 'paramCode', sort: true, title: '鍙傛暟缂栫爜'},
+            {field: 'materialCode', sort: true, title: '鐗╂枡缂栫爜'},
+            {field: 'picture', sort: true, title: '鍥剧墖'},
+            {field: 'remarks', sort: true, title: '澶囨敞'},
+            {field: 'createUser', sort: true, title: '鍒涘缓鐢ㄦ埛'},
+            {field: 'createTime', sort: true, title: '鍒涘缓鏃堕棿'},
+            {field: 'updateUser', sort: true, title: '鏇存敼鐢ㄦ埛'},
+            {field: 'updateTime', sort: true, title: '鏇存敼鏃堕棿'},
+            {fixed: 'right',width: 125, minWidth: 125, align: 'center', toolbar: '#tableBar', title: '鎿嶄綔'}
+        ]];
+    };
+
+    /**
+     * 鐐瑰嚮鏌ヨ鎸夐挳
+     */
+    FormulaChildInfo.search = function () {
+        var queryData = {};
+
+        queryData['formulaCode'] = $('#formulaCode').val();
+        queryData['lineCode'] = $('#lineCode').val();
+        queryData['locationCode'] = $('#locationCode').val();
+        queryData['productCode'] = $('#productCode').val();
+        queryData['materialCode'] = $('#materialCode').val();
+
+        table.reload(FormulaChildInfo.tableId, {
+            where: queryData, page: {curr: 1}
+        });
+    };
+
+    /**
+     * 璺宠浆鍒版坊鍔犻〉闈�
+     */
+    FormulaChildInfo.jumpAddPage = function () {
+        func.open({
+            height: 650,
+            title: '娣诲姞閰嶆柟閰嶇疆淇℃伅',
+            content: Feng.ctxPath + '/formulaChildInfo/add?formulaInfoCode=' + $("#formulaInfoCode").val(),
+            tableId: FormulaChildInfo.tableId,
+        });
+        // window.location.href = Feng.ctxPath + '/formulaChildInfo/add'
+    };
+
+    /**
+    * 璺宠浆鍒扮紪杈戦〉闈�
+    *
+    * @param data 鐐瑰嚮鎸夐挳鏃跺�欑殑琛屾暟鎹�
+    */
+    FormulaChildInfo.jumpEditPage = function (data) {
+        func.open({
+            height: 650,
+            title: 'BOM淇℃伅',
+            content: Feng.ctxPath + '/formulaChildInfo/edit?id=' + data.id,
+            tableId: FormulaChildInfo.tableId,
+        });
+        // window.location.href = Feng.ctxPath + '/formulaChildInfo/edit?id=' + data.id
+    };
+
+    /**
+     * 瀵煎嚭excel鎸夐挳
+     */
+    FormulaChildInfo.exportExcel = function () {
+        var checkRows = table.checkStatus(FormulaChildInfo.tableId);
+        if (checkRows.data.length === 0) {
+            Feng.error("璇烽�夋嫨瑕佸鍑虹殑鏁版嵁");
+        } else {
+            table.exportFile(tableResult.config.id, checkRows.data, 'xls');
+        }
+    };
+
+    /**
+     * 鐐瑰嚮鍒犻櫎
+     *
+     * @param data 鐐瑰嚮鎸夐挳鏃跺�欑殑琛屾暟鎹�
+     */
+    FormulaChildInfo.onDeleteItem = function (data) {
+        var operation = function () {
+            var ajax = new $ax(Feng.ctxPath + "/formulaChildInfo/delete", function (data) {
+                Feng.success("鍒犻櫎鎴愬姛!");
+                table.reload(FormulaChildInfo.tableId);
+            }, function (data) {
+                Feng.error("鍒犻櫎澶辫触!" + data.responseJSON.message + "!");
+            });
+            ajax.set("id", data.id);
+            ajax.start();
+        };
+        Feng.confirm("鏄惁鍒犻櫎?", operation);
+    };
+
+    var queryData = {};
+    queryData['formulaCode'] = $('#formulaInfoCode').val();
+    // 娓叉煋琛ㄦ牸
+    var tableResult = table.render({
+        elem: '#' + FormulaChildInfo.tableId,
+        url: Feng.ctxPath + '/formulaChildInfo/list',
+        page: true,
+        height: "full-158",
+        cellMinWidth: 100,
+        where: queryData,
+        cols: FormulaChildInfo.initColumn()
+    });
+
+    // 鍏抽棴椤甸潰
+    $('#btnBack').click(function () {
+        window.location.href = Feng.ctxPath + "/formulaInfo";
+    });
+
+    // 鎼滅储鎸夐挳鐐瑰嚮浜嬩欢
+    $('#btnSearch').click(function () {
+        FormulaChildInfo.search();
+    });
+
+    // 娣诲姞鎸夐挳鐐瑰嚮浜嬩欢
+    $('#btnAdd').click(function () {
+
+    FormulaChildInfo.jumpAddPage();
+
+    });
+
+    // 瀵煎嚭excel
+    $('#btnExp').click(function () {
+        FormulaChildInfo.exportExcel();
+    });
+
+    // 宸ュ叿鏉$偣鍑讳簨浠�
+    table.on('tool(' + FormulaChildInfo.tableId + ')', function (obj) {
+        var data = obj.data;
+        var layEvent = obj.event;
+
+        if (layEvent === 'edit') {
+            FormulaChildInfo.jumpEditPage(data);
+        } else if (layEvent === 'delete') {
+            FormulaChildInfo.onDeleteItem(data);
+        }
+    });
+});
diff --git a/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo_add.js b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo_add.js
new file mode 100644
index 0000000..19f074f
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo_add.js
@@ -0,0 +1,57 @@
+/**
+ * 娣诲姞鎴栬�呬慨鏀归〉闈�
+ */
+var FormulaChildInfoInfoDlg = {
+    data: {
+        id: "",
+        formulaCode: "",
+        lineCode: "",
+        locationCode: "",
+        productCode: "",
+        operationSteps: "",
+        techRequirement: "",
+        operationType: "",
+        stepSort: "",
+        paramCode: "",
+        materialCode: "",
+        picture: "",
+        remarks: "",
+        spareField1: "",
+        spareField2: "",
+        spareField3: "",
+        spareField4: "",
+        createUser: "",
+        createTime: "",
+        updateUser: "",
+        updateTime: ""
+    }
+};
+
+layui.use(['form', 'admin', 'ax','laydate','upload','formSelects'], function () {
+    var $ = layui.jquery;
+    var $ax = layui.ax;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    //琛ㄥ崟鎻愪氦浜嬩欢
+    form.on('submit(btnSubmit)', function (data) {
+        var ajax = new $ax(Feng.ctxPath + "/formulaChildInfo/addItem", function (data) {
+            Feng.success("娣诲姞鎴愬姛锛�");
+            admin.putTempData('formOk', true);
+            admin.closeThisDialog();
+
+        }, function (data) {
+            Feng.error("娣诲姞澶辫触锛�" + data.responseJSON.message)
+        });
+        ajax.set(data.field);
+        ajax.start();
+
+        return false;
+    });
+
+    $('#cancel').click(function(){
+        // window.location.href = Feng.ctxPath + '/formulaChildInfo'
+        admin.closeThisDialog();
+    });
+
+});
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo_edit.js b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo_edit.js
new file mode 100644
index 0000000..88f7f17
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaChildInfo/formulaChildInfo_edit.js
@@ -0,0 +1,62 @@
+/**
+ * 璇︽儏瀵硅瘽妗�
+ */
+var FormulaChildInfoInfoDlg = {
+    data: {
+        id: "",
+        formulaCode: "",
+        lineCode: "",
+        locationCode: "",
+        productCode: "",
+        operationSteps: "",
+        techRequirement: "",
+        operationType: "",
+        stepSort: "",
+        paramCode: "",
+        materialCode: "",
+        picture: "",
+        remarks: "",
+        spareField1: "",
+        spareField2: "",
+        spareField3: "",
+        spareField4: "",
+        createUser: "",
+        createTime: "",
+        updateUser: "",
+        updateTime: ""
+    }
+};
+
+layui.use(['form', 'admin', 'ax','laydate','upload','formSelects'], function () {
+    var $ = layui.jquery;
+    var $ax = layui.ax;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    //鑾峰彇璇︽儏淇℃伅锛屽~鍏呰〃鍗�
+    var ajax = new $ax(Feng.ctxPath + "/formulaChildInfo/detail?id=" + Feng.getUrlParam("id"));
+    var result = ajax.start();
+    form.val('formulaChildInfoForm', result.data);
+
+    //琛ㄥ崟鎻愪氦浜嬩欢
+    form.on('submit(btnSubmit)', function (data) {
+        var ajax = new $ax(Feng.ctxPath + "/formulaChildInfo/editItem", function (data) {
+            Feng.success("鏇存柊鎴愬姛锛�");
+            // window.location.href = Feng.ctxPath + '/formulaChildInfo'
+            admin.putTempData('formOk', true);
+            //鍏虫帀瀵硅瘽妗�
+            admin.closeThisDialog();
+        }, function (data) {
+            Feng.error("鏇存柊澶辫触锛�" + data.responseJSON.message)
+        });
+        ajax.set(data.field);
+        ajax.start();
+
+        return false;
+    });
+
+    $('#cancel').click(function(){
+        // window.location.href = Feng.ctxPath + '/formulaChildInfo'
+        admin.closeThisDialog();
+    });
+});
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo.js b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo.js
new file mode 100644
index 0000000..077c887
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo.js
@@ -0,0 +1,139 @@
+layui.use(['table', 'admin', 'ax', 'func'], function () {
+    var $ = layui.$;
+    var table = layui.table;
+    var $ax = layui.ax;
+    var admin = layui.admin;
+    var func = layui.func;
+
+    /**
+     * 閰嶆柟閰嶇疆绠$悊
+     */
+    var FormulaInfo = {
+        tableId: "formulaInfoTable"
+    };
+
+    /**
+     * 鍒濆鍖栬〃鏍肩殑鍒�
+     */
+    FormulaInfo.initColumn = function () {
+        return [[
+            {type: 'checkbox'},
+            {field: 'id', hide: true, title: '涓婚敭id'},
+            // {field: 'formulaCode', sort: true, title: '閰嶆柟缂栫爜'},
+            {
+                field: 'formulaCode',width:130, align: "center", sort: true, title: '閰嶆柟缂栫爜', templet: function (d) {
+                    var url = Feng.ctxPath + '/formulaChildInfo?formulaCode=' + d.formulaCode;
+                    return '<a style="color: #01AAED;" href="' + url + '">' + d.formulaCode + '</a>';
+                }
+            },
+            {field: 'formulaName', sort: true, title: '閰嶆柟鍚嶇О'},
+            {field: 'status', sort: true, title: '鐘舵��(瀛楀吀)'},
+            {field: 'remark', sort: true, title: '澶囨敞'},
+            {field: 'createUser', sort: true, title: '鍒涘缓鐢ㄦ埛'},
+            {field: 'createTime', sort: true, title: '鍒涘缓鏃堕棿'},
+            {field: 'updateUser', sort: true, title: '鏇存敼鐢ㄦ埛'},
+            {field: 'updateTime', sort: true, title: '鏇存敼鏃堕棿'},
+            {fixed: 'right',width: 125, minWidth: 125, align: 'center', toolbar: '#tableBar', title: '鎿嶄綔'}
+        ]];
+    };
+
+    /**
+     * 鐐瑰嚮鏌ヨ鎸夐挳
+     */
+    FormulaInfo.search = function () {
+        var queryData = {};
+
+        queryData['formulaCode'] = $('#formulaCode').val();
+        queryData['formulaName'] = $('#formulaName').val();
+
+        table.reload(FormulaInfo.tableId, {
+            where: queryData, page: {curr: 1}
+        });
+    };
+
+    /**
+     * 璺宠浆鍒版坊鍔犻〉闈�
+     */
+    FormulaInfo.jumpAddPage = function () {
+        window.location.href = Feng.ctxPath + '/formulaInfo/add'
+    };
+
+    /**
+    * 璺宠浆鍒扮紪杈戦〉闈�
+    *
+    * @param data 鐐瑰嚮鎸夐挳鏃跺�欑殑琛屾暟鎹�
+    */
+    FormulaInfo.jumpEditPage = function (data) {
+        window.location.href = Feng.ctxPath + '/formulaInfo/edit?id=' + data.id
+    };
+
+    /**
+     * 瀵煎嚭excel鎸夐挳
+     */
+    FormulaInfo.exportExcel = function () {
+        var checkRows = table.checkStatus(FormulaInfo.tableId);
+        if (checkRows.data.length === 0) {
+            Feng.error("璇烽�夋嫨瑕佸鍑虹殑鏁版嵁");
+        } else {
+            table.exportFile(tableResult.config.id, checkRows.data, 'xls');
+        }
+    };
+
+    /**
+     * 鐐瑰嚮鍒犻櫎
+     *
+     * @param data 鐐瑰嚮鎸夐挳鏃跺�欑殑琛屾暟鎹�
+     */
+    FormulaInfo.onDeleteItem = function (data) {
+        var operation = function () {
+            var ajax = new $ax(Feng.ctxPath + "/formulaInfo/delete", function (data) {
+                Feng.success("鍒犻櫎鎴愬姛!");
+                table.reload(FormulaInfo.tableId);
+            }, function (data) {
+                Feng.error("鍒犻櫎澶辫触!" + data.responseJSON.message + "!");
+            });
+            ajax.set("id", data.id);
+            ajax.start();
+        };
+        Feng.confirm("鏄惁鍒犻櫎?", operation);
+    };
+
+    // 娓叉煋琛ㄦ牸
+    var tableResult = table.render({
+        elem: '#' + FormulaInfo.tableId,
+        url: Feng.ctxPath + '/formulaInfo/list',
+        page: true,
+        height: "full-158",
+        cellMinWidth: 100,
+        cols: FormulaInfo.initColumn()
+    });
+
+    // 鎼滅储鎸夐挳鐐瑰嚮浜嬩欢
+    $('#btnSearch').click(function () {
+        FormulaInfo.search();
+    });
+
+    // 娣诲姞鎸夐挳鐐瑰嚮浜嬩欢
+    $('#btnAdd').click(function () {
+
+    FormulaInfo.jumpAddPage();
+
+    });
+
+    // 瀵煎嚭excel
+    $('#btnExp').click(function () {
+        FormulaInfo.exportExcel();
+    });
+
+    // 宸ュ叿鏉$偣鍑讳簨浠�
+    table.on('tool(' + FormulaInfo.tableId + ')', function (obj) {
+        var data = obj.data;
+        var layEvent = obj.event;
+
+        if (layEvent === 'edit') {
+            FormulaInfo.jumpEditPage(data);
+        } else if (layEvent === 'delete') {
+            FormulaInfo.onDeleteItem(data);
+        }
+    });
+});
diff --git a/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo_add.js b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo_add.js
new file mode 100644
index 0000000..36c79c6
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo_add.js
@@ -0,0 +1,63 @@
+/**
+ * 娣诲姞鎴栬�呬慨鏀归〉闈�
+ */
+var FormulaInfoInfoDlg = {
+    data: {
+        id: "",
+        formulaCode: "",
+        formulaName: "",
+        status: "",
+        spareField1: "",
+        spareField2: "",
+        remark: "",
+        createUser: "",
+        createTime: "",
+        updateUser: "",
+        updateTime: ""
+    }
+};
+
+layui.use(['form', 'admin', 'ax','laydate','upload','formSelects'], function () {
+    var $ = layui.jquery;
+    var $ax = layui.ax;
+    var form = layui.form;
+    var admin = layui.admin;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    //琛ㄥ崟鎻愪氦浜嬩欢
+    form.on('submit(btnSubmit)', function (data) {
+        var ajax = new $ax(Feng.ctxPath + "/formulaInfo/addItem", function (data) {
+            Feng.success("娣诲姞鎴愬姛锛�");
+            window.location.href = Feng.ctxPath + '/formulaInfo'
+        }, function (data) {
+            Feng.error("娣诲姞澶辫触锛�" + data.responseJSON.message)
+        });
+        ajax.set(data.field);
+        ajax.start();
+
+        return false;
+    });
+
+    $('#cancel').click(function(){
+        window.location.href = Feng.ctxPath + '/formulaInfo'
+    });
+
+});
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo_edit.js b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo_edit.js
new file mode 100644
index 0000000..0575ddf
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/assets/modular/bs/formulaInfo/formulaInfo_edit.js
@@ -0,0 +1,67 @@
+/**
+ * 璇︽儏瀵硅瘽妗�
+ */
+var FormulaInfoInfoDlg = {
+    data: {
+        id: "",
+        formulaCode: "",
+        formulaName: "",
+        status: "",
+        spareField1: "",
+        spareField2: "",
+        remark: "",
+        createUser: "",
+        createTime: "",
+        updateUser: "",
+        updateTime: ""
+    }
+};
+
+layui.use(['form', 'admin', 'ax','laydate','upload','formSelects'], function () {
+    var $ = layui.jquery;
+    var $ax = layui.ax;
+    var form = layui.form;
+    var admin = layui.admin;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    //鑾峰彇璇︽儏淇℃伅锛屽~鍏呰〃鍗�
+    var ajax = new $ax(Feng.ctxPath + "/formulaInfo/detail?id=" + Feng.getUrlParam("id"));
+    var result = ajax.start();
+    form.val('formulaInfoForm', result.data);
+
+    //琛ㄥ崟鎻愪氦浜嬩欢
+    form.on('submit(btnSubmit)', function (data) {
+        var ajax = new $ax(Feng.ctxPath + "/formulaInfo/editItem", function (data) {
+            Feng.success("鏇存柊鎴愬姛锛�");
+            window.location.href = Feng.ctxPath + '/formulaInfo'
+        }, function (data) {
+            Feng.error("鏇存柊澶辫触锛�" + data.responseJSON.message)
+        });
+        ajax.set(data.field);
+        ajax.start();
+
+        return false;
+    });
+
+    $('#cancel').click(function(){
+        window.location.href = Feng.ctxPath + '/formulaInfo'
+    });
+});
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/assets/modular/kb/formula/formulaView.js b/guns-vip-main/src/main/webapp/assets/modular/kb/formula/formulaView.js
index f95701e..9813ae3 100644
--- a/guns-vip-main/src/main/webapp/assets/modular/kb/formula/formulaView.js
+++ b/guns-vip-main/src/main/webapp/assets/modular/kb/formula/formulaView.js
@@ -19,6 +19,7 @@
     $('#planQty').text(msg.planQty);
     $('#planStartTime').text(msg.planStartTime);
     $('#planEndTime').text(msg.planEndTime);
+    $('#recipeCode').text(msg.recipeCode);
     var radioElement = $('#sex1');
 
     function initLineInfo(){
diff --git a/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo.html b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo.html
new file mode 100644
index 0000000..b54393c
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo.html
@@ -0,0 +1,49 @@
+@layout("/common/_container.html",{js:["/assets/modular/bs/formulaChildInfo/formulaChildInfo.js"]}){
+
+<div class="layui-body-header">
+    <span class="layui-body-header-title">閰嶆柟閰嶇疆瀛愪俊鎭鐞�</span>
+</div>
+
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-sm12 layui-col-md12 layui-col-lg12">
+            <div class="layui-card">
+                <div class="layui-card-body">
+                    <div class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <input type="hidden" id="formulaInfoCode" value="${formulaInfoCode}"/>
+                            <div class="layui-inline">
+                                <input id="formulaCode" class="layui-input" type="text" placeholder="閰嶆柟缂栫爜"/>
+                            </div>
+                            <div class="layui-inline">
+                                <input id="lineCode" class="layui-input" type="text" placeholder="浜х嚎"/>
+                            </div>
+                            <div class="layui-inline">
+                                <input id="locationCode" class="layui-input" type="text" placeholder="宸ヤ綅"/>
+                            </div>
+                            <div class="layui-inline">
+                                <input id="productCode" class="layui-input" type="text" placeholder="浜у搧缂栧彿"/>
+                            </div>
+                            <div class="layui-inline">
+                                <input id="materialCode" class="layui-input" type="text" placeholder="鐗╂枡缂栫爜"/>
+                            </div>
+                            <div class="layui-inline">
+                                <button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>鎼滅储</button>
+                                <button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>娣诲姞</button>
+                                <button id="btnExp" class="layui-btn icon-btn"><i class="layui-icon">&#xe67d;</i>瀵煎嚭</button>
+                                <button id="btnBack" class="layui-btn icon-btn layui-btn-normal"><i class="layui-icon">&#xe65c;</i>杩斿洖</button>
+                            </div>
+                        </div>
+                    </div>
+                    <table class="layui-table" id="formulaChildInfoTable" lay-filter="formulaChildInfoTable"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="tableBar">
+    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">鍒犻櫎</a>
+</script>
+@}
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo_add.html b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo_add.html
new file mode 100644
index 0000000..d933b50
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo_add.html
@@ -0,0 +1,118 @@
+@layout("/common/_form.html",{js:["/assets/modular/bs/formulaChildInfo/formulaChildInfo_add.js"],css:["/assets/expand/module/formSelects/formSelects-v4.css"]}){
+
+<form class="layui-form" id="formulaChildInfoForm" lay-filter="formulaChildInfoForm">
+    <div class="layui-fluid" style="padding-bottom: 75px;">
+        <div class="layui-card">
+            <div class="layui-card-header">鍩烘湰淇℃伅</div>
+            <div class="layui-card-body">
+                <div class="layui-form-item layui-row">
+                    <input name="id" type="hidden"/>
+                    <input name="formulaCode" type="hidden" value="${formulaInfoCode}"/>
+<!--                    <div class="layui-inline layui-col-md12">-->
+<!--                        <label class="layui-form-label">閰嶆柟缂栫爜<span style="color: red;">*</span></label>-->
+<!--                        <div class="layui-input-block">-->
+<!--                            <input id="formulaCode" name="formulaCode" placeholder="璇疯緭鍏ラ厤鏂圭紪鐮�" type="text" class="layui-input" lay-verify="required" required/>-->
+<!--                        </div>-->
+<!--                    </div>-->
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">浜х嚎<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="lineCode" name="lineCode" placeholder="璇疯緭鍏ヤ骇绾�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">宸ヤ綅<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="locationCode" name="locationCode" placeholder="璇疯緭鍏ュ伐浣�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">浜у搧缂栧彿<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="productCode" name="productCode" placeholder="璇疯緭鍏ヤ骇鍝佺紪鍙�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鎿嶄綔鍐呭<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="operationSteps" name="operationSteps" placeholder="璇疯緭鍏ユ搷浣滃唴瀹�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鎶�鏈姹�<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="techRequirement" name="techRequirement" placeholder="璇疯緭鍏ユ妧鏈姹�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">绫诲瀷锛堟壂鎻忎骇鍝佹潯鐮�1銆佹壂鎻忕墿鏂欐潯鐮�2銆佹嫥绱х被3锛�<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="operationType" name="operationType" placeholder="璇疯緭鍏ョ被鍨嬶紙鎵弿浜у搧鏉$爜1銆佹壂鎻忕墿鏂欐潯鐮�2銆佹嫥绱х被3锛�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鎺掑簭<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="stepSort" name="stepSort" placeholder="璇疯緭鍏ユ帓搴�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鍙傛暟缂栫爜<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="paramCode" name="paramCode" placeholder="璇疯緭鍏ュ弬鏁扮紪鐮�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鐗╂枡缂栫爜<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="materialCode" name="materialCode" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鍥剧墖<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="picture" name="picture" placeholder="璇疯緭鍏ュ浘鐗�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">澶囨敞<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="remarks" name="remarks" placeholder="璇疯緭鍏ュ娉�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">棰勭暀瀛楁1<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="spareField1" name="spareField1" placeholder="璇疯緭鍏ラ鐣欏瓧娈�1" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">棰勭暀瀛楁2<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="spareField2" name="spareField2" placeholder="璇疯緭鍏ラ鐣欏瓧娈�2" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">棰勭暀瀛楁3<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="spareField3" name="spareField3" placeholder="璇疯緭鍏ラ鐣欏瓧娈�3" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">棰勭暀瀛楁4<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="spareField4" name="spareField4" placeholder="璇疯緭鍏ラ鐣欏瓧娈�4" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="form-group-bottom text-center">
+        <button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;鎻愪氦&emsp;</button>
+        <button type="reset" class="layui-btn layui-btn-primary" id="cancel">&emsp;鍙栨秷&emsp;</button>
+    </div>
+
+</form>
+
+@}
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo_edit.html b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo_edit.html
new file mode 100644
index 0000000..d525c16
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaChildInfo/formulaChildInfo_edit.html
@@ -0,0 +1,94 @@
+@layout("/common/_form.html",{js:["/assets/modular/bs/formulaChildInfo/formulaChildInfo_edit.js"]}){
+
+<form class="layui-form" id="formulaChildInfoForm" lay-filter="formulaChildInfoForm">
+    <div class="layui-fluid" style="padding-bottom: 75px;">
+        <div class="layui-card">
+            <div class="layui-card-header">鍩烘湰淇℃伅</div>
+            <div class="layui-card-body">
+                <div class="layui-form-item layui-row">
+                    <input name="id" type="hidden"/>
+
+<!--                    <div class="layui-inline layui-col-md12">-->
+<!--                        <label class="layui-form-label">閰嶆柟缂栫爜<span style="color: red;">*</span></label>-->
+<!--                        <div class="layui-input-block">-->
+<!--                            <input id="formulaCode" name="formulaCode" placeholder="璇疯緭鍏ラ厤鏂圭紪鐮�" type="text" class="layui-input" lay-verify="required" required/>-->
+<!--                        </div>-->
+<!--                    </div>-->
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">浜х嚎<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="lineCode" name="lineCode" placeholder="璇疯緭鍏ヤ骇绾�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">宸ヤ綅<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="locationCode" name="locationCode" placeholder="璇疯緭鍏ュ伐浣�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">浜у搧缂栧彿<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="productCode" name="productCode" placeholder="璇疯緭鍏ヤ骇鍝佺紪鍙�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鎿嶄綔鍐呭<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="operationSteps" name="operationSteps" placeholder="璇疯緭鍏ユ搷浣滃唴瀹�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鎶�鏈姹�<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="techRequirement" name="techRequirement" placeholder="璇疯緭鍏ユ妧鏈姹�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">绫诲瀷锛堟壂鎻忎骇鍝佹潯鐮�1銆佹壂鎻忕墿鏂欐潯鐮�2銆佹嫥绱х被3锛�<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="operationType" name="operationType" placeholder="璇疯緭鍏ョ被鍨嬶紙鎵弿浜у搧鏉$爜1銆佹壂鎻忕墿鏂欐潯鐮�2銆佹嫥绱х被3锛�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鎺掑簭<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="stepSort" name="stepSort" placeholder="璇疯緭鍏ユ帓搴�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鍙傛暟缂栫爜<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="paramCode" name="paramCode" placeholder="璇疯緭鍏ュ弬鏁扮紪鐮�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鐗╂枡缂栫爜<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="materialCode" name="materialCode" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鍥剧墖<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="picture" name="picture" placeholder="璇疯緭鍏ュ浘鐗�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">澶囨敞<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="remarks" name="remarks" placeholder="璇疯緭鍏ュ娉�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="form-group-bottom text-center">
+        <button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;鎻愪氦&emsp;</button>
+        <button type="reset" class="layui-btn layui-btn-primary" id="cancel">&emsp;鍙栨秷&emsp;</button>
+    </div>
+
+</form>
+
+@}
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo.html b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo.html
new file mode 100644
index 0000000..835ee02
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo.html
@@ -0,0 +1,38 @@
+@layout("/common/_container.html",{js:["/assets/modular/bs/formulaInfo/formulaInfo.js"]}){
+
+<div class="layui-body-header">
+    <span class="layui-body-header-title">閰嶆柟閰嶇疆绠$悊</span>
+</div>
+
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-sm12 layui-col-md12 layui-col-lg12">
+            <div class="layui-card">
+                <div class="layui-card-body">
+                    <div class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline">
+                                <input id="formulaCode" class="layui-input" type="text" placeholder="閰嶆柟缂栫爜"/>
+                            </div>
+                            <div class="layui-inline">
+                                <input id="formulaName" class="layui-input" type="text" placeholder="閰嶆柟鍚嶇О"/>
+                            </div>
+                            <div class="layui-inline">
+                                <button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>鎼滅储</button>
+                                <button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>娣诲姞</button>
+                                <button id="btnExp" class="layui-btn icon-btn"><i class="layui-icon">&#xe67d;</i>瀵煎嚭</button>
+                            </div>
+                        </div>
+                    </div>
+                    <table class="layui-table" id="formulaInfoTable" lay-filter="formulaInfoTable"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="tableBar">
+    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">鍒犻櫎</a>
+</script>
+@}
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo_add.html b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo_add.html
new file mode 100644
index 0000000..e669fc0
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo_add.html
@@ -0,0 +1,58 @@
+@layout("/common/_form.html",{js:["/assets/modular/bs/formulaInfo/formulaInfo_add.js"],css:["/assets/expand/module/formSelects/formSelects-v4.css"]}){
+
+<form class="layui-form" id="formulaInfoForm" lay-filter="formulaInfoForm">
+    <div class="layui-fluid" style="padding-bottom: 75px;">
+        <div class="layui-card">
+            <div class="layui-card-header">鍩烘湰淇℃伅</div>
+            <div class="layui-card-body">
+                <div class="layui-form-item layui-row">
+                    <input name="id" type="hidden"/>
+
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">閰嶆柟缂栫爜<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="formulaCode" name="formulaCode" placeholder="璇疯緭鍏ラ厤鏂圭紪鐮�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">閰嶆柟鍚嶇О<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="formulaName" name="formulaName" placeholder="璇疯緭鍏ラ厤鏂瑰悕绉�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鐘舵��(瀛楀吀)<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="status" name="status" placeholder="璇疯緭鍏ョ姸鎬�(瀛楀吀)" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">棰勭暀瀛楁1<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="spareField1" name="spareField1" placeholder="璇疯緭鍏ラ鐣欏瓧娈�1" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">棰勭暀瀛楁2<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="spareField2" name="spareField2" placeholder="璇疯緭鍏ラ鐣欏瓧娈�2" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">澶囨敞<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="remark" name="remark" placeholder="璇疯緭鍏ュ娉�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="form-group-bottom text-center">
+        <button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;鎻愪氦&emsp;</button>
+        <button type="reset" class="layui-btn layui-btn-primary" id="cancel">&emsp;鍙栨秷&emsp;</button>
+    </div>
+
+</form>
+
+@}
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo_edit.html b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo_edit.html
new file mode 100644
index 0000000..fe6395e
--- /dev/null
+++ b/guns-vip-main/src/main/webapp/pages/modular/bs/formulaInfo/formulaInfo_edit.html
@@ -0,0 +1,58 @@
+@layout("/common/_form.html",{js:["/assets/modular/bs/formulaInfo/formulaInfo_edit.js"]}){
+
+<form class="layui-form" id="formulaInfoForm" lay-filter="formulaInfoForm">
+    <div class="layui-fluid" style="padding-bottom: 75px;">
+        <div class="layui-card">
+            <div class="layui-card-header">鍩烘湰淇℃伅</div>
+            <div class="layui-card-body">
+                <div class="layui-form-item layui-row">
+                    <input name="id" type="hidden"/>
+
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">閰嶆柟缂栫爜<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="formulaCode" name="formulaCode" placeholder="璇疯緭鍏ラ厤鏂圭紪鐮�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">閰嶆柟鍚嶇О<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="formulaName" name="formulaName" placeholder="璇疯緭鍏ラ厤鏂瑰悕绉�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">鐘舵��(瀛楀吀)<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="status" name="status" placeholder="璇疯緭鍏ョ姸鎬�(瀛楀吀)" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">棰勭暀瀛楁1<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="spareField1" name="spareField1" placeholder="璇疯緭鍏ラ鐣欏瓧娈�1" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">棰勭暀瀛楁2<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="spareField2" name="spareField2" placeholder="璇疯緭鍏ラ鐣欏瓧娈�2" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                    <div class="layui-inline layui-col-md12">
+                        <label class="layui-form-label">澶囨敞<span style="color: red;">*</span></label>
+                        <div class="layui-input-block">
+                            <input id="remark" name="remark" placeholder="璇疯緭鍏ュ娉�" type="text" class="layui-input" lay-verify="required" required/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="form-group-bottom text-center">
+        <button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;鎻愪氦&emsp;</button>
+        <button type="reset" class="layui-btn layui-btn-primary" id="cancel">&emsp;鍙栨秷&emsp;</button>
+    </div>
+
+</form>
+
+@}
\ No newline at end of file
diff --git a/guns-vip-main/src/main/webapp/pages/modular/kb/formula/formulaView.html b/guns-vip-main/src/main/webapp/pages/modular/kb/formula/formulaView.html
index 302bbf5..0637d81 100644
--- a/guns-vip-main/src/main/webapp/pages/modular/kb/formula/formulaView.html
+++ b/guns-vip-main/src/main/webapp/pages/modular/kb/formula/formulaView.html
@@ -54,6 +54,10 @@
                         <span class="mySpan" style="float: right" id="productName"></span>
                     </div>
                     <div class="orderInfo">
+                        <span>宸ヨ壓閰嶆柟</span>
+                        <span class="mySpan" style="float: right" id="recipeCode"></span>
+                    </div>
+                    <div class="orderInfo">
                         <span>璁″垝鏁伴噺</span>
                         <span class="mySpan" style="float: right" id="planQty"></span>
                     </div>
@@ -99,7 +103,7 @@
             </div>
         </div>
         <div class="layui-col-sm9 layui-col-md9 layui-col-lg9">
-            <div class="layui-card" style="height: 577px">
+            <div class="layui-card" style="height: 605px">
                 <div class="layui-card-header" style="font-weight: bold">
                     <i class="layui-icon layui-icon-rate-solid"></i>鎿嶄綔鏍�
                 </div>

--
Gitblit v1.9.3