瀏覽代碼

商品状态备注

plf 3 年之前
父節點
當前提交
514dd87d47

+ 5 - 0
src/main/java/com/caimei/modules/product/dao/ProductNewDao.java

@@ -2,6 +2,7 @@ package com.caimei.modules.product.dao;
 
 import com.caimei.modules.product.entity.Product;
 import com.caimei.modules.product.entity.ProductParameters;
+import com.caimei.modules.product.entity.ProductStatusRecord;
 import com.caimei.po.ProductImage;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
@@ -51,4 +52,8 @@ public interface ProductNewDao extends CrudDao<Product> {
     String getValidFlagByProductId(Integer productID);
 
     String getBeforeValidFlagByProductId(Integer productID);
+
+    void insertStatusRecord(ProductStatusRecord statusRecord);
+
+    List<ProductStatusRecord> findALLStatusRemarks(Integer productId);
 }

+ 27 - 0
src/main/java/com/caimei/modules/product/entity/Product.java

@@ -179,6 +179,9 @@ public class Product extends DataEntity<Product> {
     private String commodityType;//商品属性:1产品,2仪器
     private Integer organizeId; //组织Id
     private String productIdStr;//商品Id字符串格式
+    private Integer trainingMethod; //仪器培训方式:1线上培训,2线下培训
+    private Integer trainingType; //售价是否包含:1售价未包含,2售价已包含
+    private BigDecimal trainingFee; //培训费用(售价未包含)
 
 
     //以下参数是搜索回显参数
@@ -1854,4 +1857,28 @@ public class Product extends DataEntity<Product> {
     public void setFloorId(Integer floorId) {
         this.floorId = floorId;
     }
+
+    public Integer getTrainingMethod() {
+        return trainingMethod;
+    }
+
+    public void setTrainingMethod(Integer trainingMethod) {
+        this.trainingMethod = trainingMethod;
+    }
+
+    public Integer getTrainingType() {
+        return trainingType;
+    }
+
+    public void setTrainingType(Integer trainingType) {
+        this.trainingType = trainingType;
+    }
+
+    public BigDecimal getTrainingFee() {
+        return trainingFee;
+    }
+
+    public void setTrainingFee(BigDecimal trainingFee) {
+        this.trainingFee = trainingFee;
+    }
 }

+ 76 - 0
src/main/java/com/caimei/modules/product/entity/ProductStatusRecord.java

@@ -0,0 +1,76 @@
+package com.caimei.modules.product.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * product_status_record
+ *
+ * @author : plf
+ * @date : 2021/7/9
+ */
+public class ProductStatusRecord implements Serializable {
+    private Integer id;
+    private Integer productId; //商品id
+    private Integer modifyUserId; //系统修改人id
+    private String validFlag;   //商品状态,见表c_productstatus或枚举ProductStatus,0逻辑删除 1待审核 2已上架 3已下架 8审核未通过 9已隐身 10已冻结
+    private String remarks;     //备注
+    private Date addTime;        //添加时间
+    private String systemName;      //系统用户名称
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getProductId() {
+        return productId;
+    }
+
+    public void setProductId(Integer productId) {
+        this.productId = productId;
+    }
+
+    public Integer getModifyUserId() {
+        return modifyUserId;
+    }
+
+    public void setModifyUserId(Integer modifyUserId) {
+        this.modifyUserId = modifyUserId;
+    }
+
+    public String getValidFlag() {
+        return validFlag;
+    }
+
+    public void setValidFlag(String validFlag) {
+        this.validFlag = validFlag;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getSystemName() {
+        return systemName;
+    }
+
+    public void setSystemName(String systemName) {
+        this.systemName = systemName;
+    }
+}

+ 27 - 0
src/main/java/com/caimei/modules/product/service/ProductNewService.java

@@ -8,6 +8,7 @@ import com.caimei.modules.product.dao.ProductNewDao;
 import com.caimei.modules.product.entity.CmPromotion;
 import com.caimei.modules.product.entity.Product;
 import com.caimei.modules.product.entity.ProductParameters;
+import com.caimei.modules.product.entity.ProductStatusRecord;
 import com.caimei.modules.sys.utils.UploadImageUtils;
 import com.caimei.po.ProductImage;
 import com.thinkgem.jeesite.common.config.Global;
@@ -15,6 +16,8 @@ import com.thinkgem.jeesite.common.persistence.Page;
 import com.thinkgem.jeesite.common.service.CrudService;
 import com.thinkgem.jeesite.common.utils.Encodes;
 import com.thinkgem.jeesite.common.utils.StringUtils;
+import com.thinkgem.jeesite.modules.sys.entity.User;
+import com.thinkgem.jeesite.modules.sys.utils.UserUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -237,4 +240,28 @@ public class ProductNewService extends CrudService<ProductNewDao, Product> {
         }
         return map;
     }
+
+    public void statusRecordSave(Integer productID, String validFlag, String remarks) {
+        ProductStatusRecord statusRecord = new ProductStatusRecord();
+        User user = UserUtils.getUser();
+        statusRecord.setModifyUserId(Integer.valueOf(user.getId()));
+        statusRecord.setProductId(productID);
+        statusRecord.setValidFlag(validFlag);
+        statusRecord.setRemarks(remarks);
+        statusRecord.setAddTime(new Date());
+        productNewDao.insertStatusRecord(statusRecord);
+    }
+
+    public List<ProductStatusRecord> findStatusRemarks(Integer productId) {
+        List<ProductStatusRecord> recordList = productNewDao.findALLStatusRemarks(productId);
+        if (recordList != null && recordList.size() > 0) {
+            recordList.forEach(record -> {
+                User user = UserUtils.get(String.valueOf(record.getModifyUserId()));
+                if (user != null) {
+                    record.setSystemName(user.getName());
+                }
+            });
+        }
+        return recordList;
+    }
 }

