ソースを参照

供应商百科

Aslee 3 年 前
コミット
cd259c7339

+ 3 - 0
src/main/java/com/caimei/modules/baike/dao/CmBaikeProductDao.java

@@ -7,6 +7,7 @@ import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
 import com.caimei.modules.baike.entity.CmBaikeProduct;
 import com.caimei.modules.baike.entity.CmBaikeProduct;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -47,4 +48,6 @@ public interface CmBaikeProductDao extends CrudDao<CmBaikeProduct> {
     void insertProductQuestion(@Param("question") String question,@Param("answer") String answer,@Param("productId") String productId);
     void insertProductQuestion(@Param("question") String question,@Param("answer") String answer,@Param("productId") String productId);
 
 
     Integer findTopLength();
     Integer findTopLength();
+
+    void auditBaike(@Param("id") String id,@Param("auditStatus") Integer auditStatus,@Param("failReason") String failReason,@Param("publishTime") Date publishTime);
 }
 }

+ 9 - 0
src/main/java/com/caimei/modules/baike/entity/CmBaikeProduct.java

@@ -54,6 +54,7 @@ public class CmBaikeProduct extends DataEntity<CmBaikeProduct> {
 	private List<String> authImageList;			// 产品认证图片列表
 	private List<String> authImageList;			// 产品认证图片列表
 	private List<String> displayImageList;		// 效果展示图片列表
 	private List<String> displayImageList;		// 效果展示图片列表
 	private List<CmBaikeProductQuestion> questionList;		//问题列表
 	private List<CmBaikeProductQuestion> questionList;		//问题列表
+	private String shopName;		//供应商名称
 	
 	
 	public CmBaikeProduct() {
 	public CmBaikeProduct() {
 		super();
 		super();
@@ -366,4 +367,12 @@ public class CmBaikeProduct extends DataEntity<CmBaikeProduct> {
 	public void setFailReason(String failReason) {
 	public void setFailReason(String failReason) {
 		this.failReason = failReason;
 		this.failReason = failReason;
 	}
 	}
+
+	public String getShopName() {
+		return shopName;
+	}
+
+	public void setShopName(String shopName) {
+		this.shopName = shopName;
+	}
 }
 }

+ 11 - 0
src/main/java/com/caimei/modules/baike/service/CmBaikeProductService.java

@@ -1,9 +1,11 @@
 package com.caimei.modules.baike.service;
 package com.caimei.modules.baike.service;
 
 
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 import com.caimei.modules.baike.entity.CmBaikeProductParam;
 import com.caimei.modules.baike.entity.CmBaikeProductParam;
 import com.caimei.modules.baike.entity.CmBaikeProductQuestion;
 import com.caimei.modules.baike.entity.CmBaikeProductQuestion;
+import com.caimei.modules.info.entity.Info;
 import com.caimei.modules.miniprogram.utils.UploadPicUtils;
 import com.caimei.modules.miniprogram.utils.UploadPicUtils;
 import com.thinkgem.jeesite.common.utils.StringUtils;
 import com.thinkgem.jeesite.common.utils.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -131,4 +133,13 @@ public class CmBaikeProductService extends CrudService<CmBaikeProductDao, CmBaik
 		cmBaikeProduct.setTopFlag(1);
 		cmBaikeProduct.setTopFlag(1);
 		return cmBaikeProductDao.findList(cmBaikeProduct);
 		return cmBaikeProductDao.findList(cmBaikeProduct);
 	}
 	}
+
+	@Transactional(readOnly = false)
+	public void auditBaike(CmBaikeProduct cmBaikeProduct) {
+		Date publishTime = null;
+		if (cmBaikeProduct.getAuditStatus() == 2) {
+			publishTime = new Date();
+		}
+		cmBaikeProductDao.auditBaike(cmBaikeProduct.getId(), cmBaikeProduct.getAuditStatus(), cmBaikeProduct.getFailReason(), publishTime);
+	}
 }
 }

+ 36 - 2
src/main/java/com/caimei/modules/baike/web/CmBaikeProductController.java

@@ -120,7 +120,7 @@ public class CmBaikeProductController extends BaseController {
         String commodityType = cmBaikeProduct.getCommodityType() == 1 ? "产品" : "仪器";
         String commodityType = cmBaikeProduct.getCommodityType() == 1 ? "产品" : "仪器";
         addMessage(redirectAttributes, "保存" + commodityType + "成功");
         addMessage(redirectAttributes, "保存" + commodityType + "成功");
 		cleanRedisCache();
 		cleanRedisCache();
-        return "redirect:" + Global.getAdminPath() + "/baike/cmBaikeProduct/?repage&commodityType=" + cmBaikeProduct.getCommodityType();
+		return "redirect:" + Global.getAdminPath() + "/baike/cmBaikeProduct/?repage&commodityType=" + cmBaikeProduct.getCommodityType() + "&publishSource=1";
 	}
 	}
 	
 	
 	@RequestMapping(value = "delete")
 	@RequestMapping(value = "delete")
