Explorar o código

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

liujiankang %!s(int64=7) %!d(string=hai) anos
pai
achega
d5d1cd988a

+ 9 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBomService.java

@@ -14,7 +14,16 @@ public interface PtsBomService {
     //查询bom单列表
     PagedResult<PtsBom> listPtsBom(int pageNO, int pageSize, PtsBom ptsBom, boolean isTotalNum);
 
+    //查询bom单集合
+    List<PtsBom> listBom(PtsBom ptsBom);
+
     //添加bom单
     Integer savePtsBom(PtsBom ptsBom);
 
+    //查询单个bom单
+    PtsBom getPtsBom(PtsBom ptsBom);
+
+    //修改bom
+    Integer updatePtsBom(PtsBom ptsBom);
+
 }

+ 52 - 3
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBomServiceImpl.java

@@ -3,12 +3,14 @@ package com.iamberry.rst.service.pts;
 import com.github.pagehelper.PageHelper;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsBom;
-import com.iamberry.rst.core.pts.PtsEmployee;
+import com.iamberry.rst.core.pts.PtsBomComponents;
+import com.iamberry.rst.core.pts.PtsComponents;
 import com.iamberry.rst.faces.pts.PtsBomService;
 import com.iamberry.rst.service.pts.mapper.PtsBomMapper;
 import com.iamberry.rst.util.PageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -27,10 +29,57 @@ public class PtsBomServiceImpl implements PtsBomService {
         return PageUtil.getPage(list);
     }
 
+    //查询bom单集合
+    @Override
+    public List<PtsBom> listBom(PtsBom ptsBom) {
+        List<PtsBom> list = ptsBomMapper.listPtsBom(ptsBom);
+        return list;
+    }
+
     //添加bom单
     @Override
-    public Integer savePtsBom(PtsBom ptsBom){
-        Integer flag = ptsBomMapper.savePtsBom(ptsBom);
+    @Transactional
+    public Integer savePtsBom(PtsBom ptsBom) {
+        Integer flag;
+
+        ptsBom.setBomId(null);
+        flag = ptsBomMapper.savePtsBom(ptsBom);
+        if (flag < 0) {
+            return flag;
+        }
+        List<PtsBomComponents> ptsBomComponentsList = ptsBom.getPtsBomComponentsList();
+        for (PtsBomComponents ptsBomComponents : ptsBomComponentsList) {
+            ptsBomComponents.setBomId(ptsBom.getBomId());
+        }
+        flag = ptsBomMapper.savePtsBomComponentsList(ptsBomComponentsList);
+        return flag;
+    }
+
+    //查询单个bom单
+    @Override
+    public PtsBom getPtsBom(PtsBom ptsBom) {
+        PtsBom bom = ptsBomMapper.getPtsBom(ptsBom);
+        List<PtsBomComponents> ptsBomComponentsList = ptsBomMapper.listPtsComponents(ptsBom.getBomId());
+        bom.setPtsBomComponentsList(ptsBomComponentsList);
+        return bom;
+    }
+
+    //修改bom
+    @Override
+    public Integer updatePtsBom(PtsBom ptsBom){
+        Integer flag;
+        flag = ptsBomMapper.updatePtsBom(ptsBom);
+        if (flag < 0) {
+            return flag;
+        }
+
+        ptsBomMapper.deletePtsBomComponentByBomId(ptsBom.getBomId());
+
+        List<PtsBomComponents> ptsBomComponentsList = ptsBom.getPtsBomComponentsList();
+        for (PtsBomComponents bomComponents : ptsBomComponentsList) {
+            bomComponents.setBomId(ptsBom.getBomId());
+        }
+        flag = ptsBomMapper.savePtsBomComponentsList(ptsBomComponentsList);
         return flag;
     }
 }

+ 16 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsBomMapper.java

@@ -2,6 +2,7 @@ package com.iamberry.rst.service.pts.mapper;
 
 import com.iamberry.rst.core.pts.Produce;
 import com.iamberry.rst.core.pts.PtsBom;
+import com.iamberry.rst.core.pts.PtsBomComponents;
 
 import java.util.List;
 
@@ -16,4 +17,19 @@ public interface PtsBomMapper {
     //添加bom单
     Integer savePtsBom(PtsBom ptsBom);
 
+    //添加bom单,零件清单
+    Integer savePtsBomComponentsList(List<PtsBomComponents> list);
+
+    //查询单个bom单
+    PtsBom getPtsBom(PtsBom ptsBom);
+
+    //查询单个bom单
+    List<PtsBomComponents> listPtsComponents(Integer bomId);
+
+    //修改bom
+    Integer updatePtsBom(PtsBom ptsBom);
+
+    //删除bom单关联的零件
+    Integer deletePtsBomComponentByBomId(Integer bomId);
+
 }

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machinePartsMapper.xml

@@ -83,6 +83,9 @@
             <if test="componentsStatus !=null and componentsStatus !='' ">
                 AND t.components_status = #{componentsStatus}
             </if>
+            <if test="componentsId !=null">
+                AND t.components_id = #{componentsId}
+            </if>
             <if test="componentsName !=null and componentsName !='' ">
                 AND t.components_name = #{componentsName}
             </if>

+ 85 - 10
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBomMapper.xml

@@ -4,17 +4,17 @@
 
     <select id="listPtsBom" parameterType="PtsBom" resultType="PtsBom">
         SELECT