+ 16 - 3
src/main/java/com/caimei/modules/product/web/ProductNewController.java

@@ -4,8 +4,8 @@ import com.caimei.modules.brand.entity.CmBrand;
 import com.caimei.modules.brand.service.CmBrandService;
 import com.caimei.modules.common.entity.Province;
 import com.caimei.modules.common.service.AreaService;
-import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.modules.opensearch.CoreServiceUitls;
+import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.modules.product.dao.ProductNewDao;
 import com.caimei.modules.product.entity.*;
 import com.caimei.modules.product.service.*;
@@ -667,10 +667,10 @@ public class ProductNewController extends BaseController {
 
     @RequestMapping("auditProduct")
     @ResponseBody
-    public Map<String, Object> auditProduct(String validFlag, Integer productID) {
+    public Map<String, Object> auditProduct(String validFlag, Integer productID, String remarks) {
         Map<String, Object> map = Maps.newLinkedHashMap();
         try {
-            if (null == validFlag || "".equals(validFlag) || null == productID) {
+            if (StringUtils.isBlank(validFlag) || null == productID || StringUtils.isBlank(remarks)) {
                 throw new Exception("参数错误!");
             }
             //冻结,删除,隐身需判断促销活动
@@ -681,6 +681,8 @@ public class ProductNewController extends BaseController {
                     return map;
                 }
             }
+            //保存商品状态修改记录
+            productNewService.statusRecordSave(productID, validFlag, remarks);
             // 当进行冻结操作时,保存冻结前的状态,解除冻结时需要恢复为之前的状态
             String beforeValidFlag = null;
             if ("10".equals(validFlag)) {
@@ -903,5 +905,16 @@ public class ProductNewController extends BaseController {
         generateUtils.generateProductType(286);
         generateUtils.generateProductType(287);
     }
+
+    /**
+     * 状态备注
+     */
+    @RequestMapping("statusRemarks")
+    public String statusRemarks(Integer productId, Model model) {
+        List<ProductStatusRecord> records = productNewService.findStatusRemarks(productId);
+        model.addAttribute("records", records);
+        model.addAttribute("productId", productId);
+        return "modules/product-new/statusRemarksList";
+    }
 }
 

+ 13 - 1
src/main/resources/mappings/modules/product/ProductMapper.xml

@@ -141,7 +141,10 @@
 		a.taxPoint as "taxPoint",
 		a.priceType as "priceType",
 		a.tags as "tags",
-		a.machineType as "machineType"
+		a.machineType as "machineType",
+		a.trainingMethod as "trainingMethod",
+		a.trainingType as "trainingType",
+		a.trainingFee as "trainingFee"
 	</sql>
 
 	<sql id="productJoins">
@@ -2138,6 +2141,15 @@
       <if test="commodityType != null and commodityType != ''">
 		  commodityType = #{commodityType},
 	  </if>
+	  <if test="trainingMethod != null">
+		trainingMethod = #{trainingMethod},
+	  </if>
+	  <if test="trainingType != null">
+		trainingType = #{trainingType},
+	  </if>
+	  <if test="trainingFee != null">
+		trainingFee = #{trainingFee},
+	  </if>
     </set>
     where productID = #{productID}
   </update>

+ 35 - 0
src/main/resources/mappings/modules/product/ProductNewMapper.xml

@@ -143,6 +143,9 @@
 		a.tags as "tags",
 		a.machineType as "machineType",
 		a.commodityType as "commodityType",
+		a.trainingMethod as "trainingMethod",
+		a.trainingType as "trainingType",
+		a.trainingFee as "trainingFee",
 		cshd.secondHandType as "secondHandType",
 		cshd.instrumentType as "instrumentType",
 		cshd.sold as "sold",
@@ -1127,5 +1130,37 @@
         #{delFlag})
     </insert>
 
+    <insert id="insertStatusRecord">
+        INSERT INTO `product_status_record` (
+          `productId`,
+          `modifyUserId`,
+          `validFlag`,
+          `remarks`,
+          `addTime`
+        )
+        VALUES
+          (
+            #{productId},
+            #{modifyUserId},
+            #{validFlag},
+            #{remarks},
+            #{addTime}
+          )
+    </insert>
+
+    <select id="findALLStatusRemarks" resultType="com.caimei.modules.product.entity.ProductStatusRecord">
+        SELECT
+          id,
+          `productId`,
+          `modifyUserId`,
+          `validFlag`,
+          `remarks`,
+          `addTime`
+        FROM
+          `product_status_record`
+        WHERE
+          productId = #{productId}
+    </select>
+
 </mapper>
 

+ 38 - 0
src/main/webapp/WEB-INF/views/modules/product-new/productEdit.jsp

@@ -128,6 +128,26 @@
                 <label><input type="radio" name="commodityType" value="2" onchange="loadBigType()" ${product.commodityType == "2" ? "checked" : ""} />仪器</label>
             </td>
         </tr>
+        <tr class="training" hidden>
+            <th><span class="red">*</span>培训方式:</th>
+            <td colspan="3">
+                <label><input type="radio" name="trainingMethod" value="1" ${empty product.trainingMethod || product.trainingMethod == 1 ? "checked" : ""} />线上培训<b class="line">|</b></label>
+                <label><input type="radio" name="trainingMethod" value="2" ${product.trainingMethod == 2 ? "checked" : ""} />线下培训</label>
+            </td>
+        </tr>
+        <tr class="training" hidden>
+            <th><span class="red">*</span>培训费用:</th>
+            <td colspan="3">
+                <label><input type="radio" name="trainingType" value="1" ${empty product.trainingType || product.trainingType == 1 ? "checked" : ""} onchange="trainingShow()"/>售价未包含<b class="line">|</b></label>
+                <label><input type="radio" name="trainingType" value="2" ${product.trainingType == 2 ? "checked" : ""} onchange="trainingShow()"/>售价已包含</label>
+            </td>
+        </tr>
+        <tr id="trainingFee" hidden>
+            <th></th>
+            <td colspan="3">
+                <input type="number" name="trainingFee" value="${product.trainingFee}" style="width: 250px" min="0" placeholder="请填写包含食宿,交通等各项费用的总金额"/>
+            </td>
+        </tr>
         <tr>
             <th><span class="red">*</span>分类:</th>
             <td colspan="3">
@@ -824,6 +844,7 @@
             }
         }
         loadSmallType();
+        trainingShow();
     }
 
 
@@ -1214,6 +1235,23 @@
             var n = parseFloat(that.value);
             that.value = n.toFixed(2)
         }
