Browse Source

Merge remote-tracking branch 'origin/dev' into bug

hulh 8 years ago
parent
commit
8b9866111a
18 changed files with 1230 additions and 18 deletions
  1. 66 0
      src/main/java/com/uas/platform/b2c/prod/store/controller/ConsignmentAgreeRecordController.java
  2. 26 0
      src/main/java/com/uas/platform/b2c/prod/store/dao/ConsignmentAgreeRecordDao.java
  3. 135 0
      src/main/java/com/uas/platform/b2c/prod/store/model/ConsignmentAgreeRecord.java
  4. 35 0
      src/main/java/com/uas/platform/b2c/prod/store/service/ConsignmentAgreeRecordService.java
  5. 128 0
      src/main/java/com/uas/platform/b2c/prod/store/service/impl/ConsignmentAgreeRecordServiceImpl.java
  6. 77 0
      src/main/webapp/resources/js/admin/controllers/StoreInfoListCtrl.js
  7. 43 2
      src/main/webapp/resources/js/common/module/store_admin_violations_module.js
  8. 39 1
      src/main/webapp/resources/js/common/query/storeInfo.js
  9. 1 0
      src/main/webapp/resources/js/vendor/controllers/forstore/purchase_detail.js
  10. 70 2
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_standard_putOn_ctrl.js
  11. 47 2
      src/main/webapp/resources/view/admin/store/fragments/enterprise_info.html
  12. 3 3
      src/main/webapp/resources/view/admin/store_info_list.html
  13. 2 1
      src/main/webapp/resources/view/usercenter/forstore/browsing_history.html
  14. 3 3
      src/main/webapp/resources/view/usercenter/forstore/order_detail.html
  15. 417 0
      src/main/webapp/resources/view/vendor/forstore/product_file.html
  16. 3 3
      src/main/webapp/resources/view/vendor/forstore/purchase_detail.html
  17. 4 1
      src/main/webapp/resources/view/vendor/forstore/vendor_standard_putOn.html
  18. 131 0
      src/main/webapp/resources/view/vendor/modal/confirm_consignment_agreement.html

+ 66 - 0
src/main/java/com/uas/platform/b2c/prod/store/controller/ConsignmentAgreeRecordController.java