@@ -128,7 +128,7 @@ public class CmBaikeProductController extends BaseController {
 		cmBaikeProductService.delete(cmBaikeProduct);
 		cmBaikeProductService.delete(cmBaikeProduct);
 		addMessage(redirectAttributes, "删除产品成功");
 		addMessage(redirectAttributes, "删除产品成功");
 		cleanRedisCache();
 		cleanRedisCache();
-        return "redirect:" + Global.getAdminPath() + "/baike/cmBaikeProduct/?repage&commodityType=" + cmBaikeProduct.getCommodityType();
+        return "redirect:" + Global.getAdminPath() + "/baike/cmBaikeProduct/?repage&commodityType=" + cmBaikeProduct.getCommodityType() + "&publishSource=1";
 	}
 	}
 
 
     @RequestMapping(value = "updateStatus")
     @RequestMapping(value = "updateStatus")
@@ -193,4 +193,38 @@ public class CmBaikeProductController extends BaseController {
 //		generateUtils.generateBaikePage(1);
 //		generateUtils.generateBaikePage(1);
 //		generateUtils.generateBaikePage(2);
 //		generateUtils.generateBaikePage(2);
 	}
 	}
+
+	@RequestMapping(value = "check")
+	public String checkInfo(CmBaikeProduct cmBaikeProduct,Model model) {
+		model.addAttribute("cmBaikeProduct", cmBaikeProduct);
+		// 商品类型
+		String commodityType = cmBaikeProduct.getCommodityType() == 1 ? "产品" : "仪器";
+		// 参数列表
+		List<CmBaikeProductParam> paramList = cmBaikeProductDao.findParamList(cmBaikeProduct.getId());
+		cmBaikeProduct.setParamList(paramList);
+		// 产品/仪器认证图片列表
+		List<String> authImageList = cmBaikeProductDao.findImageList(cmBaikeProduct.getId(), 1);
+		cmBaikeProduct.setAuthImageList(authImageList);
+		// 效果展示图片列表
+		List<String> displayImageList = cmBaikeProductDao.findImageList(cmBaikeProduct.getId(), 2);
+		cmBaikeProduct.setDisplayImageList(displayImageList);
+		// 问题列表
+		List<CmBaikeProductQuestion> questionList = cmBaikeProductDao.findQuestionList(cmBaikeProduct.getId());
+		cmBaikeProduct.setQuestionList(questionList);
+		model.addAttribute("commodityType", commodityType);
+		return "modules/baike/checkBaikePage";
+	}
+
+	@RequestMapping(value = "toAuditPage")
+	public String toAuditPage(CmBaikeProduct cmBaikeProduct,Model model) {
+		model.addAttribute("cmBaikeProduct", cmBaikeProduct);
+		return "modules/baike/auditBaike";
+	}
+
+	@RequestMapping(value = "auditBaike")
+	@ResponseBody
+	public Boolean auditBaike(CmBaikeProduct cmBaikeProduct) {
+		cmBaikeProductService.auditBaike(cmBaikeProduct);
+		return true;
+	}
 }
 }

+ 1 - 1
src/main/java/com/caimei/modules/info/web/InfoController.java