-            trpb.bom_id AS bomId,
-            trpb.bom_name AS bomName,
-            trpb.produce_id AS  produceId,
-            trpb.bom_remarks AS  bomRemarks,
-            trpb.bom_create_time AS bomCreateTime,
-            trpb.bom_update_time AS  bomUpdateTime,
-            SUM(trpc.components_cost * trpbc.bom_components_quantity) AS allComponentsCost,
-            SUM(trpc.components_weight * trpbc.bom_components_quantity) AS allComponentsWeight,
-            trpp.produce_name AS produceName
+        trpb.bom_id AS bomId,
+        trpb.bom_name AS bomName,
+        trpb.produce_id AS produceId,
+        trpb.bom_remarks AS bomRemarks,
+        trpb.bom_create_time AS bomCreateTime,
+        trpb.bom_update_time AS bomUpdateTime,
+        ifnull(SUM(trpc.components_cost * trpbc.bom_components_quantity),0)  AS allComponentsCost,
+        ifnull(SUM(trpc.components_weight * trpbc.bom_components_quantity),0)  AS allComponentsWeight,
+        trpp.produce_name AS produceName
         FROM
-            tb_rst_pts_bom trpb
+        tb_rst_pts_bom trpb
         LEFT JOIN tb_rst_pts_bom_components trpbc ON trpb.bom_id = trpbc.bom_id
         LEFT JOIN tb_rst_pts_components trpc ON trpbc.components_id = trpc.components_id
         LEFT JOIN tb_rst_pts_produce trpp ON trpb.produce_id = trpp.produce_id
@@ -38,5 +38,80 @@
         GROUP BY trpb.bom_id
     </select>
 