@@ -0,0 +1,66 @@
+package com.uas.platform.b2c.prod.store.controller;
+
+import com.uas.platform.b2c.prod.store.model.ConsignmentAgreeRecord;
+import com.uas.platform.b2c.prod.store.service.ConsignmentAgreeRecordService;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 自营转寄售协议,同意操作记录控制器
+ *
+ * @author huxz
+ * @version 2017-08-24 09:11:46 创建文件
+ */
+@RestController
+@RequestMapping(value = "/auth/store/consignment/record")
+public class ConsignmentAgreeRecordController {
+
+	private final Logger logger = Logger.getLogger(getClass());
+
+	private final ConsignmentAgreeRecordService recordService;
+
+	@Autowired
+	public ConsignmentAgreeRecordController(ConsignmentAgreeRecordService recordService) {
+		this.recordService = recordService;
+	}
+
+	/**
+	 * 用户自营转寄售时,查询用户同意寄售协议的记录
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/findByUser")
+	public ConsignmentAgreeRecord findRecordOfUser() {
+		logger.info("Find one consignment record when user switch self-support to consignment");
+		return recordService.findRecordOfUser();
+	}
+
+	/**
+	 * 用户第一次同意自营转寄售时,保存用户的操作记录信息
+	 *
+	 * @param record 操作记录信息
+	 */
+	@RequestMapping(method = RequestMethod.POST)
+	public ResultMap saveRecordWhenUserAgree(ConsignmentAgreeRecord record) {
+		logger.info("Save consignment record when user agrees the consignment agreement");
+		return recordService.saveRecordWhenUserAgree(record);
+	}
+
+	/**
+	 * 管理员在管理后台查看店铺信息时,按操作时间降序获取操作记录信息
+	 *
+	 * @param pageParams	分页参数
+	 * @param enUU			企业UU
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/pageByAdmin")
+	public Page<ConsignmentAgreeRecord> pageRecordWhenAdminQueryInfo(PageParams pageParams, Long enUU) {
+		logger.info("Page consignment operation record when admin query info");
+		PageInfo pageInfo = new PageInfo(pageParams);
+		return recordService.pageRecordWhenAdminQueryInfo(pageInfo, enUU);
+	}
+}

+ 26 - 0
src/main/java/com/uas/platform/b2c/prod/store/dao/ConsignmentAgreeRecordDao.java

@@ -0,0 +1,26 @@
+package com.uas.platform.b2c.prod.store.dao;
+
+import com.uas.platform.b2c.prod.store.model.ConsignmentAgreeRecord;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 自营转寄售协议,同意操作记录DAO
+ *
+ * @author huxz
+ * @version 2017-08-24 09:11:46 创建文件
+ */
+@Repository
+public interface ConsignmentAgreeRecordDao extends JpaSpecificationExecutor<ConsignmentAgreeRecord>, JpaRepository<ConsignmentAgreeRecord, Long> {
+
+	/**
+	 * 根据企业UU和用户UU获取操作记录
+	 *
+	 * @param enUU		企业UU
+	 * @param userUU	用户UU
+	 */
+	List<ConsignmentAgreeRecord> findByEnUUAndUserUU(Long enUU, Long userUU);
+}

+ 135 - 0
src/main/java/com/uas/platform/b2c/prod/store/model/ConsignmentAgreeRecord.java

@@ -0,0 +1,135 @@
+package com.uas.platform.b2c.prod.store.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.uas.platform.b2c.core.utils.JacksonUtils;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 自营转寄售协议,同意操作记录
+ * 每个企业每个人仅记录一次
+ *
+ * @author huxz
+ * @version 2017-08-24 08:57:56 创建文件
+ */
+@Entity
+@Table(name = "store$consignment_agree")
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class ConsignmentAgreeRecord {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "store$consignment_agree_gen")
+	@SequenceGenerator(name = "store$consignment_agree_gen", sequenceName = "store$consignment_agree_seq", allocationSize = 1)
+	private Long id;
+
+	/**
+	 * 企业UU
+	 */
+	@Column(name = "con_en_uu")
+	private Long enUU;
+
+	/**
+	 * 企业名称
+	 *
+	 * 如若修改,需要同步到最新
+	 */
+	@Column(name = "con_en_name")
+	private String enterpriseName;
+
+	/**
+	 * 用户UU
+	 */
+	@Column(name = "con_user_uu")
+	private Long userUU;
+
+	/**
+	 * 用户姓名
+	 *
+	 * 如若修改,需要同步到最新
+	 */
+	@Column(name = "con_user_name")
+	private String userName;
+
+	/**
+	 * 是否同意寄售协议
+	 */
+	@Column(name = "con_agreement")
+	private Boolean agreement;
+
+	/**
+	 * 操作时间
+	 */
+	@Column(name = "con_op_time")
+	private Date operateTime;
+
+	public ConsignmentAgreeRecord() {
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public String getEnterpriseName() {
+		return enterpriseName;
+	}
+
+	public void setEnterpriseName(String enterpriseName) {
+		this.enterpriseName = enterpriseName;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public Boolean getAgreement() {
+		return agreement;
+	}
+
+	public void setAgreement(Boolean agreement) {
+		this.agreement = agreement;
+	}
+
+	public Date getOperateTime() {
+		return operateTime;
+	}
+
+	public void setOperateTime(Date operateTime) {
+		this.operateTime = operateTime;
+	}
+
+	@Override
+	public String toString() {
+		return JacksonUtils.toJson(this);
+	}
+}

+ 35 - 0
src/main/java/com/uas/platform/b2c/prod/store/service/ConsignmentAgreeRecordService.java

@@ -0,0 +1,35 @@
+package com.uas.platform.b2c.prod.store.service;
+
+import com.uas.platform.b2c.prod.store.model.ConsignmentAgreeRecord;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageInfo;
+import org.springframework.data.domain.Page;
+
+/**
+ * 自营转寄售协议,同意操作记录业务类
+ *
+ * @author huxz
+ * @version 2017-08-24 09:11:46 创建文件
+ */
+public interface ConsignmentAgreeRecordService {
+
+	/**
+	 * 用户自营转寄售时,查询用户同意寄售协议的记录
+	 */
+	ConsignmentAgreeRecord findRecordOfUser();
+
+	/**
+	 * 用户第一次同意自营转寄售时,保存用户的操作记录信息
+	 *
+	 * @param record 操作记录信息
+	 */
+	ResultMap saveRecordWhenUserAgree(ConsignmentAgreeRecord record);
+
+	/**
+	 * 管理员在管理后台查看店铺信息时,按操作时间降序获取操作记录信息
+	 *
+	 * @param pageInfo	分页参数
+	 * @param enUU		企业UU
+	 */
+	Page<ConsignmentAgreeRecord> pageRecordWhenAdminQueryInfo(PageInfo pageInfo, Long enUU);
+}

+ 128 - 0
src/main/java/com/uas/platform/b2c/prod/store/service/impl/ConsignmentAgreeRecordServiceImpl.java

@@ -0,0 +1,128 @@
+package com.uas.platform.b2c.prod.store.service.impl;
+
+import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
+import com.uas.platform.b2c.common.account.dao.UserDao;
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.prod.store.dao.ConsignmentAgreeRecordDao;
+import com.uas.platform.b2c.prod.store.model.ConsignmentAgreeRecord;
+import com.uas.platform.b2c.prod.store.service.ConsignmentAgreeRecordService;
+import com.uas.platform.b2c.trade.support.CodeType;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.exception.IllegalStatusException;
+import com.uas.platform.core.model.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 自营转寄售协议,同意操作记录业务实现类
+ *
+ * @author huxz
+ * @version 2017-08-24 09:11:46 创建文件
+ */
+@Service
+public class ConsignmentAgreeRecordServiceImpl implements ConsignmentAgreeRecordService {
+
+	private final UserDao userDao;
+
+	private final EnterpriseDao enterpriseDao;
+
+	private final ConsignmentAgreeRecordDao recordDao;
+
+	@Autowired
+	public ConsignmentAgreeRecordServiceImpl(UserDao userDao, EnterpriseDao enterpriseDao, ConsignmentAgreeRecordDao recordDao) {
+		this.userDao = userDao;
+		this.enterpriseDao = enterpriseDao;
+		this.recordDao = recordDao;
+	}
+
+	@Override
+	public ConsignmentAgreeRecord findRecordOfUser() {
+		User user = SystemSession.getUser();
+		if (user == null || user.getUserUU() == null || user.getUserUU() == 0L) {
+			throw new IllegalStatusException("用户信息不能存在");
+		}
+		Enterprise enterprise = user.getEnterprise();
+		if (enterprise == null || enterprise.getUu() == null || enterprise.getUu() == 0L) {
+			throw new IllegalStatusException("用户企业信息不存在");
+		}
+
+		List<ConsignmentAgreeRecord> records = recordDao.findByEnUUAndUserUU(enterprise.getUu(), user.getUserUU());
+		if (CollectionUtils.isEmpty(records)) {
+			return null;
+		} else {
+			return records.get(0);
+		}
+	}
+
+	@Override
+	public ResultMap saveRecordWhenUserAgree(ConsignmentAgreeRecord record) {
+		User user = SystemSession.getUser();
+		if (user == null || user.getUserUU() == null || user.getUserUU() == 0L) {
+			return new ResultMap(CodeType.ERROR_STATE, "用户信息不存在");
+		}
+		Enterprise enterprise = user.getEnterprise();
+		if (enterprise == null || enterprise.getUu() == null || enterprise.getUu() == 0L) {
+			return new ResultMap(CodeType.ERROR_STATE, "用户企业信息不存在");
+		}
+
+		Date operateTime = new Date();
+
+		record.setEnUU(enterprise.getUu());
+		record.setEnterpriseName(enterprise.getEnName());
+		record.setUserUU(user.getUserUU());
+		record.setUserName(user.getUserName());
+		// TODO huxz 暂时设置为true
+		record.setAgreement(true);
+
+		record.setOperateTime(operateTime);
+
+		record = recordDao.save(record);
+		return ResultMap.success(record);
+	}
+
+	@Override
+	public Page<ConsignmentAgreeRecord> pageRecordWhenAdminQueryInfo(final PageInfo pageInfo, Long enUU) {
+		if (enUU == null || enUU == 0L) {
+			throw new IllegalStatusException("企业UU不存在");
+		}
+
+		pageInfo.filter("enUU", enUU);
+
+		Page<ConsignmentAgreeRecord> page = recordDao.findAll(new Specification<ConsignmentAgreeRecord>() {
+			@Override
+			public Predicate toPredicate(Root<ConsignmentAgreeRecord> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+
+		if (!CollectionUtils.isEmpty(page.getContent())) {
+			for (ConsignmentAgreeRecord record : page.getContent()) {
+				User user = userDao.findOne(record.getUserUU());
+				if (user != null) {
+					record.setUserName(user.getUserName());
+				}
+
+				Enterprise enterprise = enterpriseDao.findByUu(record.getEnUU());
+				if (enterprise != null) {
+					record.setEnterpriseName(enterprise.getEnName());
+				}
+
+			}
+		}
+
+		return page;
+	}
+}

+ 77 - 0
src/main/webapp/resources/js/admin/controllers/StoreInfoListCtrl.js

@@ -44,6 +44,83 @@ define([ 'app/app' ], function(app) {
 			}
 		});
 
+		$scope.newStoreMap = {};
+
+		/**
+		 * 获取新开原厂店铺
+		 */
+		StoreInfo.findNewStore({ types : 'ORIGINAL_FACTORY' }, {}, function (page) {
+			if (page && page.content && page.content.length > 0) {
+				angular.forEach(page.content, function (store) {
+					$scope.newStoreMap[store.uuid] = true;
+				});
+			}
+		}, function (resp) {
+		});
+
+		/**
+		 * 获取新入驻经销代理店铺信息
+		 */
+		StoreInfo.findNewStore({ types : 'AGENCY-DISTRIBUTION' }, {}, function (page) {
+			if (page && page.content && page.content.length > 0) {
+				angular.forEach(page.content, function (store) {
+					$scope.newStoreMap[store.uuid] = true;
+				});
+			}
+		}, function (resp) {
+		});
+
+		$scope.hotSalesMap = {};
+
+		/**
+		 * 获取原厂销售排行信息
+		 */
+		StoreInfo.findTopStoreBySales({ isOriginal: true }, {}, function (stores) {
+			if (stores && stores.length > 0) {
+				angular.forEach(stores, function (store) {
+					$scope.hotSalesMap[store.uuid] = true;
+				});
+			}
+		}, function (resp) {
+		});
+
+		/**
+		 * 获取经销代理销售排行信息
+		 */
+		StoreInfo.findTopStoreBySales({ isOriginal: false }, {}, function (stores) {
+			if (stores && stores.length > 0) {
+				angular.forEach(stores, function (store) {
+					$scope.hotSalesMap[store.uuid] = true;
+				});
+			}
+		}, function (resp) {
+		});
+
+		$scope.excellentSupplierMap = {};
+
+		/**
+		 * 获取原厂推荐信息
+		 */
+		StoreInfo.fiveStoresByTypes({	num : 5, types : 'ORIGINAL_FACTORY' }, {}, function (data) {
+			if (data && data.length > 0) {
+				angular.forEach(data, function (store) {
+					$scope.excellentSupplierMap[store.uuid] = true;
+				});
+			}
+		}, function () {
+		});
+
+		/**
+		 * 获取经销代理优秀供应商信息
+		 */
+		StoreCms.getStoreCmsByUseForAndCmsType({ num:5, types:'AGENCY-DISTRIBUTION' }, function (exStoreCms) {
+			if (exStoreCms && exStoreCms.length > 0) {
+				angular.forEach(exStoreCms, function (store) {
+					$scope.excellentSupplierMap[store.uuid] = true;
+				});
+			}
+		});
+
 		/**
 		 * 添加到店铺相关内容管理系统
 		 *

+ 43 - 2
src/main/webapp/resources/js/common/module/store_admin_violations_module.js

@@ -23,9 +23,11 @@ define([ 'ngResource', 'common/query/storeViolations', 'ngTable', 'ngSanitize',
 	/**
 	 * 企业信息记录
 	 */
-	module.controller('EnterpriseInfoCtrl', ['$scope', 'StoreInfo', 'toaster', function ($scope, StoreInfo, toaster) {
+	module.controller('EnterpriseInfoCtrl', ['$scope', 'StoreInfo', 'toaster', 'ConsignmentAgreementRecord', 'ngTableParams', 'BaseService', function ($scope, StoreInfo, toaster, ConsignmentAgreementRecord, ngTableParams, BaseService) {
 		console.log('EnterpriseInfoCtrl');
 
+		$scope.showRecords = true;
+
 		active();
 
 		/**
@@ -35,13 +37,14 @@ define([ 'ngResource', 'common/query/storeViolations', 'ngTable', 'ngSanitize',
 			StoreInfo.findByUuid({ uuid: $scope.storeUuid }, {}, function (store) {
 				if (store && store.uuid) {
 					$scope.store = store;
-					$scope.store.auditInfo = JSON.parse(store.enQualification);
+					$scope.store.auditInfo = JSON.parse(store.enQualification || "{}");
 					if (store.qualifications && store.qualifications.length > 0) {
 						$scope.qualifications = store.qualifications.filter(function (qualification) {
 							return qualification.type === 'APTITUDE' && qualification.resourceUrl && qualification.resourceUrl !== '';
 						});
 					}
 					console.log($scope.store);
+					loadRecords($scope.store.enUU);
 				} else {
 					toaster.pop('error', '获取店铺信息失败,请刷新页面');
 				}
@@ -51,6 +54,44 @@ define([ 'ngResource', 'common/query/storeViolations', 'ngTable', 'ngSanitize',
 			})
 		}
 
+		/**
+		 * 加载寄售协议操作记录
+		 *
+		 * @param enUU	企业UU
+		 */
+		function loadRecords(enUU) {
+			$scope.recordsTableParams = new ngTableParams({
+				page : 1,
+				count : 10,
+				sorting : {
+					operateTime : 'desc'
+				}
+			}, {
+				total : 0,
+				getData : function($defer, params) {
+					// 处理分页参数到URL中
+					var param = BaseService.parseParams(params.url());
+					param.enUU = enUU || 0;
+
+					ConsignmentAgreementRecord.pageRecordWhenAdminQueryInfo(param, {}, function (data) {
+						if (data.content && data.content.length > 0) {
+							$defer.resolve(data.content);
+							$scope.showRecords = true;
+						} else {
+							$defer.resolve([]);
+							$scope.showRecords = false;
+						}
+						console.log(data);
+					}, function (error) {
+						console.log(error);
+						$defer.resolve([]);
+						$scope.showRecords = false;
+						toaster.pop('error', '数据获取失败,请重新刷新页面');
+					});
+				}
+			});
+		}
+
 	}]);
 
 	/**

+ 39 - 1
src/main/webapp/resources/js/common/query/storeInfo.js

@@ -188,5 +188,43 @@ define([ 'ngResource' ], function() {
 				}
 			}
         });
-    }]);
+    }]).factory('ConsignmentAgreementRecord', ['$resource', 'BaseService', function ($resource, BaseService) {
+    	// 自营转寄售协议,同意操作记录
+		return $resource('auth/store/consignment/record', {}, {
+			/**
+			 * 用户自营转寄售时,获取寄售协议
+			 */
+			obtainAConsignmentAgreement: {
+				url: 'http://www.usoftmall.com/api/help-service/issues/16',
+				method: 'GET'
+			},
+			/**
+			 * 用户自营转寄售时,查询用户同意寄售协议的记录
+			 */
+			findRecordOfUser: {
+				url: 'auth/store/consignment/record/findByUser',
+				method: 'GET'
+			},
+			/**
+			 * 用户第一次同意自营转寄售时,保存用户的操作记录信息
+			 *
+			 * @param record 操作记录信息
+			 */
+			saveRecordWhenUserAgree: {
+				url: 'auth/store/consignment/record',
+				method: 'POST'
+			},
+			/**
+			 * 管理员在管理后台查看店铺信息时,按操作时间降序获取操作记录信息
+			 *
+			 * @param pageParams	分页参数
+			 * @param enUU			企业UU
+			 */
+			pageRecordWhenAdminQueryInfo: {
+				url: 'auth/store/consignment/record/pageByAdmin',
+				method: 'GET'
+			}
+		});
+
+	}]);
 });