@@ -188,7 +188,7 @@ public class InfoController extends BaseController {
 		addMessage(redirectAttributes, "删除信息成功");
 		addMessage(redirectAttributes, "删除信息成功");
 		// 删除索引
 		// 删除索引
 		coreServiceUitls.deleteArticleIndex(Integer.valueOf(info.getId()));
 		coreServiceUitls.deleteArticleIndex(Integer.valueOf(info.getId()));
-		return "redirect:"+Global.getAdminPath()+"/info/info/?repage";
+		return "redirect:"+Global.getAdminPath()+"/info/info/?repage&publishSource=1";
 	}
 	}
 
 
 	/**
 	/**

+ 11 - 0
src/main/resources/mappings/modules/baike/CmBaikeProductMapper.xml

@@ -6,6 +6,7 @@
 		a.id AS "id",
 		a.id AS "id",
 		a.commodityType AS "commodityType",
 		a.commodityType AS "commodityType",
 		a.publishSource,
 		a.publishSource,
+		s.name as "shopName",
 		a.shopId,
 		a.shopId,
 		a.name AS "name",
 		a.name AS "name",
 		a.alias AS "alias",
 		a.alias AS "alias",
@@ -39,6 +40,7 @@
 	
 	
 	<sql id="cmBaikeProductJoins">
 	<sql id="cmBaikeProductJoins">
 		left join cm_baike_type cbt on a.typeId = cbt.id
 		left join cm_baike_type cbt on a.typeId = cbt.id
+		left join shop s on a.shopId = s.shopID
 	</sql>
 	</sql>
     
     
 	<select id="get" resultType="CmBaikeProduct">
 	<select id="get" resultType="CmBaikeProduct">
@@ -232,6 +234,15 @@
 	<update id="updateTopPosition">
 	<update id="updateTopPosition">
 		update cm_baike_product set topPosition = #{topPosition} where id = #{id}
 		update cm_baike_product set topPosition = #{topPosition} where id = #{id}
 	</update>
 	</update>
+	<update id="auditBaike">
+		update cm_baike_product
+		set auditStatus = #{auditStatus},
+		failReason  = #{failReason}
+		<if test="publishTime != null">
+			,publishTime = #{publishTime}
+		</if>
+		where id = #{id}
+	</update>
 
 
 	<delete id="delete">
 	<delete id="delete">
 		DELETE FROM cm_baike_product
 		DELETE FROM cm_baike_product

+ 192 - 0
src/main/webapp/WEB-INF/views/modules/baike/auditBaike.jsp

@@ -0,0 +1,192 @@
+<%@ 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>
+        .controls .new-tag {
+            display: inline-block;
+            width: 78px;
+            height: 30px;
+            border: 1px solid #e5e5e5;
+            border-radius: 5px;
+            margin: 7px;
+            text-align: center;
+            line-height: 30px;
+            font-size: 14px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            cursor: pointer;
+        }
+
+        .controls .new-tag.active {
+            border-color: #e15616;
+            color: #e15616;
+        }
+
+        #tagInput {
+            width: 263px;
+            margin: 7px;
+            display: inline-block;
+            height: 30px;
+        }
+
+        .controls .tags-operate .tag-add {
+            height: 40px;
+            line-height: 40px;
+            vertical-align: middle;
+        }
+
+        .upload {
+            position: relative;
+            display: inline-block;
+            background: #D0EEFF;
+            border: 1px solid #99D3F5;
+            border-radius: 4px;
+            padding: 4px 12px;
+            color: #1E88C7;
+            text-decoration: none;
+            text-indent: 0;
+            line-height: 20px;
+            margin-left: 20px;
+            cursor: pointer;
+            width: 52px;
+            height: 20px;
+        }
+
+        .upload input {
+            position: absolute;
+            width: 170px;
+            font-size: 20px;
+            right: 0;
+            top: 0;
+            opacity: 0;
+            cursor: pointer;
+        }
+
+        .upload:hover {
+            background: #AADFFD;
+            border-color: #78C3F3;
+            color: #004974;
+            text-decoration: none;
+        }
+
+        .add-submit {
+            position: relative;
+            display: inline;
+            background: #D0EEFF;
+            border: 1px solid #99D3F5;
+            border-radius: 4px;
+            padding: 4px 12px;
+            color: #1E88C7;
+            text-decoration: none;
+            text-indent: 0;
+            line-height: 20px;
+            margin-left: 20px;
+            cursor: pointer;
+            width: 52px;
+            height: 30px;
+        }
+
+        .add-submit input {
+            position: absolute;
+            width: 50px;
+            font-size: 20px;
+            right: 0;
+            top: 0;
+            opacity: 0;
+            cursor: pointer;
+        }
+
+        .add-submit:hover {
+            background: #AADFFD;
+            border-color: #78C3F3;
+            color: #004974;
+            text-decoration: none;
+        }
+
+        .upload-loading{
+            display: none;
+            width: 32px;
+            height: 32px;
+            margin-left: 10px;
+        }
+        .upload-loading img{
+            width: 16px;
+            height: 16px;
+            margin: 0 auto 0;
+        }
+
+        #file-list-display {
+            width: 600px;
+            height: auto;
+            float: left;
+            margin-left: 20px;
+        }
+
+        #file-list-display p {
+            line-height: 30px;
+            font-size: 14px;
+            color: #333333;
+            margin: 0;
+        }
+
+        #file-list-display p .del {
+            color: #2fa4e7;
+            font-size: 12px;
+            cursor: pointer;
+            margin-left: 20px;
+        }
+
+        .Main-content{
+            height: 100px;
+        }
+
+        .control-group{
+            margin-top: 40px;
+        }
+    </style>
+
+</head>
+<body>
+<form:form id="inputForm" modelAttribute="cmBaikeProduct" action="${ctx}/baike/cmBaikeProduct/audit" method="post" class="form-horizontal">
+    <sys:message content="${message}"/>
+    <div class="control-group">
+        <label class="control-label">审核状态</label>
+        <div class="controls">
+            <input type="radio" name="auditStatus" value="2" onclick="updateAuditStatus(2)" ${empty cmBaikeProduct.auditStatus?'checked=checked':cmBaikeProduct.auditStatus eq 1?'checked=checked':''}> 审核通过
+            <input type="radio" name="auditStatus" value="3" onclick="updateAuditStatus(3)" ${cmBaikeProduct.auditStatus eq 3?'checked=checked':''}> 审核失败
+        </div>
+    </div>
+    <div class="control-group" id="failReasonDiv" style="${empty cmBaikeProduct.auditStatus or cmBaikeProduct.auditStatus eq 1?'display: none':''}">
+        <label class="control-label">失败原因</label>
+        <div class="controls">
+            <textarea style="width: 400px;height: 90px" id="failReason">${cmBaikeProduct.failReason}</textarea>
+        </div>
+    </div>
+</form:form>
+
+<script>
+    function getCheckedItems() {
+        var items = new Array();
+        items.push({
+            auditStatus: $("input[name='auditStatus']:checked").val(),
+            failReason: $("#failReason").val()
+        });
+        return items;
+    }
+
+    function updateAuditStatus(auditStatus) {
+        var elementById = document.getElementById("failReasonDiv");
+        if (auditStatus === 2) {
+            elementById.style.cssText = "display:none";
+        } else {
+            elementById.style.cssText = "";
+        }
+    }
+</script>
+</body>
+</html>
+

+ 360 - 0
src/main/webapp/WEB-INF/views/modules/baike/checkBaikePage.jsp

@@ -0,0 +1,360 @@
+<%@ page import="com.thinkgem.jeesite.common.config.Global" %>
+<%@ 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>
+		.titleClass{
+			font-weight: bolder;
+			margin-left: -40px;
+		}
+		.keyClass{
+			font-weight: bolder;
+		}
+		.paramRow {
+			margin-top: 10px;
+		}
+	</style>
+	<style>
+		.clearfix::after{
+			content: "";
+			display: block;
+			clear: both;
+		}
+		.iconBox{
+			font-size: 0;
+		}/*
+		.controls{
+			margin-left: 0 !important;
+		}*/
+		.controls .conList{
+			display: inline-block;
+			margin-right: 15px;
+		}
+		.conList .btn:nth-of-type(1){
+			margin-left: 25px;
+		}
+		.select2-choice{
+			width: 100px;
+		}
+		.upload-content {
+			float: left;
+			margin-top: -100px;
+			margin-right: -40px;
+		}
+		.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;
+		}
+		.cancel-upload {
+			background: transparent;
+			border: none;
+			box-shadow: none;
+			position: relative;
+			top: -38px;
+			left: -25px;
+			cursor: pointer;
+			z-index: 100;
+		}
+		.upload-content .conList ol li {
+			width: 114px;
+			min-height: 80px;
+			text-align: center;
+			background: #fff;
+			position: relative;
+			top: 120px;
+			margin-left: 2px;
+			height: 100px;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			box-sizing: border-box;
+		}
+		.hide-pic {
+			display: none !important;
+		}
+		.upload-image-list{
+			width: 660px;
+			float: left;
+		}
+	</style>
+	<style>
+		.iconBox{
+			font-size: 0;
+		}
+		.controls .conList{
+			display: inline-block;
+			margin-right: 15px;
+		}
+		.conList .btn:nth-of-type(1){
+			margin-left: 25px;
+		}
+		.select2-choice{
+			width: 100px;
+		}
+		.upload-content {
+			float: left;
+			margin-top: -70px;
+			margin-left: 20px !important;
+		}
+		.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;
+		}
+		.cancel-upload {
+			background: transparent;
+			border: none;
+			box-shadow: none;
+			position: relative;
+			top: -38px;
+			left: -25px;
+			cursor: pointer;
+			z-index: 100;
+		}
+		.hide-pic {
+			display: none !important;
+		}
+	</style>
+	<script type="text/javascript">
+	</script>
+</head>
+<body>
+	<ul class="nav nav-tabs">
+		<li><a href="${ctx}/baike/cmBaikeProduct/?commodityType=${cmBaikeProduct.commodityType}&publishSource=${cmBaikeProduct.publishSource}">${commodityType}</a></li>
+		<li class="active"><a href="${ctx}/baike/cmBaikeProduct/check?id=${cmBaikeProduct.id}">查看</a></li>
+	</ul><br/>
+	<form:form id="inputForm" modelAttribute="cmBaikeProduct" action="${ctx}/baike/cmBaikeProduct/save" method="post" class="form-horizontal">
+		<div class="control-group">
+			<label class="control-label titleClass">${commodityType}简述</label>
+		</div>
+		<div class="control-group">
+			<label class="control-label">${commodityType}名称:</label>
+			<div class="controls">
+				${cmBaikeProduct.name}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">${commodityType}别名:</label>
+			<div class="controls">
+				${cmBaikeProduct.alias}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">${commodityType}概述:</label>
+			<div class="controls" style="width:812px">
+				${cmBaikeProduct.discription}
+            </div>
+		</div>
+        <div class="control-group">
+            <label class="control-label">SEO关键词:</label>
+            <div class="controls">
+				${cmBaikeProduct.seoKeyword}
+            </div>
+        </div>
+		<div class="control-group">
+			<label class="control-label">${commodityType}图片:</label>
+			<div class="controls">
+				<a href="${cmBaikeProduct.image}" style="cursor: pointer;margin-left: 20px" target="_blank"><img src="${cmBaikeProduct.image}" style="width: 120px"></a>
+			</div>
+		</div>
+        <div style="${cmBaikeProduct.commodityType eq 2?'':'display:none'}" >
+            <div class="control-group">
+                <label class="control-label titleClass">正品识别</label>
+            </div>
+            <div class="control-group">
+                <label class="control-label">认证链接:</label>
+                <div class="controls">
+					${cmBaikeProduct.authLink}
+                </div>
+            </div>
+			<div class="control-group">
+				<label class="control-label">认证二维码:</label>
+				<div class="controls">
+					<a href="${cmBaikeProduct.authQrCode}" style="cursor: pointer;margin-left: 20px" target="_blank"><img src="${cmBaikeProduct.authQrCode}" style="width: 120px"></a>
+				</div>
+			</div>
+        </div>
+		<div class="paramList">
+			<div class="control-group">
+				<label class="control-label titleClass">${commodityType}参数</label>
+			</div>
+			<c:forEach items="${cmBaikeProduct.paramList}" var="productParam" varStatus="index">
+				<div class="control-group">
+					<label class="control-label">${productParam.name}:</label>
+					<div class="controls">
+						${productParam.content}
+					</div>
+				</div>
+			</c:forEach>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">${commodityType}优点:</label>
+			<div class="controls" style="width:812px">
+				${cmBaikeProduct.advantage}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">${commodityType}缺点:</label>
+			<div class="controls" style="width:812px">
+				${cmBaikeProduct.disadvantage}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">${commodityType}原理:</label>
+			<div class="controls" style="width:812px">
+				${cmBaikeProduct.principle}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label titleClass">${commodityType}档案</label>
+		</div>
+		<div class="control-group">
+			<label class="control-label">品牌:</label>
+			<div class="controls">
+				${cmBaikeProduct.brand}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">产地:</label>
+			<div class="controls">
+				${cmBaikeProduct.producePlace}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">上市时间:</label>
+			<div class="controls">
+				<fmt:formatDate value="${cmBaikeProduct.marketTime}" pattern="yyyy-MM-dd HH:mm"/>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label">公司/厂商:</label>
+			<div class="controls">
+				${cmBaikeProduct.company}
+			</div>
+		</div>
+		<div class="control-group" style="position: relative">
+			<label class="control-label">NMPA认证时间:</label>
+			<div class="controls">
+				<fmt:formatDate value="${cmBaikeProduct.nmpaTime}" pattern="yyyy-MM-dd HH:mm"/>
+			</div>
+		</div>
+		<div class="control-group" style="width: 1000px">
+			<label class="control-label keyClass">${commodityType}认证:</label>
+			<div class="controls">
+				<c:forEach items="${cmBaikeProduct.authImageList}" var="authImage" varStatus="index">
+					<a href="${authImage}" style="cursor: pointer;margin-left: 20px" target="_blank"><img src="${authImage}" style="width: 120px"></a>
+				</c:forEach>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">适应人群:</label>
+			<div class="controls" style="width:812px">
+				${cmBaikeProduct.adaptiveMan}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">不适应人群:</label>
+			<div class="controls" style="width:812px">
+				${cmBaikeProduct.unAdaptiveMan}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">术前术后:</label>
+			<div class="controls" style="width:812px">
+				${cmBaikeProduct.aroundOperation}
+			</div>
+		</div>
+		<div class="control-group" style="width: 1000px">
+			<label class="control-label keyClass">效果展示:</label>
+			<div class="controls">
+				<c:forEach items="${cmBaikeProduct.displayImageList}" var="displayImage" varStatus="index">
+					<a href="${displayImage}" style="cursor: pointer;margin-left: 20px" target="_blank"><img src="${displayImage}" style="width: 120px"></a>
+				</c:forEach>
+			</div>
+		</div>
+        <div class="questionList">
+            <div class="control-group">
+                <label class="control-label keyClass">常见问题:</label>
+            </div>
+			<c:forEach items="${cmBaikeProduct.questionList}" var="question" varStatus="index">
+				<div class="control-group">
+					<label class="control-label">问题${index.index+1}:</label>
+					<div class="controls">
+						${question.question}
+					</div>
+				</div>
+				<div class="control-group">
+					<label class="control-label">答:</label>
+					<div class="controls">
+						${question.answer}
+					</div>
+				</div>
+			</c:forEach>
+        </div>
+
+		<div class="control-group">
+			<label class="control-label keyClass">发布时间:</label>
+			<div class="controls">
+				<fmt:formatDate value="${cmBaikeProduct.publishTime}" pattern="yyyy-MM-dd HH:mm"/>
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">基础浏览量:</label>
+			<div class="controls">
+				${cmBaikeProduct.basePv}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">产品类别:</label>
+			<div class="controls">
+				${cmBaikeProduct.typeName}
+			</div>
+		</div>
+		<div class="control-group">
+			<label class="control-label keyClass">状态:</label>
+			<div class="controls">
+				${cmBaikeProduct.status eq 1?'已启用':'已停用'}
+			</div>
+		</div>
+	</form:form>
+
+<% request.setAttribute("caimeiCore", Global.getConfig("caimei.core"));%>
+<script type="text/javascript" src="${ctxStatic}/ckeditor5-new/ckeditor.js"></script>
+<script>
+</script>
+</body>
+</html>

