Procházet zdrojové kódy

Merge remote-tracking branch 'origin/developerH' into developer

huangzhiguo před 2 roky
rodič
revize
f8166e3ab9
62 změnil soubory, kde provedl 2877 přidání a 787 odebrání
  1. 9 3
      pom.xml
  2. 99 82
      src/main/java/com/caimei/modules/product/web/KeywordFrequencyController.java
  3. 4 7
      src/main/java/com/caimei/modules/product/web/ProductNewController.java
  4. 4 0
      src/main/java/com/caimei/modules/user/dao/CmPortraitDao.java
  5. 6 0
      src/main/java/com/caimei/modules/user/dao/NewCmClubDao.java
  6. 538 0
      src/main/java/com/caimei/modules/user/entity/ClubStatistics.java
  7. 18 0
      src/main/java/com/caimei/modules/user/entity/CmClubinfo.java
  8. 334 0
      src/main/java/com/caimei/modules/user/entity/easyExcel.java
  9. 19 6
      src/main/java/com/caimei/modules/user/service/ClubPortraitService.java
  10. 278 3
      src/main/java/com/caimei/modules/user/service/NewCmClubService.java
  11. 8 2
      src/main/java/com/caimei/modules/user/web/CmUserBehaviorRecordController.java
  12. 51 3
      src/main/java/com/caimei/modules/user/web/newUser/AgencyController.java
  13. binární
      src/main/resources/export/club_analyse_tabulation.xlsx
  14. 37 3
      src/main/resources/mappings/modules/user/CmPortraitMapper.xml
  15. 401 0
      src/main/resources/mappings/modules/user/NewCmClubMapper.xml
  16. 1 1
      src/main/webapp/WEB-INF/views/modules/product-new/productList.jsp
  17. 2 2
      src/main/webapp/WEB-INF/views/modules/sys/officeForm.jsp
  18. 3 3
      src/main/webapp/WEB-INF/views/modules/sys/officeList.jsp
  19. 139 233
      src/main/webapp/WEB-INF/views/modules/user/behaviorRecordAgency.jsp
  20. 0 1
      src/main/webapp/WEB-INF/views/modules/user/behaviorRemarks.jsp
  21. 1 1
      src/main/webapp/WEB-INF/views/modules/user/clubConfirmRecordList.jsp
  22. 1 1
      src/main/webapp/WEB-INF/views/modules/user/clubTemporaryForm.jsp
  23. 1 1
      src/main/webapp/WEB-INF/views/modules/user/clubTemporaryList.jsp
  24. 1 1
      src/main/webapp/WEB-INF/views/modules/user/cmOperationalLogs.jsp
  25. 1 1
      src/main/webapp/WEB-INF/views/modules/user/registerPage.jsp
  26. 1 1
      src/main/webapp/WEB-INF/views/modules/userNew/ReportList.jsp
  27. 20 3
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyForm.jsp
  28. 10 9
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp
  29. 1 1
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyOperation.jsp
  30. 1 1
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyRemarksList.jsp
  31. 400 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyStatisticsList.jsp
  32. 149 388
      src/main/webapp/WEB-INF/views/modules/userNew/cmClubData.jsp
  33. 26 1
      src/main/webapp/WEB-INF/views/modules/userNew/cmClubPortrait.jsp
  34. 1 1
      src/main/webapp/WEB-INF/views/modules/userNew/recordLinkageForm.jsp
  35. 2 2
      src/main/webapp/WEB-INF/views/modules/weisha/addClubUserForm.jsp
  36. 3 3
      src/main/webapp/WEB-INF/views/modules/weisha/organizeClubList.jsp
  37. 39 0
      src/main/webapp/static/modules/cmAgencyStatisticsList/cmAgencyStatisticsList.css
  38. 113 0
      src/main/webapp/static/modules/cmClubData/cmClubData.css
  39. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-1.png
  40. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-2.png
  41. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-3.png
  42. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-4.png
  43. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-5.png
  44. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-6.png
  45. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-7.png
  46. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-bg.jpg
  47. binární
      src/main/webapp/static/modules/cmClubData/icon/icon-bg.png
  48. 75 8
      src/main/webapp/static/modules/cmClubPortrait/cmClubEacths.js
  49. 80 15
      src/main/webapp/static/modules/cmClubPortrait/cmClubPortrait.css
  50. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-1.png
  51. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-2.png
  52. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-3.png
  53. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-4.png
  54. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-5.png
  55. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-6.png
  56. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-7.png
  57. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-bg.jpg
  58. binární
      src/main/webapp/static/modules/cmClubPortrait/icon/icon-bg.png
  59. binární
      src/main/webapp/static/modules/icon/icon-down-active.png
  60. binární
      src/main/webapp/static/modules/icon/icon-down.png
  61. binární
      src/main/webapp/static/modules/icon/icon-up-active.png
  62. binární
      src/main/webapp/static/modules/icon/icon-up.png

+ 9 - 3
pom.xml

@@ -50,7 +50,7 @@
 		<webserver.port>8081</webserver.port>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<downloadSources>true</downloadSources>
-
+		<easyexcel.version>2.1.6</easyexcel.version>
 		<!-- 设定编译部署的目标环境 -->
 		<env.type>dev</env.type>
 
@@ -199,7 +199,7 @@
 		<dependency>
 			<groupId>cglib</groupId>
 			<artifactId>cglib</artifactId>
-			<version>3.1</version>
+			<version>2.2.2</version>
 		</dependency>
 		<!-- AOP end -->
 
@@ -697,7 +697,11 @@
 			<artifactId>poi-ooxml-schemas</artifactId>
 			<version>3.16</version>
 		</dependency>
-
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>easyexcel</artifactId>
+			<version>${easyexcel.version}</version>
+		</dependency>
 		<!--<dependency>
 			<groupId>org.apache.poi</groupId>
 			<artifactId>ooxml-schemas</artifactId>
@@ -1002,7 +1006,9 @@
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-resources-plugin</artifactId>
 					<configuration>
+						<encoding>UTF-8</encoding>
 						<nonFilteredFileExtensions>
+							<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
 							<nonFilteredFileExtension>xls</nonFilteredFileExtension>
 						</nonFilteredFileExtensions>
 					</configuration>

+ 99 - 82
src/main/java/com/caimei/modules/product/web/KeywordFrequencyController.java