+ 1 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/purchase_detail.js

@@ -5,6 +5,7 @@ define(['app/app'], function(app) {
 
 		// 保存采购单编号信息
 		$scope.purchaseId = $stateParams.purchaseId;
+		$scope.open = false;
 
 		// 记录状态激活信息
 		$scope.steps = {

+ 70 - 2
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_standard_putOn_ctrl.js

@@ -4,7 +4,7 @@
  */
 define(['app/app'], function (app) {
     'use strict';
-    app.register.controller('vendor_standardPutOnCtrl', ['$scope', '$rootScope', 'StandardPutOnAdminService', 'ngTableParams', 'BaseService', 'toaster', 'Enterprise', '$q', 'Loading', '$modal', function ($scope, $rootScope, StandardPutOnAdminService, ngTableParams, BaseService, toaster, Enterprise, $q, Loading, $modal) {
+    app.register.controller('vendor_standardPutOnCtrl', ['$scope', '$rootScope', 'StandardPutOnAdminService', 'ngTableParams', 'BaseService', 'toaster', 'Enterprise', '$q', 'Loading', '$modal', 'ConsignmentAgreementRecord', function ($scope, $rootScope, StandardPutOnAdminService, ngTableParams, BaseService, toaster, Enterprise, $q, Loading, $modal, ConsignmentAgreementRecord) {
         $rootScope.active = 'vendor_goods';
         $scope.keyword = '';
         $scope.tab = 'vendor_standardPutOn';
@@ -350,6 +350,26 @@ define(['app/app'], function (app) {
          */
         $scope.changeSale = function (standard) {
             standard.editIsSelfSale = standard.editSelfSaleNum == 1;
+
+            if (!standard.editIsSelfSale) {
+				ConsignmentAgreementRecord.findRecordOfUser({}, {}, function (record) {
+				    if (!record.id) {
+				        // 弹出寄售协议弹窗
+						$modal.open({
+							templateUrl : 'static/view/vendor/modal/confirm_consignment_agreement.html',
+							controller : 'ConfirmConsignmentAgreement'
+						}).result.then(function(){
+							toaster.pop('success', '操作成功');
+						}, function(){
+							standard.editSelfSaleNum = 1;
+							standard.editIsSelfSale = standard.editSelfSaleNum === 1;
+						});
+                    }
+				}, function (error) {
+                    console.log(error);
+                    toaster.pop('error', '系统异常,请联系管理员寻求帮助');
+				});
+            }
         };
 
         /**
@@ -625,6 +645,12 @@ define(['app/app'], function (app) {
             }
         };
 
+        $scope.updatePrice = function () {
+            StandardPutOnAdminService.updateQtyPrice({},{},function (data) {
+
+            })
+        };
+
         /**
          * 一键更新
          */
@@ -713,4 +739,46 @@ define(['app/app'], function (app) {
             $modalInstance.close();
         }
     }]);
-});
+
+	/**
+     * 店铺寄售协议确认弹框
+	 */
+	app.register.controller('ConfirmConsignmentAgreement', ['$scope', '$modalInstance', 'ConsignmentAgreementRecord', 'toaster', function ($scope, $modalInstance, ConsignmentAgreementRecord, toaster) {
+
+	    $scope.agreement = false;
+	    $scope.article = '';
+
+	    ConsignmentAgreementRecord.obtainAConsignmentAgreement({}, {}, function (data) {
+	        if (data && data.article) {
+	            $scope.article = data.article;
+            }
+            console.log(data);
+		}, function (error) {
+            console.log(error);
+		});
+
+		/**
+         * 确认操作
+		 */
+		$scope.confirm = function () {
+			ConsignmentAgreementRecord.saveRecordWhenUserAgree({}, {agreement: $scope.agreement}, function (result) {
+                if (result.success) {
+					$modalInstance.close();
+                } else {
+					console.log(result.message);
+					toaster.pop('error', '用户信息异常,请联系管理员寻求帮助');
+                }
+			}, function (error) {
+                console.log(error);
+				toaster.pop('error', '系统异常,请联系管理员寻求帮助');
+			});
+		};
+
+		/**
+         * 取消操作
+		 */
+		$scope.cancel = function () {
+            $modalInstance.dismiss();
+		};
+	}]);
+});

+ 47 - 2
src/main/webapp/resources/view/admin/store/fragments/enterprise_info.html

@@ -174,6 +174,25 @@
 		border: none;
 		background: #3ba9e9;
 	}
+	/*表格样式*/
+	.application-tab table tbody tr{
+		height: 50px;
+	}
+	.application-tab table tr th,.application-tab table tr td{
+		border: #cfedfe 1px solid;
+		text-align: center;
+		vertical-align: middle;
+	}
+	.application-tab .table-bordered{
+		border-top: #cfedfe 1px solid;
+	}
+	.application-tab table tr th{
+		background: #cfedfe;
+		height: 35px;
+	}
+	.application-tab table tbody tr:hover{
+		background: #e4f3fc;
+	}
 </style>
 <div class="enterprise-info" ng-controller="EnterpriseInfoCtrl">
 	<h2 ng-bind="store.enterprise.enName">深圳市优软商城科技有限公司</h2>
@@ -255,10 +274,36 @@
 				</ul>
 			</div>
 		</div>
+		<!-- 企业寄售协议操作记录 -->
+		<div ng-if="showRecords" class="application-tab" style="width: 98%;margin: 0 auto;">
+			<div class="row" style="width: 100%">
+				<div class="col-md-12">
+					<div style="width: 100%;line-height: 50px;font-size: 16px;">
+						企业寄售协议操作记录
+					</div>
+					<table class="table" ng-table="recordsTableParams">
+						<thead>
+						<tr>
+							<th>序号</th>
+							<th>操作人</th>
+							<th>操作时间</th>
+						</tr>
+						</thead>
+						<tbody>
+						<tr ng-repeat="record in $data">
+							<td style="text-align: center;" ng-bind="(recordsTableParams.page() - 1) * recordsTableParams.count() + $index + 1"></td>
+							<td style="text-align: center;" ng-bind="record.userName"></td>
+							<td style="text-align: center;" ng-bind="record.operateTime | date: 'yyyy-MM-dd HH:mm:ss'"></td>
+						</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
 	</div>
 </div>
-<!--推荐相关内容-->
-<div class="recommend">
+<!--推荐相关内容 TODO huxz 暂时隐藏 -->
+<div class="recommend" style="display: none;">
 	<div class="recommend-list hot-icon">推荐成为:
 		<label>
 			<i class="hot"></i>热销

+ 3 - 3
src/main/webapp/resources/view/admin/store_info_list.html

@@ -244,13 +244,13 @@
 				<td><span ng-bind="store.createTime | date : 'yyyy-MM-dd HH:mm:ss'"></span></td>
 				<td><span ng-bind="store.updateTime | date : 'yyyy-MM-dd HH:mm:ss'"></span></td>
 				<td class="hot-icon">
-					<div>
+					<div ng-if="newStoreMap[store.uuid]">
 						<i class="hot"></i><span>热销</span>
 					</div>
-					<div>
+					<div ng-if="hotSalesMap[store.uuid]">
 						<i class="new"></i><span>新入驻</span>
 					</div>
-					<div>
+					<div ng-if="excellentSupplierMap[store.uuid]">
 						<i class="new-apply"></i><span>优秀供应商</span>
 					</div>
 				</td>

+ 2 - 1
src/main/webapp/resources/view/usercenter/forstore/browsing_history.html

@@ -411,7 +411,8 @@
                         <img src="{{item.img || 'static/img/store/common/default.png'}}"/></a>
                 </div>
                 <div class="content">
-                    <p class="red">¥<span ng-bind="item.minPriceRMB"></span></p>
+                    <p class="red" ng-if="item.minPriceRMB">¥<span ng-bind="item.minPriceRMB"></span></p>
+                    <p class="red" ng-if="item.minPriceUSD">$&nbsp;<span ng-bind="item.minPriceUSD"></span></p>
                     <p ng-bind="item.kindNameCn"></p>
                     <p ng-bind="item.code"></p>
                     <p ng-bind="item.brandNameEn"></p>

+ 3 - 3
src/main/webapp/resources/view/usercenter/forstore/order_detail.html

@@ -321,13 +321,13 @@
 								<img ng-src="{{detail.img ? detail.img : 'static/img/store/common/default.png'}}"/>
 							</a>
                             <p class="style01" style="margin-top: 10px;">类目:
-								<a ng-bind="detail.kiName" href="store/{{detail.storeid}}/{{::detail.batchCode}}" title="{{detail.kiName}}" target="_blank"></a>
+								<a ng-bind="detail.kiName" href="product/kind/{{::detail.kindUuid}}" title="{{detail.kiName}}" target="_blank"></a>
 							</p>
 							<p class="style01">型号:
-								<a ng-bind="detail.cmpCode" href="store/{{detail.storeid}}/{{::detail.batchCode}}" title="{{detail.cmpCode}}" target="_blank"></a>
+								<a ng-bind="detail.cmpCode" href="store/{{::detail.storeid}}/{{::detail.batchCode}}" title="{{detail.cmpCode}}" target="_blank"></a>
 							</p>
 							<p class="style01">品牌:
-								<a ng-bind="detail.brName" href="store/{{detail.storeid}}/{{::detail.batchCode}}" title="{{detail.brName}}" target="_blank"></a>
+								<a ng-bind="detail.brName" href="product/brand/{{::detail.branduuid}}/" title="{{detail.brName}}" target="_blank"></a>
 							</p>
                         </span>
 						<span class="wd01">交期:

+ 417 - 0
src/main/webapp/resources/view/vendor/forstore/product_file.html

@@ -0,0 +1,417 @@
+<style>
+    .product-file{
+        width: 100%;
+        margin: 0 auto;
+        min-height: 505px;
+        background: #fff;
+        padding-top: 16px;
+        border: #e8e8e8 1px solid;
+    }
+    .product-file ul{
+        width: 100%;
+        height: 30px;
+        margin: 0 auto;
+        margin-top: 16px;
+    }
+    .product-file ul li{
+        width: 78px;
+        float: left;
+        margin: 0 15px;
+    }
+    .product-file ul li:first-child{
+        margin-left: 25px;
+    }
+    .product-file ul li a{
+        display: inline-block;
+        width: 100%;
+        height: 30px;
+        line-height: 30px;
+        position: relative;
+        background: #f5f8fe;
+        text-align: center;
+        font-size: 14px;
+        border-radius: 1px;
+    }
+    .product-file ul li a.active,.product-file ul li:hover a{
+        background: #5078cb;
+        color: #fff;
+    }
+    .product-file ul li a.active:before,.product-file ul li:hover a:before{
+        content: '';
+        position: absolute;
+        display: inline-block;
+        width: 0;
+        height: 0;
+        border-left: 5px solid transparent;
+        border-right: 5px solid transparent;
+        border-bottom: 5px solid #fff;
+        bottom: -1px;
+        left: 33px;
+    }
+    .product-file .content{
+        width: 98%;
+        border: #5078cb 1px solid;
+        padding: 15px;
+        margin: 0 auto;
+    }
+    .product-file .content .batch{
+        font-size: 14px;
+    }
+    .product-file .content .batch .row{
+        padding: 0 15px;
+        margin-bottom: 20px;
+    }
+    .product-file .content .batch .row:first-child{
+        margin-top: 10px;
+        margin-bottom: 45px;
+    }
+    .product-file .content .batch .row span.dot{
+        display: inline-block;
+        width: 22px;
+        height: 19px;
+        margin-right: 10px;
+    }
+    .product-file .content .batch .row span em{
+        display: inline-block;
+        width: 14px;
+        height: 19px;
+        background: #ff8522;
+        font-size: 14px;
+        text-align: center;
+        color: #fff;
+        position: relative;
+        line-height: 19px;
+    }
+    .product-file .content .batch .row span em:before{
+        content: '';
+        position: absolute;
+        display: inline-block;
+        border-width: 9px 0 10px 10px;
+        border-style: solid;
+        border-color: transparent transparent transparent #ff8522;
+        right: -10px;
+        top: 0;
+    }
+    .product-file .content .batch .row .btn01{
+        display: inline-block;
+        width: 70px;
+        height: 22px;
+        line-height: 22px;
+        text-align: center;
+        color: #fff;
+        background: #ff8522;
+        border-radius: 2px;
+        font-size: 12px;
+    }
+    .product-file .content .batch .row a.load-btn{
+        color: #5078cb;
+        font-size: 12px;
+        margin-left: 10px;
+    }
+    .product-file .import-area{
+        width: 940px;
+        margin-left: 22px;
+        background: #f5f8fe;
+        padding-top: 10px !important;
+        padding-bottom: 10px !important;
+    }
+    .product-file .import-area p{
+        font-size: 14px;
+    }
+    /*checked*/
+    .import-area .check-act{
+        font-weight: normal;
+    }
+    .import-area .check-act:last-child{
+        margin-left: 45px;
+    }
+    .import-area .check-act input{
+        display: none;
+    }
+    .import-area .check-act label{
+        width: 12px;
+        height: 12px;
+        margin-right: 5px;
+        display: inline-block;
+        background: url(static/img/icon/check-rule.png) no-repeat;
+        position: relative;
+        top: 2px;
+    }
+    .import-area .check-act label{
+        background-position: 0 0;
+    }
+    .import-area input:checked + label{
+        background-position: -15px 0;
+    }
+    .import-input{
+        width: 100%;
+        margin: 15px 0 0 0;
+        padding-bottom: 10px;
+    }
+    .import-input span{
+        width: 350px;
+        margin: 0 auto;
+        float: left;
+        position: relative;
+    }
+    .import-input span #upload_text{
+        width: 265px;
+        height: 26px;
+        border: #e2e2e2 1px solid;
+        padding-left: 10px;
+        border-radius: 3px;
+    }
+    .import-input span .upload01{
+        width: 100%;
+        margin: 0 auto;
+        height: 26px;
+        position: absolute;
+        left: 0;
+        top: 0;
+        opacity: 0;
+    }
+    .import-input span a.btn01{
+        margin-left: 8px;
+    }
+    .import-input a.btn01{
+        margin-left: 10px;
+    }
+    .blue-bg{
+        background: #5078cb !important;
+    }
+    /*单个导入*/
+    .no-batch{
+        width: 100%;
+        margin: 0 auto;
+        min-height: 200px;
+    }
+    .no-batch .row{
+        background: #f5f8fe;
+        padding: 20px 15px 30px;
+        margin: 0;
+    }
+    .no-batch .row .row-line{
+        float: left;
+        line-height: 26px;
+        margin-right: 18px;
+    }
+    .no-batch .row .row-line span.title{
+        font-size: 14px;
+        margin-right: 10px;
+    }
+    .no-batch .row .row-line span.title em{
+        color: #f00;
+        margin-right: 3px;
+        position: relative;
+        top: 2px;
+    }
+    .no-batch .row .row-line input{
+        width: 168px;
+        height: 26px;
+        line-height: 26px;
+        border: #e2e2e2 1px solid;
+        border-radius: 0;
+        background: #fff;
+        float: right;
+    }
+    .no-batch .row .row-line:last-child{
+        margin-right: 0;
+    }
+    .no-batch .row .row-line:last-child input{
+        margin-right: 0;
+        width: 128px;
+    }
+    /*操作取消保存*/
+    .deal-btn{
+        width: 100%;
+        margin: 0 auto;
+        text-align: center;
+        margin-top: 80px;
+    }
+    .deal-btn a{
+        width: 70px;
+        height: 30px;
+        display: inline-block;
+        text-align: center;
+        line-height: 30px;
+        font-size: 14px;
+    }
+    .deal-btn a.off{
+        background: #cdcccc;
+        color: #666;
+        margin-right: 8px;
+    }
+    .deal-btn a.save-other{
+        width: 100px;
+        background: #ff8522;
+        color: #fff;
+        margin-right: 8px;
+    }
+    .deal-btn a.ok{
+        background: #5078cb;
+        color: #fff;
+    }
+    .deal-btn a:hover{
+        background: #337ab7;
+        color: #fff;
+    }
+    /*防误删*/
+    .com-del-box{
+        position: fixed;
+        z-index: 22;
+        height: 152px;
+        opacity: 1;
+        background-color: white;
+        width: 310px;
+        -webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5);
+        box-shadow: 0 5px 15px rgba(0,0,0,.5);
+        margin: -155px 0 0 -75px;
+        top: 55%;
+        left: 50%;
+    }
+    .com-del-box .title{
+        height: 30px;
+        background-color: #5078cb;
+        text-align: right;
+        padding-right: 15px;
+        line-height: 30px;
+    }
+    .com-del-box .title a{
+        color: white;
+        font-size: 16px;
+    }
+    .com-del-box .content{
+        width: 100%;
+        text-align: center;
+        margin: 0 auto;
+    }
+    .com-del-box .content p{
+        font-size: 14px;
+        padding-top: 10px;
+    }
+    .com-del-box .content p:first-child{
+        padding-top: 25px;
+    }
+    .com-del-box .content p:nth-child(2),.com-del-box .content p:nth-child(3){
+        font-size: 12px;
+    }
+    .com-del-box .content p em:first-child,.com-del-box .content p:nth-child(3) a,.com-del-box .content p:nth-child(3) em{
+        color: #5078cb;
+    }
+    .com-del-box .content p:nth-child(2) em{
+        color: #f00;
+    }
+    .com-del-box .content p i{
+        color: #5078cb;
+        font-size: 16px;
+        margin-right: 10px;
+    }
+    .com-del-box .content div{
+        width: 100%;
+        text-align: center;
+        margin: 0 auto;
+    }
+</style>
+<div class="user_right fr">
+    <!--产品导入-->
+    <div class="pro_management device">
+        <div class="com_tab">
+            <ul class="fl" style="width: 100%">
+                <li ng-class="{'active': $$productOn.leadIn == 'bathOn'}"><a href="javascript:void(0)">新产品建档</a></li>
+                <li ui-sref="product_repository"><a href="javascript:void(0)">产品库</a></li>
+            </ul>
+        </div>
+    </div>
+    <!--产品建档-->
+    <div class="product-file">
+        <ul class="file-tab">
+            <li><a ng-class="{'active': style == 'batch'}" ng-click="checkTab('batch')">批量建档</a></li>
+            <li><a ng-class="{'active': style == 'single'}" ng-click="checkTab('single')">单个建档</a></li>
+        </ul>
+        <div class="content" ng-controller="productOnCtrl">
+            <!--批量-->
+            <div class="batch" ng-if="style == 'batch'">
+                <div class="row">
+                    <span class="dot"><em>1</em></span>
+                    下载Excle导入模板,在模板上编辑产品信息
+                    <a class="btn01" style="margin-left: 35px;" ng-click="download()" title="下载模板">下载模板</a>
+                    <a class="load-btn" ng-click="showImg()" title="查看表格示例">查看表格示例</a>
+                </div>
+                <div class="row">
+                    <span class="dot"><em>2</em></span>导入数据
+                </div>
+                <div class="import-area row">
+                    <p>
+                        产品已存在时:&nbsp;&nbsp;
+                        <label class="check-act">
+                            <input type="radio" id="1" name="radio2" checked/>
+                            <label for="1"></label>
+                            统一规定运费
+                        </label>
+                        <label class="check-act">
+                            <input type="radio" id="2" name="radio2"/>
+                            <label for="2"></label>
+                            按总金额计算
+                        </label>
+                    </p>
+                    <div class="import-input">
+                        <span>
+                            <input type="text" name="txt" id="upload_text" />
+                            <a class="btn01" ng-click="">选择文件</a>
+                            <input type="file" onchange="upload_text.value=this.value" class="upload01" />
+                        </span>
+                        <a class="btn01 blue-bg" ng-click="">导入</a>
+                    </div>
+                </div>
+            </div>
+            <!--单个-->
+            <div class="no-batch" ng-if="style == 'single'">
+                <div class="row">
+                    <div class="row-line">
+                        <span class="title">产品名称(类目)</span>
+                        <input type="text" class="form-control" ng-change="inputCategory()"/>
+                    </div>
+                    <div class="row-line">
+                        <span class="title"><em>*</em>型号</span>
+                        <input type="text" class="form-control" ng-change="inputBatch()"/>
+                    </div>
+                    <div class="row-line">
+                        <span class="title"><em>*</em>品牌</span>
+                        <input type="text" class="form-control" ng-change="inputBrand()"/>
+                    </div>
+                    <div class="row-line">
+                        <span class="title">封装</span>
+                        <input type="text" class="form-control" />
+                    </div>
+                </div>
+                <!--操作取消保存-->
+                <div class="deal-btn">
+                    <a ng-click="" class="off">取消</a>
+                    <a ng-click="" class="ok">保存</a>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!--提示内容-->
+<div class="com-del-box" style="display: none">
+    <div class="title">
+        <a ng-click=""><i class="fa fa-close fa-lg"></i></a>
+    </div>
+    <div class="content">
+        <p><i class="fa fa-exclamation-circle"></i>共导入 <em>1000</em> 个,其中<em>600</em> 个建档成功!</p>
+        <p>(另有<em>20</em>个已存在,<em>380</em>个必填项缺失)</p>
+        <p>正在为您跳转 <a>产品库 >></a>  <em>5秒</em> </p>
+        <!--<div><a ng-click="">取消</a><a ng-click="">确认</a></div>-->
+    </div>
+</div>
+<!--查看大图-->
+<div id="image-box" style="display: none;">
+    <div class="x-floating-wrap"></div>
+    <div class="x-floating">
+        <div id="item-content">
+            <div class="x-close-wrap"><a href="javascript:void(0);">&times;</a></div>
+            <div class="img"><img src="static/img/product/excel_product_import.png"></div>
+        </div>
+    </div>
+</div>

+ 3 - 3
src/main/webapp/resources/view/vendor/forstore/purchase_detail.html

@@ -367,15 +367,15 @@
 					<div ng-class="{'limit-3': !open}">
 						<dd class="oder_l" ng-repeat="detail in purchase.purchaseDetails">
 						<span class="wd02">
-							<a href="store/{{detail.storeid}}/{{::detail.batchCode}}" target="_blank"><img ng-src="{{detail.img ? detail.img : 'static/img/user/images/pro02.jpg'}}"/></a>
+							<a href="store/{{::detail.storeid}}/{{::detail.batchCode}}" target="_blank"><img ng-src="{{detail.img ? detail.img : 'static/img/user/images/pro02.jpg'}}"/></a>
 							<p class="style01" style="margin-top: 10px;">类目:
-								<a ng-bind="detail.kiName" href="store/{{detail.storeid}}/{{::detail.batchCode}}" title="{{detail.kiName}}" target="_blank"></a>
+								<a ng-bind="detail.kiName" href="product/kind/{{::detail.kindUuid}}" title="{{detail.kiName}}" target="_blank"></a>
 							</p>
 							<p class="style01">型号:
 								<a ng-bind="detail.cmpCode" href="store/{{detail.storeid}}/{{::detail.batchCode}}" title="{{detail.cmpCode}}" target="_blank"></a>
 							</p>
 							<p class="style01">品牌:
-								<a ng-bind="detail.brName" href="store/{{detail.storeid}}/{{::detail.batchCode}}" title="{{detail.brName}}" target="_blank"></a>
+								<a ng-bind="detail.brName" href="product/brand/{{::detail.branduuid}}/" title="{{detail.brName}}" target="_blank"></a>
 							</p>
 						</span>
 						<span class="wd01">交期:

+ 4 - 1
src/main/webapp/resources/view/vendor/forstore/vendor_standard_putOn.html

@@ -352,6 +352,7 @@
                 </form>
             </div>
             <div class="check fr">
+                <!--<button ng-click="updatePrice()">更新分段价格</button>-->
                 <a  ng-click="batchUpdate()" class="blue">一键更新</a>
             </div>
         </div>
@@ -529,7 +530,9 @@
                                 <i class="fa fa-chevron-up"></i>
                             </div>
                             <div style="margin-top: 0;">
-                                <span style="margin-left: 7px;" ng-if="standard.editQtyPrices.length != 3"><input ng-model="standard.insertQty" type="text" placeholder="分段数量" class="form-control" style="width: 104px;"/></span>
+                                <span style="margin-left: 7px;" ng-if="standard.editQtyPrices.length != 3">
+                                    <input ng-model="standard.insertQty" type="text" placeholder="分段数量" class="form-control" style="width: 104px;"/>
+                                </span>
                             </div>
                         </td>
                         <td>

+ 131 - 0
src/main/webapp/resources/view/vendor/modal/confirm_consignment_agreement.html

@@ -0,0 +1,131 @@
+<style>
+	.modal {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		margin-left: -425px;
+		margin-top: -290px;
+		width: 850px;
+	}
+	.modal-dialog{
+		width: 850px;
+		height: 580px;
+		background: #f2f2f2;
+		border-radius: 8px;
+		overflow: hidden;
+	}
+	.modal-dialog .modal-content{
+		border: none;
+		box-shadow: none;
+		background: #f2f2f2;
+	}
+	.agreement-list{
+		width: 100%;
+		margin: 0 auto;
+		padding-top: 25px;
+	}
+	.agreement-list .content{
+		width: 800px;
+		height: 430px;
+		overflow-y: hidden;
+		margin: 0 20px 0 20px;
+		background: #fff;
+		font-size: 14px;
+		line-height: 30px;
+	}
+	/*.agreement-list .content h3{*/
+	/*line-height: 40px;*/
+	/*font-size: 16px;*/
+	/*text-align: center;*/
+	/*}*/
+	.agreement-list .agreement-agreen{
+		width: 100%;
+		height: 45px;
+		line-height: 45px;
+		font-size: 12px;
+		color: #666;
+		margin: 0 auto;
+		text-align: center;
+	}
+	.agreement-list .agreement-agreen a{
+		color: #5078cb;
+	}
+	.agreement-list .bottom{
+		width: 100%;
+		height: 80px;
+		background: #fff;
+		margin: 0 auto;
+	}
+	.agreement-list .bottom p{
+		line-height: 40px;
+		font-size: 12px;
+		padding-left: 20px;
+		color: #666;
+	}
+	.agreement-list .bottom p strong{
+		color: #f00;
+	}
+	.agreement-list .bottom .bottom-bot div{
+		float: right;
+		margin-right: 25px;
+	}
+	.agreement-list .bottom .bottom-bot .check-active span{
+		color: #999;
+		font-size: 12px;
+		margin-right: 16px;
+	}
+	.agreement-list .bottom .bottom-bot button{
+		width: 70px;
+		height: 30px;
+		display: inline-block;
+		text-align: center;
+		line-height: 30px;
+		border: none;
+		font-size: 14px;
+	}
+	.agreement-list .bottom .bottom-bot button.off{
+		background: #cdcccc;
+		color: #666;
+		margin-right: 8px;
+	}
+	.agreement-list .bottom .bottom-bot button.ok{
+		background: #5078cb;
+		color: #fff;
+	}
+	.agreement-list .bottom .bottom-bot button:hover{
+		background: #337ab7;
+		color: #fff;
+	}
+	.agreement-list .bottom .bottom-bot button[disabled]{
+		cursor: not-allowed;
+	}
+	.agreement-list .check-active label{
+		margin-right: 0 !important;
+	}
+	.ql-container.ql-snow{
+		border: none !important;
+	}
+</style>
+<link rel="stylesheet" href="static/lib/quill/quill.snow.css" />
+<div class="agreement-list">
+	<div class="content">
+		<!--<h3>《优软商城买卖条例》</h3>-->
+		<di ng-bind-html="article" class="ql-container ql-snow"></di>
+	</div>
+	<div class="agreement-agreen">
+		<label class="check-active">
+			<input type="checkbox" ng-model="agreement" id="1" class="ng-pristine ng-untouched ng-valid">
+			<label for="1"></label>
+		</label>
+		<span>我已阅读并同意<a href="http://www.usoftmall.com/help#/issue/16" TARGET="_blank">《优软商城买卖条例》</a> 关于库存寄售的全部条款.</span>
+	</div>
+	<div class="bottom">
+		<p><strong>* </strong>您在使用库存寄售的服务前,请认真阅读 《优软商城买卖条例》:若您是误操作,请点击“取消”按钮进行返回操作.</p>
+		<div class="bottom-bot">
+			<div>
+				<button ng-click="cancel()" class="off">取消</button>
+				<button ng-click="confirm()" class="ok" ng-disabled="!agreement">确认</button>
+			</div>
+		</div>
+	</div>
+</div>