+ 61 - 121
src/main/webapp/WEB-INF/views/modules/baike/shopBaikeProductList.jsp

@@ -28,11 +28,12 @@
 </head>
 </head>
 <body>
 <body>
 	<ul class="nav nav-tabs">
 	<ul class="nav nav-tabs">
-		<li class=${cmBaikeProduct.commodityType eq 1?"active":""}><a href="${ctx}/baike/cmBaikeProduct/?commodityType=1">产品</a></li>
-		<li class=${cmBaikeProduct.commodityType eq 2?"active":""}><a href="${ctx}/baike/cmBaikeProduct/?commodityType=2">仪器</a></li>
+		<li class=${cmBaikeProduct.commodityType eq 1?"active":""}><a href="${ctx}/baike/cmBaikeProduct/?commodityType=1&publishSource=2">产品</a></li>
+		<li class=${cmBaikeProduct.commodityType eq 2?"active":""}><a href="${ctx}/baike/cmBaikeProduct/?commodityType=2&publishSource=2">仪器</a></li>
 	</ul>
 	</ul>
 	<form:form id="searchForm" modelAttribute="cmBaikeProduct" action="${ctx}/baike/cmBaikeProduct/" method="post" class="breadcrumb form-search">
 	<form:form id="searchForm" modelAttribute="cmBaikeProduct" action="${ctx}/baike/cmBaikeProduct/" method="post" class="breadcrumb form-search">
 		<form:hidden path="commodityType"/>
 		<form:hidden path="commodityType"/>