+
+        //培训相关显示
+        function trainingShow() {
+            var commodityType = $("input[name='commodityType']:checked").val();
+            var trainingType = $("input[name='trainingType']:checked").val();
+            if (commodityType == 2){
+                $(".training").show();
+                if (trainingType == 1){
+                    $("#trainingFee").show();
+                }else {
+                    $("#trainingFee").hide();
+                }
+            }else {
+                $(".training").hide();
+                $("#trainingFee").hide();
+            }
+        }
 </script>
 
 </body>

+ 113 - 57
src/main/webapp/WEB-INF/views/modules/product-new/productList.jsp

@@ -14,6 +14,29 @@
         .red{color: red;}
         .flex-wrap >.item {margin-right: 20px;}
         .jbox span.jbox-icon {top: auto !important;}
+
+		.process-details span{width:140px;margin-left:50px;font-weight:600}
+		.process-details div{display:inline-block}
+		.check-btn button{width:100px;height:35px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;border:none;border:1px solid #ddd}
+		.check-cfm-btn{background:#3daae9;color:#fff}
+		.mask{width:100%;height:100%;position:fixed;top:0;background:rgba(0,0,0,0.7);display:none}
+		.tips-popup-content{width:40%;height:auto;padding-bottom:30px;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
+		.tips-popup-content div{width:100%;text-align:center}
+		.tips-popup-content{width:25%}
+		.tips-popup-content p{text-align:center;padding:80px;font-size:20px}
+		.tips-popup-content h4{padding-left:10px;height:40px;line-height:40px;border-bottom:1px solid #eee;margin-bottom:20px}
+		.tips-cfm-btn,.tips-cancel-btn,.check-blue-btn,.check-grey-btn{width:100px;height:40px;margin:auto;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background:#3daae9;color:#fff;border:none}
+		.return-btn,.tips-cancel-btn,.check-grey-btn{background:#fff;color:#555;margin-left:50px}
+		.tips-cancel-btn,.check-grey-btn{border:1px solid #ddd;margin-left:20px;display:none}
+		.close-btn1{top:8px;right:10px;width:18px;position:absolute;cursor:pointer}
+		.tips-popup-reason .tips-popup-content{height:220px}
+		.tips-popup-reason .tips-popup-content div{position:absolute;bottom:15px}
+		.tips-popup-reason .check-grey-btn{display:inline-block}
+		#refuse-reason{width:80%;height:30%;left:8%;position:absolute;resize:none}
+		.tips-popup-reason h5{color:#555;padding-left:8%;margin-bottom:4px;margin-top:-12px}
+		.red{color:red;}
+		.payment-form-bottom .wipeImgs{height:auto;padding:8px 0;}
+		.wipeImgs img{width:120px;height:90px;background-color:#eee;margin-right:15px;}
 	</style>
 </head>
 <body>
@@ -101,14 +124,6 @@
 						<form:options items="${brandList}" itemLabel="name" itemValue="id" htmlEscape="false"/>
 					</form:select>
 				</div>
-				<%--<div class="item">
-					<label>二手商品:</label>
-					<form:select path="searchProductCategory" class="input-medium">
-						<form:option value="" label="请选择"/>
-						<form:option value="1" label="否"/>
-						<form:option value="2" label="是"/>
-					</form:select>
-				</div>--%>
 				<div class="item">
 					<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询" style="margin-left:20px;"/>
 				</div>
@@ -274,6 +289,7 @@
 									<a class="red" href="javascript:void(0);" onclick="validChange(${product.id}, 2)">显身</a>
 								</c:if>
                                 <a class="red" href="javascript:void(0);" onclick="validChange(${product.id}, 0)" >删除</a>
+								<a href="${ctx}/product/new/statusRemarks?productId=${product.id}">状态备注</a>
                             </td>
 					    </c:if>
 					</c:if>
@@ -283,11 +299,39 @@
 		</c:forEach>
 		</tbody>
 	</table>
+	<div class="mask tips-popup-reason">
+		<div class="tips-popup-content">
+			<h4>确认提示</h4>
+			<h5 id="msg"></h5><br>
+			<h5><font color="red">* </font>备注:</h5>
+			<textarea id="refuse-reason" cols="30" rows="10" maxlength="200" placeholder="请填写备注信息描述原因,200字以内"></textarea>
+			<div>
+				<button class="check-cfm-btn check-blue-btn" type="button">确定</button>
+				<button class="check-grey-btn" type="button">取消</button>
+			</div>
+			<img class="close-btn1" src="/static/images/close-btn.png" alt="close-btn">
+		</div>
+	</div>
+	<div class="mask tips-popup">
+		<div class="tips-popup-content">
+			<h4>信息提示</h4>
+			<p></p>
+			<div>
+				<button class="tips-cfm-btn tips-cfm-directly" type="button">确定</button>
+				<button class="tips-cancel-btn" type="button">取消</button>
+			</div>
+			<img class="close-btn1" src="/static/images/close-btn.png" alt="close-btn">
+		</div>
+	</div>
 	<div class="pagination">${page}</div>
 <% request.setAttribute("caimeiSpi", Global.getConfig("caimei.spi"));%>
 <% request.setAttribute("caimeiCore", Global.getConfig("caimei.core"));%>
 <script type="text/javascript">
-    var num = '';
+	var num = '';
+	//商品id
+	var productID = 0;
+	//商品状态
+	var validFlag;
     function page(n,s){
         $("#pageNo").val(n);
         $("#pageSize").val(s);
@@ -319,40 +363,47 @@
         	$("#tinyType").val(tinyType);
         	$("#tinyType").prev().find(".select2-chosen").text($("#tinyType option:selected").text());
         },500)
-    });
 
-    // 选择配置
-    /*function settingApplets(that) {
-        var productId = that.attr('data-productid');
-        var preferred = that.attr('data-preferred');
-        var html = '<div id="auditBox"><div>请选择把该商品加入到如下商品列表中(可以多选)</div><div class="preferred">'
-                            +'<label><input '+(parseInt(preferred%10)>=1?'checked':'')+' name="preferredFlag" type="checkbox" value="1">新品上线</label>'
-                            +'<label><input '+(parseInt((preferred%100)/10)>=1?'checked':'')+' name="preferredFlag" type="checkbox" value="10">优惠商品</label>'
-                            +'<label><input '+(parseInt(preferred/100)>=1?'checked':'')+' name="preferredFlag" type="checkbox" value="100">常用商品</label>'
-                    +'</div></div>';
-        var submit = function (v, h, f) {
-            // 新品上线(001) 优惠商品(010) 常用商品(100),三者同时存在111
-            var preferredFlag = 0;
-            if (f.preferredFlag) {
-                var temp = f.preferredFlag.toString().split(",");
-                temp.forEach(function(item){
-                    preferredFlag += item*1;
-                });
-            }
-            $.post("${ctx}/product/new/addPreferred", {
-                'productId': productId,
-                'preferredFlag': preferredFlag
-            }, function (data) {
-                if (true == data.success) {
-                    $.jBox.tip(data.msg, 'info');
-                    $("#searchForm").submit();
-                } else {
-                    $.jBox.tip(data.msg, 'error');
-                }
-            }, "JSON");
-        };
-        $.jBox(html, {title: "选择配置", submit: submit});
-    }*/
+		$('.check-grey-btn').on('click', function () {
+			$('.tips-popup-reason').hide();
+		});
+
+		$('.tips-cfm-directly').on('click', function () {
+			if ($('.tips-cfm-btn').hasClass('tips-cfm-directly')) {
+				$('.tips-popup').hide();
+			} else {
+				$('#form').submit();
+			}
+		})
+
+		$('.check-cfm-btn').on('click', function (e) {
+			var textareaVal = $('#refuse-reason').val();
+			if (!textareaVal.trim()) {
+				showTips('信息提示', '备注内容不能为空');
+				return false;
+			}
+			$.ajax({
+				url: "${ctx}/product/new/auditProduct",
+				data: {"productID": productID, "validFlag": validFlag, "remarks": textareaVal},
+				async: false,
+				type: "POST",
+				success: function (data) {
+					if (true == data.success) {
+						$.jBox.tip(data.msg, 'info');
+					} else {
+						$.jBox.tip(data.msg, 'error');
+					}
+					$("#searchForm").submit();
+				}
+			})
+		})
+	});
+
+	function showTips(title, text) {
+		$('.tips-popup h4').text(title);
+		$('.tips-popup p').text(text);
+		$('.tips-popup').show();
+	}
 
     // 更新索引
     function updateIndex(id) {
@@ -490,21 +541,26 @@
         };
         $.jBox(html, {title: "审核", submit: submit});
     }
-    function validChange(id, flag) {
-			var msg = "提示信息";
-			if(flag == 10){
-				msg = "确定冻结该商品吗?冻结后该商品不会出现在采美商城。";
-			}else if(flag == 22){
-				msg = "确定解除冻结该商品吗?";
-			}else if(flag == 9){
-				msg = "确定隐身此商品吗?";
-			}else if(flag == 2){
-				msg = "确定显身此商品吗?";
-			}else if(flag == 0){
-				msg = "确定删除该商品吗?删除后不可恢复。";
-			}
 
-            top.$.jBox.confirm(msg,'系统提示',function(v,h,f){
+	function validChange(id, flag) {
+		var msg = "提示信息";
+		if (flag == 10) {
+			msg = "确定冻结该商品吗?";
+		} else if (flag == 22) {
+			msg = "确定解除冻结该商品吗?";
+		} else if (flag == 9) {
+			msg = "确定隐身此商品吗?";
+		} else if (flag == 2) {
+			msg = "确定显身此商品吗?";
+		} else if (flag == 0) {
+			msg = "确定删除该商品吗?";
+		}
+		$("#msg").text(msg);
+		$('.tips-popup-reason').show();
+		productID = id;
+		validFlag = flag;
+
+            /*top.$.jBox.confirm(msg,'系统提示',function(v,h,f){
                 if(v=='ok'){
                     $.post("${ctx}/product/new/auditProduct",{'productID': id,'validFlag': flag}, function(data) {
                         if(true==data.success){
@@ -516,7 +572,7 @@
                     },"JSON");//这里返回的类型有:json,html,xml,text
                 }
                 return;
-            },{buttonsFocus:1,persistent: true});
+            },{buttonsFocus:1,persistent: true});*/
 	}
 	// 一级分类
 	var bigtypeList = [

+ 140 - 0
src/main/webapp/WEB-INF/views/modules/product-new/statusRemarksList.jsp

@@ -0,0 +1,140 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+    <title>商品管理</title>
+    <meta name="decorator" content="default"/>
+    <style type="text/css">
+        .table th {text-align: center}
+        .table td {text-align: center}
+        .pay-table th {
+            background: #f9f9f9;
+        }
+        .pay-table tr:first-child th {
+            background: #eee !important;
+        }
+        .pay-table td {
+            background: #fff !important;
+        }
+
+        .form-horizontal .controls {
+            margin-left: 0;
+        }
+
+        .dateInput input {
+            width: 150px;
+        }
+
+        .clause span {
+            margin-left: 30px;
+        }
+
+        #productTable th {
+            text-align: center;
+            white-space: nowrap;
+        }
+
+        #productTable td {
+            text-align: center;
+            white-space: nowrap;
+        }
+        .conList .btn:nth-of-type(1){
+            margin-left: 25px;
+        }
+        .upload-content .conList .btn:nth-of-type(1) {
+            width: 90px;
+            height: 100px;
+            border: 2px solid #eee;
+            background: #fff;
+            position: relative;
+        }
+        .upload-content .conList .btn:nth-of-type(1)>div {
+            position: absolute;
+            top: 50%;
+            left: 50%;
+            transform: translate(-50%, -50%);
+            color: #666;
+        }
+        .upload-content .conList .btn:nth-of-type(1) span {
+            font-size: 35px;
+        }
+        .upload-content .conList .btn:nth-of-type(1) h5 {
+            color: #666;
+        }
+    </style>
+    <script type="text/javascript">
+        $(document).ready(function() {
+            $("#inputForm").validate({
+                ignore:"",
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+        });
+        function page(n,s){
+            $("#pageNo").val(n);
+            $("#pageSize").val(s);
+            $("#searchForm").submit();
+            return false;
+        }
+
+    </script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/product/new/list?searchProductCategory=1">商品列表</a></li>
+    <li class="active"><a href="${ctx}/product/new/statusRemarks?productId=${productId}">状态备注</a></li>
+</ul>
+<c:if test="${not empty records}">
+    <c:forEach items="${records}" var="record">
+        <div style="margin-left: 35px">
+            <div style="font-weight: bold;width: 100%;float: left;">
+                <span style="float: left;">${record.systemName}</span><span style="float: left;margin-left:10px;"><fmt:formatDate value="${record.addTime}" pattern="yyyy-MM-dd HH:mm"/></span>
+                <span style="margin-left: 35px;">
+                    <c:if test="${record.validFlag eq 0}">
+                        <font color="#0099FF">删除</font>
+                    </c:if>
+                    <c:if test="${record.validFlag eq 2}">
+                        <font color="#0099FF">显身</font>
+                    </c:if>
+                    <c:if test="${record.validFlag eq 9}">
+                        <font color="#0099FF">隐身</font>
+                    </c:if>
+                    <c:if test="${record.validFlag eq 10}">
+                        <font color="#0099FF">冻结</font>
+                    </c:if>
+                    <c:if test="${record.validFlag eq 22}">
+                        <font color="#0099FF">取消冻结</font>
+                    </c:if>
+                </span>
+            </div>
+            <br><br>
+            <div>
+                <label>备注内容:${record.remarks}</label>
+            </div>
+        </div>
+        <hr>
+    </c:forEach>
+</c:if>
+<c:if test="${empty records}">
+    <p style="text-align: center;"><font  color="#1e90ff">该商品暂无冻结/隐身/删除的状态备注</font></p>
+</c:if>
+<div>
+    <input id="btnCancel" class="btn" type="button" value="返回" onclick="history.go(-1)"/>
+</div>
+<script>
+</script>
+</body>
+</html>
+