@@ -45,130 +45,142 @@ import java.util.List;
 @RequestMapping(value = "${adminPath}/product/keywordFrequency")
 public class KeywordFrequencyController extends BaseController {
 
-        @Autowired
-        private KeywordFrequencyService keywordFrequencyService;
+    @Autowired
+    private KeywordFrequencyService keywordFrequencyService;
 
     /**
      * 查询未加入关键词库的数据
+     *
      * @param searchFrequency
      * @param request
      * @param response
      * @param model
      * @return
      */
-        @RequestMapping(value="/getKeyInfo")
-        public String getKeyInfo(SearchFrequency searchFrequency, HttpServletRequest request, HttpServletResponse response,  Model model){//@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
-            searchFrequency.setTrueStatus(0);
-            Page<SearchFrequency> keyInfo = keywordFrequencyService.findPage(new Page<SearchFrequency>(request,response),searchFrequency);
-            List<SearchFrequency> seacherFrom = keywordFrequencyService.getSearchFrom(1);
-            model.addAttribute("keyInfo",keyInfo);
-            model.addAttribute("searchFrequency",searchFrequency);
-            model.addAttribute("seacherFrom",seacherFrom);
-            return "modules/product/keywordFrequency";
-        }
+    @RequestMapping(value = "/getKeyInfo")
+    public String getKeyInfo(SearchFrequency searchFrequency, HttpServletRequest request, HttpServletResponse response, Model model) {//@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+        searchFrequency.setTrueStatus(0);
+        Page<SearchFrequency> keyInfo = keywordFrequencyService.findPage(new Page<SearchFrequency>(request, response), searchFrequency);
+        List<SearchFrequency> seacherFrom = keywordFrequencyService.getSearchFrom(1);
+        model.addAttribute("keyInfo", keyInfo);
+        model.addAttribute("searchFrequency", searchFrequency);
+        model.addAttribute("seacherFrom", seacherFrom);
+        return "modules/product/keywordFrequency";
+    }
+
     /**
      * 查询已加入关键词库的数据
+     *
      * @param searchFrequency
      * @param request
      * @param response
      * @param model
      * @return
      */
-    @RequestMapping(value="/getKeywordThesaurusInfo")
-    public String getKeywordThesaurusInfo(SearchFrequency searchFrequency, HttpServletRequest request, HttpServletResponse response,  Model model){//@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+    @RequestMapping(value = "/getKeywordThesaurusInfo")
+    public String getKeywordThesaurusInfo(SearchFrequency searchFrequency, HttpServletRequest request, HttpServletResponse response, Model model) {//@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
         searchFrequency.setTrueStatus(1);
-        Page<SearchFrequency> keyInfo = keywordFrequencyService.findPage(new Page<SearchFrequency>(request,response),searchFrequency);
+        Page<SearchFrequency> keyInfo = keywordFrequencyService.findPage(new Page<SearchFrequency>(request, response), searchFrequency);
         List<SearchFrequency> list = keyInfo.getList();
-        for (SearchFrequency search:list) {
-            if(null != search.getSearchTime()){
+        for (SearchFrequency search : list) {
+            if (null != search.getSearchTime()) {
                 SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date da=new Date(search.getSearchTime().getTime());
+                Date da = new Date(search.getSearchTime().getTime());
                 String date = fmt.format(da);
                 search.setSerachDate(date);
             }
         }
         keyInfo.setList(list);
         List<SearchFrequency> seacherFrom = keywordFrequencyService.getSearchFrom(2);
-        model.addAttribute("keyInfo",keyInfo);
-        model.addAttribute("searchFrequency",searchFrequency);
-        model.addAttribute("seacherFrom",seacherFrom);
+        model.addAttribute("keyInfo", keyInfo);
+        model.addAttribute("searchFrequency", searchFrequency);
+        model.addAttribute("seacherFrom", seacherFrom);
         return "modules/product/keywordThesaurus";
     }
 
-        /**
-         * 查询未加入关键词库的关键词来源
-         * @return
-         */
-        @ResponseBody
-        @RequestMapping("/getSeacherFrom")
-        public List<String> getSearchFrom(Integer trueStatus){
+    /**
+     * 查询未加入关键词库的关键词来源
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/getSeacherFrom")
+    public List<String> getSearchFrom(Integer trueStatus) {
 //            List<String> seacherFrom = keywordFrequencyService.getSearchFrom(trueStatus);
-            return null;
-        }
+        return null;
+    }
 
     /**
      * 加入关键词库
+     *
      * @param ids
      * @return
      */
     @RequestMapping("/addKeyWordList")
     @ResponseBody
-    public String addKeyWordList(String ids,Model model){
+    public String addKeyWordList(String ids, Model model) {
         keywordFrequencyService.addKeyWordList(ids);
         return "success";
     }
+
     /**
      * 验证关键词库是该否存在关键词
+     *
      * @param keyword
      * @return
      */
     @RequestMapping("/verificationKeword")
     @ResponseBody
-    public String verificationKeword(String keyword,Model model){
+    public String verificationKeword(String keyword, Model model) {
         boolean b = keywordFrequencyService.verificationKeword(keyword);
-        if(b){
+        if (b) {
             return "-1";
-        }else{
+        } else {
             return "0";
         }
 
     }
+
     /**
      * 验证关键词库是该否存在关键词
+     *
      * @param keywords
      * @return
      */
     @RequestMapping("/verificationKewords")
     @ResponseBody
-    public String verificationKewords(String keywords,Model model){
+    public String verificationKewords(String keywords, Model model) {
         boolean b = keywordFrequencyService.verificationKewords(keywords);
-        if(b){
+        if (b) {
             return "-1";
-        }else{
+        } else {
             return "0";
         }
 
     }
+
     /**
      * 删除关键词
      * status 区分是关键词界面还是关键词库界面 (1关键词;2关键词库)
+     *
      * @param id
      * @return
      */
     @RequestMapping("/delKeyWordById")
-    public String delKeyWordById(Integer id,Integer status,RedirectAttributes redirectAttributes){
-        keywordFrequencyService.delKeyWordById(id,status);
+    public String delKeyWordById(Integer id, Integer status, RedirectAttributes redirectAttributes) {
+        keywordFrequencyService.delKeyWordById(id, status);
         addMessage(redirectAttributes, "删除关键词成功");
-        if(status==1){
-            return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeyInfo";
+        if (status == 1) {
+            return "redirect:" + Global.getAdminPath() + "/product/keywordFrequency/getKeyInfo";
 
         }
-        return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeywordThesaurusInfo";
+        return "redirect:" + Global.getAdminPath() + "/product/keywordFrequency/getKeywordThesaurusInfo";
 
     }
 
     /**
      * 跳转编辑添加页面
+     *
      * @param searchFrequency
      * @param model
      * @return
@@ -181,51 +193,53 @@ public class KeywordFrequencyController extends BaseController {
 
     /**
      * 更新关键词
+     *
      * @param searchFrequency
      * @param redirectAttributes
      * @param model
      * @return
      */
     @RequestMapping("save")
-    public String save(SearchFrequency searchFrequency,RedirectAttributes redirectAttributes,Model model){
-        if (!beanValidator(model, searchFrequency)){
+    public String save(SearchFrequency searchFrequency, RedirectAttributes redirectAttributes, Model model) {
+        if (!beanValidator(model, searchFrequency)) {
             return form(searchFrequency, model);
         }
         //如果是新增操作时
         searchFrequency.setTrueStatus(1);
         searchFrequency.setFromSearch(6);//为管理员添加
         searchFrequency.setPath("管理员添加");
-        Date date=new Date();
-        SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = new Date();
+        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         sd.format(date);
 //        searchFrequency.setSearchTime(new java.sql.Timestamp(date.getTime()));
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         searchFrequency.setSearchTime(new java.sql.Timestamp(cal.getTime().getTime()));
 
-        if(null !=searchFrequency.getKeyId()){
+        if (null != searchFrequency.getKeyId()) {
             searchFrequency.setId(searchFrequency.getKeyId().toString());
         }
         keywordFrequencyService.save(searchFrequency);
-        if(searchFrequency.getStatus()==2){
+        if (searchFrequency.getStatus() == 2) {
             //保存后重置关键词redis缓存
             keywordFrequencyService.cacheKeyWord();
-            List<SearchFrequency> list=new ArrayList<>();
+            List<SearchFrequency> list = new ArrayList<>();
             list.add(searchFrequency);
             keywordFrequencyService.conKeyWord(list);
         }
         addMessage(redirectAttributes, "保存成功");
         //编辑
-        if(null !=searchFrequency.getStatus()&&1==searchFrequency.getStatus()){
-            return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeyInfo";
+        if (null != searchFrequency.getStatus() && 1 == searchFrequency.getStatus()) {
+            return "redirect:" + Global.getAdminPath() + "/product/keywordFrequency/getKeyInfo";
         }
         //新增
-        return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeywordThesaurusInfo";
+        return "redirect:" + Global.getAdminPath() + "/product/keywordFrequency/getKeywordThesaurusInfo";
 
     }
 
     /**
      * 导出关键词
+     *
      * @param ids
      * @param redirectAttributes
      * @param request
@@ -249,8 +263,10 @@ public class KeywordFrequencyController extends BaseController {
             e.printStackTrace();
         }
     }
+
     /**
      * 导出关键词库关键词
+     *
      * @param ids
      * @param redirectAttributes
      * @param request
@@ -277,22 +293,23 @@ public class KeywordFrequencyController extends BaseController {
 
     /**
      * 导入关键词
+     *
      * @param file
      * @param redirectAttributes
      * @return
      */
     @RequestMapping(value = "importKeyword")
-    public String importKeyword(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes){
+    public String importKeyword(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
         String contentType = file.getContentType();
         String fileName = file.getOriginalFilename();
         if (file.isEmpty()) {
-            addMessage(redirectAttributes,"请选择需要导入的关键词文件");
-            return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeywordThesaurusInfo";
+            addMessage(redirectAttributes, "请选择需要导入的关键词文件");
+            return "redirect:" + Global.getAdminPath() + "/product/keywordFrequency/getKeywordThesaurusInfo";
         }
-        int sum=0;//总数量
-        int falseNum=0;//已存在数量
-        int successNum=0;
-        String falseKeys="";//已存在关键词
+        int sum = 0;//总数量
+        int falseNum = 0;//已存在数量
+        int successNum = 0;
+        String falseKeys = "";//已存在关键词
         try {
             //根据路径获取这个操作excel的实例
             HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream());
@@ -300,33 +317,33 @@ public class KeywordFrequencyController extends BaseController {
             HSSFSheet sheet = wb.getSheetAt(0);
             HSSFRow row = null;
             //循环sesheet页中数据从第二行开始,第一行是标题
-            List<SearchFrequency> searchFrequencyList=new ArrayList<>();
-             sum=sheet.getPhysicalNumberOfRows()-1;
-            for(int i=1;i<=sheet.getPhysicalNumberOfRows()-1;i++){
+            List<SearchFrequency> searchFrequencyList = new ArrayList<>();
+            sum = sheet.getPhysicalNumberOfRows() - 1;
+            for (int i = 1; i <= sheet.getPhysicalNumberOfRows() - 1; i++) {
                 row = sheet.getRow(i);
-                SearchFrequency searchFrequency=new SearchFrequency();
+                SearchFrequency searchFrequency = new SearchFrequency();
                 //关键词
-                if(null !=row.getCell(1)){
-                searchFrequency.setKeyword(row.getCell(1).toString());
+                if (null != row.getCell(1)) {
+                    searchFrequency.setKeyword(row.getCell(1).toString());
                     boolean b = keywordFrequencyService.verificationKeword(row.getCell(1).toString());
-                    if(b){//判断关键词是否已存在
-                        falseNum+=1;
-                        if(StringUtils.isNotEmpty(falseKeys)){
-                            falseKeys=falseKeys+","+row.getCell(1).toString();
-                        }else{
-                            falseKeys+=row.getCell(1).toString();
+                    if (b) {//判断关键词是否已存在
+                        falseNum += 1;
+                        if (StringUtils.isNotEmpty(falseKeys)) {
+                            falseKeys = falseKeys + "," + row.getCell(1).toString();
+                        } else {
+                            falseKeys += row.getCell(1).toString();
                         }
                         continue;
                     }
-                }else{
+                } else {
                     continue;
                 }
                 //联动次数
-                if(null !=row.getCell(2)){
-                   String linkageFrequency= row.getCell(2).toString();
-                   if(linkageFrequency.indexOf(".")>0){
-                       linkageFrequency=linkageFrequency.replace(".","");
-                   }
+                if (null != row.getCell(2)) {
+                    String linkageFrequency = row.getCell(2).toString();
+                    if (linkageFrequency.indexOf(".") > 0) {
+                        linkageFrequency = linkageFrequency.replace(".", "");
+                    }
                     searchFrequency.setLinkageFrequency(Integer.valueOf(linkageFrequency));
                 }
 //                if(null != row.getCell(2)){
@@ -339,23 +356,23 @@ public class KeywordFrequencyController extends BaseController {
 //                    }
 //                }
                 //添加时间
-                if(null != row.getCell(3)){
+                if (null != row.getCell(3)) {
                     searchFrequency.setSearchTime(new java.sql.Timestamp(row.getCell(3).getDateCellValue().getTime()));
                 }
                 searchFrequency.setPath("管理员添加");
                 searchFrequency.setTrueStatus(1);
                 searchFrequencyList.add(searchFrequency);
             }
-             successNum=sum-falseNum;
+            successNum = sum - falseNum;
             //保存文件数据
             keywordFrequencyService.importKeyword(searchFrequencyList);
             //保存后重置关键词redis缓存
             keywordFrequencyService.cacheKeyWord();
             keywordFrequencyService.conKeyWord(searchFrequencyList);
-        } catch (IOException  e) {//| ParseException
+        } catch (IOException e) {//| ParseException
             e.printStackTrace();
         }
-        addMessage(redirectAttributes,"导入关键词成功:总数: "+sum+" 条  其中成功 " +successNum+"  条"+";   关键词库已存在: "+falseNum+" 条( "+falseKeys+" )");
-        return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeywordThesaurusInfo";
+        addMessage(redirectAttributes, "导入关键词成功:总数: " + sum + " 条  其中成功 " + successNum + "  条" + ";   关键词库已存在: " + falseNum + " 条( " + falseKeys + " )");
+        return "redirect:" + Global.getAdminPath() + "/product/keywordFrequency/getKeywordThesaurusInfo";
     }
 }

+ 4 - 7
src/main/java/com/caimei/modules/product/web/ProductNewController.java

@@ -248,8 +248,9 @@ public class ProductNewController extends BaseController {
         model.addAttribute("brandList", brandList);
         model.addAttribute("classify", classify);
         model.addAttribute("page", page);
+        model.addAttribute("product",product);
         //搜索条件保存
-        model.addAttribute("searchShopName", product.getShopName());
+        /*model.addAttribute("searchShopName", product.getShopName());
         model.addAttribute("searchName", product.getName());
         model.addAttribute("searchShopID", product.getShopID());
         model.addAttribute("searchCommodityType", ("".equals(product.getCommodityType()) || product.getCommodityType() == null) ? product.getCommodityType() : Integer.parseInt(product.getCommodityType()));
@@ -261,16 +262,12 @@ public class ProductNewController extends BaseController {
         model.addAttribute("searchBrandID", product.getBrandID());
         model.addAttribute("searchPreferredFlag", product.getPreferredFlag());
         model.addAttribute("searchProductCategory", product.getProductCategory());
-        model.addAttribute("searchValidFlag", product.getSearchValidFlag());
+        model.addAttribute("searchValidFlag", product.getSearchValidFlag());*/
         if (StringUtils.isNotEmpty(id)) {
             // 单个商品搜索
             model.addAttribute("editFlag", "1");
         }
-        /**
-         * 初始化回显字段
-         */
-        product.setNewProductType(null);
-        product.setNewvalidFlag(null);
+
         if ("1".equals(product.getProductCategory())) {
 
             return "modules/product-new/productList";

+ 4 - 0
src/main/java/com/caimei/modules/user/dao/CmPortraitDao.java

@@ -1,11 +1,13 @@
 package com.caimei.modules.user.dao;
 
 import com.caimei.modules.order.entity.NewOrder;
+import com.caimei.modules.user.entity.ClubStatistics;
 import com.caimei.modules.user.entity.CmBehaviorRecord;
 import com.caimei.modules.user.entity.CmClubRemarks;
 import com.caimei.modules.user.entity.CmPortrait;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -20,6 +22,8 @@ public interface CmPortraitDao extends CrudDao<CmPortrait> {
 
     CmPortrait selTotal(CmPortrait cmPortrait);
 
+    ClubStatistics selClubData(@Param("clubID") Integer ClubID);
+
     List<NewOrder> selOrderList(CmPortrait cmPortrait);
 
     List<CmBehaviorRecord> selBehaviorList(CmPortrait cmPortrait);

+ 6 - 0
src/main/java/com/caimei/modules/user/dao/NewCmClubDao.java

@@ -85,4 +85,10 @@ public interface NewCmClubDao extends CrudDao<NewCmClub> {
     String recordDescribe(Integer clubId);
 
     List<CmBehaviorRecord> selRegisterIP(Integer clubId);
+
+    List<ClubStatistics> selStatisticsList(ClubStatistics statistics);
+
+    List<CmBehaviorRecord> selPageLable();
+
+    List<easyExcel> findExcelList(ClubStatistics statistics);
 }

+ 538 - 0
src/main/java/com/caimei/modules/user/entity/ClubStatistics.java

@@ -0,0 +1,538 @@
+package com.caimei.modules.user.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.thinkgem.jeesite.common.persistence.DataEntity;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/2/23
+ */
+@ExcelIgnoreUnannotated
+public class ClubStatistics extends DataEntity<ClubStatistics> {
+
+    private Integer userID;
+    private Integer clubID;
+
+    private String registerStartTime;       //注册开始时间
+    private String registerEndTime;         //注册结束时间
+    private String searchStartTime;         //最近下单开始时间
+    private String searchEndTime;           //最近下单结束时间
+    private String customerValue;           //机构类型
+    private String searchUserIdentity;      //机构级别
+    private String searchStatus;            //状态
+    private String customStartTime;         //自定义统计开始时间
+    private String customEndTime;           //自定义统计结束时间
+    private String monthStartTime;         //近一个月开始时间
+    private String monthEndTime;           //近一个月结束时间
+    private String yearStartTime;         //近一个年开始时间
+    private String yearEndTime;           //近一个年结束时间
+
+    // 排序
+    private Integer payTotalMonthType;  //近一个月购买额类型 0正序、1倒叙
+    private Integer orderCountMonthType;    //近一个月订单数类型 0正序、1倒叙
+    private Integer payTotalYearType;   //近一年购买额类型 0正序、1倒叙
+    private Integer orderCountYearType; //近一年订单数类型 0正序、1倒叙
+    private Integer payTotalType;   //总购买额类型 0正序、1倒叙
+
+    // 省
+    private String provinceID;
+    // 市
+    private String cityID;
+
+    private String province;
+    private String city;
+    private String town;
+
+    private String name;    // 机构名称
+    private String linkMan; //联系人
+    private String contractMobile;  //联系手机
+    private String linkManIdentity; //联系人身份:1老板,2采购,3运营,4其他
+    private String spName;      //协销人员
+    private String address;         //详细地址
+    private String businessLicenseImage;    //营业执照
+    private String userIdentity;    //用户身份
+    private String sname;   //机构简称
+    private String contractEmail;   //联系邮箱
+    private String contractPhone;   //联系电话
+    private String fax;     //传真
+    private String headpic;     //门头照
+    private String socialCreditCode;    //统一社会信用代码 --- 营业执照编号
+    private String info;    //公司简介
+    private String linkManStatus;   //联系人身份
+    private String clubStatus;  // 机构状态
+    private String clubRank;  // 机构级别
+    private String firstClubType;  // 机构一级分类
+    private String classify;  // 机构二级分类
+    private String clubType;  // 机构类型
+    private Integer number;  // 资料完整度数值
+    private String clubDataIntegrity;  // 资料完整度
+    private String addTime;  // 注册时间
+    private String svipUserFlag;  // vip类别
+    private String payTotalMonth;  // 近一个月购买额
+    private String orderCountMonth;  // 近一个月订单数
+    private String payTotalYear;  // 近一个年购买额
+    private String orderCountYear;  // 近一个年订单数
+    private String payTotal;  // 总购买额
+    private String pageLabel;   //最常搜索词
+    private String lastOrderTime;  // 最近下单时间
+
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    public Integer getClubID() {
+        return clubID;
+    }
+
+    public void setClubID(Integer clubID) {
+        this.clubID = clubID;
+    }
+
+    public String getRegisterStartTime() {
+        return registerStartTime;
+    }
+
+    public void setRegisterStartTime(String registerStartTime) {
+        this.registerStartTime = registerStartTime;
+    }
+
+    public String getRegisterEndTime() {
+        return registerEndTime;
+    }
+
+    public void setRegisterEndTime(String registerEndTime) {
+        this.registerEndTime = registerEndTime;
+    }
+
+    public String getSearchStartTime() {
+        return searchStartTime;
+    }
+
+    public void setSearchStartTime(String searchStartTime) {
+        this.searchStartTime = searchStartTime;
+    }
+
+    public String getSearchEndTime() {
+        return searchEndTime;
+    }
+
+    public void setSearchEndTime(String searchEndTime) {
+        this.searchEndTime = searchEndTime;
+    }
+
+    public String getCustomerValue() {
+        return customerValue;
+    }
+
+    public void setCustomerValue(String customerValue) {
+        this.customerValue = customerValue;
+    }
+
+    public String getSearchUserIdentity() {
+        return searchUserIdentity;
+    }
+
+    public void setSearchUserIdentity(String searchUserIdentity) {
+        this.searchUserIdentity = searchUserIdentity;
+    }
+
+    public String getSearchStatus() {
+        return searchStatus;
+    }
+
+    public void setSearchStatus(String searchStatus) {
+        this.searchStatus = searchStatus;
+    }
+
+    public String getCustomStartTime() {
+        return customStartTime;
+    }
+
+    public void setCustomStartTime(String customStartTime) {
+        this.customStartTime = customStartTime;
+    }
+
+    public String getCustomEndTime() {
+        return customEndTime;
+    }
+
+    public void setCustomEndTime(String customEndTime) {
+        this.customEndTime = customEndTime;
+    }
+
+    public String getMonthStartTime() {
+        return monthStartTime;
+    }
+
+    public void setMonthStartTime(String monthStartTime) {
+        this.monthStartTime = monthStartTime;
+    }
+
+    public String getMonthEndTime() {
+        return monthEndTime;
+    }
+
+    public void setMonthEndTime(String monthEndTime) {
+        this.monthEndTime = monthEndTime;
+    }
+
+    public String getYearStartTime() {
+        return yearStartTime;
+    }
+
+    public void setYearStartTime(String yearStartTime) {
+        this.yearStartTime = yearStartTime;
+    }
+
+    public String getYearEndTime() {
+        return yearEndTime;
+    }
+
+    public void setYearEndTime(String yearEndTime) {
+        this.yearEndTime = yearEndTime;
+    }
+
+    public Integer getPayTotalMonthType() {
+        return payTotalMonthType;
+    }
+
+    public void setPayTotalMonthType(Integer payTotalMonthType) {
+        this.payTotalMonthType = payTotalMonthType;
+    }
+
+    public Integer getOrderCountMonthType() {
+        return orderCountMonthType;
+    }
+
+    public void setOrderCountMonthType(Integer orderCountMonthType) {
+        this.orderCountMonthType = orderCountMonthType;
+    }
+
+    public Integer getPayTotalYearType() {
+        return payTotalYearType;
+    }
+
+    public void setPayTotalYearType(Integer payTotalYearType) {
+        this.payTotalYearType = payTotalYearType;
+    }
+
+    public Integer getOrderCountYearType() {
+        return orderCountYearType;
+    }
+
+    public void setOrderCountYearType(Integer orderCountYearType) {
+        this.orderCountYearType = orderCountYearType;
+    }
+
+    public Integer getPayTotalType() {
+        return payTotalType;
+    }
+
+    public void setPayTotalType(Integer payTotalType) {
+        this.payTotalType = payTotalType;
+    }
+
+    public String getProvinceID() {
+        return provinceID;
+    }
+
+    public void setProvinceID(String provinceID) {
+        this.provinceID = provinceID;
+    }
+
+    public String getCityID() {
+        return cityID;
+    }
+
+    public void setCityID(String cityID) {
+        this.cityID = cityID;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getTown() {
+        return town;
+    }
+
+    public void setTown(String town) {
+        this.town = town;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLinkMan() {
+        return linkMan;
+    }
+
+    public void setLinkMan(String linkMan) {
+        this.linkMan = linkMan;
+    }
+
+    public String getContractMobile() {
+        return contractMobile;
+    }
+
+    public void setContractMobile(String contractMobile) {
+        this.contractMobile = contractMobile;
+    }
+
+    public String getLinkManIdentity() {
+        return linkManIdentity;
+    }
+
+    public void setLinkManIdentity(String linkManIdentity) {
+        this.linkManIdentity = linkManIdentity;
+    }
+
+    public String getSpName() {
+        return spName;
+    }
+
+    public void setSpName(String spName) {
+        this.spName = spName;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getBusinessLicenseImage() {
+        return businessLicenseImage;
+    }
+
+    public void setBusinessLicenseImage(String businessLicenseImage) {
+        this.businessLicenseImage = businessLicenseImage;
+    }
+
+    public String getUserIdentity() {
+        return userIdentity;
+    }
+
+    public void setUserIdentity(String userIdentity) {
+        this.userIdentity = userIdentity;
+    }
+
+    public String getSname() {
+        return sname;
+    }
+
+    public void setSname(String sname) {
+        this.sname = sname;
+    }
+
+    public String getContractEmail() {
+        return contractEmail;
+    }
+
+    public void setContractEmail(String contractEmail) {
+        this.contractEmail = contractEmail;
+    }
+
+    public String getContractPhone() {
+        return contractPhone;
+    }
+
+    public void setContractPhone(String contractPhone) {
+        this.contractPhone = contractPhone;
+    }
+
+    public String getFax() {
+        return fax;
+    }
+
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    public String getHeadpic() {
+        return headpic;
+    }
+
+    public void setHeadpic(String headpic) {
+        this.headpic = headpic;
+    }
+
+    public String getSocialCreditCode() {
+        return socialCreditCode;
+    }
+
+    public void setSocialCreditCode(String socialCreditCode) {
+        this.socialCreditCode = socialCreditCode;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
+    }
+
+    public String getLinkManStatus() {
+        return linkManStatus;
+    }
+
+    public void setLinkManStatus(String linkManStatus) {
+        this.linkManStatus = linkManStatus;
+    }
+
+    public String getClubStatus() {
+        return clubStatus;
+    }
+
+    public void setClubStatus(String clubStatus) {
+        this.clubStatus = clubStatus;
+    }
+
+    public String getClubRank() {
+        return clubRank;
+    }
+
+    public void setClubRank(String clubRank) {
+        this.clubRank = clubRank;
+    }
+
+    public String getFirstClubType() {
+        return firstClubType;
+    }
+
+    public void setFirstClubType(String firstClubType) {
+        this.firstClubType = firstClubType;
+    }
+
+    public String getClassify() {
+        return classify;
+    }
+
+    public void setClassify(String classify) {
+        this.classify = classify;
+    }
+
+    public String getClubType() {
+        return clubType;
+    }
+
+    public void setClubType(String clubType) {
+        this.clubType = clubType;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public String getClubDataIntegrity() {
+        return clubDataIntegrity;
+    }
+
+    public void setClubDataIntegrity(String clubDataIntegrity) {
+        this.clubDataIntegrity = clubDataIntegrity;
+    }
+
+    public String getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(String addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getSvipUserFlag() {
+        return svipUserFlag;
+    }
+
+    public void setSvipUserFlag(String svipUserFlag) {
+        this.svipUserFlag = svipUserFlag;
+    }
+
+    public String getPayTotalMonth() {
+        return payTotalMonth;
+    }
+
+    public void setPayTotalMonth(String payTotalMonth) {
+        this.payTotalMonth = payTotalMonth;
+    }
+
+    public String getOrderCountMonth() {
+        return orderCountMonth;
+    }
+
+    public void setOrderCountMonth(String orderCountMonth) {
+        this.orderCountMonth = orderCountMonth;
+    }
+
+    public String getPayTotalYear() {
+        return payTotalYear;
+    }
+
+    public void setPayTotalYear(String payTotalYear) {
+        this.payTotalYear = payTotalYear;
+    }
+
+    public String getOrderCountYear() {
+        return orderCountYear;
+    }
+
+    public void setOrderCountYear(String orderCountYear) {
+        this.orderCountYear = orderCountYear;
+    }
+
+    public String getPayTotal() {
+        return payTotal;
+    }
+
+    public void setPayTotal(String payTotal) {
+        this.payTotal = payTotal;
+    }
+
+    public String getPageLabel() {
+        return pageLabel;
+    }
+
+    public void setPageLabel(String pageLabel) {
+        this.pageLabel = pageLabel;
+    }
+
+    public String getLastOrderTime() {
+        return lastOrderTime;
+    }
+
+    public void setLastOrderTime(String lastOrderTime) {
+        this.lastOrderTime = lastOrderTime;
+    }
+}

+ 18 - 0
src/main/java/com/caimei/modules/user/entity/CmClubinfo.java

@@ -65,6 +65,8 @@ public class CmClubinfo extends DataEntity<CmClubinfo> {
     private String medicalPracticeLicenseImg;  //医美分类必须上传医疗执业许可证
     private String contractEmail;  //邮箱
     private Integer linkManIdentity;    //联系人身份:1老板,2采购,3运营
+    private String userIdentity;  //用户身份
+    private Integer svipUserFlag;   //超级会员用户标识,1是,2不是
 
     public String getContractEmail() {
         return contractEmail;
@@ -442,4 +444,20 @@ public class CmClubinfo extends DataEntity<CmClubinfo> {
     public void setLinkManIdentity(Integer linkManIdentity) {
         this.linkManIdentity = linkManIdentity;
     }
+
+    public String getUserIdentity() {
+        return userIdentity;
+    }
+
+    public void setUserIdentity(String userIdentity) {
+        this.userIdentity = userIdentity;
+    }
+
+    public Integer getSvipUserFlag() {
+        return svipUserFlag;
+    }
+
+    public void setSvipUserFlag(Integer svipUserFlag) {
+        this.svipUserFlag = svipUserFlag;
+    }
 }

+ 334 - 0
src/main/java/com/caimei/modules/user/entity/easyExcel.java

@@ -0,0 +1,334 @@
+package com.caimei.modules.user.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.thinkgem.jeesite.common.utils.excel.annotation.ExcelField;
+
+/**
+ * @author zzj
+ */
+public class easyExcel {
+    @ExcelIgnore
+    private String firstClubType;  // 机构一级分类
+    @ExcelIgnore
+    private String classify;  // 机构二级分类
+    @ExcelIgnore
+    private String address;         //详细地址
+    @ExcelIgnore
+    private String businessLicenseImage;    //营业执照
+    @ExcelIgnore
+    private String userIdentity;    //用户身份
+    @ExcelIgnore
+    private String linkManIdentity;    //用户身份
+    @ExcelIgnore
+    private String sname;   //机构简称
+    @ExcelIgnore
+    private String contractEmail;   //联系邮箱
+    @ExcelIgnore
+    private String contractPhone;   //联系电话
+    @ExcelIgnore
+    private String fax;     //传真
+    @ExcelIgnore
+    private String headpic;     //门头照
+    @ExcelIgnore
+    private String socialCreditCode;    //统一社会信用代码 --- 营业执照编号
+    @ExcelIgnore
+    private String info;    //公司简介
+    @ExcelIgnore
+    private Integer number;    //百分比数值
+    @ExcelIgnore
+    private Integer userID;    //user
+
+
+    @ExcelProperty(value = "机构Id",index = 0)
+    private String clubId;  //机构ID
+    @ExcelProperty(value = "机构名称",index = 1)
+    private String name; //机构名称
+    @ExcelProperty(value = "联系人",index = 2)
+    private String linkMan; //联系人
+    @ExcelProperty(value = "联系人身份",index = 3)
+    private String linkManStatus; //联系人身份:1老板,2采购,3运营,4其他
+    @ExcelProperty(value = "手机号",index = 4)
+    private String contractMobile; //手机号
+    @ExcelProperty(value = "协销人员",index = 5)
+    private String spName; //协销人员
+    @ExcelProperty(value = "状态",index = 6)
+    private String clubStatus; //状态
+    @ExcelProperty(value = "机构类型",index = 7)
+    private String clubType; //机构类型
+    @ExcelProperty(value = "机构级别",index = 8)
+    private String clubRank; //机构级别
+    @ExcelProperty(value = "资料完整度",index = 9)
+    private String clubDataIntegrity; //资料完整度
+    @ExcelProperty(value = "注册时间",index = 10)
+    private String addTime; //注册时间
+    @ExcelProperty(value = "近一个月订单数",index = 11)
+    private String orderCountMonth; //近一个月订单数
+    @ExcelProperty(value = "近一年订单数",index = 12)
+    private String orderCountYear; //近一年订单数
+    @ExcelProperty(value = "近一年购买额",index = 13)
+    private String payTotalMonth; //近一年购买额
+    @ExcelProperty(value = "总购买额",index = 14)
+    private String payTotal; //总购买额
+    @ExcelProperty(value = "最常搜索词",index = 15)
+    private String pageLabel; //最常搜索词
+    @ExcelProperty(value = "最近下单时间",index = 16)
+    private String lastOrderTime; //最近下单时间
+
+
+    public String getFirstClubType() {
+        return firstClubType;
+    }
+
+    public void setFirstClubType(String firstClubType) {
+        this.firstClubType = firstClubType;
+    }
+
+    public String getClassify() {
+        return classify;
+    }
+
+    public void setClassify(String classify) {
+        this.classify = classify;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getBusinessLicenseImage() {
+        return businessLicenseImage;
+    }
+
+    public void setBusinessLicenseImage(String businessLicenseImage) {
+        this.businessLicenseImage = businessLicenseImage;
+    }
+
+    public String getUserIdentity() {
+        return userIdentity;
+    }
+
+    public void setUserIdentity(String userIdentity) {
+        this.userIdentity = userIdentity;
+    }
+
+    public String getLinkManIdentity() {
+        return linkManIdentity;
+    }
+
+    public void setLinkManIdentity(String linkManIdentity) {
+        this.linkManIdentity = linkManIdentity;
+    }
+
+    public String getSname() {
+        return sname;
+    }
+
+    public void setSname(String sname) {
+        this.sname = sname;
+    }
+
+    public String getContractEmail() {
+        return contractEmail;
+    }
+
+    public void setContractEmail(String contractEmail) {
+        this.contractEmail = contractEmail;
+    }
+
+    public String getContractPhone() {
+        return contractPhone;
+    }
+
+    public void setContractPhone(String contractPhone) {
+        this.contractPhone = contractPhone;
+    }
+
+    public String getFax() {
+        return fax;
+    }
+
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    public String getHeadpic() {
+        return headpic;
+    }
+
+    public void setHeadpic(String headpic) {
+        this.headpic = headpic;
+    }
+
+    public String getSocialCreditCode() {
+        return socialCreditCode;
+    }
+
+    public void setSocialCreditCode(String socialCreditCode) {
+        this.socialCreditCode = socialCreditCode;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Integer getUserID() {
+        return userID;
+    }
+
+    public void setUserID(Integer userID) {
+        this.userID = userID;
+    }
+
+    public String getClubId() {
+        return clubId;
+    }
+
+    public void setClubId(String clubId) {
+        this.clubId = clubId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLinkMan() {
+        return linkMan;
+    }
+
+    public void setLinkMan(String linkMan) {
+        this.linkMan = linkMan;
+    }
+
+    public String getLinkManStatus() {
+        return linkManStatus;
+    }
+
+    public void setLinkManStatus(String linkManStatus) {
+        this.linkManStatus = linkManStatus;
+    }
+
+    public String getContractMobile() {
+        return contractMobile;
+    }
+
+    public void setContractMobile(String contractMobile) {
+        this.contractMobile = contractMobile;
+    }
+
+    public String getSpName() {
+        return spName;
+    }
+
+    public void setSpName(String spName) {
+        this.spName = spName;
+    }
+
+    public String getClubStatus() {
+        return clubStatus;
+    }
+
+    public void setClubStatus(String clubStatus) {
+        this.clubStatus = clubStatus;
+    }
+
+    public String getClubType() {
+        return clubType;
+    }
+
+    public void setClubType(String clubType) {
+        this.clubType = clubType;
+    }
+
+    public String getClubRank() {
+        return clubRank;
+    }
+
+    public void setClubRank(String clubRank) {
+        this.clubRank = clubRank;
+    }
+
+    public String getClubDataIntegrity() {
+        return clubDataIntegrity;
+    }
+
+    public void setClubDataIntegrity(String clubDataIntegrity) {
+        this.clubDataIntegrity = clubDataIntegrity;
+    }
+
+    public String getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(String addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getOrderCountMonth() {
+        return orderCountMonth;
+    }
+
+    public void setOrderCountMonth(String orderCountMonth) {
+        this.orderCountMonth = orderCountMonth;
+    }
+
+    public String getOrderCountYear() {
+        return orderCountYear;
+    }
+
+    public void setOrderCountYear(String orderCountYear) {
+        this.orderCountYear = orderCountYear;
+    }
+
+    public String getPayTotalMonth() {
+        return payTotalMonth;
+    }
+
+    public void setPayTotalMonth(String payTotalMonth) {
+        this.payTotalMonth = payTotalMonth;
+    }
+
+    public String getPayTotal() {
+        return payTotal;
+    }
+
+    public void setPayTotal(String payTotal) {
+        this.payTotal = payTotal;
+    }
+
+    public String getPageLabel() {
+        return pageLabel;
+    }
+
+    public void setPageLabel(String pageLabel) {
+        this.pageLabel = pageLabel;
+    }
+
+    public String getLastOrderTime() {
+        return lastOrderTime;
+    }
+
+    public void setLastOrderTime(String lastOrderTime) {
+        this.lastOrderTime = lastOrderTime;
+    }
+}

+ 19 - 6
src/main/java/com/caimei/modules/user/service/ClubPortraitService.java

@@ -2,10 +2,7 @@ package com.caimei.modules.user.service;
 
 import com.caimei.modules.order.entity.NewOrder;
 import com.caimei.modules.user.dao.CmPortraitDao;
-import com.caimei.modules.user.entity.CmBehaviorRecord;
-import com.caimei.modules.user.entity.CmClubRemarks;
-import com.caimei.modules.user.entity.CmPortrait;
-import com.caimei.modules.user.entity.OrderPortrait;
+import com.caimei.modules.user.entity.*;
 import com.thinkgem.jeesite.common.utils.ObjectUtils;
 import com.thinkgem.jeesite.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +35,20 @@ public class ClubPortraitService {
         CmPortrait cmPortraits = cmPortraitDao.selTotal(cmPortrait);
         return cmPortraits;
     }
+    public ClubStatistics clubData(Integer clubID) {
+        ClubStatistics clubStatistics = cmPortraitDao.selClubData(clubID);
+        if (clubStatistics != null) {
+            String type = "" ;
+            if (StringUtils.isNotBlank(clubStatistics.getFirstClubType())) {
+                type += clubStatistics.getFirstClubType();
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getClassify())) {
+                type += "-" + clubStatistics.getClassify();
+            }
+            clubStatistics.setClubType(type);
+        }
+        return clubStatistics;
+    }
     /**
      * 查询机构画像数据
      * @param cmPortrait
@@ -233,6 +244,7 @@ public class ClubPortraitService {
             ArrayList<Integer> integers = new ArrayList<>();
             ArrayList<String> strings = new ArrayList<>();
             ArrayList<String> strRemark = new ArrayList<>();
+            ArrayList<String> remarkAll = new ArrayList<>();
             int number = 0;
             if (remarksList.size() != 0) {
                 for (CmClubRemarks remarks: remarksList) {
@@ -241,11 +253,12 @@ public class ClubPortraitService {
                         if (!strRemark.contains(str)) {
                             strRemark.add(str);
                         }
+                        remarkAll.add(str);
                     }
                 }
                 for (String str : strRemark) {
-                    for (CmClubRemarks remarks: remarksList) {
-                        if (str.equals(remarks.getRemarks())) {
+                    for (int i = 0;i < remarkAll.size(); i++) {
+                        if (str.equals(remarkAll.get(i))) {
                             number++;
                         }
                     }

+ 278 - 3
src/main/java/com/caimei/modules/user/service/NewCmClubService.java

@@ -1,9 +1,9 @@
 package com.caimei.modules.user.service;
 
 import java.io.IOException;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import com.caimei.modules.bulkpurchase.dao.CmClubDao;
 import com.caimei.modules.consult.entity.type.CmConsulttype;
@@ -213,4 +213,279 @@ public class NewCmClubService extends CrudService<NewCmClubDao, NewCmClub> {
        return cmReports;
     }
 
+    public Page<ClubStatistics> statisticsList(Page<ClubStatistics> page, ClubStatistics statistics){
+        statistics.setPage(page);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Date date = new Date();
+        String monthStartTime = "";
+        String yearStartTime = "";
+        String endTime = "";
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        // 获取近一个月、近一年结束时间
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
+        Date time = calendar.getTime();
+        endTime = dateFormat.format(date);
+        statistics.setMonthEndTime(endTime);
+        statistics.setYearEndTime(endTime);
+        // 近一个月开始时间
+        calendar.setTime(time);
+        calendar.add(Calendar.MONTH,-1);
+        statistics.setMonthStartTime(dateFormat.format(calendar.getTime()));
+        // 近一年开始时间
+        calendar.setTime(time);
+        calendar.add(Calendar.YEAR,-1);
+        statistics.setYearStartTime(dateFormat.format(calendar.getTime()));
+        List<ClubStatistics> selStatisticsList = new ArrayList<>();
+        if (StringUtils.isNotBlank(statistics.getClubDataIntegrity())) {
+            // 初始化查询条件,排除sql分页
+            ClubStatistics clubData = new ClubStatistics();
+            clubData.setMonthStartTime(statistics.getMonthStartTime());
+            clubData.setMonthEndTime(statistics.getMonthEndTime());
+            clubData.setYearStartTime(statistics.getYearStartTime());
+            clubData.setYearEndTime(statistics.getYearEndTime());
+            clubData.setClubDataIntegrity(statistics.getClubDataIntegrity());
+            if (StringUtils.isNotBlank(statistics.getRegisterStartTime())) {
+                clubData.setRegisterStartTime(statistics.getRegisterStartTime());
+            }
+            if (StringUtils.isNotBlank(statistics.getRegisterEndTime())) {
+                clubData.setRegisterEndTime(statistics.getRegisterEndTime());
+            }
+            if (StringUtils.isNotBlank(statistics.getSearchStartTime())) {
+                clubData.setSearchStartTime(statistics.getSearchStartTime());
+            }
+            if (StringUtils.isNotBlank(statistics.getSearchEndTime())) {
+                clubData.setSearchEndTime(statistics.getSearchEndTime());
+            }
+            if (StringUtils.isNotBlank(statistics.getCustomerValue())) {
+                clubData.setCustomerValue(statistics.getCustomerValue());
+            }
+            if (StringUtils.isNotBlank(statistics.getSearchUserIdentity())) {
+                clubData.setSearchUserIdentity(statistics.getSearchUserIdentity());
+            }
+            if (StringUtils.isNotBlank(statistics.getSearchStatus())) {
+                clubData.setSearchStatus(statistics.getSearchStatus());
+            }
+            clubData.setLinkManIdentity(statistics.getLinkManIdentity());
+            clubData.setCustomStartTime(statistics.getCustomStartTime());
+            clubData.setCustomEndTime(statistics.getCustomEndTime());
+            clubData.setPayTotalMonth(statistics.getPayTotalMonth());
+            clubData.setPayTotalYear(statistics.getPayTotalYear());
+            clubData.setPayTotal(statistics.getPayTotal());
+            clubData.setPayTotalMonthType(statistics.getPayTotalMonthType());
+            clubData.setOrderCountMonthType(statistics.getOrderCountMonthType());
+            clubData.setPayTotalYearType(statistics.getPayTotalYearType());
+            clubData.setOrderCountYearType(statistics.getOrderCountYearType());
+            clubData.setPayTotalType(statistics.getPayTotalType());
+
+            selStatisticsList = newCmClubDao.selStatisticsList(clubData);
+        } else {
+            selStatisticsList = newCmClubDao.selStatisticsList(statistics);
+        }
+        List<ClubStatistics> statisticsList = setListData(selStatisticsList, statistics);
+        if (StringUtils.isNotBlank(statistics.getClubDataIntegrity())) {
+            int pageNo = page.getPageNo();
+            int pageSize = page.getPageSize();
+            int number = 0;
+            if (pageNo == 1) {
+                number = 0;
+            } else {
+                number = (pageNo - 1) * pageSize;
+            }
+            List<ClubStatistics> list = new ArrayList<>();
+            for (int i = 0; i <= statisticsList.size()-1 ; i++) {
+                if (i >= number && i < number+pageSize) {
+                    list.add(statisticsList.get(i));
+                }
+            }
+            page.setCount(statisticsList.size());
+            page.setList(list);
+        } else {
+            page.setList(statisticsList);
+        }
+        return page;
+    }
+
+    public List<easyExcel> exportExcel(ClubStatistics statistics) {
+        List<easyExcel> statisticsList = newCmClubDao.findExcelList(statistics);
+        List<easyExcel> easyExcels = setExData(statisticsList, statistics);
+        return easyExcels;
+    }
+
+    public List<easyExcel> setExData(List<easyExcel> selStatisticsList, ClubStatistics statistics) {
+        int number = 0;
+        String type = "" ;
+        Integer item = 0 ;
+//        List<ClubStatistics> clubStatisticsList = selStatisticsList;
+        List<CmBehaviorRecord> pageLableList = newCmClubDao.selPageLable();
+
+        for (easyExcel clubStatistics : selStatisticsList) {
+            // 机构类型
+            if (StringUtils.isNotBlank(clubStatistics.getFirstClubType())) {
+                type += clubStatistics.getFirstClubType();
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getClassify())) {
+                type += "-" + clubStatistics.getClassify();
+            }
+            clubStatistics.setClubType(type);
+            // 计算资料完整度
+            if (StringUtils.isNotBlank(clubStatistics.getName())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getLinkMan())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getContractMobile())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getLinkManIdentity())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getAddress())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getBusinessLicenseImage())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getUserIdentity())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getSname())) {
+                number += 3;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getContractEmail())) {
+                number += 5;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getContractPhone())) {
+                number += 4;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getFax())) {
+                number += 3;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getHeadpic())) {
+                number += 5;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getSocialCreditCode())) {
+                number += 5;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getInfo())) {
+                number += 5;
+            }
+            clubStatistics.setNumber(number);
+            clubStatistics.setClubDataIntegrity(number+"%");
+
+            number=0;
+            type = "";
+            // 处理最常搜索词
+            List<CmBehaviorRecord> collect = pageLableList.stream().filter(data -> data.getUserID().equals(clubStatistics.getUserID())).collect(Collectors.toList());
+            if (collect.size() > 0) {
+                clubStatistics.setPageLabel(collect.get(0).getPageLabel());
+                item = collect.get(0).getNumber();
+                for (int i = 0; i < collect.size()-1; i++) {
+                    if (item < collect.get(i).getNumber()) {
+                        item = collect.get(i).getNumber();
+                        clubStatistics.setPageLabel(collect.get(i).getPageLabel());
+                    }
+                }
+            }
+        }
+        // 资料完整度处理
+        if (StringUtils.isNotBlank(statistics.getClubDataIntegrity())) {
+            if ("1".equals(statistics.getClubDataIntegrity())) {
+                selStatisticsList = selStatisticsList.stream().filter(data -> (data.getNumber() > 20 && data.getNumber() < 70)).collect(Collectors.toList());
+            } else {
+                selStatisticsList = selStatisticsList.stream().filter(data -> data.getNumber() > 70).collect(Collectors.toList());
+            }
+        }
+        return selStatisticsList;
+
+    }
+
+    public List<ClubStatistics> setListData(List<ClubStatistics> selStatisticsList, ClubStatistics statistics) {
+        int number = 0;
+        String type = "" ;
+        Integer item = 0 ;
+//        List<ClubStatistics> clubStatisticsList = selStatisticsList;
+        List<CmBehaviorRecord> pageLableList = newCmClubDao.selPageLable();
+
+        for (ClubStatistics clubStatistics : selStatisticsList) {
+            // 机构类型
+            if (StringUtils.isNotBlank(clubStatistics.getFirstClubType())) {
+                type += clubStatistics.getFirstClubType();
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getClassify())) {
+                type += "-" + clubStatistics.getClassify();
+            }
+            clubStatistics.setClubType(type);
+            // 计算资料完整度
+            if (StringUtils.isNotBlank(clubStatistics.getName())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getLinkMan())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getContractMobile())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getLinkManIdentity())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getAddress())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getBusinessLicenseImage())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getUserIdentity())) {
+                number += 10;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getSname())) {
+                number += 3;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getContractEmail())) {
+                number += 5;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getContractPhone())) {
+                number += 4;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getFax())) {
+                number += 3;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getHeadpic())) {
+                number += 5;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getSocialCreditCode())) {
+                number += 5;
+            }
+            if (StringUtils.isNotBlank(clubStatistics.getInfo())) {
+                number += 5;
+            }
+            clubStatistics.setNumber(number);
+            clubStatistics.setClubDataIntegrity(number+"%");
+
+            number=0;
+            type = "";
+            // 处理最常搜索词
+            List<CmBehaviorRecord> collect = pageLableList.stream().filter(data -> data.getUserID().equals(clubStatistics.getUserID())).collect(Collectors.toList());
+            if (collect.size() > 0) {
+                clubStatistics.setPageLabel(collect.get(0).getPageLabel());
+                item = collect.get(0).getNumber();
+                for (int i = 0; i < collect.size()-1; i++) {
+                    if (item < collect.get(i).getNumber()) {
+                        item = collect.get(i).getNumber();
+                        clubStatistics.setPageLabel(collect.get(i).getPageLabel());
+                    }
+                }
+            }
+        }
+        // 资料完整度处理
+        if (StringUtils.isNotBlank(statistics.getClubDataIntegrity())) {
+            if ("1".equals(statistics.getClubDataIntegrity())) {
+                selStatisticsList = selStatisticsList.stream().filter(data -> (data.getNumber() > 20 && data.getNumber() < 70)).collect(Collectors.toList());
+            } else {
+                selStatisticsList = selStatisticsList.stream().filter(data -> data.getNumber() > 70).collect(Collectors.toList());
+            }
+        }
+        return selStatisticsList;
+    }
 }

+ 8 - 2
src/main/java/com/caimei/modules/user/web/CmUserBehaviorRecordController.java

@@ -146,12 +146,18 @@ public class CmUserBehaviorRecordController extends BaseController {
         cmClubinfo.setMedicalPracticeLicenseImg(newCmClub.getMedicalPracticeLicenseImg());
         cmClubinfo.setContractEmail(newCmClub.getContractEmail());
         cmClubinfo.setLinkManIdentity(newCmClub.getLinkManIdentity());
+        cmClubinfo.setUserIdentity(newCmClub.getUserIdentity());
+        cmClubinfo.setSvipUserFlag(newCmClub.getSvipUserFlag());
 
         String wwwServer = Global.getConfig("wwwServer");
         //营业执照
-        newCmClub.setBusinessLicenseImage(AppUtils.getImageURL("clubBusinessLicenseImage", newCmClub.getBusinessLicenseImage(), 0, wwwServer));
+        if (StringUtils.isNotBlank(newCmClub.getBusinessLicenseImage())) {
+            newCmClub.setBusinessLicenseImage(AppUtils.getImageURL("clubBusinessLicenseImage", newCmClub.getBusinessLicenseImage(), 0, wwwServer));
+        }
         //门头照
-        newCmClub.setHeadpic(AppUtils.getImageURL("club", newCmClub.getHeadpic(), AppKeys.CLUB_LOGO_SIZE, wwwServer));
+        if (StringUtils.isNotBlank(newCmClub.getHeadpic())) {
+            newCmClub.setHeadpic(AppUtils.getImageURL("club", newCmClub.getHeadpic(), AppKeys.CLUB_LOGO_SIZE, wwwServer));
+        }
 
         model.addAttribute("cmClubinfo", cmClubinfo);
         model.addAttribute("newCmClub", newCmClub);

+ 51 - 3
src/main/java/com/caimei/modules/user/web/newUser/AgencyController.java

@@ -1,5 +1,9 @@
 package com.caimei.modules.user.web.newUser;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import com.alibaba.excel.write.metadata.WriteSheet;
 import com.caimei.constants.ClubStatus;
 import com.caimei.dfs.image.beens.ImageUploadInfo;
 import com.caimei.modules.common.utils.UploadUtils;
@@ -26,6 +30,7 @@ import com.google.common.collect.Maps;
 import com.thinkgem.jeesite.common.config.Global;
 import com.thinkgem.jeesite.common.persistence.Page;
 import com.thinkgem.jeesite.common.utils.Encodes;
+import com.thinkgem.jeesite.common.utils.FileUtils;
 import com.thinkgem.jeesite.common.utils.ObjectUtils;
 import com.thinkgem.jeesite.common.utils.StringUtils;
 import com.thinkgem.jeesite.common.web.BaseController;
@@ -33,6 +38,7 @@ import com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm;
 import com.thinkgem.jeesite.modules.sys.utils.UserUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.map.HashedMap;
+import org.apache.poi.openxml4j.util.ZipSecureFile;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -44,12 +50,15 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.swing.filechooser.FileSystemView;
 import java.awt.*;
 import java.awt.datatransfer.StringSelection;
-import java.io.IOException;
+import java.io.*;
 import java.math.BigDecimal;
+import java.net.URLEncoder;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -376,6 +385,7 @@ public class AgencyController extends BaseController {
         cmClubinfo.setMedicalPracticeLicenseImg(newCmClub.getMedicalPracticeLicenseImg());
         cmClubinfo.setContractEmail(newCmClub.getContractEmail());
         cmClubinfo.setLinkManIdentity(newCmClub.getLinkManIdentity());
+
         model.addAttribute("cmClubinfo", cmClubinfo);
         model.addAttribute("newCmClub", newCmClub);
 
@@ -1404,11 +1414,43 @@ public class AgencyController extends BaseController {
         return map;
     }
 
+    @RequestMapping(value = "/statisticsList")
+    public String statisticsList(ClubStatistics statistics, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ClubStatistics> page = newCmClubService.statisticsList(new Page<>(request, response), statistics);
+        model.addAttribute("statistics",statistics);
+        model.addAttribute("page",page);
+        return "modules/userNew/cmAgencyStatisticsList";
+    }
+
+    @ResponseBody
+    @RequestMapping(value = "/club/export")
+    public void easyExcel(ClubStatistics statistics, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+        String name = "club_Data";
+        try {
+
+            List<easyExcel> statisticsList = newCmClubService.exportExcel(statistics);
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
+            String fileName = URLEncoder.encode(name, "UTF-8").replaceAll("\\+", "%20");
+            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+            // 这里需要设置不关闭流
+//            EasyExcel.write(response.getOutputStream(),ClubStatistics.class).sheet().doWrite(statisticsList);
+            EasyExcel.write(response.getOutputStream(), easyExcel.class).autoCloseStream(Boolean.FALSE).sheet("模板")
+                    .doWrite(statisticsList);
+        } catch (Exception e) {
+            addMessage(redirectAttributes,"机构分析统计导出失败",e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
     @RequestMapping("/clubPortrait")
     public String clubPortrait(CmPortrait cmPortrait, Model model) {
         CmPortrait portrait = portraitService.dataTotal(cmPortrait);
+        ClubStatistics statistics = portraitService.clubData(cmPortrait.getClubID());
         model.addAttribute("cmPortrait",cmPortrait);
         model.addAttribute("portrait",portrait);
+        model.addAttribute("statistics",statistics);
         return "modules/userNew/cmClubPortrait";
     }
 
@@ -1516,12 +1558,18 @@ public class AgencyController extends BaseController {
         cmClubinfo.setMedicalPracticeLicenseImg(newCmClub.getMedicalPracticeLicenseImg());
         cmClubinfo.setContractEmail(newCmClub.getContractEmail());
         cmClubinfo.setLinkManIdentity(newCmClub.getLinkManIdentity());
+        cmClubinfo.setUserIdentity(newCmClub.getUserIdentity());
+        cmClubinfo.setSvipUserFlag(newCmClub.getSvipUserFlag());
 
         String wwwServer = Global.getConfig("wwwServer");
         //营业执照
-        newCmClub.setBusinessLicenseImage(AppUtils.getImageURL("clubBusinessLicenseImage", newCmClub.getBusinessLicenseImage(), 0, wwwServer));
+        if (StringUtils.isNotBlank(newCmClub.getBusinessLicenseImage())) {
+            newCmClub.setBusinessLicenseImage(AppUtils.getImageURL("clubBusinessLicenseImage", newCmClub.getBusinessLicenseImage(), 0, wwwServer));
+        }
         //门头照
-        newCmClub.setHeadpic(AppUtils.getImageURL("club", newCmClub.getHeadpic(), AppKeys.CLUB_LOGO_SIZE, wwwServer));
+        if (StringUtils.isNotBlank(newCmClub.getHeadpic())) {
+            newCmClub.setHeadpic(AppUtils.getImageURL("club", newCmClub.getHeadpic(), AppKeys.CLUB_LOGO_SIZE, wwwServer));
+        }
 
         model.addAttribute("cmClubinfo", cmClubinfo);
         model.addAttribute("newCmClub", newCmClub);

binární
src/main/resources/export/club_analyse_tabulation.xlsx


+ 37 - 3
src/main/resources/mappings/modules/user/CmPortraitMapper.xml

@@ -8,6 +8,40 @@
                 (SELECT COUNT(cbr.recordID) FROM cm_behavior_record cbr LEFT JOIN club c ON cbr.userID = c.userID WHERE cbr.pageType IN (8, 9) AND c.clubID = #{clubID} AND cbr.accessDate <![CDATA[ < ]]> now()) AS totalkeywords ,
                 (SELECT COUNT(remarks) FROM cm_club_remarks WHERE clubID = #{clubID} AND addTime <![CDATA[ < ]]> now()) AS remarksTotal
     </select>
+    <select id="selClubData" resultType="com.caimei.modules.user.entity.ClubStatistics">
+        select
+        c.name,
+        c.linkMan,
+        c.contractMobile,
+        (CASE WHEN c.linkManIdentity=1 THEN '老板'
+              WHEN c.linkManIdentity=2 THEN '采购'
+              WHEN c.linkManIdentity=3 THEN '运营'
+              WHEN c.linkManIdentity=4 THEN '其他'
+            END) AS linkManStatus,
+        c.provinceID,
+        c.cityID,
+        d.name AS province,
+        ct.name AS city,
+        b.name AS  town,
+        (CASE WHEN c.firstClubType=1 THEN '医美'
+              WHEN c.firstClubType=2 THEN '生美'
+              WHEN c.firstClubType=3 THEN '项目公司'
+              WHEN c.firstClubType=4 THEN '个人'
+              ELSE '其他' END) AS firstClubType,
+        (CASE WHEN c.secondClubType=1 THEN '诊所'
+              WHEN c.secondClubType=2 THEN '门诊'
+              WHEN c.secondClubType=3 THEN '医院'
+              WHEN c.secondClubType=5 THEN '美容院'
+              WHEN c.secondClubType=6 THEN '养生馆'
+              WHEN c.secondClubType=7 THEN '其他'
+            END) AS classify,
+        c.addTime AS addTime
+        FROM club c
+                 LEFT JOIN town b ON b.townID=c.townID
+                 LEFT JOIN city ct ON ct.cityID=c.cityID
+                 LEFT JOIN province d ON d.provinceID=c.provinceID
+        where clubID = #{clubID}
+    </select>
     <select id="selOrderList" resultType="com.caimei.modules.order.entity.NewOrder">
         SELECT
                (SELECT COUNT(orderID) FROM cm_order WHERE clubID = #{clubID}) as numbers,
@@ -44,7 +78,7 @@
                 AND cbr.accessDate = #{accessDate}
             </if>
             <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
-                AND cbr.accessDate between #{startTime} and #{endTime}
+                AND cbr.accessDate <![CDATA[ >= ]]> #{startTime} AND cbr.accessDate <![CDATA[ <= ]]> #{endTime}
             </if>
         </where>
         GROUP BY cbr.pageLabel
@@ -65,7 +99,7 @@
                 AND addTime like concat('%', #{accessDate},'%')
             </if>
             <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
-                AND addTime between #{startTime} and #{endTime}
+                AND addTime <![CDATA[ >= ]]> #{startTime} AND addTime <![CDATA[ <= ]]> #{endTime}
             </if>
         </where>
         GROUP BY remarks ORDER BY COUNT(remarks) LIMIT 10
@@ -85,7 +119,7 @@
                 AND cbr.accessDate like concat('%', #{accessDate},'%')
             </if>
             <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
-                AND cbr.accessDate between #{startTime} and #{endTime}
+                AND cbr.accessDate <![CDATA[ >= ]]> #{startTime} AND cbr.accessDate <![CDATA[ <= ]]> #{endTime}
             </if>
         </where>
         GROUP BY cbr.pageType  ORDER BY COUNT(cbr.pageType) LIMIT 10

+ 401 - 0
src/main/resources/mappings/modules/user/NewCmClubMapper.xml

@@ -718,4 +718,405 @@
     <select id="selRegisterIP" resultType="com.caimei.modules.user.entity.CmBehaviorRecord">
         SELECT u.registerIP,u.ipAddress AS region, u.registerTime FROM USER u LEFT JOIN club c ON u.userID = c.userID WHERE c.clubID = #{clubId}
     </select>
+
+    <select id="selStatisticsList" resultType="com.caimei.modules.user.entity.ClubStatistics">
+        SELECT
+        u.userId,
+        c.clubID,
+        c.name,
+        c.linkMan,
+        c.contractMobile,
+        c.linkManIdentity,
+        c.address,
+        c.businessLicenseImage,
+        u.userIdentity,
+        c.sname,
+        c.contractEmail,
+        c.contractPhone,
+        c.fax,
+        c.headpic,
+        c.socialCreditCode,
+        c.info,
+        (CASE WHEN c.linkManIdentity=1 THEN '老板'
+        WHEN c.linkManIdentity=2 THEN '采购'
+        WHEN c.linkManIdentity=3 THEN '运营'
+        WHEN c.linkManIdentity=4 THEN '其他'
+        END) AS linkManStatus,
+        (CASE WHEN c.status = 1 THEN '待审核'
+        WHEN c.status=91 THEN '已下线'
+        WHEN c.status=90 THEN '已上线'
+        WHEN c.status=92 THEN '审核未通过'
+        WHEN c.status=93 THEN '已确认'
+        ELSE '已冻结' END) AS clubStatus,
+        (CASE WHEN u.userIdentity=2 THEN '资质机构'
+        ELSE '个人机构' END) AS clubRank,
+        (CASE WHEN c.firstClubType=1 THEN '医美'
+        WHEN c.firstClubType=2 THEN '生美'
+        WHEN c.firstClubType=3 THEN '项目公司'
+        WHEN c.firstClubType=4 THEN '个人'
+        ELSE '其他' END) AS firstClubType,
+        (CASE WHEN c.secondClubType=1 THEN '诊所'
+        WHEN c.secondClubType=2 THEN '门诊'
+        WHEN c.secondClubType=3 THEN '医院'
+        WHEN c.secondClubType=5 THEN '美容院'
+        WHEN c.secondClubType=6 THEN '养生馆'
+        WHEN c.secondClubType=7 THEN '其他'
+        END) AS classify,
+        c.addTime AS addTime,
+        IF(csu.delFlag = '0' AND NOW() <![CDATA[ < ]]> csu.endTime,1,0) AS svipUserFlag,
+        case sp.status when 91 then '采美默认协销经理(官方账号)' else sp.linkMan end AS spName,
+        IFNULL(orderMonth.payTotalMonth,0) AS payTotalMonth,
+        IFNULL(orderMonth.orderCountMonth,0) AS orderCountMonth,
+        IFNULL(orderYesr.payTotalYesr,0) AS payTotalYear,
+        IFNULL(orderYesr.orderCountYesr,0) AS orderCountYear,
+        IFNULL(orderTotal.payTotal,0) AS payTotal,
+        MAX(cor.orderTime) AS lastOrderTime
+        FROM club c
+        LEFT JOIN cm_order cor ON c.userID = cor.userID
+        LEFT JOIN USER u ON u.userId=c.userId
+        LEFT JOIN cm_svip_user csu ON csu.userId = u.userID
+        LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+        LEFT JOIN
+        (SELECT userId,SUM(co.payTotalFee) AS payTotalMonth,
+        COUNT(co.orderid) AS orderCountMonth
+        FROM cm_order co
+        <where>
+            co.status NOT IN (0,6,7)
+            <if test="monthStartTime != null and monthStartTime != '' and monthEndTime != null and monthEndTime != ''">
+                AND co.orderTime BETWEEN #{monthStartTime} AND #{monthEndTime}
+            </if>
+        </where>
+        GROUP BY co.userid) AS orderMonth ON c.userId=orderMonth.userId
+
+        LEFT JOIN
+        (SELECT userId,SUM(co.payTotalFee) AS payTotalYesr,
+        COUNT(co.orderid) AS orderCountYesr
+        FROM cm_order co
+        <where>
+             co.status NOT IN (0,6,7)
+            <if test="yearStartTime != null and yearStartTime != '' and yearEndTime != null and yearEndTime != ''">
+                AND co.orderTime BETWEEN #{yearStartTime} AND #{yearEndTime}
+            </if>
+        </where>
+        GROUP BY co.userid) AS orderYesr ON c.userId=orderYesr.userId
+
+        LEFT JOIN
+        (SELECT userId,SUM(co.payTotalFee) AS payTotal,
+        COUNT(co.orderid) AS 21OrderCount
+        FROM cm_order co
+        <where>
+            co.status NOT IN (0,6,7)
+            <if test="customStartTime != null and customStartTime != ''">
+                AND (co.orderTime > #{customStartTime} or co.orderTime = #{customStartTime})
+            </if>
+            <if test="customEndTime != null and customEndTime != ''">
+                AND co.orderTime <![CDATA[ <= ]]> #{customEndTime}
+            </if>
+        </where>
+        GROUP BY co.userid) AS orderTotal ON c.userId=orderTotal.userId
+
+        <where>
+            <if test="registerStartTime != null and registerStartTime != ''">
+                AND (c.addTime > #{registerStartTime} or c.addTime = #{registerStartTime} )
+            </if>
+           <if test="registerEndTime != null and registerEndTime != ''">
+               AND c.addTime <![CDATA[ <= ]]> #{registerEndTime}
+           </if>
+            <if test="searchStartTime != null and searchStartTime != ''">
+                AND (cor.orderTime > #{searchStartTime} or cor.orderTime = #{searchStartTime} )
+            </if>
+               <if test=" searchEndTime != null and searchEndTime != ''">
+                   AND cor.orderTime <![CDATA[ <= ]]> #{searchEndTime}
+               </if>
+            <if test="customerValue != null and customerValue != ''">
+                AND c.firstClubType = #{customerValue}
+            </if>
+            <if test="searchUserIdentity != null and searchUserIdentity != '' and searchUserIdentity != '8'.toString()">
+                AND u.userIdentity = #{searchUserIdentity}
+            </if>
+            <if test="searchUserIdentity != null and searchUserIdentity != '' and searchUserIdentity == '8'.toString()">
+                AND csu.delFlag = '0' and now() <![CDATA[ < ]]> csu.endTime
+            </if>
+            <if test="searchStatus != null and searchStatus != ''">
+                AND c.status = #{searchStatus}
+            </if>
+            <if test="linkManIdentity != null and linkManIdentity != ''">
+                AND c.linkManIdentity = #{linkManIdentity}
+            </if>
+            <if test="payTotalMonth != null and payTotalMonth != ''">
+                <if test="payTotalMonth==1">
+                    AND orderMonth.payTotalMonth <![CDATA[ < ]]> 10000
+                </if>
+                <if test="payTotalMonth==2">
+                    AND orderMonth.payTotalMonth BETWEEN 10000 AND 100000
+                </if>
+                <if test="payTotalMonth==3">
+                    AND orderMonth.payTotalMonth BETWEEN 100000 AND 1000000
+                </if>
+                <if test="payTotalMonth==4">
+                    AND orderMonth.payTotalMonth <![CDATA[ > ]]> 1000000
+                </if>
+            </if>
+            <if test="payTotalYear != null and payTotalYear != ''">
+                <if test="payTotalYear==1">
+                    AND orderYesr.payTotalYesr <![CDATA[ < ]]> 10000
+                </if>
+                <if test="payTotalYear==2">
+                    AND orderYesr.payTotalYesr BETWEEN 10000 AND 100000
+                </if>
+                <if test="payTotalYear==3">
+                    AND orderYesr.payTotalYesr BETWEEN 100000 AND 1000000
+                </if>
+                <if test="payTotalYear==4">
+                    AND orderYesr.payTotalYesr <![CDATA[ > ]]> 1000000
+                </if>
+            </if>
+            <if test="payTotal != null and payTotal != ''">
+                <if test="payTotal==1">
+                    AND orderTotal.payTotal <![CDATA[ < ]]> 10000
+                </if>
+                <if test="payTotal==2">
+                    AND orderTotal.payTotal BETWEEN 10000 AND 100000
+                </if>
+                <if test="payTotal==3">
+                    AND orderTotal.payTotal BETWEEN 100000 AND 1000000
+                </if>
+                <if test="payTotal==4">
+                    AND orderTotal.payTotal <![CDATA[ > ]]> 1000000
+                </if>
+            </if>
+        </where>
+        GROUP BY c.userID ORDER BY
+        <if test="payTotalMonthType == null and orderCountMonthType == null and payTotalYearType == null and orderCountYearType == null and payTotalType == null">
+            MAX(cor.orderTime) DESC
+        </if>
+        <if test="orderCountMonthType != null">
+            <if test="orderCountMonthType == 0">
+                orderMonth.orderCountMonth
+            </if>
+            <if test="orderCountMonthType == 1">
+                orderMonth.orderCountMonth DESC
+            </if>
+        </if>
+        <if test="orderCountYearType != null">
+            <if test="orderCountYearType == 0">
+                orderYesr.orderCountYesr
+            </if>
+            <if test="orderCountYearType == 1">
+                orderYesr.orderCountYesr DESC
+            </if>
+        </if>
+        <if test="payTotalMonthType != null">
+            <if test="payTotalMonthType == 0">
+                orderMonth.payTotalMonth
+            </if>
+            <if test="payTotalMonthType == 1">
+                orderMonth.payTotalMonth DESC
+            </if>
+        </if>
+
+        <if test="payTotalYearType != null">
+            <if test="payTotalYearType == 0">
+                orderYesr.payTotalYesr
+            </if>
+            <if test="payTotalYearType == 1">
+                orderYesr.payTotalYesr DESC
+            </if>
+        </if>
+        <if test="payTotalType != null">
+            <if test="payTotalType == 0">
+                orderTotal.payTotal
+            </if>
+            <if test="payTotalType == 1">
+                orderTotal.payTotal DESC
+            </if>
+        </if>
+    </select>
+    <select id="selPageLable" resultType="com.caimei.modules.user.entity.CmBehaviorRecord">
+        SELECT  c.userID, COUNT(pageType) AS number, cbr.pageLabel
+        FROM club c
+        LEFT JOIN cm_behavior_record cbr ON cbr.userID = c.userID
+        WHERE cbr.userID = c.userID AND cbr.pageType in (8,9)
+        GROUP BY  c.userID, cbr.pageLabel
+    </select>
+    <select id="findExcelList" resultType="com.caimei.modules.user.entity.easyExcel">
+        SELECT
+        u.userId,
+        c.clubID,
+        c.name,
+        c.linkMan,
+        c.contractMobile,
+        c.linkManIdentity,
+        c.address,
+        c.businessLicenseImage,
+        u.userIdentity,
+        c.sname,
+        c.contractEmail,
+        c.contractPhone,
+        c.fax,
+        c.headpic,
+        c.socialCreditCode,
+        c.info,
+        (CASE WHEN c.linkManIdentity=1 THEN '老板'
+        WHEN c.linkManIdentity=2 THEN '采购'
+        WHEN c.linkManIdentity=3 THEN '运营'
+        WHEN c.linkManIdentity=4 THEN '其他'
+        END) AS linkManStatus,
+        (CASE WHEN c.status = 1 THEN '待审核'
+        WHEN c.status=91 THEN '已下线'
+        WHEN c.status=90 THEN '已上线'
+        WHEN c.status=92 THEN '审核未通过'
+        WHEN c.status=93 THEN '已确认'
+        ELSE '已冻结' END) AS clubStatus,
+        (CASE WHEN u.userIdentity=2 THEN '资质机构'
+        ELSE '个人机构' END) AS clubRank,
+        (CASE WHEN c.firstClubType=1 THEN '医美'
+        WHEN c.firstClubType=2 THEN '生美'
+        WHEN c.firstClubType=3 THEN '项目公司'
+        WHEN c.firstClubType=4 THEN '个人'
+        ELSE '其他' END) AS firstClubType,
+        (CASE WHEN c.secondClubType=1 THEN '诊所'
+        WHEN c.secondClubType=2 THEN '门诊'
+        WHEN c.secondClubType=3 THEN '医院'
+        WHEN c.secondClubType=5 THEN '美容院'
+        WHEN c.secondClubType=6 THEN '养生馆'
+        WHEN c.secondClubType=7 THEN '其他'
+        END) AS classify,
+        c.addTime AS addTime,
+        IF(csu.delFlag = '0' AND NOW() <![CDATA[ < ]]> csu.endTime,1,0) AS svipUserFlag,
+        case sp.status when 91 then '采美默认协销经理(官方账号)' else sp.linkMan end AS spName,
+        IFNULL(orderMonth.payTotalMonth,0) AS payTotalMonth,
+        IFNULL(orderMonth.orderCountMonth,0) AS orderCountMonth,
+        IFNULL(orderYesr.payTotalYesr,0) AS payTotalYear,
+        IFNULL(orderYesr.orderCountYesr,0) AS orderCountYear,
+        IFNULL(orderTotal.payTotal,0) AS payTotal,
+        pb.pageLabel,
+        MAX(cor.orderTime) AS lastOrderTime
+        FROM club c
+        LEFT JOIN cm_order cor ON c.userID = cor.userID
+        LEFT JOIN USER u ON u.userId=c.userId
+        LEFT JOIN cm_svip_user csu ON csu.userId = u.userID
+        LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
+        LEFT JOIN
+        (SELECT userId,SUM(co.payTotalFee) AS payTotalMonth,
+        COUNT(co.orderid) AS orderCountMonth
+        FROM cm_order co
+        <where>
+            co.status NOT IN (0,6,7)
+            <if test="monthStartTime != null and monthStartTime != '' and monthEndTime != null and monthEndTime != ''">
+                AND co.orderTime BETWEEN #{monthStartTime} AND #{monthEndTime}
+            </if>
+        </where>
+        GROUP BY co.userid) AS orderMonth ON c.userId=orderMonth.userId
+
+        LEFT JOIN
+        (SELECT userId,SUM(co.payTotalFee) AS payTotalYesr,
+        COUNT(co.orderid) AS orderCountYesr
+        FROM cm_order co
+        <where>
+            co.status NOT IN (0,6,7)
+            <if test="yearStartTime != null and yearStartTime != '' and yearEndTime != null and yearEndTime != ''">
+                AND co.orderTime BETWEEN #{yearStartTime} AND #{yearEndTime}
+            </if>
+        </where>
+        GROUP BY co.userid) AS orderYesr ON c.userId=orderYesr.userId
+
+        LEFT JOIN
+        (SELECT userId,SUM(co.payTotalFee) AS payTotal,
+        COUNT(co.orderid) AS 21OrderCount
+        FROM cm_order co
+        <where>
+            co.status NOT IN (0,6,7)
+            <if test="customStartTime != null and customStartTime != ''">
+                AND (co.orderTime > #{customStartTime} or co.orderTime = #{customStartTime})
+            </if>
+            <if test="customEndTime != null and customEndTime != ''">
+                AND co.orderTime <![CDATA[ <= ]]> #{customEndTime}
+            </if>
+        </where>
+        GROUP BY co.userid) AS orderTotal ON c.userId=orderTotal.userId
+
+        LEFT JOIN
+        (
+        SELECT c.userID, COUNT(cbr.pageLabel), cbr.pageLabel
+        FROM cm_behavior_record cbr
+        LEFT JOIN club c ON cbr.userID = c.userID
+        <where> cbr.userID = c.userID</where>
+        GROUP BY cbr.pageLabel) AS pb ON c.userID = pb.userID
+        <where>
+            <if test="registerStartTime != null and registerStartTime != ''">
+                AND (c.addTime > #{registerStartTime} or c.addTime = #{registerStartTime} )
+            </if>
+            <if test="registerEndTime != null and registerEndTime != ''">
+                AND c.addTime <![CDATA[ <= ]]> #{registerEndTime}
+            </if>
+            <if test="searchStartTime != null and searchStartTime != ''">
+                AND (cor.orderTime > #{searchStartTime} or cor.orderTime = #{searchStartTime} )
+            </if>
+            <if test=" searchEndTime != null and searchEndTime != ''">
+                AND cor.orderTime <![CDATA[ <= ]]> #{searchEndTime}
+            </if>
+            <if test="customerValue != null and customerValue != ''">
+                AND c.firstClubType = #{customerValue}
+            </if>
+            <if test="searchUserIdentity != null and searchUserIdentity != '' and searchUserIdentity != '8'.toString()">
+                AND u.userIdentity = #{searchUserIdentity}
+            </if>
+            <if test="searchUserIdentity != null and searchUserIdentity != '' and searchUserIdentity == '8'.toString()">
+                AND csu.delFlag = '0' and now() <![CDATA[ < ]]> csu.endTime
+            </if>
+            <if test="searchStatus != null and searchStatus != ''">
+                AND c.status = #{searchStatus}
+            </if>
+            <if test="linkManIdentity != null and linkManIdentity != ''">
+                AND c.linkManIdentity = #{linkManIdentity}
+            </if>
+            <if test="searchStatus != null and searchStatus != ''">
+                AND c.status = #{searchStatus}
+            </if>
+            <if test="payTotalMonth != null and payTotalMonth != ''">
+                <if test="payTotalMonth==1">
+                    AND orderMonth.payTotalMonth <![CDATA[ < ]]> 10000
+                </if>
+                <if test="payTotalMonth==2">
+                    AND orderMonth.payTotalMonth BETWEEN 10000 AND 100000
+                </if>
+                <if test="payTotalMonth==3">
+                    AND orderMonth.payTotalMonth BETWEEN 100000 AND 1000000
+                </if>
+                <if test="payTotalMonth==4">
+                    AND orderMonth.payTotalMonth <![CDATA[ > ]]> 1000000
+                </if>
+            </if>
+            <if test="payTotalYear != null and payTotalYear != ''">
+                <if test="payTotalYear==1">
+                    AND orderYesr.payTotalYesr <![CDATA[ < ]]> 10000
+                </if>
+                <if test="payTotalYear==2">
+                    AND orderYesr.payTotalYesr BETWEEN 10000 AND 100000
+                </if>
+                <if test="payTotalYear==3">
+                    AND orderYesr.payTotalYesr BETWEEN 100000 AND 1000000
+                </if>
+                <if test="payTotalYear==4">
+                    AND orderYesr.payTotalYesr <![CDATA[ > ]]> 1000000
+                </if>
+            </if>
+            <if test="payTotal != null and payTotal != ''">
+                <if test="payTotal==1">
+                    AND orderTotal.payTotal <![CDATA[ < ]]> 10000
+                </if>
+                <if test="payTotal==2">
+                    AND orderTotal.payTotal BETWEEN 10000 AND 100000
+                </if>
+                <if test="payTotal==3">
+                    AND orderTotal.payTotal BETWEEN 100000 AND 1000000
+                </if>
+                <if test="payTotal==4">
+                    AND orderTotal.payTotal <![CDATA[ > ]]> 1000000
+                </if>
+            </if>
+        </where>
+        GROUP BY c.userID ORDER BY MAX(cor.orderTime) DESC
+    </select>
 </mapper>

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

@@ -425,7 +425,7 @@
                 </form:select>
             </div>
             <div class="item">
-                <input id="searchValidFlag" value="${searchValidFlag}" style="display: none"/>
+                <input id="searchValidFlag" value="${product.searchValidFlag}" style="display: none"/>
                 <label>商品状态:</label>
                 <label><input type="checkbox" name="searchValidFlag" onchange="checkNot()" id="validCheck2" class="validCheck"
                               value="2">已上架</label>

+ 2 - 2
src/main/webapp/WEB-INF/views/modules/sys/officeForm.jsp

@@ -27,7 +27,7 @@
 </head>
 <body>
 	<ul class="nav nav-tabs">
-		<li><a href="${ctx}/sys/office/list?id=${office.parent.id}&parentIds=${office.parentIds}">机构列表</a></li>
+		<li><a href="${ctx}/sys/office/list?id=${office.parent.id}&parentIds=${office.parentIds}">机构基本资料列表</a></li>
 		<li class="active"><a href="${ctx}/sys/office/form?id=${office.id}&parent.id=${office.parent.id}">机构<shiro:hasPermission name="sys:office:edit">${not empty office.id?'修改':'添加'}</shiro:hasPermission><shiro:lacksPermission name="sys:office:edit">查看</shiro:lacksPermission></a></li>
 	</ul><br/>
 	<form:form id="inputForm" modelAttribute="office" action="${ctx}/sys/office/save" method="post" class="form-horizontal">
@@ -155,4 +155,4 @@
 		</div>
 	</form:form>
 </body>
-</html>
+</html>

+ 3 - 3
src/main/webapp/WEB-INF/views/modules/sys/officeList.jsp

@@ -29,7 +29,7 @@
 </head>
 <body>
 	<ul class="nav nav-tabs">
-		<li class="active"><a href="${ctx}/sys/office/list?id=${office.id}&parentIds=${office.parentIds}">机构列表</a></li>
+		<li class="active"><a href="${ctx}/sys/office/list?id=${office.id}&parentIds=${office.parentIds}">机构基本资料列表</a></li>
 		<shiro:hasPermission name="sys:office:edit"><li><a href="${ctx}/sys/office/form?parent.id=${office.id}">机构添加</a></li></shiro:hasPermission>
 	</ul>
 	<sys:message content="${message}"/>
@@ -47,9 +47,9 @@
 			<shiro:hasPermission name="sys:office:edit"><td>
 				<a href="${ctx}/sys/office/form?id={{row.id}}">修改</a>
 				<a href="${ctx}/sys/office/delete?id={{row.id}}" onclick="return confirmx('要删除该机构及所有子机构项吗?', this.href)">删除</a>
-				<a href="${ctx}/sys/office/form?parent.id={{row.id}}">添加下级机构</a> 
+				<a href="${ctx}/sys/office/form?parent.id={{row.id}}">添加下级机构</a>
 			</td></shiro:hasPermission>
 		</tr>
 	</script>
 </body>
-</html>
+</html>

+ 139 - 233
src/main/webapp/WEB-INF/views/modules/user/behaviorRecordAgency.jsp

@@ -4,12 +4,13 @@
 <head>
     <title>机构信息</title>
     <meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/modules/cmClubData/cmClubData.css" rel="stylesheet">
     <script src="/static/modules/bulkpurchase/loadAddressById.js"></script>
     <script type="text/javascript">
 
     </script>
     <style>
-        #auditBox {
+        <%--#auditBox {
             padding: 20px;
             line-height: 30px;
         }
@@ -161,7 +162,7 @@
             text-align: right;
             vertical-align: top;
             margin-top: 10px;
-        }
+        }--%>
     </style>
 </head>
 <body>
@@ -190,250 +191,155 @@
 <form:hidden path="clubInfoID"/>
 <form:hidden path="userID"/>
 <form:hidden path="clubID"/>
-<div style="max-width:1200px;padding:15px;">
-    <table border="0" cellspacing="0" cellpadding="0" width="100%">
-        <tr height="28">
-            <th width="12%">状态:</th>
-            <td width="13%">${fns:getDictLabel(newCmClub.status, 'club_status', newCmClub.status)}</td>
-            <th width="12%">注册时间:</th>
-            <td width="13%"><fmt:formatDate value="${newCmClub.registerTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
-        </tr>
-        <tr height="28">
-            <th width="12%">机构名称:</th>
-            <td width="13%">${newCmClub.name}
-            <th width="12%">机构简称:</th>
-            <td width="13%">${newCmClub.sname}
-            <th width="12%">注册邮箱:</th>
-            <td width="13%">${newCmClub.contractEmail}
-        </tr>
-        <tr height="28">
-            <th width="12%">联系人:</th>
-            <td width="13%">${newCmClub.userName}
-            </td>
-            <th width="12%">手机号:</th>
-            <td width="13%">${newCmClub.bindMobile}
-            <th width="12%">联系人身份:</th>
-            <td width="13%">
-                <c:if test="${newCmClub.linkManIdentity eq '1'}">老板</c:if>
-                <c:if test="${newCmClub.linkManIdentity eq '2'}">采购</c:if>
-                <c:if test="${newCmClub.linkManIdentity eq '3'}">运营</c:if>
-            </td>
-        </tr>
-    </table>
-</div>
+    <div class="main-content">
+        <div class="flex-header">
+            <div class="flex-header-main">
+                <div class="header-main-box">
+                    <c:if test="${newCmClub.name ne null}"><p>机构名称:<span>${newCmClub.name}</span></p></c:if>
+                    <c:if test="${newCmClub.userName ne null}"> <p>联系人:<span>${newCmClub.userName}</span></p></c:if>
+                    <c:if test="${newCmClub.linkManIdentity ne null}">
+                        <p>联系人身份:
+                            <span>
+                                <c:if test="${newCmClub.linkManIdentity eq '1'}">老板</c:if>
+                                <c:if test="${newCmClub.linkManIdentity eq '2'}">采购</c:if>
+                                <c:if test="${newCmClub.linkManIdentity eq '3'}">运营</c:if>
+                                <c:if test="${newCmClub.linkManIdentity ne '1' || newCmClub.linkManIdentity ne '2' || newCmClub.linkManIdentity ne '3'}">其他</c:if>
+                            </span>
+                        </p>
+                    </c:if>
+                    <c:if test="${newCmClub.bindMobile ne null}"><p>手机号:<span>${newCmClub.bindMobile}</span></p></c:if>
+                    <c:if test="${cmClubinfo.firstClubType ne null and cmClubinfo.secondClubType ne null}">
+                        <p>机构类型:
+                            <span>
+                                <c:if test="${cmClubinfo.firstClubType == '1'}">医美</c:if>
+                                <c:if test="${cmClubinfo.firstClubType == '2'}">生美</c:if>
+                                <c:if test="${cmClubinfo.firstClubType == '3'}">项目公司</c:if>
+                                <c:if test="${cmClubinfo.firstClubType == '4'}">个人</c:if>
+                                <c:if test="${cmClubinfo.firstClubType == '5'}">其他</c:if>
 
-<input type="hidden" id="curProvince" name="curProvince" value="${newCmClub.province }" disabled="disabled">
-<input type="hidden" id="curCity" name="curCity" value="${newCmClub.city }" disabled="disabled">
-<input type="hidden" id="curTown" name="curTown" value="${newCmClub.town }" disabled="disabled">
-<sys:message content="${message}"/>
-<hr class="detailLine">
-<div>
-    <table border="0" cellspacing="0" cellpadding="0" width="100%">
-        <tr>
-            <td colspan="2">
-                <div class="control-group">
-                    <label class="control-label"><b>地址:</b></label>
-                    <div class="controls">
-                        <form:select path="provinceID" class="input-xlarge" id="province"
-                                     onchange="loadCity()" disabled="true" style="width:100px;">
-                            <form:option value="" label="省" provinceId=""/>
-                        </form:select>
-                        <form:select path="cityID" class="input-xlarge" id="city" onchange="loadTown()" disabled="true"
-                                     style="width:100px;">
-                            <form:option value="" label="市" cityId=""/>
-                        </form:select>
-                        <form:select path="townID" class="input-xlarge" id="town" disabled="true" style="width:100px;">
-                            <form:option value="" label="区"/>
-                        </form:select>
-                        ${newCmClub.address}
+                                <c:if test="${cmClubinfo.secondClubType eq '1'}"> - 诊所</c:if>
+                                <c:if test="${cmClubinfo.secondClubType eq '2'}"> - 门诊</c:if>
+                                <c:if test="${cmClubinfo.secondClubType eq '3'}"> - 医院</c:if>
+                                <c:if test="${cmClubinfo.secondClubType eq '4'}"> - 其他</c:if>
+                                <c:if test="${cmClubinfo.secondClubType eq '5'}"> - 美容院</c:if>
+                                <c:if test="${cmClubinfo.secondClubType eq '6'}"> - 养生馆</c:if>
+                                <c:if test="${cmClubinfo.secondClubType eq '7'}"> - 其他</c:if>
+                            </span>
+                        </p>
+                    </c:if>
+                    <c:if test="${newCmClub.province ne null and newCmClub.city ne null and newCmClub.town ne null and newCmClub.address ne null}"><p>地址:<span>${newCmClub.province } ${newCmClub.city } ${newCmClub.town } ${newCmClub.address}</span></p></c:if>
+                    <c:if test="${newCmClub.status ne null}"><p>状态:<span>${fns:getDictLabel(newCmClub.status, 'club_status', newCmClub.status)}</span></p></c:if>
+                    <c:if test="${newCmClub.registerTime ne null}"><p>注册时间:<span><fmt:formatDate value="${newCmClub.registerTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></span></p></c:if>
+                </div>
+                <div class="header-main-box">
+                    <div class="main-box">
+                        <c:if test="${cmClubinfo.userIdentity ne null and cmClubinfo.svipUserFlag ne null}">
+                            <div class="main-box-tp">
+                                <p>机构类别:
+                                    <span>
+                                        <c:if test="${cmClubinfo.userIdentity eq 4}">个人机构</c:if>
+                                        <c:if test="${cmClubinfo.userIdentity eq 2}">资质机构</c:if>
+                                        <c:if test="${cmClubinfo.svipUserFlag eq 1}"><font color="red">(超级会员)</font></c:if>
+                                        <c:if test="${cmClubinfo.userIdentity eq 2 and cmClubinfo.svipUserFlag eq 0}"><font color="red">(普通会员)</font></c:if>
+                                    </span>
+                                </p>
+                            </div>
+                        </c:if>
+                        <c:if test="${cmClubinfo.medicalPracticeLicenseImg ne null}">
+                            <div class="main-box-bt">
+                                <p>医疗许可证:</p>
+                                <a class="main-box-img" target="_blank" href="${cmClubinfo.medicalPracticeLicenseImg}"><img src="${cmClubinfo.medicalPracticeLicenseImg}"/></a>
+                            </div>
+                        </c:if>
+                    </div>
+                    <div class="main-box">
+                        <c:if test="${newCmClub.socialCreditCode ne null}">
+                            <div class="main-box-tp">
+                                <p>营业执照编号:<span>${newCmClub.socialCreditCode}</span></p>
+                            </div>
+                        </c:if>
+                        <c:if test="${newCmClub.businessLicenseImage ne null}">
+                            <div class="main-box-bt">
+                                <p>营业执照:</p>
+                                <a class="main-box-img" target="_blank" href="${newCmClub.businessLicenseImage}"><img src="${newCmClub.businessLicenseImage}"/></a>
+                            </div>
+                        </c:if>
                     </div>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td colspan="2">
-                <div class="control-group">
-                    <label class="control-label"><b>营业执照编号:</b></label>
-                    <div class="controls">${newCmClub.socialCreditCode}</div>
+            </div>
+        </div>
+        <div class="flex-content">
+            <c:if test="${newCmClub.sname ne null}">
+                <div class="flex-p">
+                    <p>机构简称:<span>${newCmClub.sname}</span></p>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td>
-                <div class="control-group">
-                    <label class="control-label"><b>营业执照:</b></label>
-                    <img width="100" height="100" src="${newCmClub.businessLicenseImage}">
+            </c:if>
+            <c:if test="${newCmClub.contractEmail ne null}">
+                <div class="flex-p">
+                    <p>注册邮箱:<span>${newCmClub.contractEmail}</span></p>
                 </div>
-            </td>
-            <td>
-                <div class="control-group">
-                    <label class="control-label"><b>门头照:</b></label>
-                    <img width="100" height="100" src="${newCmClub.headpic}">
+            </c:if>
+            <c:if test="${newCmClub.headpic ne null}">
+                <div class="flex-p">
+                    <p>门头照:<span></span></p>
+                    <a class="flex-p-img" target="_blank" href="${newCmClub.headpic}"><img src="${newCmClub.headpic}" alt=""></a>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td>
-                <div class="control-group">
-                    <label class="control-label" for=""><b>机构类型:</b></label>
-                    <div class="medical-radio the-oradio">
-                        <input value="${cmClubinfo.firstClubType}" class="hide" type="text" id="firstClubType"/>
-                        <div class="med-beauty">
-                            <c:if test="${cmClubinfo.firstClubType == '1'}">医美</c:if>
-                            <c:if test="${cmClubinfo.firstClubType == '2'}">生美</c:if>
-                            <c:if test="${cmClubinfo.firstClubType == '3'}">项目公司</c:if>
-                            <c:if test="${cmClubinfo.firstClubType == '4'}">个人</c:if>
-                            <c:if test="${cmClubinfo.firstClubType == '5'}">其他</c:if>
-
-                            <c:if test="${cmClubinfo.secondClubType eq '1'}"> - 诊所</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '2'}"> - 门诊</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '3'}"> - 医院</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '4'}"> - 其他</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '5'}"> - 美容院</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '6'}"> - 养生馆</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '7'}"> - 其他</c:if>
-                        </div>
-                    </div>
-                    <div class="qualification control-group" style="display: none">
-                        <label class="control-label"><b>医疗许可证:</b></label>
-                        <img width="100" height="100" src="${cmClubinfo.medicalPracticeLicenseImg}">
-                    </div>
-                </div>
-                <div class="control-group epart" style="display: none">
-                    <label class="control-label"><b>科室:</b></label>
-                    <input class="reg-input" type="text" name="department" id="Department"
-                           placeholder="请填写您的所经营的科室,用逗号隔开。(至少三个)" value="${cmClubinfo.department}"
-                           style="margin-left: 10px;"/>
-                    <span class="err-tip"></span>
+            </c:if>
+            <c:if test="${cmClubinfo.department ne null}">
+                <div class="flex-p">
+                    <p>科室:<span>${cmClubinfo.department}</span></p>
                 </div>
-                <div class="control-group" >
-                    <label class="control-label"><b>主营内容:</b></label>
-                    <font size="3">${cmClubinfo.mainpro}</font>
+            </c:if>
+            <c:if test="${cmClubinfo.mainpro ne null}">
+                <div class="flex-p">
+                    <p>主营内容:<span>${cmClubinfo.mainpro}</span></p>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td>
-                <div class="control-group">
-                    <label class="control-label"><b>固定电话:</b></label>
-                    <div class="controls">${cmClubinfo.contractPhone}</div>
+            </c:if>
+            <c:if test="${cmClubinfo.contractPhone ne null}">
+                <div class="flex-p">
+                    <p>固定电话:<span>${cmClubinfo.contractPhone}</span></p>
                 </div>
-            </td>
-            <td>
-                <div class="control-group">
-                    <label class="control-label"><b>传真:</b></label>
-                    <div class="controls">${cmClubinfo.fax}</div>
+            </c:if>
+            <c:if test="${cmClubinfo.fax ne null}">
+                <div class="flex-p">
+                    <p>传真:<span>${cmClubinfo.fax}</span></p>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td colspan="2">
-                <div class="control-group">
-                    <label class="control-label"><b>员工人数:</b></label>
-                    <div class="controls">${cmClubinfo.empnum}</div>
+            </c:if>
+            <c:if test="${cmClubinfo.empnum ne null}">
+                <div class="flex-p">
+                    <p>员工人数:<span>${cmClubinfo.empnum}</span></p>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td colspan="2">
-                <div class="control-group">
-                    <label class="control-label"><b>公司简介:</b></label>
-                    <div class="controls">${cmClubinfo.info}</div>
+            </c:if>
+            <c:if test="${cmClubinfo.info ne null}">
+                <div class="flex-p">
+                    <p>公司简介:<span>${cmClubinfo.info}</span></p>
                 </div>
-            </td>
-        </tr>
-    </table>
-    <div>
-        <div class="clubInfo">
-            <div class="clubInfoTitle">基本信息</div>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr height="28">
-                    <th>机构面积:</th>
-                    <td>${cmClubinfo.area}
-                    </td>
-                </tr>
-                <tr height="28">
-                    <th>美容床数:</th>
-                    <td>${cmClubinfo.bedNums}
-                    </td>
-                </tr>
-                <tr height="28">
-                    <th>美容师数:</th>
-                    <td>${cmClubinfo.beauticians}
-                    </td>
-                </tr>
-            </table>
-        </div>
-        <div class="clubInfo">
-            <div class="clubInfoTitle">业绩信息</div>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr height="28">
-                    <th>月业绩:</th>
-                    <td>${cmClubinfo.monthAchievement}
-                    </td>
-                </tr>
-                <tr height="28">
-                    <th>促销业绩:</th>
-                    <td>${cmClubinfo.promotionAchievement}
-                    </td>
-                </tr>
-                <tr height="28">
-                    <th>年业绩:</th>
-                    <td>${cmClubinfo.yearAchievement}
-                    </td>
-                </tr>
-            </table>
-        </div>
-        <div class="clubInfo">
-            <div class="clubInfoTitle">会员信息及消费情况</div>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr height="28">
-                    <th>A类会员:</th>
-                    <td colspan="3" style="padding-top: 6px;">${cmClubinfo.cateA}人&nbsp;${cmClubinfo.consumeA}元
-                    </td>
-                </tr>
-                <tr height="28">
-                    <th>B类会员:</th>
-                    <td colspan="3" style="padding-top: 6px;">${cmClubinfo.cateB}人&nbsp;${cmClubinfo.consumeB}元
-                    </td>
-                </tr>
-                <tr height="28">
-                    <th>C类会员:</th>
-                    <td colspan="3" style="padding-top: 6px;">${cmClubinfo.cateC}人&nbsp;${cmClubinfo.consumeC}元
-                    </td>
-                </tr>
-            </table>
-        </div>
-        <div class="clubInfo">
-            <div class="clubInfoTitle">活动业绩</div>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr height="28">
-                    <th>最高业绩:</th>
-                    <td>${cmClubinfo.highestAchievement}
-                    </td>
-                </tr>
-                <tr height="28">
-                    <th>到店人数:</th>
-                    <td>${cmClubinfo.reachPepole}
-                    </td>
-                </tr>
-                <tr height="28">
-                    <th>成交人数:</th>
-                    <td>${cmClubinfo.clinchPepole}
-                    </td>
-                </tr>
-            </table>
+            </c:if>
+            <div style="display: none">
+                <div class="flex-p"><p>基本信息:</p></div>
+                <div class="flex-p"><p>机构面积:<span>${cmClubinfo.area}</span></p></div>
+                <div class="flex-p"><p>美容床数:<span>${cmClubinfo.bedNums}</span></p></div>
+                <div class="flex-p"><p>美容师数:<span>${cmClubinfo.beauticians}</span></p></div>
+                <div class="flex-p"><p>机构面积:<span>${cmClubinfo.area}</span></p></div>
+                <div class="flex-p"><p>机构面积:<span>${cmClubinfo.area}</span></p></div>
+                <div class="flex-p"><p>机构面积:<span>${cmClubinfo.area}</span></p></div>
+                <div class="flex-p"><p>业绩信息:</p></div>
+                <div class="flex-p"><p>月业绩:<span>${cmClubinfo.monthAchievement}</span></p></div>
+                <div class="flex-p"><p>促销业绩:<span>${cmClubinfo.promotionAchievement}</span></p></div>
+                <div class="flex-p"><p>年业绩:<span>${cmClubinfo.yearAchievement}</span></p></div>
+                <div class="flex-p"><p>会员信息及消费情况:</p></div>
+                <div class="flex-p"><p>A类会员:<span>${cmClubinfo.cateA}</span></p></div>
+                <div class="flex-p"><p>B类会员:<span>${cmClubinfo.cateB}</span></p></div>
+                <div class="flex-p"><p>C类会员:<span>${cmClubinfo.cateC}</span></p></div>
+                <div class="flex-p"><p>活动业绩:</p></div>
+                <div class="flex-p"><p>最高业绩:<span>${cmClubinfo.highestAchievement}</span></p></div>
+                <div class="flex-p"><p>到店人数:<span>${cmClubinfo.reachPepole}</span></p></div>
+                <div class="flex-p"><p>成交人数:<span>${cmClubinfo.clinchPepole}</span></p></div>
+                <div class="flex-p"><p>店内所经营品牌及推广优势:<span>${cmClubinfo.brandSuperiority}</span><</p></div>
+                <div class="flex-p"><p>临近一次促销的模式及达成业绩:<span>${cmClubinfo.lastPromotion}</span><</p></div>
+            </div>
+
         </div>
-        <table border="0" cellspacing="0" cellpadding="0" width="100%">
-            <tr height="28">
-                <th>店内所经营品牌及推广优势:</th>
-                <td colspan="10" width="25%">${cmClubinfo.brandSuperiority}
-                </td>
-                <th>临近一次促销的模式及达成业绩:</th>
-                <td colspan="10" width="25%">${cmClubinfo.lastPromotion}
-                </td>
-            </tr>
-        </table>
     </div>
     </form:form>
 </body>

+ 0 - 1
src/main/webapp/WEB-INF/views/modules/user/behaviorRemarks.jsp

@@ -27,7 +27,6 @@
     </c:if>
     <li class="active"><a href="${ctx}/user/behavior/record/recordList?IP=${cmBehaviorRecord.IP}&accessDate=${cmBehaviorRecord.accessDate}&userID=${cmBehaviorRecord.userID}&clubID=${cmBehaviorRecord.clubID}&companyType=${cmBehaviorRecord.companyType}&behaviorType=${cmBehaviorRecord.behaviorType}">查看详情</a></li>
 </ul>
-<br/>
 <form:form id="searchForm" modelAttribute="cmBehaviorRecord" action="${ctx}/user/behavior/record/behaviorRemarks?IP=${cmBehaviorRecord.IP}&accessDate=${cmBehaviorRecord.accessDate}&userID=${cmBehaviorRecord.userID}&clubID=${cmBehaviorRecord.clubID}&companyType=${cmBehaviorRecord.companyType}&behaviorType=${cmBehaviorRecord.behaviorType}" method="post" class="breadcrumb form-search">
     <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
     <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/user/clubConfirmRecordList.jsp

@@ -60,7 +60,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-    <li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li class="active"><a href="${ctx}/user/clubTemporary/confirmRecord?id=${clubTemporary.id}">确认记录</a></li>
 </ul>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/user/clubTemporaryForm.jsp

@@ -391,7 +391,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-	<li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+	<li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
 	<li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
 	<li class="active"><a href="">未确认机构编辑</a></li>
 </ul>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/user/clubTemporaryList.jsp

@@ -22,7 +22,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-	<li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+	<li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
 	<li class="active"><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
 	<li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/user/cmOperationalLogs.jsp

@@ -28,7 +28,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-    <li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li class="active"><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/user/registerPage.jsp

@@ -114,7 +114,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-    <li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li class="active"><a href="${ctx}/user/clubTemporary/registerPage?id=${clubTemporary.id}">确认注册</a></li>
 </ul>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/userNew/ReportList.jsp

@@ -2,7 +2,7 @@
 <%@ include file="/WEB-INF/views/include/taglib.jsp" %>
 <html>
 <head>
-    <title>机构列表</title>
+    <title>机构基本资料列表</title>
     <meta name="decorator" content="default"/>
     <style type="text/css">
         .reg-row .new-tag.active {

+ 20 - 3
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyForm.jsp

@@ -492,7 +492,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-    <li><a href="${ctx}/new/user/agency/?searchName=${newCmClub.searchName}&searchUserName=${newCmClub.searchUserName}&searchBindMobile=${newCmClub.searchBindMobile}&searchEmail=${newCmClub.searchEmail}&searchUserOrganizeID=${newCmClub.searchUserOrganizeID}&searchStatus=${newCmClub.searchStatus}&searchUserIdentity=${newCmClub.searchUserIdentity}&searchStartTime=${newCmClub.searchStartTime}&searchEndTime=${newCmClub.searchEndTime}">机构列表</a></li>
+    <li><a href="${ctx}/new/user/agency/?searchName=${newCmClub.searchName}&searchUserName=${newCmClub.searchUserName}&searchBindMobile=${newCmClub.searchBindMobile}&searchEmail=${newCmClub.searchEmail}&searchUserOrganizeID=${newCmClub.searchUserOrganizeID}&searchStatus=${newCmClub.searchStatus}&searchUserIdentity=${newCmClub.searchUserIdentity}&searchStartTime=${newCmClub.searchStartTime}&searchEndTime=${newCmClub.searchEndTime}">机构基本资料列表</a></li>
     <li class="active"><a href="${ctx}/new/user/agency/form?id=${newCmClub.clubID}&source=${source}&searchName=${newCmClub.searchName}&searchUserName=${newCmClub.searchUserName}&searchBindMobile=${newCmClub.searchBindMobile}&searchEmail=${newCmClub.searchEmail}&searchUserOrganizeID=${newCmClub.searchUserOrganizeID}&searchStatus=${newCmClub.searchStatus}&searchUserIdentity=${newCmClub.searchUserIdentity}&searchStartTime=${newCmClub.searchStartTime}&searchEndTime=${newCmClub.searchEndTime}">机构信息</a></li>
 </ul>
 <form:form id="inputForm" modelAttribute="cmClubinfo" action="${ctx}/new/user/agency/save?searchName=${newCmClub.searchName}&searchUserName=${newCmClub.searchUserName}&searchBindMobile=${newCmClub.searchBindMobile}&searchEmail=${newCmClub.searchEmail}&searchUserOrganizeID=${newCmClub.searchUserOrganizeID}&searchStatus=${newCmClub.searchStatus}&searchUserIdentity=${newCmClub.searchUserIdentity}&searchStartTime=${newCmClub.searchStartTime}&searchEndTime=${newCmClub.searchEndTime}" method="post"
@@ -504,8 +504,25 @@
 <div style="max-width:1200px;padding:15px;">
     <table border="0" cellspacing="0" cellpadding="0" width="100%">
         <tr height="28">
-            <th>状态:</th>
-            <td colspan="5">${fns:getDictLabel(newCmClub.status, 'club_status', newCmClub.status)}</td>
+            <th width="12%">状态:</th>
+            <td width="13%">${fns:getDictLabel(newCmClub.status, 'club_status', newCmClub.status)}</td>
+            <th width="12%">机构级别:</th>
+            <td width="13%">
+                <c:if test="${newCmClub.userIdentity eq 4}">
+                    个人机构
+                </c:if>
+                <c:if test="${newCmClub.userIdentity eq 2}">
+                    资质机构
+                </c:if>
+                <c:if test="${newCmClub.svipUserFlag eq 1}">
+                    <font color="red">(超级会员)</font>
+                </c:if>
+                <c:if test="${newCmClub.userIdentity eq 2 and newCmClub.svipUserFlag eq 0}">
+                    <font color="red">(普通会员)</font>
+                </c:if>
+            </td>
+            <th width="12%">注册时间:</th>
+            <td width="13%">${newCmClub.addTime}</td>
         </tr>
         <tr height="28">
             <th width="12%">机构名称:</th>

+ 10 - 9
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp

@@ -2,7 +2,7 @@
 <%@ include file="/WEB-INF/views/include/taglib.jsp" %>
 <html>
 <head>
-    <title>机构列表</title>
+    <title>机构基本资料列表</title>
     <meta name="decorator" content="default"/>
     <style type="text/css">
         .reg-row .new-tag.active{border:1px solid #de5801}
@@ -50,7 +50,8 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-    <li class="active"><a href="${ctx}/new/user/agency/">机构列表</a></li>
+    <li class="active"><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
+    <li><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>
@@ -88,7 +89,7 @@
             </form:select>
         </div>
         <div class="item">
-            <label>机构别:</label>
+            <label>机构别:</label>
             <form:select path="searchUserIdentity" class="input-medium">
                 <form:option value="" label="请选择"/>
                 <form:option value="4" label="个人机构"/>
@@ -158,7 +159,7 @@
         <th>协销人员</th>
         <th>状态</th>
         <th>审核人</th>
-        <th>机构别</th>
+        <th>机构别</th>
         <th>活跃状态<span class="acticer_span" onmousemove="activeStageMessage(1)">?</span></th>
         <th>客户价值<span class="acticer_span" onmousemove="activeStageMessage(2)">?</span></th>
         <th>注册IP</th>
@@ -318,7 +319,7 @@
                     </shiro:hasPermission>
                 </c:if>
                 <shiro:hasPermission name="club:cmAgency:category">
-                    <a href="javascript:void(0);" onclick="showClubAlert(${newCmClubList.clubID},${newCmClubList.userIdentity})">设置机构别</a>
+                    <a href="javascript:void(0);" onclick="showClubAlert(${newCmClubList.clubID},${newCmClubList.userIdentity})">设置机构别</a>
                 </shiro:hasPermission>
                 <c:if test="${newCmClubList.status eq 92 || newCmClubList.status eq 93}">
                     <shiro:hasPermission name="club:cmAgency:conform">
@@ -393,14 +394,14 @@
         </div><!-- /.modal-content -->
     </div><!-- /.modal -->
 </div>
-<%--设置机构别弹窗--%>
+<%--设置机构别弹窗--%>
 <div class="alert-modal" id="alertModal">
     <div class="title">
-        <p>机构别</p>
+        <p>机构别</p>
         <i class="close" id="alertModal-close">X</i>
     </div>
     <div class="alert-content">
-        <p>请选择别</p>
+        <p>请选择别</p>
         <div class="from-radio">
             <input type="radio" value="1" name="clubType">资质机构
             <input type="radio" value="2" name="clubType">个人机构
@@ -687,7 +688,7 @@
     var $alertModalCloseBtn = $('#close-clubleibie ');
     var $alertModalConfirm = $('#confirm-clubleibie ');
 
-    //选择机构
+    //选择机构
     function showClubAlert(clubID, type) {
         if (type == 2) {
             $ClubAlertContent.find("input[type=radio][value='1']").attr("checked", true);

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyOperation.jsp

@@ -27,7 +27,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-    <li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li class="active"><a href="javascript:;">运营人员列表</a></li>
 </ul>
 <div>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyRemarksList.jsp

@@ -44,7 +44,7 @@
 </head>
 <body>
 	<ul class="nav nav-tabs">
-		<li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+		<li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
 		<li class="active"><a href="${ctx}/new/user/agency/remarks?clubId=${cmClubRemarks.clubId}">咨询记录</a></li>
 	</ul><br/>
 <form:form id="searchForm" modelAttribute="cmClubRemarks" action="${ctx}/new/user/agency/remarks" method="post" class="breadcrumb form-search">

+ 400 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyStatisticsList.jsp

@@ -0,0 +1,400 @@
+<%@ 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">
+        .reg-row .new-tag.active{border:1px solid #de5801}
+        .reg-row{margin-bottom:20px}
+        .reg-row .reg-label{display:inline-block;width:120px;text-align:right;font-size:13px}
+        .the-oradio{display:inline-block;vertical-align:top}
+        .the-oradio div{width:85px;display:inline-block;font-size:12px;color:#666}
+        .the-oradio div input[type="radio"]{width:17px;height:17px;margin-right:5px;vertical-align:text-top}
+        .med-option{display:block;margin:10px 0 0 125px}
+        .reg-row .business-license{position:relative;display:inline-block;width:166px;height:123px;border-radius:6px;margin:18px 0 0 125px}
+        #medicalPracticeLicenseImgPreview{display:inline-block}
+        .qualification{margin-top:20px}
+        .reg-row .tags-area{display:inline-block;width:420px}
+        .reg-row .new-tag{display:inline-block;width:70px;border:1px solid #e5e5e5;border-radius:6px;padding:5px;margin-right:14px;margin-bottom:14px;text-align:center;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
+        .reg-row .tags-operate{margin-left:125px}
+        .reg-row .reg-input{width:336px;height:32px;padding:0 8px;margin-right:20px;border:1px solid #dcdcdc;border-radius:6px}
+        .reg-row .tags-operate .tag-input{width:159px;margin-right:13px;display:none;vertical-align:top}
+        .reg-row .tags-operate .tag-add{line-height:20px;vertical-align:middle;margin-bottom:0;vertical-align:top}
+        .reg-row .tags-area{vertical-align:top}
+        .tag-add{display:none}
+        .table th{text-align:center}
+        .table td{text-align:center}
+        .modal{width:700px;margin-left:-350px}
+        #myModal{display:none}
+        .modal-body{max-height:300px !important}
+        .modal.fade.in{top:0 !important}
+        #btnSubmit{margin-left:20px}
+        .flex-wrap .item{margin-right:20px}
+        #auditBox{padding:20px;line-height:30px}
+        #auditBox .bd-row{display:flex;margin-bottom:15px}
+        #auditBox .bd-row > span{display:inline-block;width:60px}
+        #auditBox .auditCheckBox{width:250px}
+        #auditBox .auditCheckBox label{margin:0 5px 5px 0}
+        #auditBox .auditCheckBox input{display:none}
+        #auditBox .auditCheckBox input + span{display:inline-block;line-height:24px;padding:0 12px;border:1px solid #666;border-radius:5px}
+        #auditBox .auditCheckBox input:checked + span{background-color:#E6633A}
+        #alertModal{width:300px;height:200px;border:1px solid #ebebeb;border-radius:10px;position:fixed;top:0;bottom:0;left:0;right:0;margin:auto;background:#FFFFFF;display:none}
+        #alertModal .title{height:50px;line-height:50px;font-size:14px;font-weight:bold;text-align:center;position:relative;border-bottom:1px solid #EBEBEB}
+        #alertModal .close{width:50px;height:50px;display:block;position:absolute;right:0;top:0;line-height:50px;color:#000;font-weight:bold;text-align:center;font-style:normal;font-size:18px}
+        #alertModal .alert-content{width:260px;height:60px;padding:20px}
+        #alertModal .alertModal-btn{width:260px;height:49px;padding:0 20px;border-top:1px solid #EBEBEB}
+        #alertModal .alertModal-btn button{float:right;margin:5px}
+        .acticer_span{display: inline-block;width: 14px;height: 14px;border-radius: 50%;box-sizing: border-box;border: 1px solid #999999;text-align: center;color: #333333;font-size: 12px;line-height: 14px;float: none;margin-left: 3px;}
+        /*#items{border-bottom: #0d0d0d 1px dashed}*/
+        .viewDiv{position: relative; margin: 0 auto;margin-top: 10px; width: 100%; height: 1px; background-color: #d4d4d4; text-align: center; font-size: 16px; color: rgba(101, 101, 101, 1);}
+        .autoView{position: absolute; left: 90%; background-color: #ffffff;margin-left: 100px; padding: 0 15px; transform: translateX(-30%) translateY(-30%);}
+    </style>
+    <link href="${ctxStatic}/modules/cmAgencyStatisticsList/cmAgencyStatisticsList.css" rel="stylesheet">
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
+    <li class="active"><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
+    <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
+    <li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
+</ul>
+<form:form id="searchForm" modelAttribute="statistics" action="${ctx}/new/user/agency/statisticsList" method="post"
+           class="breadcrumb form-search">
+    <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+    <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+    <input id="payTotalMonthType" name="payTotalMonthType" type="hidden" value="${statistics.payTotalMonthType}"/>
+    <input id="orderCountMonthType" name="orderCountMonthType" type="hidden" value="${statistics.orderCountMonthType}"/>
+    <input id="payTotalYearType" name="payTotalYearType" type="hidden" value="${statistics.payTotalYearType}"/>
+    <input id="orderCountYearType" name="orderCountYearType" type="hidden" value="${statistics.orderCountYearType}"/>
+    <input id="payTotalType" name="payTotalType" type="hidden" value="${statistics.payTotalType}"/>
+    <div class="flex-wrap">
+        <div id="items" class="flex-wrap">
+            <div class="item">
+                <label>注册时间:</label>
+                <form:input path="registerStartTime" type="text" maxlength="20" class="input-mini Wdate" value="${registerStartTime}"
+                            onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>
+                -
+                <form:input path="registerEndTime" type="text" maxlength="20" class="input-mini Wdate" value="${registerEndTime}"
+                            onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>
+            </div>
+            <div class="item">
+                <label>最近下单时间:</label>
+                <form:input path="searchStartTime" type="text" maxlength="20" class="input-mini Wdate" value="${searchStartTime}"
+                            onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>
+                -
+                <form:input path="searchEndTime" type="text" maxlength="20" class="input-mini Wdate" value="${searchEndTime}"
+                            onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>
+            </div>
+            <label class="control-label">机构类型:</label>
+            <form:select path="customerValue" class="input-medium">
+                <form:option value="" label="请选择"/>
+                <form:option value="1" label="医美"/>
+                <form:option value="2" label="生美"/>
+                <form:option value="3" label="项目公司"/>
+                <form:option value="4" label="个人"/>
+                <form:option value="0" label="其他"/>
+            </form:select>
+            <div class="item">
+                <label>机构级别:</label>
+                <form:select path="searchUserIdentity" class="input-medium">
+                    <form:option value="" label="请选择"/>
+                    <form:option value="4" label="个人机构"/>
+                    <form:option value="2" label="资质机构"/>
+                    <form:option value="8" label="超级会员"/>
+                </form:select>
+            </div>
+            <div class="item">
+                <label> 状态:</label>
+                <form:select path="searchStatus" class="input-medium">
+                    <form:option value="" label="请选择"/>
+                    <form:options items="${fns:getDictList('club_status')}" itemLabel="label" itemValue="value"
+                                  htmlEscape="false"/>
+                </form:select>
+            </div>
+            <label class="control-label">联系人身份:</label>
+            <form:select path="linkManIdentity" class="input-medium">
+                <form:option value="" label="请选择"/>
+                <form:option value="1" label="老板"/>
+                <form:option value="2" label="采购"/>
+                <form:option value="3" label="运营"/>
+                <form:option value="4" label="其他"/>
+            </form:select>
+            <label class="control-label">资料完整度:</label>
+            <form:select path="clubDataIntegrity" class="input-medium">
+                <form:option value="" label="请选择"/>
+                <form:option value="1" label="20%至70%"/>
+                <form:option value="2" label="70%以上"/>
+            </form:select>
+        </div><br/><br/>
+        <div class="viewDiv">
+            <input id="btnSubmit" class="btn autoView btn-primary" type="button" value="查询"/>
+            <input id="export" class="btn autoView btn-primary" type="button" value="导出"/>
+<%--            <a href="${ctx}/new/user/agency/club/export?" class="btn autoView btn-primary" value="导出"></a>--%>
+<%--            <a id="export" href="${ctx}/new/user/agency/club/export?" class="btn autoView btn-primary" onclick="reExport()">导出</a>--%>
+        </div><br/>
+        <div class="flex-wrap">
+            <label class="control-label">近一个月购买额:</label>
+            <form:select id="payTotalMonth" path="payTotalMonth" class="input-medium">
+                <form:option value="" label="请选择"/>
+                <form:option value="1" label="小于1万"/>
+                <form:option value="2" label="1万至10万"/>
+                <form:option value="3" label="10万至100万"/>
+                <form:option value="4" label="大于100万"/>
+            </form:select>
+            <label class="control-label">近一年购买额:</label>
+            <form:select id ="payTotalYear" path="payTotalYear" class="input-medium">
+                <form:option value="" label="请选择"/>
+                <form:option value="1" label="小于1万"/>
+                <form:option value="2" label="1万至10万"/>
+                <form:option value="3" label="10万至100万"/>
+                <form:option value="4" label="大于100万"/>
+            </form:select>
+            <div class="item">
+                <label>自定义统计时间:</label>
+                <form:input id="customStartTime" path="customStartTime" type="text" maxlength="20" class="input-mini Wdate" value="${customStartTime}"
+                            onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>
+                -
+                <form:input id="customEndTime" path="customEndTime" type="text" maxlength="20" class="input-mini Wdate" value="${customEndTime}"
+                            onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:false});"/>
+            </div>
+            <label class="control-label">总购买额:</label>
+            <form:select id="payTotal" path="payTotal" class="input-medium">
+                <form:option value="" label="请选择"/>
+                <form:option value="1" label="小于1万"/>
+                <form:option value="2" label="1万至10万"/>
+                <form:option value="3" label="10万至100万"/>
+                <form:option value="4" label="大于100万"/>
+            </form:select>
+        </div>
+    </div>
+</form:form>
+<sys:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    <tr>
+        <th>机构ID</th>
+        <th>机构名称</th>
+        <th>联系人</th>
+        <th>联系人身份</th>
+        <th>手机号</th>
+        <th>协销人员</th>
+        <th>状态</th>
+        <th>机构类型</th>
+        <th>机构级别</th>
+        <th>资料完整度</th>
+        <th>注册时间</th>
+        <th class="th-sort">
+            近一个月订单数
+            <div class="sort sort-button" id="sort-button1">
+                <a href="${ctx}/new/user/agency/statisticsList?orderCountMonthType=0" class="icon icon-up"></a>
+                <a href="${ctx}/new/user/agency/statisticsList?orderCountMonthType=1" class="icon icon-down"></a>
+            </div>
+        </th>
+        <th class="th-sort">
+            近一年订单数
+            <div class="sort sort-button" id="sort-button2">
+                <a href="${ctx}/new/user/agency/statisticsList?orderCountYearType=0" class="icon icon-up"></a>
+                <a href="${ctx}/new/user/agency/statisticsList?orderCountYearType=1" class="icon icon-down"></a>
+            </div>
+        </th>
+        <th class="th-sort">
+            近一个月购买额
+            <div class="sort sort-button" id="sort-button3">
+                <a href="${ctx}/new/user/agency/statisticsList?payTotalMonthType=0" class="icon icon-up"></a>
+                <a href="${ctx}/new/user/agency/statisticsList?payTotalMonthType=1" class="icon icon-down"></a>
+            </div>
+        </th>
+        <th class="th-sort">
+            近一年购买额
+            <div class="sort sort-button" id="sort-button4">
+                <a href="${ctx}/new/user/agency/statisticsList?payTotalYearType=0" class="icon icon-up"></a>
+                <a href="${ctx}/new/user/agency/statisticsList?payTotalYearType=1" class="icon icon-down"></a>
+            </div>
+        </th>
+        <th class="th-sort">
+            总购买额
+            <div class="sort sort-button" id="sort-button5">
+                <a href="${ctx}/new/user/agency/statisticsList?payTotalType=0" class="icon icon-up"></a>
+                <a href="${ctx}/new/user/agency/statisticsList?payTotalType=1" class="icon icon-down"></a>
+            </div>
+        </th>
+        <th>最常搜索词</th>
+        <th>最近下单时间</th>
+        <th>操作</th>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${page.list}" var="clubList">
+        <tr>
+            <td>${clubList.clubID}</td>
+            <td>
+                ${clubList.name}
+            </td>
+            <td>
+                    ${clubList.linkMan}
+            </td>
+            <td>
+                <c:if test="${clubList.linkManStatus ne null}">
+                    ${clubList.linkManStatus}
+                </c:if>
+                <c:if test="${clubList.linkManStatus eq null}">
+                    ---
+                </c:if>
+            </td>
+            <td>
+                    ${clubList.contractMobile}
+            </td>
+            <td>
+                    ${clubList.spName}
+            </td>
+            <td>${clubList.clubStatus}</td>
+            <td>
+                <c:if test="${clubList.firstClubType != null || clubList.firstClubType != ''}">
+                    ${clubList.firstClubType}
+                </c:if>
+                <c:if test="${clubList.classify ne null}">
+                   - ${clubList.classify}
+                </c:if>
+                <c:if test="${clubList.firstClubType == null and clubList.firstClubType == '' and clubList.classify == null and clubList.classify == ''}">
+                    ---
+                </c:if>
+            </td>
+            <td>
+                <c:if test="${clubList.userIdentity eq 4}">
+                    个人机构
+                </c:if>
+                <c:if test="${clubList.userIdentity eq 2}">
+                    资质机构
+                </c:if>
+                <c:if test="${clubList.svipUserFlag eq 1}">
+                    <font color="red">(超级会员)</font>
+                </c:if>
+                <c:if test="${clubList.userIdentity eq 2 and clubList.svipUserFlag eq 0}">
+                    <font color="red">(普通会员)</font>
+                </c:if>
+            </td>
+            <td>${clubList.clubDataIntegrity}</td>
+            <td>
+                <c:if test="${clubList.addTime != null || clubList.addTime != '' || clubList.addTime ne null}">
+                    ${clubList.addTime}
+                    <%--<fmt:formatDate value="${clubList.addTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>--%>
+                </c:if>
+                <c:if test="${clubList.addTime == null || clubList.addTime == '' || clubList.addTime eq null}">
+                    ---
+                </c:if>
+            </td>
+            <td class="td-none">${clubList.orderCountMonth}</td>
+            <td class="td-none">${clubList.orderCountYear}</td>
+            <td class="td-none">${clubList.payTotalMonth}</td>
+            <td class="td-none">${clubList.payTotalYear}</td>
+            <td class="td-none">${clubList.payTotal}</td>
+            <td class="td-none">
+                <c:if test="${clubList.pageLabel ne null}">
+                    ${clubList.pageLabel}
+                </c:if>
+                <c:if test="${clubList.pageLabel eq null}">
+                    ---
+                </c:if>
+            </td>
+            <td class="td-none">${clubList.lastOrderTime}</td>
+            <td>
+                <a href="${ctx}/new/user/agency/clubPortrait?clubID=${clubList.clubID}&clubName=${clubList.name}&dateType=0&type=4">查看详情</a>
+            </td>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${page}</div>
+<script type="text/javascript">
+function page(n,s) {
+    $('#pageNo').val(n);
+    $('#pageSize').val(s);
+    $('#searchForm').submit();
+    return false;
+}
+$(function () {
+    const typeMap = {
+        1: {
+            val: $("#orderCountMonthType").val() ? $("#orderCountMonthType").val() * 1 : null,
+            dom: $('#sort-button1')
+        },
+        2: {
+            val: $("#orderCountYearType").val() ? $("#orderCountYearType").val() * 1 : null,
+            dom: $('#sort-button2')
+        },
+        3: {
+            val: $("#payTotalMonthType").val() ? $("#payTotalMonthType").val() * 1 : null,
+            dom: $('#sort-button3')
+        },
+        4: {
+            val: $("#payTotalYearType").val() ? $("#payTotalYearType").val() * 1 : null,
+            dom: $('#sort-button4')
+        },
+        5: {
+            val: $("#payTotalType").val() ? $("#payTotalType").val() * 1 : null,
+            dom: $('#sort-button5')
+        }
+    }
+    const setActiveFn = function (type,num){
+        if( type === 0){
+            typeMap[num].dom.find('.icon-up').addClass('active');
+        }else{
+            typeMap[num].dom.find('.icon-down').addClass('active');
+        }
+    }
+    // 每月订单数 1 降序  0 升序
+    if(typeMap[1].val || typeMap[1].val === 0) {
+        setActiveFn(typeMap[1].val,1)
+    }
+    // 每年订单总数 1 降序  0 升序
+    if(typeMap[2].val || typeMap[2].val === 0) {
+        setActiveFn(typeMap[2].val,2)
+    }
+    // 每月总额 1 降序  0 升序
+    if(typeMap[3].val || typeMap[3].val === 0) {
+        setActiveFn(typeMap[3].val,3)
+    }
+    // 每年总额 1 降序  0 升序
+    if(typeMap[4].val || typeMap[4].val === 0) {
+        setActiveFn(typeMap[4].val,4)
+    }
+    // 总金额 1 降序  0 升序
+    if(typeMap[5].val || typeMap[5].val === 0) {
+        setActiveFn(typeMap[5].val,5)
+    }
+    $("#export").click(function () {
+        var formData = $('#searchForm').serialize()
+        window.location.href= "${ctx}/new/user/agency/club/export?"+formData
+    })
+   $('#btnSubmit').click(function () {
+       const payTotalMonth = $('#payTotalMonth').val();
+       const payTotalYear = $('#payTotalYear').val();
+       const customStartTime = $('#customStartTime').val();
+       const customEndTime = $('#customEndTime').val();
+       const payTotal = $('#payTotal').val();
+       console.log(customStartTime+'----'+customEndTime);
+       if ((customStartTime.length !== 0 || customStartTime !== '') && (customEndTime.length !== 0 || customEndTime !== '')) {
+           if (payTotalMonth.length !== 0 || payTotalMonth !== '') {
+               $.jBox.confirm("自定义统计时间不能与近一个月/近一年购买额联动查询", "提示");
+               return;
+           }
+           if (payTotalYear.length !== 0 || payTotalYear !== '') {
+               $.jBox.confirm("自定义统计时间不能与近一个月/近一年购买额联动查询", "提示");
+               return;
+           }
+           if (payTotal.length === 0 || payTotal === '') {
+               $.jBox.confirm("自定义统计时间需要与总购买额一起联动查询", "提示");
+               return;
+           }
+       }
+       $('#searchForm').submit();
+   })
+})
+/*function reExport() {
+    var formData = $('#searchForm').serialize()
+    this.href()+formData
+}*/
+</script>
+</body>
+</html>

+ 149 - 388
src/main/webapp/WEB-INF/views/modules/userNew/cmClubData.jsp

@@ -4,169 +4,13 @@
 <head>
     <title>机构资料</title>
     <meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/modules/cmClubData/cmClubData.css" rel="stylesheet">
     <script src="/static/modules/bulkpurchase/loadAddressById.js"></script>
-    <script type="text/javascript">
-
-    </script>
-    <style>
-        #auditBox {
-            padding: 20px;
-            line-height: 30px;
-        }
-
-        #auditBox .bd-row {
-            display: flex;
-            margin-bottom: 15px;
-        }
-
-        #auditBox .bd-row > span {
-            display: inline-block;
-            width: 60px;
-        }
-
-        #auditBox .auditCheckBox {
-            width: 250px;
-        }
-
-        #auditBox .auditCheckBox label {
-            margin: 0 5px 5px 0
-        }
-
-        #auditBox .auditCheckBox input {
-            display: none;
-        }
-
-        #auditBox .auditCheckBox input + span {
-            display: inline-block;
-            line-height: 24px;
-            padding: 0 12px;
-            border: 1px solid #666;
-            border-radius: 5px;
-        }
-
-        #auditBox .auditCheckBox input:checked + span {
-            background-color: #E6633A
-        }
-
-        .detailTitle {
-            margin: 16px 0px 4px 20px;
-            font-weight: bold;
-        }
-
-        .detailLine {
-            width: 98%;
-            margin-left: 10px;
-        }
-
-        .clubInfo {
-            float: left;
-            width: 25%;
-        }
-
-        .clubInfoTitle {
-            text-align: center;
-            text-decoration: underline;
-            font-weight: bold;
-        }
-
-        th {
-            text-align: right;
-            white-space: nowrap;
-        }
-
-        td {
-            padding: 5px 0;
-        }
-
-        #headpicPreview li, #businessLicenseImagePreview li {
-            min-height: 100px;
-        }
-
-        /*----------------------------------*/
-        .the-oradio {
-            display: inline-block;
-            vertical-align: top;
-        }
-
-        .the-oradio div {
-            width: 85px;
-            display: inline-block;
-            font-size: 12px;
-            color: #666;
-        }
-
-        .med-option {
-            display: block;
-            margin: 10px 0 0 160px;
-        }
-
-        .raw-option {
-            display: block;
-            margin: 10px 0 0 160px;
-        }
-
-        .control-group .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;
-        }
-
-        .control-group .new-tag.active {
-            border-color: #e15616;
-            color: #e15616;
-        }
-
-        #clubArea {
-            display: inline-block;
-            width: 450px;
-        }
-
-        #clubOther {
-            height: 40px;
-            line-height: 40px;
-            vertical-align: middle
-        }
-
-        #clubInput {
-            width: 159px;
-            margin: 7px;
-            display: inline-block;
-            height: 30px;
-            display: none;
-        }
-
-        .tags-operate {
-            margin-left: 160px;
-        }
-
-        .control-group .tags-operate .tag-add {
-            height: 40px;
-            line-height: 40px;
-            vertical-align: middle;
-            display: none;
-        }
-
-        .top-label {
-            width: 160px;
-            text-align: right;
-            vertical-align: top;
-            margin-top: 10px;
-        }
-    </style>
+    <script type="text/javascript"></script>
 </head>
 <body>
 <ul class="nav nav-tabs">
-    <li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li class="active"><a href="${ctx}/new/user/agency/clubPortrait?clubID=${newCmClub.clubID}">机构画像</a></li>
 </ul>
 <div class="ul-form">
@@ -175,247 +19,164 @@
         <li class="active"><a href="${ctx}/new/user/agency/clubData?clubID=${newCmClub.clubID}">机构信息</a></li>
     </ul>
 </div>
-<form:form id="inputForm" modelAttribute="cmClubinfo" action="#" method="post"
-           class="form-horizontal">
-<form:hidden path="id" value="${newCmClub.clubID}"/>
-<form:hidden path="clubInfoID"/>
-<form:hidden path="userID"/>
-<form:hidden path="clubID"/>
-<div style="max-width:1200px;padding:15px;">
-    <table border="0" cellspacing="0" cellpadding="0" width="100%">
-        <tr height="28">
-            <th width="12%">状态:</th>
-            <td width="13%">${fns:getDictLabel(newCmClub.status, 'club_status', newCmClub.status)}</td>
-            <th width="12%">注册时间:</th>
-            <td width="13%"><fmt:formatDate value="${newCmClub.registerTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></td>
-        </tr>
-        <tr height="28">
-            <th width="12%">机构名称:</th>
-            <td width="13%">${newCmClub.name}
-            <th width="12%">机构简称:</th>
-            <td width="13%">${newCmClub.sname}
-            <th width="12%">注册邮箱:</th>
-            <td width="13%">${newCmClub.contractEmail}
-        </tr>
-        <tr height="28">
-            <th width="12%">联系人:</th>
-            <td width="13%">${newCmClub.userName}
-            </td>
-            <th width="12%">手机号:</th>
-            <td width="13%">${newCmClub.bindMobile}
-            <th width="12%">联系人身份:</th>
-            <td width="13%">
-                <c:if test="${newCmClub.linkManIdentity eq '1'}">老板</c:if>
-                <c:if test="${newCmClub.linkManIdentity eq '2'}">采购</c:if>
-                <c:if test="${newCmClub.linkManIdentity eq '3'}">运营</c:if>
-            </td>
-        </tr>
-    </table>
-</div>
-
-<sys:message content="${message}"/>
-<hr class="detailLine">
-<div>
-    <table border="0" cellspacing="0" cellpadding="0" width="100%">
-        <tr>
-            <td colspan="2">
-                <div class="control-group">
-                    <label class="control-label"><b>地址:</b></label>
-                    <span  id="curProvince" name="curProvince" >${newCmClub.province }</span>
-                    <span  id="curCity" name="curCity" >${newCmClub.province }</span>
-                    <span  id="curTown" name="curTown" >${newCmClub.town }</span>
-                        ${newCmClub.address}
-                    <%--<div class="controls">
-                        <form:select path="provinceID" disabled="true" class="input-xlarge" id="province"
-                                     onchange="loadCity()" style="width:100px;">
-                            <form:option value="" label="省" provinceId=""/>
-                        </form:select>
-                        <form:select path="cityID" disabled="true" class="input-xlarge" id="city" onchange="loadTown()"
-                                     style="width:100px;">
-                            <form:option value="" label="市" cityId=""/>
-                        </form:select>
-                        <form:select path="townID" disabled="true" class="input-xlarge" id="town" style="width:100px;">
-                            <form:option value="" label="区"/>
-                        </form:select>
-                            ${newCmClub.address}
-                    </div>--%>
+<form:form id="inputForm" modelAttribute="cmClubinfo" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id" value="${newCmClub.clubID}"/>
+    <form:hidden path="clubInfoID"/>
+    <form:hidden path="userID"/>
+    <form:hidden path="clubID"/>
+    <div class="main-content">
+        <div class="flex-header">
+            <div class="flex-header-main">
+                <div class="header-main-box">
+                    <c:if test="${newCmClub.name ne null and newCmClub.name ne ''}"><p>机构名称:<span>${newCmClub.name}</span></p></c:if>
+                    <c:if test="${newCmClub.userName ne null and newCmClub.userName ne ''}"> <p>联系人:<span>${newCmClub.userName}</span></p></c:if>
+                    <c:if test="${newCmClub.linkManIdentity ne null and newCmClub.linkManIdentity ne ''}">
+                        <p>联系人身份:
+                            <span>
+                                <c:if test="${newCmClub.linkManIdentity eq '1'}">老板</c:if>
+                                <c:if test="${newCmClub.linkManIdentity eq '2'}">采购</c:if>
+                                <c:if test="${newCmClub.linkManIdentity eq '3'}">运营</c:if>
+                                <c:if test="${newCmClub.linkManIdentity ne '1' || newCmClub.linkManIdentity ne '2' || newCmClub.linkManIdentity ne '3'}">其他</c:if>
+                            </span>
+                        </p>
+                    </c:if>
+                    <c:if test="${newCmClub.bindMobile ne null and newCmClub.bindMobile ne ''}"><p>手机号:<span>${newCmClub.bindMobile}</span></p></c:if>
+                    <c:if test="${cmClubinfo.firstClubType ne null and cmClubinfo.firstClubType ne ''}">
+                        <p>机构类型:
+                            <span>
+                                <c:if test="${cmClubinfo.firstClubType == '1'}">医美</c:if>
+                                <c:if test="${cmClubinfo.firstClubType == '2'}">生美</c:if>
+                                <c:if test="${cmClubinfo.firstClubType == '3'}">项目公司</c:if>
+                                <c:if test="${cmClubinfo.firstClubType == '4'}">个人</c:if>
+                                <c:if test="${cmClubinfo.firstClubType == '5'}">其他</c:if>
+                            </span>
+                            <c:if test="${cmClubinfo.secondClubType ne null and cmClubinfo.secondClubType ne ''}">
+                                <span>
+                                    <c:if test="${cmClubinfo.secondClubType eq '1'}"> - 诊所</c:if>
+                                    <c:if test="${cmClubinfo.secondClubType eq '2'}"> - 门诊</c:if>
+                                    <c:if test="${cmClubinfo.secondClubType eq '3'}"> - 医院</c:if>
+                                    <c:if test="${cmClubinfo.secondClubType eq '4'}"> - 其他</c:if>
+                                    <c:if test="${cmClubinfo.secondClubType eq '5'}"> - 美容院</c:if>
+                                    <c:if test="${cmClubinfo.secondClubType eq '6'}"> - 养生馆</c:if>
+                                    <c:if test="${cmClubinfo.secondClubType eq '7'}"> - 其他</c:if>
+                                </span>
+                            </c:if>
+                        </p>
+                    </c:if>
+                    <c:if test="${newCmClub.province ne null and newCmClub.province ne '' and newCmClub.city ne null and newCmClub.city ne '' and newCmClub.town ne null and newCmClub.town ne '' and newCmClub.address ne null and newCmClub.address ne ''}"><p>地址:<span>${newCmClub.province } ${newCmClub.city } ${newCmClub.town } ${newCmClub.address}</span></p></c:if>
+                    <c:if test="${newCmClub.status ne null and newCmClub.status ne ''}"><p>状态:<span>${fns:getDictLabel(newCmClub.status, 'club_status', newCmClub.status)}</span></p></c:if>
+                    <c:if test="${newCmClub.registerTime ne null and newCmClub.registerTime ne ''}"><p>注册时间:<span><fmt:formatDate value="${newCmClub.registerTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate></span></p></c:if>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td colspan="2">
-                <div class="control-group">
-                    <label class="control-label"><b>营业执照编号:</b></label>
-                    <div class="controls">${newCmClub.socialCreditCode}</div>
+                <div class="header-main-box">
+                    <div class="main-box">
+                        <c:if test="${cmClubinfo.userIdentity ne null and cmClubinfo.userIdentity ne '' and cmClubinfo.svipUserFlag ne null and cmClubinfo.svipUserFlag ne ''}">
+                            <div class="main-box-tp">
+                                <p>机构类别:
+                                    <span>
+                                        <c:if test="${cmClubinfo.userIdentity eq 4}">个人机构</c:if>
+                                        <c:if test="${cmClubinfo.userIdentity eq 2}">资质机构</c:if>
+                                        <c:if test="${cmClubinfo.svipUserFlag eq 1}"><font color="red">(超级会员)</font></c:if>
+                                        <c:if test="${cmClubinfo.userIdentity eq 2 and cmClubinfo.svipUserFlag eq 0}"><font color="red">(普通会员)</font></c:if>
+                                    </span>
+                                </p>
+                            </div>
+                        </c:if>
+                        <c:if test="${cmClubinfo.medicalPracticeLicenseImg ne null and cmClubinfo.medicalPracticeLicenseImg ne ''}">
+                            <div class="main-box-bt">
+                                <p>医疗许可证:</p>
+                                <a class="main-box-img" target="_blank" href="${cmClubinfo.medicalPracticeLicenseImg}"><img src="${cmClubinfo.medicalPracticeLicenseImg}"/></a>
+                            </div>
+                        </c:if>
+                    </div>
+                    <div class="main-box">
+                        <c:if test="${newCmClub.socialCreditCode ne null and newCmClub.socialCreditCode ne ''}">
+                            <div class="main-box-tp">
+                                <p>营业执照编号:<span>${newCmClub.socialCreditCode}</span></p>
+                            </div>
+                        </c:if>
+                        <c:if test="${newCmClub.businessLicenseImage ne null and newCmClub.businessLicenseImage ne ''}">
+                            <div class="main-box-bt">
+                                <p>营业执照:</p>
+                                <a class="main-box-img" target="_blank" href="${newCmClub.businessLicenseImage}"><img src="${newCmClub.businessLicenseImage}"/></a>
+                            </div>
+                        </c:if>
+                    </div>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td>
-                <div class="control-group">
-                    <label class="control-label"><b>营业执照:</b></label>
-                    <img width="100" height="100" src="${newCmClub.businessLicenseImage}">
+            </div>
+        </div>
+        <div class="flex-content">
+            <c:if test="${newCmClub.sname ne null and newCmClub.sname ne ''}">
+                <div class="flex-p">
+                    <p>机构简称:<span>${newCmClub.sname}</span></p>
                 </div>
-            </td>
-            <td>
-                <div class="control-group">
-                    <label class="control-label"><b>门头照:</b></label>
-                    <img width="100" height="100" src="${newCmClub.headpic}">
+            </c:if>
+            <c:if test="${newCmClub.contractEmail ne null and newCmClub.contractEmail ne ''}">
+                <div class="flex-p">
+                    <p>注册邮箱:<span>${newCmClub.contractEmail}</span></p>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td>
-                <div class="control-group">
-                    <label class="control-label" for=""><b>机构类型:</b></label>
-                    <div class="medical-radio the-oradio">
-                        <input value="${cmClubinfo.firstClubType}" class="hide" type="text" id="firstClubType"/>
-                        <div class="med-beauty">
-                            <c:if test="${cmClubinfo.firstClubType == '1'}">医美</c:if>
-                            <c:if test="${cmClubinfo.firstClubType == '2'}">生美</c:if>
-                            <c:if test="${cmClubinfo.firstClubType == '3'}">项目公司</c:if>
-                            <c:if test="${cmClubinfo.firstClubType == '4'}">个人</c:if>
-                            <c:if test="${cmClubinfo.firstClubType == '5'}">其他</c:if>
-
-                            <c:if test="${cmClubinfo.secondClubType eq '1'}"> - 诊所</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '2'}"> - 门诊</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '3'}"> - 医院</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '4'}"> - 其他</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '5'}"> - 美容院</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '6'}"> - 养生馆</c:if>
-                            <c:if test="${cmClubinfo.secondClubType eq '7'}"> - 其他</c:if>
-                        </div>
-
-                    </div>
-
-                    <div class="qualification control-group" style="display: none">
-                        <label class="control-label"><b>医疗许可证:</b></label>
-                        <img width="100" height="100" src="${cmClubinfo.medicalPracticeLicenseImg}">
-
-                    </div>
+            </c:if>
+            <c:if test="${newCmClub.headpic ne null and newCmClub.headpic ne ''}">
+                <div class="flex-p">
+                    <p>门头照:<span></span></p>
+                    <a class="flex-p-img" target="_blank" href="${newCmClub.headpic}"><img src="${newCmClub.headpic}" alt=""></a>
                 </div>
-                <div class="control-group epart" style="display: none">
-                    <label class="control-label"><b>科室:</b></label>
-                    <input class="reg-input" type="text" name="department" id="Department"
-                           placeholder="请填写您的所经营的科室,用逗号隔开。(至少三个)" value="${cmClubinfo.department}"
-                           style="margin-left: 10px;"/>
-                    <span class="err-tip"></span>
+            </c:if>
+            <c:if test="${cmClubinfo.department ne null and cmClubinfo.department ne ''}">
+                <div class="flex-p">
+                    <p>科室:<span>${cmClubinfo.department}</span></p>
                 </div>
-                <div class="control-group" >
-                    <label class="control-label"><b>主营内容:</b></label>
-                    <font size="3">${cmClubinfo.mainpro}</font>
+            </c:if>
+            <c:if test="${cmClubinfo.mainpro ne null and cmClubinfo.mainpro ne ''}">
+                <div class="flex-p">
+                    <p>主营内容:<span>${cmClubinfo.mainpro}</span></p>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td>
-                <div class="control-group">
-                    <label class="control-label"><b>固定电话:</b></label>
-                    <div class="controls">${cmClubinfo.contractPhone}</div>
+            </c:if>
+            <c:if test="${cmClubinfo.contractPhone ne null and cmClubinfo.contractPhone ne ''}">
+                <div class="flex-p">
+                    <p>固定电话:<span>${cmClubinfo.contractPhone}</span></p>
                 </div>
-            </td>
-            <td>
-                <div class="control-group">
-                    <label class="control-label"><b>传真:</b></label>
-                    <div class="controls">${cmClubinfo.fax}</div>
+            </c:if>
+            <c:if test="${cmClubinfo.fax ne null and cmClubinfo.fax ne ''}">
+                <div class="flex-p">
+                    <p>传真:<span>${cmClubinfo.fax}</span></p>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td colspan="2">
-                <div class="control-group">
-                    <label class="control-label"><b>员工人数:</b></label>
-                    <div class="controls">${cmClubinfo.empnum}</div>
+            </c:if>
+            <c:if test="${cmClubinfo.empnum ne null and cmClubinfo.empnum ne ''}">
+                <div class="flex-p">
+                    <p>员工人数:<span>${cmClubinfo.empnum}</span></p>
                 </div>
-            </td>
-        </tr>
-        <tr>
-            <td colspan="2">
-                <div class="control-group">
-                    <label class="control-label"><b>公司简介:</b></label>
-                    <div class="controls">${cmClubinfo.info}</div>
+            </c:if>
+            <c:if test="${cmClubinfo.info ne null and cmClubinfo.info ne ''}">
+                <div class="flex-p">
+                    <p>公司简介:<span>${cmClubinfo.info}</span></p>
                 </div>
-            </td>
-        </tr>
-    </table>
-    <div style="visibility: hidden;">
-        <div class="clubInfo">
-            <div class="clubInfoTitle">基本信息</div>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr height="28">
-                    <th>机构面积:</th>
-                    <td>${cmClubinfo.area}</td>
-                </tr>
-                <tr height="28">
-                    <th>美容床数:</th>
-                    <td>${cmClubinfo.bedNums}</td>
-                </tr>
-                <tr height="28">
-                    <th>美容师数:</th>
-                    <td>${cmClubinfo.beauticians}</td>
-                </tr>
-            </table>
-        </div>
-        <div class="clubInfo">
-            <div class="clubInfoTitle">业绩信息</div>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr height="28">
-                    <th>月业绩:</th>
-                    <td>${cmClubinfo.monthAchievement}</td>
-                </tr>
-                <tr height="28">
-                    <th>促销业绩:</th>
-                    <td>${cmClubinfo.promotionAchievement}</td>
-                </tr>
-                <tr height="28">
-                    <th>年业绩:</th>
-                    <td>${cmClubinfo.yearAchievement}</td>
-                </tr>
-            </table>
-        </div>
-        <div class="clubInfo">
-            <div class="clubInfoTitle">会员信息及消费情况</div>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr height="28">
-                    <th>A类会员:</th>
-                    <td colspan="3" style="padding-top: 6px;">${cmClubinfo.cateA}人&nbsp;</td>
-                </tr>
-                <tr height="28">
-                    <th>B类会员:</th>
-                    <td colspan="3" style="padding-top: 6px;">${cmClubinfo.cateB}人&nbsp;</td>
-                </tr>
-                <tr height="28">
-                    <th>C类会员:</th>
-                    <td colspan="3" style="padding-top: 6px;">${cmClubinfo.cateC}人&nbsp;</td>
-                </tr>
-            </table>
-        </div>
-        <div class="clubInfo">
-            <div class="clubInfoTitle">活动业绩</div>
-            <table border="0" cellspacing="0" cellpadding="0" width="100%">
-                <tr height="28">
-                    <th>最高业绩:</th>
-                    <td>${cmClubinfo.highestAchievement}</td>
-                </tr>
-                <tr height="28">
-                    <th>到店人数:</th>
-                    <td>${cmClubinfo.reachPepole}</td>
-                </tr>
-                <tr height="28">
-                    <th>成交人数:</th>
-                    <td>${cmClubinfo.clinchPepole}</td>
-                </tr>
-            </table>
+            </c:if>
+            <div style="display: none">
+                <div class="flex-p"><p>基本信息:</p></div>
+                <div class="flex-p"><p>机构面积:<span>${cmClubinfo.area}</span></p></div>
+                <div class="flex-p"><p>美容床数:<span>${cmClubinfo.bedNums}</span></p></div>
+                <div class="flex-p"><p>美容师数:<span>${cmClubinfo.beauticians}</span></p></div>
+                <div class="flex-p"><p>机构面积:<span>${cmClubinfo.area}</span></p></div>
+                <div class="flex-p"><p>机构面积:<span>${cmClubinfo.area}</span></p></div>
+                <div class="flex-p"><p>机构面积:<span>${cmClubinfo.area}</span></p></div>
+                <div class="flex-p"><p>业绩信息:</p></div>
+                <div class="flex-p"><p>月业绩:<span>${cmClubinfo.monthAchievement}</span></p></div>
+                <div class="flex-p"><p>促销业绩:<span>${cmClubinfo.promotionAchievement}</span></p></div>
+                <div class="flex-p"><p>年业绩:<span>${cmClubinfo.yearAchievement}</span></p></div>
+                <div class="flex-p"><p>会员信息及消费情况:</p></div>
+                <div class="flex-p"><p>A类会员:<span>${cmClubinfo.cateA}</span></p></div>
+                <div class="flex-p"><p>B类会员:<span>${cmClubinfo.cateB}</span></p></div>
+                <div class="flex-p"><p>C类会员:<span>${cmClubinfo.cateC}</span></p></div>
+                <div class="flex-p"><p>活动业绩:</p></div>
+                <div class="flex-p"><p>最高业绩:<span>${cmClubinfo.highestAchievement}</span></p></div>
+                <div class="flex-p"><p>到店人数:<span>${cmClubinfo.reachPepole}</span></p></div>
+                <div class="flex-p"><p>成交人数:<span>${cmClubinfo.clinchPepole}</span></p></div>
+                <div class="flex-p"><p>店内所经营品牌及推广优势:<span>${cmClubinfo.brandSuperiority}</span><</p></div>
+                <div class="flex-p"><p>临近一次促销的模式及达成业绩:<span>${cmClubinfo.lastPromotion}</span><</p></div>
+            </div>
+
         </div>
-        <table border="0" cellspacing="0" cellpadding="0" width="100%">
-            <tr height="28">
-                <th>店内所经营品牌及推广优势:</th>
-                <td colspan="10" width="25%">${cmClubinfo.brandSuperiority}</td>
-                <th>临近一次促销的模式及达成业绩:</th>
-                <td colspan="10" width="25%">${cmClubinfo.lastPromotion}</td>
-            </tr>
-        </table>
     </div>
-    </form:form>
+</form:form>
 </body>
 </html>

+ 26 - 1
src/main/webapp/WEB-INF/views/modules/userNew/cmClubPortrait.jsp

@@ -9,7 +9,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-    <li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li class="active"><a href="${ctx}/new/user/agency/clubPortrait?clubID=${cmPortrait.clubID}&clubName=${cmPortrait.clubName}&dateType=0&type=4">机构画像</a></li>
 </ul>
 <div class="ul-form">
@@ -20,6 +20,31 @@
         <li><a href="${ctx}/new/user/agency/clubData?clubID=${cmPortrait.clubID}">机构资料</a></li>
     </ul>
     <div class="main-content">
+        <div class="flex-header">
+            <div class="flex-header-main">
+                <c:if test="${statistics.name ne null and statistics.name ne ''}">
+                    <p><i class="icon i1"></i><span>${statistics.name}</span></p>
+                </c:if>
+                <c:if test="${statistics.linkMan ne null and statistics.linkMan ne ''}">
+                    <p><i class="icon i2"></i><span>${statistics.linkMan}</span></p>
+                </c:if>
+                <c:if test="${statistics.linkManStatus ne null and statistics.linkManStatus ne ''}">
+                    <p><i class="icon i3"></i><span>${statistics.linkManStatus}</span></p>
+                </c:if>
+                <c:if test="${statistics.contractMobile ne null and statistics.contractMobile ne ''}">
+                    <p><i class="icon i4"></i><span>${statistics.contractMobile}</span></p>
+                </c:if>
+                <c:if test="${statistics.clubType ne null and statistics.clubType ne ''}">
+                    <p><i class="icon i5"></i><span>${statistics.clubType}</span></p>
+                </c:if>
+                <c:if test="${statistics.province ne null and statistics.province ne ''}">
+                    <p><i class="icon i6"></i><span>${statistics.province}</span><span>${statistics.city}</span><span>${statistics.town}</span></p>
+                </c:if>
+                <c:if test="${statistics.addTime ne null and statistics.addTime ne ''}">
+                    <p><i class="icon i7"></i><span>${statistics.addTime}</span></p>
+                </c:if>
+            </div>
+        </div>
         <div class="flex-content">
             <div class="flex-box">
                 <div class="box-title">

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/userNew/recordLinkageForm.jsp

@@ -115,7 +115,7 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-	<li><a href="${ctx}/new/user/agency/">机构列表</a></li>
+	<li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
 	<li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
 	<li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 	<li class="active"><a href="${ctx}/new/user/agency/recordLinkage?clubId=${clubId}">生成行为记录链接</a></li>

+ 2 - 2
src/main/webapp/WEB-INF/views/modules/weisha/addClubUserForm.jsp

@@ -61,7 +61,7 @@
 <body>
 	<ul class="nav nav-tabs">
 		<li><a href="${ctx}/weisha/cmMallOrganize">组织列表</a></li>
-		<li><a href="${ctx}/weisha/user/organizeClubList?userOrganizeID=${userOrganizeID}">机构列表</a></li>
+		<li><a href="${ctx}/weisha/user/organizeClubList?userOrganizeID=${userOrganizeID}">机构基本资料列表</a></li>
 		<c:if test="${not empty newCmClub.clubID && not empty newCmClub.userID}">
 			<li class="active"><a href="${ctx}/user/cmUserOrganize/toAddClubUser?id=${userOrganizeID}&clubID=${newCmClub.clubID}&userID=${newCmClub.userID}">上线会所</a></li>
 		</c:if>
@@ -73,7 +73,7 @@
 		<input type="hidden" id="curProvince" name="curProvince" value="${newCmClub.province }" disabled="disabled">
 		<input type="hidden" id="curCity" name="curCity" value="${newCmClub.city }" disabled="disabled">
 		<input type="hidden" id="curTown" name="curTown" value="${newCmClub.town }" disabled="disabled">
-		<sys:message content="${message}"/>		
+		<sys:message content="${message}"/>
 		<div class="control-group">
 			<label class="control-label"><b><font color="red">*</font>机构名称:</b></label>
 			<div class="controls">

+ 3 - 3
src/main/webapp/WEB-INF/views/modules/weisha/organizeClubList.jsp

@@ -10,7 +10,7 @@
 	</style>
 	<script type="text/javascript">
 		$(document).ready(function() {
-			
+
 		});
 		function page(n,s){
 			$("#pageNo").val(n);
@@ -23,7 +23,7 @@
 <body>
 	<ul class="nav nav-tabs">
 		<li><a href="${ctx}/weisha/cmMallOrganize">组织列表</a></li>
-		<li class="active"><a href="${ctx}/weisha/user/organizeClubList?userOrganizeID=${mallOrganize.id}">机构列表</a></li>
+		<li class="active"><a href="${ctx}/weisha/user/organizeClubList?userOrganizeID=${mallOrganize.id}">机构基本资料列表</a></li>
 	</ul>
 	<form:form id="searchForm" modelAttribute="cmUser" action="${ctx}/weisha/user/organizeClubList?userOrganizeID=${mallOrganize.id}" method="post" class="breadcrumb form-search">
 		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
@@ -105,4 +105,4 @@
 	</c:if>
 	<div class="pagination">${page}</div>
 </body>
-</html>
+</html>

+ 39 - 0
src/main/webapp/static/modules/cmAgencyStatisticsList/cmAgencyStatisticsList.css

@@ -0,0 +1,39 @@
+.th-sort{
+    padding:8px 32px 8px 8px !important;
+    position: relative;
+    font-size: 12px;
+}
+.th-sort .sort{
+    width: 32px;
+    height: 32px;
+    position: absolute;
+    top: 0;
+    right: 0;
+    box-sizing: border-box;
+    padding: 4px 6px;
+}
+.th-sort .sort .icon{
+    width: 14px;
+    height: 14px;
+    display: block;
+    cursor: pointer;
+}
+.th-sort .sort .icon.icon-up{
+    background: url("../icon/icon-up.png") no-repeat center;
+    background-size: cover;
+}
+.th-sort .sort .icon.icon-up.active{
+    background: url("../icon/icon-up-active.png") no-repeat center;
+    background-size: cover;
+}
+.th-sort .sort .icon.icon-down{
+    background: url("../icon/icon-down.png") no-repeat center;
+    background-size: cover;
+}
+.th-sort .sort .icon.icon-down.active{
+    background: url("../icon/icon-down-active.png") no-repeat center;
+    background-size: cover;
+}
+.td-none{
+    background: #f5f5f5 !important;
+}

+ 113 - 0
src/main/webapp/static/modules/cmClubData/cmClubData.css

@@ -0,0 +1,113 @@
+.main-content{
+    width: 100%;
+    min-height: 700px;
+    box-sizing: border-box;
+    padding: 15px 40px;
+    background: url("./icon/icon-bg.png") no-repeat;
+    background-size: cover;
+}
+.flex-header{
+    width: 1000px;
+    height: 340px;
+    box-sizing: border-box;
+}
+.flex-header-main{
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    border:1px solid rgba(192,192,192,0.4);
+    border-radius: 8px;
+    padding: 10px 15px;
+}
+.header-main-box{
+    width: 50%;
+    height: 100%;
+    float: left;
+}
+.header-main-box p{
+    font-size: 14px;
+    line-height: 40px;
+    color: #FFFFFF;
+    margin: 0;
+    font-weight: bold;
+}
+.header-main-box p span{
+    font-weight: normal;
+}
+.header-main-box .main-box{
+    width: 50%;
+    height: 100%;
+    float: left;
+}
+.header-main-box .main-box-tp{
+    width: 100%;
+    height: 34px;
+}
+.header-main-box .main-box-tp p{
+    font-size: 14px;
+    line-height: 34px;
+    color: #FFFFFF;
+    margin: 0;
+    font-weight: bold;
+}
+.header-main-box .main-box-tp p span{
+    font-weight: normal;
+}
+.header-main-box .main-box-bt{
+    width: 100%;
+    height: auto;
+}
+.header-main-box .main-box-bt p{
+    width: 100%;
+    font-size: 14px;
+    line-height: 34px;
+    color: #FFFFFF;
+    margin: 0;
+    font-weight: bold;
+}
+.header-main-box .main-box-bt .main-box-img{
+    width: 150px;
+    height: 150px;
+    box-sizing: border-box;
+    border:1px solid rgba(192,192,192,0.4);
+    border-radius: 8px;
+    display: block;
+}
+.header-main-box .main-box-bt .main-box-img img{
+    width: 100%;
+    height: 100%;
+    border-radius: 8px;
+}
+.flex-content{
+    width: 1000px;
+    height: auto;
+    padding: 10px 15px;
+    box-sizing: border-box;
+}
+.flex-content .flex-p{
+    width: 100%;
+    height: auto;
+}
+.flex-content .flex-p p{
+    font-size: 14px;
+    line-height: 40px;
+    color: #FFFFFF;
+    margin: 0;
+    font-weight: bold;
+}
+.flex-content .flex-p p span{
+    font-weight: normal;
+}
+.flex-content .flex-p .flex-p-img{
+    width: 100px;
+    height: 100px;
+    box-sizing: border-box;
+    border:1px solid rgba(192,192,192,0.4);
+    border-radius: 8px;
+    display: block;
+}
+.flex-content .flex-p .flex-p-img img{
+    width: 100%;
+    height: 100%;
+    border-radius: 8px;
+}

binární
src/main/webapp/static/modules/cmClubData/icon/icon-1.png


binární
src/main/webapp/static/modules/cmClubData/icon/icon-2.png


binární
src/main/webapp/static/modules/cmClubData/icon/icon-3.png


binární
src/main/webapp/static/modules/cmClubData/icon/icon-4.png


binární
src/main/webapp/static/modules/cmClubData/icon/icon-5.png


binární
src/main/webapp/static/modules/cmClubData/icon/icon-6.png


binární
src/main/webapp/static/modules/cmClubData/icon/icon-7.png


binární
src/main/webapp/static/modules/cmClubData/icon/icon-bg.jpg


binární
src/main/webapp/static/modules/cmClubData/icon/icon-bg.png


+ 75 - 8
src/main/webapp/static/modules/cmClubPortrait/cmClubEacths.js

@@ -224,6 +224,7 @@ const getOrderEacths = function (handleFn,id,data) {
             top:'20%',
             textStyle: {
                 fontSize: 14,
+                color:'#FFFFFF'
             },
         },
         color:data.color,
@@ -266,9 +267,18 @@ const setOtherData = function (type,data) {
             id:'keyWordsEacths',
             series:{
                 name:'搜索关键词',
-                color:'#e15616',
                 yAxisData:data.behavior.name,
-                seriesData:data.behavior.value
+                seriesData:data.behavior.value,
+                color:new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
+                    offset: 0,
+                    color: "#B0C4DE" // 0% 处的颜色
+                }, {
+                    offset: 0.6,
+                    color: "#9370DB" // 60% 处的颜色
+                }, {
+                    offset: 1,
+                    color: "#7B68EE" // 100% 处的颜色
+                }], false)
             },
         },
         2:{// 咨询记录
@@ -281,9 +291,18 @@ const setOtherData = function (type,data) {
             id:'serviceEacths',
             series:{
                 name:'咨询记录',
-                color:'#36cbcb',
                 yAxisData:data.remarks.name,
-                seriesData:data.remarks.value
+                seriesData:data.remarks.value,
+                color:new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
+                    offset: 0,
+                    color: "#AFEEEE" // 0% 处的颜色
+                }, {
+                    offset: 0.6,
+                    color: "#48D1CC" // 60% 处的颜色
+                }, {
+                    offset: 1,
+                    color: "#20B2AA" // 100% 处的颜色
+                }], false)
             },
         },
         3:{// 访问记录
@@ -296,9 +315,18 @@ const setOtherData = function (type,data) {
             id:'visitEacths',
             series:{
                 name:'访问记录',
-                color:'#3aa0ff',
                 yAxisData:data.pageType.name,
-                seriesData:data.pageType.value
+                seriesData:data.pageType.value,
+                color:new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
+                    offset: 0,
+                    color: "#B0C4DE" // 0% 处的颜色
+                }, {
+                    offset: 0.6,
+                    color: "#87CEFA" // 60% 处的颜色
+                }, {
+                    offset: 1,
+                    color: "#1E90FF" // 100% 处的颜色
+                }], false)
             },
         }
     }
@@ -330,10 +358,49 @@ const getOtherEacths = function (handleFn,id,data) {
         },
         xAxis: {
             type: 'value',
-            boundaryGap: [0, 0.01]
+            splitLine:{
+                show: true,
+                lineStyle:{
+                    opacity:0.2,
+                    color:'#DCDCDC',
+                }
+            },
+            boundaryGap: [0, 0.01],
+            axisLabel:{
+                show: true,
+                textStyle:{
+                    color: '#DCDCDC',  //更改坐标轴文字颜色
+                    fontSize : 12,      //更改坐标轴文字大小
+                }
+            },
+            axisTick: {//轴网格,在xAxis或yAxis根下
+                lineStyle:{
+                    width:1,
+                    color:'#DCDCDC',
+                    type:'solid'
+                }
+            }
         },
         yAxis: {
             type: 'category',
+            splitLine:{
+                show: false,
+            },
+            axisLabel:{
+                show: true,
+                textStyle:{
+                    color: '#FFFFFF',  //更改坐标轴文字颜色
+                    fontSize : 12      //更改坐标轴文字大小
+                }
+            },
+            axisTick: {//轴网格,在xAxis或yAxis根下
+                show:false,
+                lineStyle:{
+                    width:1,
+                    color:'#DCDCDC',
+                    type:'solid'
+                }
+            },
             data: data.yAxisData
         },
         series: [
@@ -342,8 +409,8 @@ const getOtherEacths = function (handleFn,id,data) {
                 name: data.name,
                 data: data.seriesData,
                 itemStyle:{
-                    color:data.color,
                     fontSize: 14,
+                    color:data.color
                 }
             }
         ]

+ 80 - 15
src/main/webapp/static/modules/cmClubPortrait/cmClubPortrait.css

@@ -6,7 +6,66 @@
     width: 100%;
     height: auto;
     box-sizing: border-box;
-    padding: 0 40px;
+    padding: 15px 40px;
+    background: url("./icon/icon-bg.png") no-repeat;
+    background-size: cover;
+}
+.flex-header{
+    width: 1446px;
+    height: 40px;
+    box-sizing: border-box;
+    padding: 0 15px;
+}
+.flex-header-main{
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    border:1px solid rgba(192,192,192,0.4);
+    border-radius: 8px;
+    padding: 10px 15px;
+}
+.flex-header-main p{
+    float: left;
+    font-size: 14px;
+    line-height: 20px;
+    color: #FFFFFF;
+    margin: 0;
+    margin-right: 20px;
+}
+.flex-header-main p .icon{
+    display: block;
+    width: 20px;
+    height: 20px;
+    float: left;
+    margin-right: 4px;
+}
+.flex-header-main p .icon.i1{
+    background: url("./icon/icon-1.png");
+    background-size: cover;
+}
+.flex-header-main p .icon.i2{
+    background: url("./icon/icon-2.png");
+    background-size: cover;
+}
+.flex-header-main p .icon.i3{
+    background: url("./icon/icon-3.png");
+    background-size: cover;
+}
+.flex-header-main p .icon.i4{
+    background: url("./icon/icon-4.png");
+    background-size: cover;
+}
+.flex-header-main p .icon.i5{
+    background: url("./icon/icon-5.png");
+    background-size: cover;
+}
+.flex-header-main p .icon.i6{
+    background: url("./icon/icon-6.png");
+    background-size: cover;
+}
+.flex-header-main p .icon.i7{
+    background: url("./icon/icon-7.png");
+    background-size: cover;
 }
 .flex-content{
     width: 100%;
@@ -16,33 +75,36 @@
 .flex-content .flex-box{
     width: 700px;
     height: 400px;
-    border:1px solid #e1e1e1 ;
-    margin-left: 20px;
-    margin-top: 20px;
+    border:1px solid rgba(192,192,192,0.4);
+    margin-left: 15px;
+    margin-top: 15px;
     box-shadow: 0px 3px 6px 0px rgb(0,0,0,0.07);
     padding: 10px;
     box-sizing: border-box;
+    border-radius: 10px;
 }
 .flex-box .box-title{
     width: 100%;
     height: 24px;
     float: left;
     line-height: 24px;
+    box-sizing: border-box;
+    padding-left: 5px;
 }
 .flex-box .box-title span{
     font-weight: bold;
     font-size: 14px;
-    color: #333333;
+    color: #FFFFFF;
     margin-right: 20px;
 }
 .flex-box .box-title span a{
     font-weight: normal;
-    color: #2fa4e7;
+    color: #40E0D0;
 }
 .flex-box .box-title span em{
     font-style: normal;
     font-weight: normal;
-    color: #2fa4e7;
+    color: #40E0D0;
 }
 .flex-box .box-title span a.line{
     text-decoration: underline;
@@ -55,14 +117,14 @@
 }
 .flex-box .box-tabmain .box-tabs{
     float: left;
-    color: #333333;
+    color: #FFFFFF;
 }
 .flex-box .box-tabmain .box-tabs .box-tabs-li{
     margin: 0 5px;
-    color: #333333;
+    color: #FFFFFF;
 }
 .flex-box .box-tabmain .box-tabs-li.active{
-    color: #2fa4e7;
+    color: #40E0D0;
 }
 .flex-box .box-tabmain .box-time{
     width: 320px;
@@ -90,11 +152,14 @@
     margin-bottom: 0;
     box-sizing: border-box;
     float: left;
+    background: rgba(192,192,192,0.3);
+    border: none;
+    color: #FFFFFF;
 }
 .flex-box .box-tabmain .box-time .line{
     line-height: 30px;
     font-size: 12px;
-    color: #627386;
+    color: #FFFFFF;
     margin: 0 5px;
     display: inline-block;
     float: left;
@@ -106,7 +171,7 @@
     position: relative;
 }
 .flex-box .box-eachts .eachts-total{
-    color: #333333;
+    color: #FFFFFF;
     width: 50%;
     height: 40px;
     line-height: 40px;
@@ -116,7 +181,7 @@
     left: 17%;
 }
 .flex-box .box-eachts .eachts-total span{
-    color: #3aa0ff;
+    color: #FFFFFF;
 }
 .flex-box .box-eachts .eachts-data{
     width: 100%;
@@ -128,9 +193,9 @@
     display: none;
 }
 .flex-box .box-eachts .eachts-none p{
-    font-size: 30px;
+    font-size: 24px;
     font-weight: bold;
     text-align: center;
     line-height: 316px;
-    color: #333333;
+    color: #FFFFFF;
 }

binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-1.png


binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-2.png


binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-3.png


binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-4.png


binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-5.png


binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-6.png


binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-7.png


binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-bg.jpg


binární
src/main/webapp/static/modules/cmClubPortrait/icon/icon-bg.png


binární
src/main/webapp/static/modules/icon/icon-down-active.png


binární
src/main/webapp/static/modules/icon/icon-down.png


binární
src/main/webapp/static/modules/icon/icon-up-active.png


binární
src/main/webapp/static/modules/icon/icon-up.png