+		<form:hidden path="publishSource"/>
 		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
 		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
 		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
 		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
 		<div class="ul-form">
 		<div class="ul-form">
@@ -40,25 +41,19 @@
 				<form:input path="id" htmlEscape="false" class="input-medium"/>
 				<form:input path="id" htmlEscape="false" class="input-medium"/>
 			 <label>${commodityType}名称:</label>
 			 <label>${commodityType}名称:</label>
 				<form:input path="name" htmlEscape="false" maxlength="50" class="input-medium"/>
 				<form:input path="name" htmlEscape="false" maxlength="50" class="input-medium"/>
-			 <label>首页置顶:</label>
-			 <form:select path="topFlag" class="input-medium">
-				<form:option value="" label="全部"/>
-				<form:option value="1" label="是"/>
-				<form:option value="0" label="否"/>
-			 </form:select>
 			 <label>${commodityType}分类:</label>
 			 <label>${commodityType}分类:</label>
 				<form:select path="typeId" class="input-medium">
 				<form:select path="typeId" class="input-medium">
 					<form:option value="" label="全部"/>
 					<form:option value="" label="全部"/>
 					<form:options items="${typeList}" itemLabel="name" itemValue="id" htmlEscape="false"/>
 					<form:options items="${typeList}" itemLabel="name" itemValue="id" htmlEscape="false"/>
 				</form:select>
 				</form:select>