+    <select id="getPtsBom" parameterType="PtsBom" resultType="PtsBom">
+        SELECT
+        trpb.bom_id AS bomId,
+        trpb.bom_name AS bomName,
+        trpb.produce_id AS produceId,
+        trpb.bom_remarks AS bomRemarks,
+        trpb.bom_create_time AS bomCreateTime,
+        trpb.bom_update_time AS bomUpdateTime,
+        ifnull(SUM(trpc.components_cost * trpbc.bom_components_quantity),0)  AS allComponentsCost,
+        ifnull(SUM(trpc.components_weight * trpbc.bom_components_quantity),0)  AS allComponentsWeight,
+        trpp.produce_name AS produceName
+        FROM
+        tb_rst_pts_bom trpb
+        LEFT JOIN tb_rst_pts_bom_components trpbc ON trpb.bom_id = trpbc.bom_id
+        LEFT JOIN tb_rst_pts_components trpc ON trpbc.components_id = trpc.components_id
+        LEFT JOIN tb_rst_pts_produce trpp ON trpb.produce_id = trpp.produce_id
+        <where>
+            <if test="bomId !=null">
+                AND trpb.bom_id = #{bomId}
+            </if>
+        </where>
+        GROUP BY trpb.bom_id
+    </select>
+
+    <select id="listPtsComponents" parameterType="java.lang.Integer" resultType="PtsBomComponents">
+        SELECT
+            t.bom_components_id AS bomComponentsId,
+            t.bom_id AS bomId,
+            t.components_id AS componentsId,
+            t.bom_components_quantity AS bomComponentsQuantity
+        FROM
+            tb_rst_pts_bom_components t
+        WHERE
+            t.bom_id = #{bomId}
+    </select>
+
+
+    <insert id="savePtsBom" parameterType="PtsBom" useGeneratedKeys="true" keyProperty="bomId">
+         insert into tb_rst_pts_bom (bom_name ,produce_id ,bom_remarks  )
+         values (#{bomName},#{produceId},#{bomRemarks})
+    </insert>
+
+    <insert id="savePtsBomComponentsList" parameterType="java.util.List" useGeneratedKeys="true">
+        insert into tb_rst_pts_bom_components (bom_id ,components_id ,bom_components_quantity )
+        values
+        <foreach collection="list" item="ptsBomComponents" index="index" separator="," open="" close="">
+            (#{ptsBomComponents.bomId},#{ptsBomComponents.componentsId},#{ptsBomComponents.bomComponentsQuantity})
+        </foreach>
+    </insert>
+
+
+    <update id="updatePtsBom" parameterType="PtsBom">
+        update
+            tb_rst_pts_bom
+        <set>
+            <if test="bomName !=null">
+                bom_name = #{bomName},
+            </if>
+            <if test="produceId !=null">
+                produce_id = #{produceId},
+            </if>
+            <if test="bomRemarks !=null  and bomRemarks !=''">
+                bom_remarks = #{bomRemarks}
+            </if>
+        </set>
+        where
+            `bom_id` = #{bomId}
+    </update>
+
+    <delete id="deletePtsBomComponentByBomId" parameterType="java.lang.Integer">
+        delete from
+            tb_rst_pts_bom_components
+        where
+            `bom_id` = #{bomId}
+    </delete>
 
 </mapper>

+ 102 - 14
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBomController.java

@@ -7,6 +7,7 @@ import com.iamberry.rst.faces.pts.ProduceService;
 import com.iamberry.rst.faces.pts.PtsBomService;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
+import net.sf.json.JSONArray;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -71,7 +72,7 @@ public class AdminPtsBomController {
      */
     @RequiresPermissions("bom:add:bom")
     @RequestMapping(value="/to_add_bom")
-    public ModelAndView toAddBom(String employeeId, HttpServletRequest request) {
+    public ModelAndView toAddBom(String BomId, HttpServletRequest request) {
         ModelAndView mv = new ModelAndView("pts/bom/add_bom");
 
         //获取产品集合,用于页面选择产品
@@ -82,20 +83,94 @@ public class AdminPtsBomController {
     }
 
     /**
-     * 添加员工
+     * 添加bom单
      *
      * @return
      */
     @ResponseBody
     @RequiresPermissions("bom:add:bom")
     @RequestMapping(value="/save_bom")
-    public ResponseJson saveEmployee(PtsBom ptsBom, PtsBomComponents ptsBomComponents, HttpServletRequest request) {
+    public ResponseJson saveBom(PtsBom ptsBom, String bomComponentJson, HttpServletRequest request) {
+
+        if(!this.isValiData(ptsBom) || bomComponentJson == null){
+            return new ResponseJson(500, "ERROR", 500);
+        }
+
+        JSONArray jsonArray = JSONArray.fromObject(bomComponentJson);
+        List<PtsBomComponents> ptsBomComponentsList  = (List) JSONArray.toCollection(jsonArray,PtsBomComponents.class);
+        ptsBom.setPtsBomComponentsList(ptsBomComponentsList);
 
         Integer flag = ptsBomService.savePtsBom(ptsBom);
+
         if (flag < 1 ){
+            return new ResponseJson(500, "添加失败", 500);
+        }else {
+            return new ResponseJson(200, "添加成功", 200);
+        }
+    }
+
+    public boolean isValiData(PtsBom ptsBom){
+        boolean flag = true;
+        if(ptsBom.getBomName() != null && "".equals(ptsBom.getBomName())){
+
+        }
+
+        return flag;
+    }
+
+    /**
+     * 获取bom单,根据produce
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"bom:add:bom","bom:update:bom"},logical= Logical.OR)
+    @RequestMapping(value="/get_listBom")
+    public ResponseJson listBomByProduceId(HttpServletRequest request) {
+
+        String produceId = request.getParameter("produceId");
+        if (produceId == null || "".equals(produceId)){
             return new ResponseJson(500, "ERROR", 500);
+        }
+
+        PtsBom ptsBom = new PtsBom();
+        ptsBom.setProduceId(Integer.valueOf(produceId));
+        List<PtsBom> ptsBomsList = ptsBomService.listBom(ptsBom);
+
+        if (ptsBomsList != null ){
+            ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+            rj.addResponseKeyValue("ptsBomsList",ptsBomsList);
+            return rj;
         }else {
-            return new ResponseJson(200, "SUCCESS", 200);
+            return new ResponseJson(500, "ERROR", 500);
+        }
+    }
+
+    /**
+     * 获取bom单,根据produce
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions(value={"bom:add:bom","bom:update:bom"},logical= Logical.OR)
+    @RequestMapping(value="/get_bom")
+    public ResponseJson getBom(HttpServletRequest request) {
+
+        String bomId = request.getParameter("bomId");
+        if (bomId == null || "".equals(bomId)){
+            return new ResponseJson(500, "ERROR", 500);
+        }
+
+        PtsBom ptsBom = new PtsBom();
+        ptsBom.setBomId(Integer.valueOf(bomId));
+        ptsBom = ptsBomService.getPtsBom(ptsBom);
+
+        if (ptsBom != null ){
+            ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+            rj.addResponseKeyValue("ptsBom",ptsBom);
+            return rj;
+        }else {
+            return new ResponseJson(500, "ERROR", 500);
         }
     }
 
@@ -119,9 +194,9 @@ public class AdminPtsBomController {
         //查询所有零件
         List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponents(ptsComponents);
 
-        if (ptsComponentsList.size() > 0 ){
+        if (ptsComponentsList != null ){
             ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
-            rj.addResponseKeyValue("ptsComponentsList","ptsComponentsList");
+            rj.addResponseKeyValue("ptsComponentsList",ptsComponentsList);
             return rj;
         }else {
             return new ResponseJson(500, "ERROR", 500);
@@ -141,13 +216,23 @@ public class AdminPtsBomController {
         if (bomId == null || "".equals(bomId)){
             return mv;
         }
-
         //获取产品集合,用于页面选择产品
         List<Produce> produceList = produceService.getProduceList();
 
-        //查询所有零件
+        //查询bom信息
+        PtsBom ptsBom = new PtsBom();
+        ptsBom.setBomId(Integer.valueOf(bomId));
+        ptsBom = ptsBomService.getPtsBom(ptsBom);
+
+        //所有零件
+        PtsComponents ptsComponents = new PtsComponents();
+        ptsComponents.setProduceId(ptsBom.getProduceId());
+        ptsComponents.setComponentsStatus(1);
+        List<PtsComponents> ptsComponentsList = machinePartsService.listPtsComponents(ptsComponents);
 
         mv.addObject("produceList",produceList);
+        mv.addObject("ptsBom",ptsBom);
+        mv.addObject("ptsComponentsList",ptsComponentsList);
         return mv;
     }
 
@@ -159,17 +244,20 @@ public class AdminPtsBomController {
     @ResponseBody
     @RequiresPermissions("bom:add:bom")
     @RequestMapping(value="/update_bom")
-    public ResponseJson updateBom(PtsBom ptsBom, PtsBomComponents ptsBomComponents, HttpServletRequest request) {
+    public ResponseJson updateBom(PtsBom ptsBom, String bomComponentJson, HttpServletRequest request) {
 
-        Integer flag = ptsBomService.savePtsBom(ptsBom);
+        JSONArray jsonArray = JSONArray.fromObject(bomComponentJson);
+        List<PtsBomComponents> ptsBomComponentsList  = (List) JSONArray.toCollection(jsonArray,PtsBomComponents.class);
+        ptsBom.setPtsBomComponentsList(ptsBomComponentsList);
+
+        ptsBom.setProduceId(null);
 
+        Integer flag = ptsBomService.updatePtsBom(ptsBom);
 
         if (flag < 1 ){
-            return new ResponseJson(500, "ERROR", 500);
+            return new ResponseJson(500, "修改失败", 500);
         }else {
-            return new ResponseJson(200, "SUCCESS", 200);
+            return new ResponseJson(200, "修改成功", 200);
         }
     }
-
-
 }

+ 2 - 0
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -47,6 +47,8 @@
 		<typeAlias type="com.iamberry.rst.core.pts.PtsMachineLogs" alias="PtsMachineLogs"/>
 		<typeAlias type="com.iamberry.rst.core.pts.PtsMachineStatistics" alias="PtsMachineStatistics"/>
 		<typeAlias type="com.iamberry.rst.core.pts.PtsBom" alias="PtsBom"/>
+		<typeAlias type="com.iamberry.rst.core.pts.PtsBomComponents" alias="PtsBomComponents"/>
+		<typeAlias type="com.iamberry.rst.core.pts.PtsBatch" alias="PtsBatch"/>
 		<typeAlias type="com.iamberry.rst.core.pts.PtsComponents" alias="PtsComponents"/>
 		<typeAlias type="com.iamberry.rst.core.pts.PtsSupplier" alias="PtsSupplier"/>
 	</typeAliases>

+ 3 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/base/add_base.ftl

@@ -11,6 +11,7 @@
 <link rel="stylesheet" type="text/css" href="${path}/common/lib/Hui-iconfont/1.0.8/iconfont.css" />
 <link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/skin/default/skin.css" id="skin" />
 <link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/css/style.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/lib/Validform/Validform.css" />
 <!--[if IE 6]>
 <script type="text/javascript" src="${path}/common/lib/DD_belatedPNG_0.0.8a-min.js" ></script>
 <script>DD_belatedPNG.fix('*');</script>
@@ -22,6 +23,8 @@
 <script type="text/javascript" src="${path}/common/lib/jquery.validation/1.14.0/jquery.validate.js"></script>
 <script type="text/javascript" src="${path}/common/lib/jquery.validation/1.14.0/validate-methods.js"></script>
 <script type="text/javascript" src="${path}/common/lib/jquery.validation/1.14.0/messages_zh.js"></script>
+<script type="text/javascript" src="${path}/common/lib/Validform/Validform_v5.3.2.js"></script>
+
 <script type="text/javascript">
     // 判断
     var root_path = "${path}";

+ 189 - 83
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/add_bom.ftl

@@ -22,19 +22,7 @@
        href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
 </nav>
 <article class="page-container" style="padding: 10px;width: 600px;margin: 0 auto;">
-    <form action="" method="post" class="form form-horizontal" id="form-member-add">
-
-        <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3">修改基础:</label>
-            <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
-				<select class="select" size="1" name="bomId">
-                    <option value="0">不选择</option>
-					<option value="1">净水机</option>
-					<option value="2">冲奶机</option>
-				</select>
-				</span>
-            </div>
-        </div>
+    <form action="${path}/admin/bom/save_bom" method="post" class="form form-horizontal" id="form-bom-add">
 
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3">所属产品:</label>
@@ -42,7 +30,7 @@
 				<select class="select" size="1" name="produceId">
                 <#if produceList?? &&  (produceList?size > 0) >
                     <#list produceList as produce>
-                        <option value="${produce.produceId!}" <#if produceId??><#if produceId ==produce.produceId >selected="selected"</#if></#if>>${produce.produceName!}</option>
+                        <option value="${produce.produceId}" <#if produceId??><#if produceId ==produce.produceId >selected="selected"</#if></#if>>${produce.produceName}</option>
                     </#list>
                 <#else>
                     <option value="">暂时没有产品,需要到生产产品页面添加产品</option>
@@ -53,10 +41,18 @@
         </div>
 
         <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">修改基础:</label>
+            <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
+				<select class="select" size="1" name="bomId">
+				</select>
+				</span>
+            </div>
+        </div>
+
+        <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom名称:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="" id="bomName" name="bomName"
-                       placeholder="请输入1-30位的名称,支持中文、字母、数字">
+                <input type="text" class="input-text" value="" id="bomName" name="bomName" placeholder="请输入1-30位的名称,支持中文、字母、数字" datatype="/^[a-zA-Z0-9\u4e00-\u9fa5]{1,30}$/" errormsg="请输入1-30位的名称,支持中文、字母、数字!">
             </div>
         </div>
 
@@ -64,7 +60,7 @@
             <label class="form-label col-xs-4 col-sm-3">备注:</label>
             <div class="formControls col-xs-8 col-sm-9">
                 <textarea name="bomRemarks" id="bomRemarks" cols="" rows="" class="textarea"
-                          placeholder="Bom单备注,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)"></textarea>
+                          placeholder="Bom单备注,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)" ></textarea>
                 <p class="textarea-numberbar"><em class="textarea-length">0</em>/100</p>
             </div>
         </div>
@@ -72,6 +68,7 @@
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom零件清单:</label>
             <div class="formControls col-xs-8 col-sm-9 components">
+                <input type="hidden" id="bomComponentJson" name="bomComponentJson">
                 <table class="table table-border table-bordered table-bg table-hover table-sort">
                     <thead>
                         <tr class="text-c">
@@ -80,31 +77,17 @@
                             <th width="20">操作</th>
                         </tr>
                     </thead>
-                    <tbody>
-                        <tr class="text-c">
-                            <td>
-                                <select class="select" size="1" name="bomId" style="height: 30px;">
-                                    <option value="">选择零件</option>
-                                    <option value="1">净水机</option>
-                                </select>
-                            </td>
-                            <td>
-                                    <input type="text" class="input-text" value="" id="bomName" name="bomName" placeholder="零件数量">
-                            </td>
-                            <td>
-                                <a style="" href="javascript:void(0);" title="编辑" onclick="">
-                                    <i class="Hui-iconfont">&#xe609;</i>
-                                </a>
-                            </td>
-                        </tr>
+                    <tbody id="componentaAll">
+
                     </tbody>
                 </table>
             </div>
         </div>
 
+
         <div class="row cl">
             <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
-                <input class="btn btn-primary radius" type="button" value="&nbsp;&nbsp;新增零件&nbsp;&nbsp;" onclick="addComponents()">
+                <input class="btn btn-primary radius" type="button" value="&nbsp;&nbsp;新增零件&nbsp;&nbsp;" onclick="addComponents('#','')">
             </div>
         </div>
 
@@ -121,87 +104,210 @@
 </article>
 <script type="text/javascript">
 
-    $(function () {
-        $('.skin-minimal input').iCheck({
-            checkboxClass: 'icheckbox-blue',
-            radioClass: 'iradio-blue',
-            increaseArea: '20%'
-        });
-
-        $("#form-member-add").validate({
-            rules: {
-                bomId: {
-                    required: true
-                },
-                produceId: {
-                    required: true
-                },
-                bomName: {
-                    required: true,
-                    minlength:1,
-                    maxlength:30
-                },
-                bomRemarks: {
-                    required: true,
-                    maxlength:30
+    $(function(){
+        $("#form-bom-add").Validform({
+            tiptype: function (msg, o, cssctl) {
+                if (o.type == 3) {//失败
+                    layer.msg(msg, {icon: 5, time: 3000});
+                    $(window).scrollTop(o.obj.offset().top - 40);
+                }
+            },
+            datatype: {//自定义验证类型
+                "select": function (gets, obj, curform, regxp) {
+                    if (gets == "") {
+                        return false;
+                    } else {
+                        return true;
+                    }
                 }
             },
-            onkeyup: false,
-            focusCleanup: true,
-            success: "valid",
-            submitHandler: function (form) {
-                //$(form).ajaxSubmit();
-                var index = parent.layer.getFrameIndex(window.name);
-                //parent.$('.btn-refresh').click();
-                parent.layer.close(index);
+            ignoreHidden: true,
+            tipSweep: true, //若为true,则只在表单提交时验证
+            ajaxPost: true, //异步提交
+            beforeCheck: function (curform) {  //验证通过之前执行的函数
+            },
+            beforeSubmit: function (curform) {  //验证通过之后执行的函数
+                var ptsBomComponentsList =  new Array();
+                $("#componentaAll").find("tr").each(function (){
+                    var ptsBomComponents = {};
+                    ptsBomComponents.componentsId = $(this).find("[name='comName']").eq(0).val();
+                    ptsBomComponents.bomComponentsQuantity = $(this).find("[name='comNumber']").eq(0).val();
+                    ptsBomComponentsList.push(ptsBomComponents);
+                })
+                $("#bomComponentJson").val(JSON.stringify(ptsBomComponentsList));
+            },
+            callback: function (data) {//异步回调函数
+                if (data) {
+                    var index = layer.alert(data.resultMsg, function () {
+                        if (data.Success) {
+                            location.href = "${path}/admin/bom/_bom_list";
+                        } else {
+                            layer.close(index);
+                        }
+                    });
+                }
             }
         });
-    });
+    })
+
 
-    var allComponents;
+    var allComponents;  //所有零件的集合
+    
+    $(function () {
+        /*添加页面初始化,添加一个零件选择框*/
+        addComponents("#","");
+
+        var produceId =   $("[name='produceId']").val();
+        getBomByProduce(produceId);
+
+        /*监听产品选择*/
+        $("[name='produceId']").change(function(){
+            var produceId = $(this).val();
+            getBomByProduce(produceId);
+        })
+
+        /*监听修改基础  bom单*/
+        $("[name='bomId']").change(function(){
+            var bomId = $(this).val();
+            getBom(bomId);
+        })
+    })
     
     /* 添加零件 */
-    function addComponents() {
-        var tbody = $(".tbody");
+    function addComponents(componentsId,number) {
+        var tbody = $("#componentaAll");
 
-        if(allComponents == null){ //获取
-            allComponents = listComponent();
+        if(allComponents == null){ //获取零件列表
+            var produceId = $("[name='produceId']").val();
+            allComponents = listComponent(produceId);
+        }
+        var opHtml = '';
+        for(var i=0;i<allComponents.length;i++){
+            var components = allComponents[i];
+            var isSelect = '';
+            if(componentsId == components.componentsId){
+                isSelect = 'selected="selected"';
+            }
+            opHtml += '<option value="'+ components.componentsId +'" '+ isSelect +'>'+ components.componentsName +'('+ components.componentsNo + ')</option>';
         }
-
         var html = '<tr class="text-c"> '
                 +'<td> '
-                +'<select class="select" size="1" name="" style="height: 30px;"> '
-                +'<option value="">选择零件</option> '
-                +' '
+                +'<select class="select" size="1" name="comName" style="height: 30px;"> '
+                +''
+                + opHtml
                 +'</select> '
                 +'</td> '
                 +'<td> '
-                +'<input type="text" class="input-text" value="" id="" name="" placeholder="零件数量"> '
+                +'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量不能超过999件!"> '
                 +'</td> '
                 +'<td> '
-                +'<a style="" href="javascript:void(0);" title="编辑" onclick=""> '
+                +'<a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> '
                 +'<i class="Hui-iconfont">&#xe609;</i> '
                 +'</a> '
                 +'</td> '
                 +'</tr>';
-        
+        tbody.append(html);
+    }
+
+    /*删除零件  type=all时删除所有的零件 */
+    function delComponent(node,type) {
+        if(type == "all"){
+            $("#componentaAll").find("tr").each(function () {
+                $(this).remove();
+            })
+        }else{
+            $(node).parent().parent().remove();
+        }
     }
 
     /*获取所有的零件*/
-    function  listComponent() {
+    function  listComponent(produceId) {
+        var list = new Array();
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/bom/get_listComponents",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    list = data.returnMsg.ptsComponentsList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return list;
+    }
+
+    /*根据产品id,获取bom集合*/
+    function getBomByProduce(produceId){
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/bom/get_listBom",
+            async: false,
+            success: function(data){
+                var html = '<option value="">不选择</option>';
+                if (data.returnCode == 200) {
+                    var bomList = data.returnMsg.ptsBomsList;
+                    for(var i=0;i<bomList.length;i++){
+                        html += '<option value="'+ bomList[i].bomId +'">'+ bomList[i].bomName +'</option>';
+                    }
+                }
+                if(data.returnCode != 200 || data.returnMsg.ptsBomsList <1){
+                    defaultAllInput();
+                }
+                $("[name='bomId']").html(html);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+    }
+
+    /*获取bom信息,赋值在页面上*/
+    function getBom(bomId){
+        var bom = new Object();
         $.ajax({
             type: "POST",
-            data: data,
-            url: "${path}/admin/employee/get_listComponents",
+            data: {
+                bomId : bomId
+            },
+            url: "${path}/admin/bom/get_bom",
             async: false,
             success: function(data){
                 if (data.returnCode == 200) {
-                    window.location.href = '${path}//admin/employee/_employee_list'
+                    bom = data.returnMsg.ptsBom;
                 }
             },
             error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         });
+
+        if(bom != null && bom.bomId != null){
+            $("#bomName").val(bom.bomName);
+            $("#bomRemarks").val(bom.bomRemarks);
+            delComponent(0,"all");
+            var components = bom.ptsBomComponentsList;
+            if(components != null && components.length > 0){
+                for(var i=0;i<components.length;i++){
+                    addComponents(components[i].componentsId,components[i].bomComponentsQuantity);
+                }
+            }
+        }else{
+            defaultAllInput();
+        }
+    }
+
+    /*当选择产品或者bom不选择时,都需要重置所有的输入框和表格*/
+    function defaultAllInput() {
+        $("#bomName").val("");
+        $("#bomRemarks").val("");
+        delComponent(0,"all");
+        addComponents("#","");
     }
 </script>
 <!--/请在上方写此页面业务相关的脚本-->

+ 7 - 15
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_list.ftl

@@ -69,13 +69,13 @@
                             <td>${bom.bomId!''}</td>
                             <td>${bom.produceName!''}</td>
                             <td>${bom.bomName!''}</td>
-                            <td>${bom.allComponentsCost!''}</td>
-                            <td>${bom.allComponentsWeight!''}</td>
+                            <td><#if bom.allComponentsCost?? >${bom.allComponentsCost/100}</#if></td>
+                            <td><#if bom.allComponentsWeight?? >${bom.allComponentsWeight/1000}</#if></td>
                             <td>${bom.bomRemarks!''}</td>
                             <td>${(bom.bomUpdateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                             <td>${(bom.bomCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                             <td>
-                                <a style="text-decoration:none" href="javascript:void(0);" title="编辑" onclick="admin_update_employee(${bom.bomId!''});">
+                                <a style="text-decoration:none" href="javascript:void(0);" title="编辑" onclick="admin_update_bom(${bom.bomId!''})">
                                     <i class="Hui-iconfont">&#xe6df;</i>
                                 </a>
                             </td>
@@ -162,26 +162,18 @@
 </script>
 <script>
     /**
-     * 跳转到添加员工页面
+     * 跳转到添加bom页面
      */
     function toAddBom(){
-        window.location.href= "${path}/admin/bom//to_add_bom";
+        window.location.href= "${path}/admin/bom/to_add_bom";
     }
 
     /**
      *跳转到编辑页面
      * @param employee
      */
-    function admin_update_employee(employeeId) {
-        window.location.href= "${path}/admin/employee/to_update_employee?employeeId="+employeeId;
-    }
-
-    /**
-     * 删除员工
-     * @param employeeId
-     */
-    function admin_del_employee(employeeId) {
-        window.location.href= "${path}/admin/employee/delete_employee?employeeId="+employeeId;
+    function admin_update_bom(bomId) {
+        window.location.href= "${path}/admin/bom/to_update_bom?bomId="+bomId;
     }
 </script>
 </body>

+ 191 - 74
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/update_bom.ftl

@@ -11,41 +11,30 @@
     <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
     <style>
     </style>
-    <title>添加Bom - Bom管理 - RST</title>
+    <title>修改Bom - Bom管理 - RST</title>
 </head>
 <body>
 <nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
     <span class="c-gray en">&gt;</span> Bom管理
-    <span class="c-gray en">&gt;</span> 添加Bom
+    <span class="c-gray en">&gt;</span> 修改Bom
     <a class="btn radius r"
        style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;"
        href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
 </nav>
 <article class="page-container" style="padding: 10px;width: 600px;margin: 0 auto;">
-    <form action="" method="post" class="form form-horizontal" id="form-member-add">
+    <form action="${path}/admin/bom/update_bom" method="post" class="form form-horizontal" id="form-bom-update">
 
-        <div class="row cl">
-            <label class="form-label col-xs-4 col-sm-3">修改基础:</label>
-            <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
-				<select class="select" size="1" name="bomId">
-                    <option value="0">不选择</option>
-					<option value="1">净水机</option>
-					<option value="2">冲奶机</option>
-				</select>
-				</span>
-            </div>
-        </div>
+        <input type="hidden" value="${ptsBom.bomId}" id="bomId" name="bomId">
+        <input type="hidden" value="${ptsBom.produceId}" id="produceId" name="produceId">
 
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3">所属产品:</label>
-            <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
-				<select class="select" size="1" name="produceId">
+            <div class="formControls col-xs-8 col-sm-9" > <span class="select-box">
+				<select class="select" disabled="disabled" style="background: #eee;">
                 <#if produceList?? &&  (produceList?size > 0) >
                     <#list produceList as produce>
-                        <option value="${produce.produceId!}" <#if produceId??><#if produceId ==produce.produceId >selected="selected"</#if></#if>>${produce.produceName!}</option>
+                        <option value="${produce.produceId}" <#if ptsBom.produceId??><#if ptsBom.produceId == produce.produceId >selected="selected" </#if></#if>>${produce.produceName}</option>
                     </#list>
-                <#else>
-                    <option value="">暂时没有产品,需要到生产产品页面添加产品</option>
                 </#if>
 				</select>
 				</span>
@@ -55,8 +44,7 @@
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom名称:</label>
             <div class="formControls col-xs-8 col-sm-9">
-                <input type="text" class="input-text" value="" id="bomName" name="bomName"
-                       placeholder="请输入1-30位的名称,支持中文、字母、数字">
+                <input type="text" class="input-text" value="${ptsBom.bomName}" id="bomName" name="bomName" placeholder="请输入1-30位的名称,支持中文、字母、数字" datatype="/^[a-zA-Z0-9\u4e00-\u9fa5]{1,30}$/" errormsg="请输入1-30位的名称,支持中文、字母、数字!">
             </div>
         </div>
 
@@ -64,7 +52,7 @@
             <label class="form-label col-xs-4 col-sm-3">备注:</label>
             <div class="formControls col-xs-8 col-sm-9">
                 <textarea name="bomRemarks" id="bomRemarks" cols="" rows="" class="textarea"
-                          placeholder="Bom单备注,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)"></textarea>
+                          placeholder="Bom单备注,最多支持100字符" onKeyUp="$.Huitextarealength(this,100)" >${ptsBom.bomRemarks ! ''}</textarea>
                 <p class="textarea-numberbar"><em class="textarea-length">0</em>/100</p>
             </div>
         </div>
@@ -72,31 +60,35 @@
         <div class="row cl">
             <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom零件清单:</label>
             <div class="formControls col-xs-8 col-sm-9 components">
+                <input type="hidden" id="bomComponentJson" name="bomComponentJson">
                 <table class="table table-border table-bordered table-bg table-hover table-sort">
                     <thead>
-                        <tr class="text-c">
-                            <th width="150">选择零件</th>
-                            <th width="60">零件数量</th>
-                            <th width="20">操作</th>
-                        </tr>
+                    <tr class="text-c">
+                        <th width="150">选择零件</th>
+                        <th width="60">零件数量</th>
+                        <th width="20">操作</th>
+                    </tr>
                     </thead>
-                    <tbody>
-                        <tr class="text-c">
-                            <td>
-                                <select class="select" size="1" name="bomId" style="height: 30px;">
-                                    <option value="">选择零件</option>
-                                    <option value="1">净水机</option>
-                                </select>
-                            </td>
-                            <td>
-                                    <input type="text" class="input-text" value="" id="bomName" name="bomName" placeholder="零件数量">
-                            </td>
-                            <td>
-                                <a style="" href="javascript:void(0);" title="编辑" onclick="">
-                                    <i class="Hui-iconfont">&#xe609;</i>
-                                </a>
-                            </td>
-                        </tr>
+                    <tbody id="componentaAll">
+                        <#if ptsBom.ptsBomComponentsList?? &&  (ptsBom.ptsBomComponentsList?size > 0) >
+                            <#list ptsBom.ptsBomComponentsList  as bomComponents>
+                            <tr class="text-c">
+                                <td>
+                                    <select class="select" size="1" name="comName" style="height: 30px;">
+                                        <#list ptsComponentsList as ptsComponents>
+                                            <option value="${ptsComponents.componentsId}" <#if bomComponents.componentsId == ptsComponents.componentsId >selected="selected"</#if>>${ptsComponents.componentsName}(${ptsComponents.componentsNo})</option>
+                                        </#list>
+                                    </select>
+                                </td>
+                                <td>
+                                    <input type="text" class="input-text" value="${bomComponents.bomComponentsQuantity}" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量不能超过999件!">
+                                </td>
+                                <td>
+                                    <a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> <i class="Hui-iconfont"></i> </a>
+                                </td>
+                            </tr>
+                            </#list>
+                        </#if>
                     </tbody>
                 </table>
             </div>
@@ -104,7 +96,7 @@
 
         <div class="row cl">
             <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
-                <input class="btn btn-primary radius" type="button" value="&nbsp;&nbsp;新增零件&nbsp;&nbsp;">
+                <input class="btn btn-primary radius" type="button" value="&nbsp;&nbsp;新增零件&nbsp;&nbsp;" onclick="addComponents('#','')">
             </div>
         </div>
 
@@ -121,42 +113,167 @@
 </article>
 <script type="text/javascript">
 
+    $(function(){
+        $("#form-bom-update").Validform({
+            tiptype: function (msg, o, cssctl) {
+                if (o.type == 3) {//失败
+                    layer.msg(msg, {icon: 5, time: 3000});
+                    $(window).scrollTop(o.obj.offset().top - 40);
+                }
+            },
+            datatype: {//自定义验证类型
+                "select": function (gets, obj, curform, regxp) {
+                    if (gets == "") {
+                        return false;
+                    } else {
+                        return true;
+                    }
+                }
+            },
+            ignoreHidden: true,
+            tipSweep: true, //若为true,则只在表单提交时验证
+            ajaxPost: true, //异步提交
+            beforeCheck: function (curform) {  //验证通过之前执行的函数
+            },
+            beforeSubmit: function (curform) {  //验证通过之后执行的函数
+                var ptsBomComponentsList =  new Array();
+                $("#componentaAll").find("tr").each(function (){
+                    var ptsBomComponents = {};
+                    ptsBomComponents.componentsId = $(this).find("[name='comName']").eq(0).val();
+                    ptsBomComponents.bomComponentsQuantity = $(this).find("[name='comNumber']").eq(0).val();
+                    ptsBomComponentsList.push(ptsBomComponents);
+                })
+                $("#bomComponentJson").val(JSON.stringify(ptsBomComponentsList));
+            },
+            callback: function (data) {//异步回调函数
+                if (data) {
+                    var index = layer.alert(data.resultMsg, function () {
+                        if (data.Success) {
+                            location.href = "${path}/admin/bom/_bom_list";
+                        } else {
+                            layer.close(index);
+                        }
+                    });
+                }
+            }
+        });
+    })
+
+
+    var allComponents;  //所有零件的集合
+
     $(function () {
-        $('.skin-minimal input').iCheck({
-            checkboxClass: 'icheckbox-blue',
-            radioClass: 'iradio-blue',
-            increaseArea: '20%'
+    })
+
+    /* 添加零件 */
+    function addComponents(componentsId,number) {
+        var tbody = $("#componentaAll");
+
+        if(allComponents == null){ //获取零件列表
+            var produceId = $("[name='produceId']").val();
+            allComponents = listComponent(produceId);
+        }
+        var opHtml = '';
+        for(var i=0;i<allComponents.length;i++){
+            var components = allComponents[i];
+            var isSelect = '';
+            if(componentsId == components.componentsId){
+                isSelect = 'selected="selected"';
+            }
+            opHtml += '<option value="'+ components.componentsId +'" '+ isSelect +'>'+ components.componentsName +'('+ components.componentsNo + ')</option>';
+        }
+        var html = '<tr class="text-c"> '
+                +'<td> '
+                +'<select class="select" size="1" name="comName" style="height: 30px;"> '
+                +''
+                + opHtml
+                +'</select> '
+                +'</td> '
+                +'<td> '
+                +'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量不能超过999件!"> '
+                +'</td> '
+                +'<td> '
+                +'<a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> '
+                +'<i class="Hui-iconfont">&#xe609;</i> '
+                +'</a> '
+                +'</td> '
+                +'</tr>';
+        tbody.append(html);
+    }
+
+    /*删除零件  type=all时删除所有的零件 */
+    function delComponent(node,type) {
+        if(type == "all"){
+            $("#componentaAll").find("tr").each(function () {
+                $(this).remove();
+            })
+        }else{
+            $(node).parent().parent().remove();
+        }
+    }
+
+    /*获取所有的零件*/
+    function  listComponent(produceId) {
+        var list = new Array();
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/bom/get_listComponents",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    list = data.returnMsg.ptsComponentsList;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
         });
+        return list;
+    }
 
-        $("#form-member-add").validate({
-            rules: {
-                bomId: {
-                    required: true
-                },
-                produceId: {
-                    required: true
-                },
-                bomName: {
-                    required: true,
-                    minlength:1,
-                    maxlength:30
-                },
-                bomRemarks: {
-                    required: true,
-                    maxlength:30
+    /*获取bom信息,赋值在页面上*/
+    function getBom(bomId){
+        var bom = new Object();
+        $.ajax({
+            type: "POST",
+            data: {
+                bomId : bomId
+            },
+            url: "${path}/admin/bom/get_bom",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    bom = data.returnMsg.ptsBom;
                 }
             },
-            onkeyup: false,
-            focusCleanup: true,
-            success: "valid",
-            submitHandler: function (form) {
-                //$(form).ajaxSubmit();
-                var index = parent.layer.getFrameIndex(window.name);
-                //parent.$('.btn-refresh').click();
-                parent.layer.close(index);
+            error: function(XmlHttpRequest, textStatus, errorThrown){
             }
         });
-    });
+
+        if(bom != null && bom.bomId != null){
+            $("#bomName").val(bom.bomName);
+            $("#bomRemarks").val(bom.bomRemarks);
+            delComponent(0,"all");
+            var components = bom.ptsBomComponentsList;
+            if(components != null && components.length > 0){
+                for(var i=0;i<components.length;i++){
+                    addComponents(components[i].componentsId,components[i].bomComponentsQuantity);
+                }
+            }
+        }else{
+            defaultAllInput();
+        }
+    }
+
+    /*当选择产品或者bom不选择时,都需要重置所有的输入框和表格*/
+    function defaultAllInput() {
+        $("#bomName").val("");
+        $("#bomRemarks").val("");
+        delComponent(0,"all");
+        addComponents("#","");
+    }
 </script>
 <!--/请在上方写此页面业务相关的脚本-->
 </body>

+ 33 - 0
watero-rst-web/src/main/webapp/common/lib/Validform/Validform.css

@@ -0,0 +1,33 @@
+/*==========以下部分是Validform必须的===========*/
+.Validform_checktip{
+	margin-left:8px;
+	line-height:20px;
+	height:20px;
+	overflow:hidden;
+	color:#999;
+	font-size:12px;
+}
+.Validform_right{
+	color:#71b83d;
+	padding-left:20px;
+	background:url(../images/right.png) no-repeat left center;
+}
+.Validform_wrong{
+	color:red;
+	padding-left:20px;
+	white-space:nowrap;
+	background:url(../images/error.png) no-repeat left center;
+}
+.Validform_loading{
+	padding-left:20px;
+	background:url(../images/onLoad.gif) no-repeat left center;
+}
+.Validform_error{
+	background-color:#ffe7e7;
+}
+#Validform_msg{color:#7d8289; font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif; width:280px; -webkit-box-shadow:2px 2px 3px #aaa; -moz-box-shadow:2px 2px 3px #aaa; background:#fff; position:absolute; top:0px; right:50px; z-index:99999; display:none;filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color='#999999');}
+#Validform_msg .iframe{position:absolute; left:0px; top:-1px; z-index:-1;}
+#Validform_msg .Validform_title{line-height:25px; height:25px; text-align:left; font-weight:bold; padding:0 8px; color:#fff; position:relative; background-color:#000;}
+#Validform_msg a.Validform_close:link,#Validform_msg a.Validform_close:visited{line-height:22px; position:absolute; right:8px; top:0px; color:#fff; text-decoration:none;}
+#Validform_msg a.Validform_close:hover{color:#cc0;}
+#Validform_msg .Validform_info{padding:8px;border:1px solid #000; border-top:none; text-align:left;}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1331 - 0
watero-rst-web/src/main/webapp/common/lib/Validform/Validform_v5.3.2.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 8 - 0
watero-rst-web/src/main/webapp/common/lib/Validform/Validform_v5.3.2_min.js