-			 <label>状态:</label>
-				<form:select path="status" class="input-medium">
+			<label>审核状态:</label>
+				<form:select path="auditStatus" class="input-mini">
 					<form:option value="" label="全部"/>
 					<form:option value="" label="全部"/>
-					<form:option value="1" label="启用"/>
-					<form:option value="0" label="停用"/>
+					<form:option value="1" label="待审核"/>
+					<form:option value="2" label="审核通过"/>
+					<form:option value="3" label="审核失败"/>
 				</form:select>
 				</form:select>
 			&nbsp;&nbsp;<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
 			&nbsp;&nbsp;<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
-			&nbsp;&nbsp;<a class="btn btn-primary" style="width: 50px" href="${ctx}/baike/cmBaikeProduct/form?commodityType=${cmBaikeProduct.commodityType}">添加</a>
 			<div class="clearfix"></div>
 			<div class="clearfix"></div>
 		</div>
 		</div>
 	</form:form>
 	</form:form>
@@ -69,12 +64,11 @@
 				<th>ID</th>
 				<th>ID</th>
 				<th>${commodityType}名称</th>
 				<th>${commodityType}名称</th>
 				<th>${commodityType}分类</th>
 				<th>${commodityType}分类</th>
-				<th>基础浏览量</th>
-				<th>实际浏览量</th>
-				<th>首页置顶位</th>
+				<th>浏览量</th>
+				<th>审核状态</th>
 				<th>发布时间</th>
 				<th>发布时间</th>
+				<th>供应商</th>
 				<th>添加时间</th>
 				<th>添加时间</th>
-				<th>状态</th>
 				<th>操作</th>
 				<th>操作</th>
 			</tr>
 			</tr>
 		</thead>
 		</thead>
@@ -90,58 +84,31 @@
 				<td>
 				<td>
 					${cmBaikeProduct.typeName}
 					${cmBaikeProduct.typeName}
 				</td>
 				</td>
-				<td>
-					${cmBaikeProduct.basePv}
-				</td>
 				<td>
 				<td>
 					${cmBaikeProduct.actualPv}
 					${cmBaikeProduct.actualPv}
 				</td>
 				</td>
 				<td>
 				<td>
-					${cmBaikeProduct.topPosition eq 1?'第一位':cmBaikeProduct.topPosition eq 2?'第二位':cmBaikeProduct.topPosition eq 3?'第三位':''}
+					<font color="${cmBaikeProduct.auditStatus eq 1?'black':cmBaikeProduct.auditStatus eq 2?'#2FA4E7':cmBaikeProduct.auditStatus eq 3?'red':'#2FA4E7'}"> ${cmBaikeProduct.auditStatus eq 1?'待审核':cmBaikeProduct.auditStatus eq 2?'审核通过':cmBaikeProduct.auditStatus eq 3?'审核失败':'审核通过'}</font>
 				</td>
 				</td>
 				<td>
 				<td>
-					<fmt:formatDate value="${cmBaikeProduct.publishTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					<c:if test="${cmBaikeProduct.auditStatus eq 2}">
+						<fmt:formatDate value="${cmBaikeProduct.publishTime}" pattern="yyyy-MM-dd HH:mm"/>
+					</c:if>
+					<c:if test="${cmBaikeProduct.auditStatus ne 2}">
+						--
+					</c:if>
 				</td>
 				</td>
 				<td>
 				<td>
-					<fmt:formatDate value="${cmBaikeProduct.addTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+					${cmBaikeProduct.shopName}
 				</td>
 				</td>
 				<td>
 				<td>
-					<c:if test="${cmBaikeProduct.status eq 1 }">
-						<font color="green">已启用</font>
-						<a href="javascript:void(0);" onclick="updateStatus(0,${cmBaikeProduct.id});" >
-							停用
-						</a>
-					</c:if>
-					<c:if test="${cmBaikeProduct.status ne 1 }">
-						<font color="red">已停用</font>
-						<a href="javascript:void(0)" onclick="updateStatus(1,${cmBaikeProduct.id});">
-							启用
-						</a>
-					</c:if>
+					<fmt:formatDate value="${cmBaikeProduct.addTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
 				</td>
 				</td>
 				<td>
 				<td>
-					<a target="_blank" href="${fns:getConfig('wwwServer')}encyclopedia/${cmBaikeProduct.commodityType eq 1?'product':'instrument'}-${cmBaikeProduct.id}.html">查看</a>
-    				<a href="${ctx}/baike/cmBaikeProduct/form?id=${cmBaikeProduct.id}">编辑</a>
-					<a href="${ctx}/baike/cmBaikeProduct/delete?id=${cmBaikeProduct.id}" onclick="return confirmx('确认要删除该产品吗?', this.href)">删除</a>
-					<a onclick="showTopSelect(${index.index},'open')" href="javascript:void(0)">首页置顶</a>
-					<c:if test="${cmBaikeProduct.topPosition ne null}">
-						<a onclick="updateTopPosition('','${cmBaikeProduct.id}','clearTopPosition')" href="javascript:void(0)">清除置顶</a>
-					</c:if>
-					<div style="display: none" class="topSelect" id="topSelect${index.index}" onmouseleave="showTopSelect(${index.index},'close')">
-						<table style="border: 2px solid #000000;" cellpadding="0" cellspacing="0">
-							<tbody>
-							<tr>
-								<td><a onclick="updateTopPosition('1',${cmBaikeProduct.id},'setTopPosition')" href="javascript:void(0)">置顶第一位</a></td>
-							</tr>
-							<tr>
-								<td><a onclick="updateTopPosition('2',${cmBaikeProduct.id},'setTopPosition')" href="javascript:void(0)">置顶第二位</a></td>
-							</tr>
-							<tr>
-								<td><a onclick="updateTopPosition('3',${cmBaikeProduct.id},'setTopPosition')" href="javascript:void(0)">置顶第三位</a></td>
-							</tr>
-							</tbody>
-						</table>
-					</div>
+					<a href="javascript:;" style="display: ${cmBaikeProduct.auditStatus eq 1 or cmBaikeProduct.auditStatus eq 3?'':'none'}"
+					   onclick="auditBaike(${cmBaikeProduct.id})">审核</a>
+					<a href="${ctx}/baike/cmBaikeProduct/check?id=${cmBaikeProduct.id}
+					&commodityType=${cmBaikeProduct.commodityType}&publishSource=2">查看</a>
 				</td>
 				</td>
 			</tr>
 			</tr>
 		</c:forEach>
 		</c:forEach>
@@ -149,73 +116,46 @@
 	</table>
 	</table>
 	<div class="pagination">${page}</div>
 	<div class="pagination">${page}</div>
 <script type="text/javascript">
 <script type="text/javascript">
-	function updateStatus(status, productId) {
-		var commodityType = '${commodityType}'
-		var msg='确定启用该'+commodityType+'吗?';
-		if(0==status) {
-			msg = '确定停用该'+commodityType+'吗?';
-		}
-		top.$.jBox.confirm(msg,'系统提示',function(v,h,f){
-			if(v=='ok'){
-				$.post("${ctx}/baike/cmBaikeProduct/updateStatus",{'status':status,'productId':productId}, function(data) {
-					if(true==data.success){
-						$.jBox.tip(data.msg, 'cmBaikeProduct');
+	function auditBaike(productId) {
+		var url = "${ctx}/baike/cmBaikeProduct/toAuditPage?id=" + productId;
+		var title = "审核";
+		top.$.jBox("iframe:"+url, {
+			iframeScrolling: 'yes',
+			width: 800,
+			height: 350,
+			persistent: true,
+			title: title,
+			buttons: {"保存": '1', "关闭": '-1'},
+			submit: function (v, h, f) {
+				//确定
+				var $jboxFrame = top.$('#jbox-iframe');
+				var $mainFrame = top.$('#mainFrame');
+				if ('1' == v && 1 == $jboxFrame.size() && 1 == $mainFrame.size()) {
+					var items = $jboxFrame[0].contentWindow.getCheckedItems(0);
+					if (items.length > 0) {
+						var auditStatus = items[0].auditStatus;
+						var failReason = items[0].failReason.trim();
+						if (auditStatus === '2') {
+							failReason = '';
+						}
+						if (auditStatus === '3' && failReason === '') {
+							top.$.jBox.tip("请输入失败原因");
+							return false;
+						}
+						$.post("${ctx}/baike/cmBaikeProduct/auditBaike?id="+productId+"&auditStatus=" + auditStatus + "&failReason=" + failReason, function (data) {
+							top.$.jBox.tip("审核成功");
+							setTimeout(function () {
+								$("#searchForm").submit();
+							}, 200);
+						});
 					} else {
 					} else {
-						$.jBox.tip(data.msg,'error');
+						top.$.jBox.tip("请先勾选商品...");
+						return false;
 					}
 					}
-					setTimeout(function () {
-						$("#searchForm").submit();
-					},1000)
-				},"JSON");//这里返回的类型有:json,html,xml,text
+				}
+				return true;
 			}
 			}
-			return;
-		},{buttonsFocus:1,persistent: true});
-	}
-
-	//展示置顶选项
-	function showTopSelect(index,status) {
-		if ('open' == status) {
-			document.getElementById("topSelect" + index).style.cssText = "display:block";
-		}else if ('close' == status) {
-			document.getElementById("topSelect" + index).style.cssText = "display:none";
-		}
-	}
-
-	//更新置顶
-	function updateTopPosition(topPosition,id,type) {
-		var msg = '';
-		if ('setTopPosition' == type) {
-			msg = '确认置顶该文章吗?';
-			//已有的置顶文章数量
-			var topLength = ${topLength};
-			if (topPosition - 1 > topLength) {
-				var emptyPosition = topLength == 0 ? '一' : '二' ;
-				msg = '由于当前没有第'+ emptyPosition +'位的置顶文章,将直接把该条文章置顶为第'+emptyPosition+'位';
-				topPosition = topLength == 0 ? 1 : topLength == 1 ? 2 : topLength == 2 ? 3 : topLength == 3 ? 4 : 5;
-			}
-		}
-		if ('clearTopPosition' == type) {
-			msg = '确认清除该条数据的置顶位吗?清除后这条数据将不会在商城首页展示';
-		}
-		top.$.jBox.confirm(msg, '系统提示', function (v, h, f) {
-			if (v == 'ok') {
-				$.post("${ctx}/baike/cmBaikeProduct/updateTopPosition", {
-					'topPosition': topPosition,
-					'id': id,
-					'type':type
-				}, function (data) {
-					if (true == data.success) {
-						$.jBox.tip(data.msg, 'info');
-					} else {
-						$.jBox.tip(data.msg, 'error');
-					}
-					setTimeout(function () {
-						$("#searchForm").submit();
-					},800)
-				}, "JSON");//这里返回的类型有:json,html,xml,text
-			}
-			return;
-		}, {buttonsFocus: 1, persistent: true});
+		});
 	}
 	}
 </script>
 </script>
 </body>
 </body>