瀏覽代碼

增加项目团队协作,任务看板

seyason 4 年之前
父節點
當前提交
50f3522001
共有 86 個文件被更改,包括 2753 次插入86 次删除
  1. 18 13
      fhKeeper/formulahousekeeper/inva_4_tivo/about.html
  2. 50 0
      fhKeeper/formulahousekeeper/inva_4_tivo/css/styles.css
  3. 5 12
      fhKeeper/formulahousekeeper/inva_4_tivo/download.html
  4. 二進制
      fhKeeper/formulahousekeeper/inva_4_tivo/images/gaoxin.jpg
  5. 二進制
      fhKeeper/formulahousekeeper/inva_4_tivo/images/smy.jpg
  6. 16 12
      fhKeeper/formulahousekeeper/inva_4_tivo/index.html
  7. 7 13
      fhKeeper/formulahousekeeper/inva_4_tivo/mobile.html
  8. 43 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyCustomerContactController.java
  9. 34 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  10. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectDocfolderController.java
  11. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectDocumentController.java
  12. 124 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java
  13. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskCommentController.java
  14. 64 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  15. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskFileController.java
  16. 85 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java
  17. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskLogController.java
  18. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/VcompanyCustomerContactController.java
  19. 32 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Company.java
  20. 51 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/CompanyCustomerContact.java
  21. 44 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java
  22. 85 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectDocfolder.java
  23. 100 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectDocument.java
  24. 64 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Stages.java
  25. 153 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Task.java
  26. 79 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TaskComment.java
  27. 48 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TaskFile.java
  28. 45 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TaskGroup.java
  29. 92 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TaskLog.java
  30. 95 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/VcompanyCustomerContact.java
  31. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserVO.java
  32. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/CompanyCustomerContactMapper.java
  33. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectDocfolderMapper.java
  34. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectDocumentMapper.java
  35. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/StagesMapper.java
  36. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskCommentMapper.java
  37. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskFileMapper.java
  38. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskGroupMapper.java
  39. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskLogMapper.java
  40. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskMapper.java
  41. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/VcompanyCustomerContactMapper.java
  42. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CompanyCustomerContactService.java
  43. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectDocfolderService.java
  44. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectDocumentService.java
  45. 12 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  46. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/StagesService.java
  47. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskCommentService.java
  48. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskFileService.java
  49. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskGroupService.java
  50. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskLogService.java
  51. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskService.java
  52. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/VcompanyCustomerContactService.java
  53. 58 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyCustomerContactServiceImpl.java
  54. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectDocfolderServiceImpl.java
  55. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectDocumentServiceImpl.java
  56. 65 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  57. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  58. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/StagesServiceImpl.java
  59. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskCommentServiceImpl.java
  60. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskFileServiceImpl.java
  61. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java
  62. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskLogServiceImpl.java
  63. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java
  64. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  65. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/VcompanyCustomerContactServiceImpl.java
  66. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/CodeGenerator.java
  67. 8 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/ListUtil.java
  68. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml
  69. 18 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CompanyCustomerContactMapper.xml
  70. 6 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CompanyMapper.xml
  71. 23 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectDocfolderMapper.xml
  72. 26 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectDocumentMapper.xml
  73. 9 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  74. 19 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/StagesMapper.xml
  75. 22 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskCommentMapper.xml
  76. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskFileMapper.xml
  77. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskGroupMapper.xml
  78. 24 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskLogMapper.xml
  79. 33 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml
  80. 25 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/VcompanyCustomerContactMapper.xml
  81. 23 0
      fhKeeper/formulahousekeeper/timesheet/package-lock.json
  82. 3 0
      fhKeeper/formulahousekeeper/timesheet/package.json
  83. 5 5
      fhKeeper/formulahousekeeper/timesheet/src/main.js
  84. 23 1
      fhKeeper/formulahousekeeper/timesheet/src/routes.js
  85. 236 0
      fhKeeper/formulahousekeeper/timesheet/src/views/market/list.vue
  86. 107 8
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

+ 18 - 13
fhKeeper/formulahousekeeper/inva_4_tivo/about.html

@@ -67,7 +67,7 @@
                         <a class="nav-link page-scroll" href="./mobile.html">手机版</a>
                     </li>
                     <li class="nav-item">
-                        <a class="nav-link page-scroll" target="_blank" href="http://www.ttkuaiban.com">团队协作</a>
+                        <a class="nav-link page-scroll" target="_blank" href="http://apps.ttkuaiban.com">团队协作</a>
                     </li>
                     <li class="nav-item other-item">
                         <a class="active nav-link page-scroll" href="./about.html">关于我们</a>
@@ -107,6 +107,17 @@
             </div>
         </div>
     </div>
+    <div id="us_content_cetificate" >
+        <div class="container">
+            <div class="row">
+                <h2>资质证书</h2>
+                <div class="cetificate_gallery" style="margin-top:10px;">
+                    <div><img alt="资质证书"  src="images/gaoxin.jpg"/></div>
+                    <div><img alt="资质证书"  src="images/smy.jpg"/></div>
+                </div>
+            </div>
+        </div>
+    </div>
 
     <div id="details" class="basic-1">
         <div class="container">
@@ -116,7 +127,8 @@
                         <h2>联系我们</h2>
                         <p>
                             邮编:211001<br>
-                            地址:南京市江宁区秣周东路12号未来网络小镇2号楼P346室<br>
+                            地址:南京市江宁区秣周东路12号未来网络小镇3号楼P346室<br>
+                            联系电话:15895914665<br>
                             邮箱:quyueting@huoshishanxin.com<br>
                             QQ: 3052894409<br>
                         </p>
@@ -140,16 +152,9 @@
                         <h4>&nbsp;&nbsp;公司</h4>
                         <ul class="list-unstyled li-space-lg p-small">
                             <li class="media">
-                                <div class="media-body"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-newspaper-o"></i>&nbsp;&nbsp;&nbsp;新闻</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-comment-o"></i>&nbsp;&nbsp;&nbsp;评论</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-handshake-o"></i>&nbsp;&nbsp;&nbsp;合作伙伴</div>
+                                <div class="media-body">
+                                    <a href="about.html" target="_blank" style="color: #f3f7fd;text-decoration:none;"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</a>
+                                </div>
                             </li>
                         </ul>
                     </div>
@@ -194,7 +199,7 @@
         <div class="container">
             <div class="row">
                 <div class="col-lg-12">
-                    <p class="p-small">Copyright©2016 南京火石闪信网络有限公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;苏ICP备18064522号-1</p>
+                    <p class="p-small">Copyright©2016 南京火石闪信网络有限公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://beian.miit.gov.cn" target="_blank" style="color:white;">苏ICP备18064522号-1</a></p>
                 </div>
             </div>
         </div>

+ 50 - 0
fhKeeper/formulahousekeeper/inva_4_tivo/css/styles.css

@@ -2298,4 +2298,54 @@ a:hover.back-to-top {
 #container {
 	height: 20rem;
 }
+
+/**证书**/
+#us_content_cetificate {
+	text-align: center;
+	margin-top:44px;
+}
+
+#us_content_cetificate .h2-heading {
+	margin-bottom: 50px;
+}
+
+#us_content_cetificate .im-de {
+	margin: 0 auto;
+}
+
+#us_content_cetificate .img-fluid-de {
+	margin:0;
+	padding: 0;
+	display: inline-block;
+}
+
+#us_content_cetificate .img-fluid-de img {
+	width: 13rem;
+	max-width: 100%;
+	max-height: 6rem;
+	border: 1px solid #eeee;
+	margin-bottom: 20px;
+}
+
+
+.us_content_cetificate1{
+	width: 4px;
+	height: 50px;
+	background: #d72626;
+	float: left;
+}
+.cetificate_gallery {
+	padding-top:5px;
+	margin: 0 auto;
+	width:90%;
+	height:300px;
+	background: #fff;
+	display: grid;
+	grid-template-columns: 50% 50% ;
+  	grid-template-rows: 340px ;
+}
+.cetificate_gallery img {
+	width:99%;
+	height:99%;
+}
 /* new style end */

+ 5 - 12
fhKeeper/formulahousekeeper/inva_4_tivo/download.html

@@ -52,7 +52,7 @@
                         <a class="nav-link page-scroll" href="./mobile.html">手机版</a>
                     </li>
                     <li class="nav-item">
-                        <a class="nav-link page-scroll" target="_blank" href="http://www.ttkuaiban.com">团队协作</a>
+                        <a class="nav-link page-scroll" target="_blank" href="http://apps.ttkuaiban.com">团队协作</a>
                     </li>
                     <li class="nav-item other-item">
                         <a class="nav-link page-scroll" href="./about.html">关于我们</a>
@@ -125,16 +125,9 @@
                         <h4>&nbsp;&nbsp;公司</h4>
                         <ul class="list-unstyled li-space-lg p-small">
                             <li class="media">
-                                <div class="media-body"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-newspaper-o"></i>&nbsp;&nbsp;&nbsp;新闻</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-comment-o"></i>&nbsp;&nbsp;&nbsp;评论</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-handshake-o"></i>&nbsp;&nbsp;&nbsp;合作伙伴</div>
+                                <div class="media-body">
+                                    <a href="about.html" target="_blank" style="color: #f3f7fd;text-decoration:none;"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</a>
+                                </div>
                             </li>
                         </ul>
                     </div>
@@ -179,7 +172,7 @@
         <div class="container">
             <div class="row">
                 <div class="col-lg-12">
-                    <p class="p-small">Copyright © 南京火石闪信网络有限公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;苏ICP备18064522号-1</p>
+                    <p class="p-small">Copyright©2016 南京火石闪信网络有限公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://beian.miit.gov.cn" target="_blank" style="color:white;">苏ICP备18064522号-1</a></p>
                 </div>
             </div>
         </div>

二進制
fhKeeper/formulahousekeeper/inva_4_tivo/images/gaoxin.jpg


二進制
fhKeeper/formulahousekeeper/inva_4_tivo/images/smy.jpg


+ 16 - 12
fhKeeper/formulahousekeeper/inva_4_tivo/index.html

@@ -23,6 +23,17 @@
           s.parentNode.insertBefore(hm, s);
         })();
     </script>
+    
+<script>
+    var _hmt = _hmt || [];
+    (function() {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?fba29f060a1eaae67a055ea3aeac38fe";
+      var s = document.getElementsByTagName("script")[0]; 
+      s.parentNode.insertBefore(hm, s);
+    })();
+    </script>
+    
 </head>
 <body data-spy="scroll" data-target=".fixed-top">
 	<div class="spinner-wrapper">
@@ -65,7 +76,7 @@
                         <a class="nav-link page-scroll" href="./mobile.html">手机版</a>
                     </li>
                     <li class="nav-item">
-                        <a class="nav-link page-scroll" target="_blank" href="http://www.ttkuaiban.com">团队协作</a>
+                        <a class="nav-link page-scroll" target="_blank" href="http://apps.ttkuaiban.com">团队协作</a>
                     </li>
                     <li class="nav-item other-item">
                         <a class="nav-link page-scroll" href="./about.html">关于我们</a>
@@ -438,16 +449,9 @@
                         <h4>&nbsp;&nbsp;公司</h4>
                         <ul class="list-unstyled li-space-lg p-small">
                             <li class="media">
-                                <div class="media-body"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-newspaper-o"></i>&nbsp;&nbsp;&nbsp;新闻</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-comment-o"></i>&nbsp;&nbsp;&nbsp;评论</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-handshake-o"></i>&nbsp;&nbsp;&nbsp;合作伙伴</div>
+                                <div class="media-body">
+                                    <a href="about.html" target="_blank" style="color: #f3f7fd;text-decoration:none;"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</a>
+                                </div>
                             </li>
                         </ul>
                     </div>
@@ -492,7 +496,7 @@
         <div class="container">
             <div class="row">
                 <div class="col-lg-12">
-                    <p class="p-small">Copyright©2016 南京火石闪信网络有限公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;苏ICP备18064522号-1</p>
+                    <p class="p-small">Copyright©2016 南京火石闪信网络有限公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://beian.miit.gov.cn" target="_blank" style="color:white;">苏ICP备18064522号-1</a></p>
                 </div>
             </div>
         </div>

+ 7 - 13
fhKeeper/formulahousekeeper/inva_4_tivo/mobile.html

@@ -52,7 +52,7 @@
                         <a class="nav-link page-scroll active" href="./mobile.html">手机版</a>
                     </li>
                     <li class="nav-item">
-                        <a class="nav-link page-scroll" target="_blank" href="http://www.ttkuaiban.com">团队协作</a>
+                        <a class="nav-link page-scroll" target="_blank" href="http://apps.ttkuaiban.com">团队协作</a>
                     </li>
                     <li class="nav-item other-item">
                         <a class="nav-link page-scroll" href="./about.html">关于我们</a>
@@ -104,17 +104,9 @@
                         <h4>&nbsp;&nbsp;公司</h4>
                         <ul class="list-unstyled li-space-lg p-small">
                             <li class="media">
-                                <div class="media-body"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-newspaper-o"></i>&nbsp;&nbsp;&nbsp;新闻</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-comment-o"></i>&nbsp;&nbsp;&nbsp;评论</div>
-                            </li>
-                            <li class="media">
-                                <div class="media-body"><i class="fa fa-handshake-o"></i>&nbsp;&nbsp;&nbsp;合作伙伴</div>
+                                <a href="about.html" target="_blank" style="color: #f3f7fd;text-decoration:none;"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</a>
                             </li>
+                            
                         </ul>
                     </div>
                 </div>
@@ -123,7 +115,9 @@
                         <h4>&nbsp;&nbsp;关注</h4>
                         <ul class="list-unstyled li-space-lg p-small">
                             <li class="media">
-                                <div class="media-body"><i class="fa fa-qq"></i>&nbsp;&nbsp;&nbsp;QQ:3052894409</div>
+                                <div class="media-body">
+                                    <a href="about.html" target="_blank" style="color: #f3f7fd;text-decoration:none;"><i class="fa fa-users"></i>&nbsp;&nbsp;&nbsp;关于我们</a>
+                                </div>
                             </li>
                             <li class="media">
                                 <div class="media-body"><i class="fa fa-weixin"></i>&nbsp;&nbsp;&nbsp;微信</div>
@@ -158,7 +152,7 @@
         <div class="container">
             <div class="row">
                 <div class="col-lg-12">
-                    <p class="p-small">Copyright © 南京火石闪信网络有限公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;苏ICP备18064522号-1</p>
+                    <p class="p-small">Copyright©2016 南京火石闪信网络有限公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://beian.miit.gov.cn" target="_blank" style="color:white;">苏ICP备18064522号-1</a></p>
                 </div>
             </div>
         </div>

+ 43 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyCustomerContactController.java

@@ -0,0 +1,43 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.service.CompanyCustomerContactService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+@RestController
+@RequestMapping("/company-customer-contact")
+public class CompanyCustomerContactController {
+
+    @Resource
+    CompanyCustomerContactService companyCustomerContactService;
+
+    /**
+     * 获取公司列表
+     */
+    @RequestMapping("/getList")
+    public HttpRespMsg getList(Integer pageIndex, Integer pageSize) {
+        return companyCustomerContactService.getList(pageIndex, pageSize);
+    }
+
+    /**
+     * 处理,标记为联系
+     */
+    @RequestMapping("/handle")
+    public HttpRespMsg handle(Integer companyId, String feedback) {
+        return companyCustomerContactService.handle(companyId, feedback);
+    }
+}
+

+ 34 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -10,6 +10,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -41,8 +43,10 @@ public class ProjectController {
      * pageSize 页面大小
      */
     @RequestMapping("/getProjectPage")
-    public HttpRespMsg getProjectPage(@RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
-        return projectService.getProjectPage(pageIndex, pageSize, request);
+    public HttpRespMsg getProjectPage(@RequestParam Integer pageIndex, @RequestParam Integer pageSize, String keyword,
+                                      @RequestParam(required = false, defaultValue = "1") Integer searchField,
+                                      Integer status) {
+        return projectService.getProjectPage(pageIndex, pageSize, keyword,searchField, status, request);
     }
 
     /**
@@ -52,11 +56,37 @@ public class ProjectController {
      * userId 用户id数组
      */
     @RequestMapping("/editProject")
-    public HttpRespMsg editProject(Integer id, @RequestParam String name, String code,  String[] userId, String inchargerId) {
+    public HttpRespMsg editProject(Integer id, @RequestParam String name, String code, String[] userId, String inchargerId,
+                                   String planStartDate,
+                                   String planEndDate,
+                                   Integer level,
+                                   Integer budget
+                                   ) {
 
-        return projectService.editProject(id, name, code, userId, inchargerId, request);
+        return projectService.editProject(id, name, code, userId, inchargerId, planStartDate, planEndDate, level, budget,request);
     }
 
+    /**
+     * 更新项目进度
+     * @param id
+     * @param progress
+     * @return
+     */
+    @RequestMapping("/updateProgress")
+    public HttpRespMsg updateProgress(Integer id,
+                                   Integer progress) {
+
+        return projectService.updateProgress(id, progress,request);
+    }
+
+    @RequestMapping("/updateStatus")
+    public HttpRespMsg updateStatus(Integer id,
+                                      Integer status, LocalDate finishDate) {
+
+        return projectService.updateStatus(id, status,finishDate, request);
+    }
+
+
     /**
      * 删除项目
      * id 要删除的项目的id

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectDocfolderController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/project-docfolder")
+public class ProjectDocfolderController {
+
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectDocumentController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/project-document")
+public class ProjectDocumentController {
+
+}
+

+ 124 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java

@@ -0,0 +1,124 @@
+package com.management.platform.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.api.R;
+import com.management.platform.entity.Stages;
+import com.management.platform.entity.Task;
+import com.management.platform.entity.TaskGroup;
+import com.management.platform.service.StagesService;
+import com.management.platform.service.TaskGroupService;
+import com.management.platform.service.TaskService;
+import com.management.platform.util.HttpRespMsg;
+import com.management.platform.util.ListUtil;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/stages")
+public class StagesController {
+    @Resource
+    private HttpServletRequest request;
+
+    @Resource
+    private StagesService stagesService;
+    @Resource
+    private TaskService taskService;
+    /**
+     * 保存任务列表
+     */
+    @RequestMapping("/save")
+    public HttpRespMsg save(Stages item) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //给seq排序
+        QueryWrapper<Stages> queryWrapper = new QueryWrapper<Stages>();
+        queryWrapper.eq("group_id", item.getGroupId());
+        queryWrapper.orderByDesc("sequence");
+        queryWrapper.last("limit 1");
+        if (item.getId() == null) {
+            List<Stages> one = stagesService.list(queryWrapper);
+            if (one.size() == 0) {
+                item.setSequence(1);
+            } else {
+                item.setSequence(one.get(0).getSequence() + 1);
+            }
+        }
+
+        stagesService.saveOrUpdate(item);
+        queryWrapper = new QueryWrapper<Stages>();
+        queryWrapper.eq("group_id", item.getGroupId());
+        queryWrapper.orderByAsc("sequence");
+
+        List<Stages> list = stagesService.list(queryWrapper);
+        List<Task> tasks = taskService.list(new QueryWrapper<Task>().in("group_id", item.getGroupId()));
+        list.forEach(stages -> {
+            stages.setTaskList(tasks.stream().filter(t->t.getStagesId().equals(stages.getId())).collect(Collectors.toList()));
+        });
+
+        msg.data = list;
+        return msg;
+    }
+
+    /**
+     * 删除任务列表
+     * @param item
+     * @return
+     */
+    @RequestMapping("/delete")
+    public HttpRespMsg delete(Stages item) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //检查,如果分组下有任务,不得删除
+        int cnt = taskService.count(new QueryWrapper<Task>().eq("group_id", item.getId()));
+        if (cnt > 0) {
+            msg.setError("该分组下存在任务,不可删除");
+        } else {
+            stagesService.removeById(item.getId());
+            QueryWrapper<Stages> queryWrapper = new QueryWrapper<Stages>();
+            queryWrapper.eq("group_id", item.getGroupId());
+            msg.data = stagesService.list(queryWrapper);
+        }
+
+        return msg;
+    }
+
+    /**
+     * 查看任务列表
+     * @param item
+     * @return
+     */
+    @RequestMapping("/list")
+    public HttpRespMsg list(Stages item) {
+        HttpRespMsg msg = new HttpRespMsg();
+        QueryWrapper<Stages> queryWrapper = new QueryWrapper<Stages>();
+        queryWrapper.eq("group_id", item.getGroupId());
+        queryWrapper.orderByAsc("sequence");
+
+        List<Stages> list = stagesService.list(queryWrapper);
+
+        List<Task> tasks = taskService.list(new QueryWrapper<Task>().eq("group_id", item.getGroupId()));
+        System.out.println("总任务数量"+tasks.size()+","+item.getGroupId());
+        list.forEach(stages -> {
+            stages.setTaskList(tasks.stream().filter(t->t.getStagesId().equals(stages.getId())).collect(Collectors.toList()));
+            System.out.println(stages.getStagesName() + "-任务:"+stages.getTaskList().size());
+        });
+
+        msg.data = list;
+        return msg;
+    }
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskCommentController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/task-comment")
+public class TaskCommentController {
+
+}
+

+ 64 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -0,0 +1,64 @@
+package com.management.platform.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.Task;
+import com.management.platform.entity.User;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.TaskService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/task")
+public class TaskController {
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private TaskService taskService;
+    @Resource
+    private UserMapper userMapper;
+
+    @RequestMapping("/save")
+    public HttpRespMsg save(Task task) {
+        String userId = request.getHeader("Token");
+        User user = userMapper.selectById(userId);
+        Integer companyId = user.getCompanyId();
+        HttpRespMsg msg = new HttpRespMsg();
+        task.setCreateDate(LocalDate.now());
+        task.setCreaterId(userId);
+        task.setCreaterName(user.getName());
+        task.setCompanyId(user.getCompanyId());
+        task.setExecutorName(userMapper.selectById(task.getExecutorId()).getName());
+        //新建的任务需要计算排序
+        if (task.getId() == null) {
+            QueryWrapper<Task> queryWrapper = new QueryWrapper<Task>();
+            queryWrapper.eq("stages_id", task.getStagesId()).orderByDesc("seq").last("limit 1");
+            List<Task> taskList = taskService.list(queryWrapper);
+            if (taskList.size() == 0) {
+                task.setSeq(1);
+            } else {
+                task.setSeq(taskList.get(0).getSeq() + 1);
+            }
+        }
+
+        taskService.saveOrUpdate(task);
+        return msg;
+    }
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskFileController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/task-file")
+public class TaskFileController {
+
+}
+

+ 85 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -0,0 +1,85 @@
+package com.management.platform.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.Task;
+import com.management.platform.entity.TaskGroup;
+import com.management.platform.service.TaskGroupService;
+import com.management.platform.service.TaskService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/task-group")
+public class TaskGroupController {
+    @Resource
+    private HttpServletRequest request;
+
+    @Resource
+    private TaskGroupService taskGroupService;
+    @Resource
+    private TaskService taskService;
+    /**
+     * 保存任务分组
+     */
+    @RequestMapping("/save")
+    public HttpRespMsg save(TaskGroup item) {
+        HttpRespMsg msg = new HttpRespMsg();
+        taskGroupService.saveOrUpdate(item);
+        QueryWrapper<TaskGroup> queryWrapper = new QueryWrapper<TaskGroup>();
+        queryWrapper.eq("project_id", item.getProjectId());
+        msg.data = taskGroupService.list(queryWrapper);
+        return msg;
+    }
+
+    /**
+     * 删除任务分组
+     * @param item
+     * @return
+     */
+    @RequestMapping("/delete")
+    public HttpRespMsg delete(TaskGroup item) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //检查,如果分组下有任务,不得删除
+        int cnt = taskService.count(new QueryWrapper<Task>().eq("group_id", item.getId()));
+        if (cnt > 0) {
+            msg.setError("该分组下存在任务,不可删除");
+        } else {
+            taskGroupService.removeById(item.getId());
+            QueryWrapper<TaskGroup> queryWrapper = new QueryWrapper<TaskGroup>();
+            queryWrapper.eq("project_id", item.getProjectId());
+            msg.data = taskGroupService.list(queryWrapper);
+        }
+
+        return msg;
+    }
+
+    /**
+     * 删除任务分组
+     * @param item
+     * @return
+     */
+    @RequestMapping("/list")
+    public HttpRespMsg list(TaskGroup item) {
+        HttpRespMsg msg = new HttpRespMsg();
+        QueryWrapper<TaskGroup> queryWrapper = new QueryWrapper<TaskGroup>();
+        queryWrapper.eq("project_id", item.getProjectId());
+        msg.data = taskGroupService.list(queryWrapper);
+        return msg;
+    }
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskLogController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/task-log")
+public class TaskLogController {
+
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/VcompanyCustomerContactController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * VIEW 前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+@RestController
+@RequestMapping("/vcompany-customer-contact")
+public class VcompanyCustomerContactController {
+
+}
+

+ 32 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Company.java

@@ -15,8 +15,8 @@ import lombok.experimental.Accessors;
  * 
  * </p>
  *
- * @author 吴涛涛
- * @since 2020-02-05
+ * @author Seyason
+ * @since 2021-04-19
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -55,6 +55,36 @@ public class Company extends Model<Company> {
     @TableField("set_meal")
     private Integer setMeal;
 
+    /**
+     * 工时平台
+     */
+    @TableField("package_worktime")
+    private Integer packageWorktime;
+
+    /**
+     * 项目协作平台
+     */
+    @TableField("package_project")
+    private Integer packageProject;
+
+    /**
+     * 合同平台
+     */
+    @TableField("package_contract")
+    private Integer packageContract;
+
+    /**
+     * OA平台
+     */
+    @TableField("package_oa")
+    private Integer packageOa;
+
+    /**
+     * 生产车间平台
+     */
+    @TableField("package_etimecard")
+    private Integer packageEtimecard;
+
 
     @Override
     protected Serializable pkVal() {

+ 51 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/CompanyCustomerContact.java

@@ -0,0 +1,51 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CompanyCustomerContact extends Model<CompanyCustomerContact> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 是否联系过
+     */
+    @TableField("contacted")
+    private Boolean contacted;
+
+    /**
+     * 客户反馈
+     */
+    @TableField("feedback")
+    private String feedback;
+
+    @TableField("indate")
+    private LocalDateTime indate;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 44 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -2,6 +2,7 @@ package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
@@ -15,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2021-02-05
+ * @since 2021-04-19
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -54,6 +55,48 @@ public class Project extends Model<Project> {
     @TableField("incharger_id")
     private String inchargerId;
 
+    /**
+     * 计划开始日期
+     */
+    @TableField("plan_start_date")
+    private LocalDate planStartDate;
+
+    /**
+     * 计划结束日期
+     */
+    @TableField("plan_end_date")
+    private LocalDate planEndDate;
+
+    /**
+     * 项目进度
+     */
+    @TableField("progress")
+    private Integer progress;
+
+    /**
+     * 0-全部,1-正常,2-紧急,3-重要,4-重要且紧急
+     */
+    @TableField("level")
+    private Integer level;
+
+    /**
+     * 0-全部,1-进行中,2-已完成,3-已撤销
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 实际完成日期
+     */
+    @TableField("finish_date")
+    private LocalDate finishDate;
+
+    /**
+     * 预算:单位元
+     */
+    @TableField("budget")
+    private Integer budget;
+
 
     @Override
     protected Serializable pkVal() {

+ 85 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectDocfolder.java

@@ -0,0 +1,85 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProjectDocfolder extends Model<ProjectDocfolder> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 目录名称
+     */
+    @TableField("folder")
+    private String folder;
+
+    /**
+     * 父级目录id
+     */
+    @TableField("parent_fid")
+    private Integer parentFid;
+
+    /**
+     * 全路径
+     */
+    @TableField("path")
+    private String path;
+
+    /**
+     * 创建时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    /**
+     * 创建人id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 创建人姓名
+     */
+    @TableField("creator_name")
+    private String creatorName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 100 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectDocument.java

@@ -0,0 +1,100 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProjectDocument extends Model<ProjectDocument> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 文件名
+     */
+    @TableField("document_name")
+    private String documentName;
+
+    /**
+     * 服务器生成的文件名
+     */
+    @TableField("server_name")
+    private String serverName;
+
+    /**
+     * 对外访问地址
+     */
+    @TableField("url")
+    private String url;
+
+    /**
+     * 创建人id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 创建人姓名
+     */
+    @TableField("creator_name")
+    private String creatorName;
+
+    /**
+     * 创建时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    @TableField("folder_id")
+    private Integer folderId;
+
+    /**
+     * 文件大小
+     */
+    @TableField("size")
+    private String size;
+
+    /**
+     * 文件类型
+     */
+    @TableField("document_type")
+    private Integer documentType;
+
+    /**
+     * 文件状态0-存在,1-删除
+     */
+    @TableField("flat")
+    private Integer flat;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 64 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Stages.java

@@ -0,0 +1,64 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Stages extends Model<Stages> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 阶段名称
+     */
+    @TableField("stages_name")
+    private String stagesName;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 阶段顺序
+     */
+    @TableField("sequence")
+    private Integer sequence;
+
+    /**
+     * 分组id
+     */
+    @TableField("group_id")
+    private Integer groupId;
+
+    @TableField(exist = false)
+    private List<Task> taskList;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 153 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Task.java

@@ -0,0 +1,153 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Task extends Model<Task> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 任务内容
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 任务描述
+     */
+    @TableField("task_desc")
+    private String taskDesc;
+
+    /**
+     * 创建人id
+     */
+    @TableField("creater_id")
+    private String createrId;
+
+    /**
+     * 创建人姓名
+     */
+    @TableField("creater_name")
+    private String createrName;
+
+    /**
+     * 执行人id
+     */
+    @TableField("executor_id")
+    private String executorId;
+
+    /**
+     * 执行人姓名
+     */
+    @TableField("executor_name")
+    private String executorName;
+
+    /**
+     * 任务级别,0-一般 1-重要 2-紧急
+     */
+    @TableField("task_level")
+    private Integer taskLevel;
+
+    /**
+     * 任务状态,0-进行中 1-已完成 2-已撤销
+     */
+    @TableField("task_status")
+    private Integer taskStatus;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createDate;
+
+    /**
+     * 截止时间
+     */
+    @TableField("end_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 当前阶段id
+     */
+    @TableField("stages_id")
+    private Integer stagesId;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 创建时间戳
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 父任务id
+     */
+    @TableField("parent_tid")
+    private Integer parentTid;
+
+    /**
+     * 任务分组id
+     */
+    @TableField("group_id")
+    private Integer groupId;
+
+    /**
+     * 排序位置
+     */
+    @TableField("seq")
+    private Integer seq;
+
+    /**
+     * 计划工时
+     */
+    @TableField("plan_hours")
+    private Integer planHours;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 79 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TaskComment.java

@@ -0,0 +1,79 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TaskComment extends Model<TaskComment> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 任务id
+     */
+    @TableField("task_id")
+    private Integer taskId;
+
+    /**
+     * 阶段id
+     */
+    @TableField("stages_id")
+    private String stagesId;
+
+    /**
+     * 留言人id
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 留言人姓名
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 留言内容
+     */
+    @TableField("content")
+    private String content;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("mod_time")
+    private LocalDateTime modTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 48 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TaskFile.java

@@ -0,0 +1,48 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TaskFile extends Model<TaskFile> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 任务id
+     */
+    @TableField("task_id")
+    private Integer taskId;
+
+    /**
+     * file_mapping id
+     */
+    @TableField("file_mapping_id")
+    private Integer fileMappingId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 45 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TaskGroup.java

@@ -0,0 +1,45 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TaskGroup extends Model<TaskGroup> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    @TableField("name")
+    private String name;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 92 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TaskLog.java

@@ -0,0 +1,92 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TaskLog extends Model<TaskLog> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 任务id
+     */
+    @TableField("task_id")
+    private String taskId;
+
+    /**
+     * 任务描述
+     */
+    @TableField("task_desc")
+    private String taskDesc;
+
+    /**
+     * 执行人姓名
+     */
+    @TableField("executor_name")
+    private String executorName;
+
+    /**
+     * 任务级别
+     */
+    @TableField("task_level")
+    private String taskLevel;
+
+    /**
+     * 任务状态
+     */
+    @TableField("task_status")
+    private String taskStatus;
+
+    /**
+     * 截止时间
+     */
+    @TableField("end_date")
+    private String endDate;
+
+    /**
+     * 阶段
+     */
+    @TableField("stages")
+    private String stages;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_date")
+    private LocalDateTime updateDate;
+
+    /**
+     * 修改人
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 修改人姓名
+     */
+    @TableField("user_name")
+    private String userName;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}

+ 95 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/VcompanyCustomerContact.java

@@ -0,0 +1,95 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * VIEW
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class VcompanyCustomerContact extends Model<VcompanyCustomerContact> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司表主键
+     */
+    @TableField("id")
+    private Integer id;
+
+    /**
+     * 公司名
+     */
+    @TableField("company_name")
+    private String companyName;
+
+    /**
+     * 公司规模
+     */
+    @TableField("staff_count_max")
+    private Integer staffCountMax;
+
+    /**
+     * 会员到期时间
+     */
+    @TableField("expiration_date")
+    private LocalDateTime expirationDate;
+
+    /**
+     * 选择的套餐(单位:/年)
+     */
+    @TableField("set_meal")
+    private Integer setMeal;
+
+    /**
+     * 名字
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 手机号 登录账号
+     */
+    @TableField("phone")
+    private String phone;
+
+    /**
+     * 是否联系过
+     */
+    @TableField("contacted")
+    private Boolean contacted;
+
+    /**
+     * 客户反馈
+     */
+    @TableField("feedback")
+    private String feedback;
+
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 创建时间
+     */
+    @TableField("c_time")
+    private LocalDateTime cTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserVO.java

@@ -1,5 +1,6 @@
 package com.management.platform.entity.vo;
 
+import com.management.platform.entity.Company;
 import com.management.platform.entity.User;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -13,4 +14,5 @@ public class UserVO extends User {
     private Long remainingTime;
     //是否是项目经理
     private boolean isLeader;
+    private Company company;
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/CompanyCustomerContactMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.CompanyCustomerContact;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+public interface CompanyCustomerContactMapper extends BaseMapper<CompanyCustomerContact> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectDocfolderMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ProjectDocfolder;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface ProjectDocfolderMapper extends BaseMapper<ProjectDocfolder> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectDocumentMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ProjectDocument;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface ProjectDocumentMapper extends BaseMapper<ProjectDocument> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/StagesMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.Stages;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface StagesMapper extends BaseMapper<Stages> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskCommentMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.TaskComment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskCommentMapper extends BaseMapper<TaskComment> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskFileMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.TaskFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskFileMapper extends BaseMapper<TaskFile> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskGroupMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.TaskGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskGroupMapper extends BaseMapper<TaskGroup> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskLogMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.TaskLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskLogMapper extends BaseMapper<TaskLog> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.Task;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskMapper extends BaseMapper<Task> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/VcompanyCustomerContactMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.VcompanyCustomerContact;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * VIEW Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+public interface VcompanyCustomerContactMapper extends BaseMapper<VcompanyCustomerContact> {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/CompanyCustomerContactService.java

@@ -0,0 +1,20 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.CompanyCustomerContact;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+public interface CompanyCustomerContactService extends IService<CompanyCustomerContact> {
+
+    HttpRespMsg getList(Integer page, Integer pageSize);
+
+    HttpRespMsg handle(Integer companyId, String feedback);
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectDocfolderService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ProjectDocfolder;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface ProjectDocfolderService extends IService<ProjectDocfolder> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectDocumentService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ProjectDocument;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface ProjectDocumentService extends IService<ProjectDocument> {
+
+}

+ 12 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -5,6 +5,7 @@ import com.management.platform.entity.Project;
 import com.management.platform.util.HttpRespMsg;
 
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDate;
 
 /**
  * <p>
@@ -17,9 +18,14 @@ import javax.servlet.http.HttpServletRequest;
 public interface ProjectService extends IService<Project> {
     HttpRespMsg getProjectList(HttpServletRequest request);
 
-    HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, HttpServletRequest request);
+    HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField, Integer status, HttpServletRequest request);
 
-    HttpRespMsg editProject(Integer id, String name, String code, String[] userIds, String inchargerId, HttpServletRequest request);
+    HttpRespMsg editProject(Integer id, String name, String code, String[] userIds, String inchargerId,
+                            String planStartDate,
+                            String planEndDate,
+                            Integer level,
+                            Integer budget,
+                            HttpServletRequest request);
 
     HttpRespMsg deleteProject(Integer id);
 
@@ -28,4 +34,8 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg getProjectCost(String startDate, String endDate, Integer projectId, HttpServletRequest request);
 
     HttpRespMsg exportTimeCost(String startDate, String endDate, HttpServletRequest request);
+
+    HttpRespMsg updateProgress(Integer id, Integer progress, HttpServletRequest request);
+
+    HttpRespMsg updateStatus(Integer id, Integer status, LocalDate finishDate, HttpServletRequest request);
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/StagesService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.Stages;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface StagesService extends IService<Stages> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskCommentService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.TaskComment;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskCommentService extends IService<TaskComment> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskFileService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.TaskFile;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskFileService extends IService<TaskFile> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskGroupService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.TaskGroup;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskGroupService extends IService<TaskGroup> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskLogService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.TaskLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskLogService extends IService<TaskLog> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.Task;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+public interface TaskService extends IService<Task> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/VcompanyCustomerContactService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.VcompanyCustomerContact;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * VIEW 服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+public interface VcompanyCustomerContactService extends IService<VcompanyCustomerContact> {
+
+}

+ 58 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/CompanyCustomerContactServiceImpl.java

@@ -0,0 +1,58 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.management.platform.entity.CompanyCustomerContact;
+import com.management.platform.entity.VcompanyCustomerContact;
+import com.management.platform.mapper.CompanyCustomerContactMapper;
+import com.management.platform.mapper.VcompanyCustomerContactMapper;
+import com.management.platform.service.CompanyCustomerContactService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+@Service
+public class CompanyCustomerContactServiceImpl extends ServiceImpl<CompanyCustomerContactMapper, CompanyCustomerContact> implements CompanyCustomerContactService {
+    @Resource
+    private VcompanyCustomerContactMapper vcompanyCustomerContactMapper;
+    @Resource
+    private CompanyCustomerContactMapper companyCustomerContactMapper;
+
+    @Override
+    public HttpRespMsg getList(Integer pageIndex, Integer pageSize) {
+        QueryWrapper<VcompanyCustomerContact> queryWrapper = new QueryWrapper<VcompanyCustomerContact>();
+        queryWrapper.orderByDesc("id");
+        HttpRespMsg msg = new HttpRespMsg();
+
+        msg.data = vcompanyCustomerContactMapper.selectPage(new Page<>(pageIndex, pageSize), queryWrapper);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg handle(Integer companyId, String feedback) {
+        CompanyCustomerContact item = new CompanyCustomerContact();
+        item.setCompanyId(companyId);
+        item.setContacted(true);
+        item.setFeedback(feedback);
+        item.setIndate(LocalDateTime.now());
+        if (companyCustomerContactMapper.selectById(companyId) == null) {
+            companyCustomerContactMapper.insert(item);
+        } else {
+            companyCustomerContactMapper.updateById(item);
+        }
+        return new HttpRespMsg();
+    }
+
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectDocfolderServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ProjectDocfolder;
+import com.management.platform.mapper.ProjectDocfolderMapper;
+import com.management.platform.service.ProjectDocfolderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Service
+public class ProjectDocfolderServiceImpl extends ServiceImpl<ProjectDocfolderMapper, ProjectDocfolder> implements ProjectDocfolderService {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectDocumentServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ProjectDocument;
+import com.management.platform.mapper.ProjectDocumentMapper;
+import com.management.platform.service.ProjectDocumentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Service
+public class ProjectDocumentServiceImpl extends ServiceImpl<ProjectDocumentMapper, ProjectDocument> implements ProjectDocumentService {
+
+}

+ 65 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -73,7 +74,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     //分页获取项目列表
     @Override
-    public HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, HttpServletRequest request) {
+    public HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
+                                      Integer status,HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             //通过公司id获取该公司所有的项目列表
@@ -87,6 +89,18 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             } else {
                 queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
             }
+            if (!StringUtils.isEmpty(keyword)) {
+                if (searchField == 1) {
+                    //按照项目名称模糊匹配
+                    queryWrapper.like("project_name", keyword);
+                } else if (searchField == 2){
+                    queryWrapper.like("project_code", keyword);
+                }
+
+            }
+            if (status != null && status != 0) {
+                queryWrapper.eq("status", status);
+            }
             IPage<Project> projectIPage = projectMapper.selectPage(new Page<>(pageIndex, pageSize),
                     queryWrapper);
             List<Project> projectList = projectIPage.getRecords();
@@ -119,7 +133,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
     //添加或编辑项目
     @Override
-    public HttpRespMsg editProject(Integer id, String name, String code, String[] userIds, String inchargerId, HttpServletRequest request) {
+    public HttpRespMsg editProject(Integer id, String name, String code, String[] userIds, String inchargerId,
+                                   String planStartDate,
+                                   String planEndDate,
+                                   Integer level,
+                                   Integer budget,
+                                   HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
@@ -133,7 +152,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (count > 0) {
                         httpRespMsg.setError("提交失败:项目编号已存在");
                     } else {
-                        Project project = new Project().setProjectName(name).setCompanyId(companyId).setProjectCode(code).setInchargerId(inchargerId);
+                        Project project = new Project().setProjectName(name).setCompanyId(companyId).setProjectCode(code).setInchargerId(inchargerId)
+                                .setPlanStartDate(LocalDate.parse(planStartDate))
+                                .setPlanEndDate(LocalDate.parse(planEndDate))
+                                .setLevel(level)
+                                .setBudget(budget);
                         if (projectMapper.insert(project) == 0) {
                             httpRespMsg.setError("操作失败");
                         }
@@ -147,7 +170,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 if (count > 0) {
                     httpRespMsg.setError("提交失败:项目编号已存在");
                 } else {
-                    if (projectMapper.updateById(new Project().setProjectName(name).setId(id).setCompanyId(companyId).setProjectCode(code).setInchargerId(inchargerId)) == 0) {
+                    if (projectMapper.updateById(new Project().setProjectName(name).setId(id).setCompanyId(companyId).setProjectCode(code).setInchargerId(inchargerId)
+                            .setPlanStartDate(LocalDate.parse(planStartDate))
+                            .setPlanEndDate(LocalDate.parse(planEndDate))
+                            .setLevel(level)
+                            .setBudget(budget)) == 0) {
                         httpRespMsg.setError("操作失败");
                     } else {
                         //修改项目相关表
@@ -297,6 +324,40 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg updateProgress(Integer id, Integer progress, HttpServletRequest request) {
+        User user = userMapper.selectById(request.getHeader("Token"));
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        Project project = projectMapper.selectById(id);
+        if (user.getId().equals(project.getInchargerId()) || (user.getCompanyId().equals(project.getCompanyId()) && user.getRole() > 0)) {
+            project.setProgress(progress);
+            //更新进度
+            projectMapper.updateById(project);
+        } else {
+            httpRespMsg.setError("无权操作");
+        }
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg updateStatus(Integer id, Integer status, LocalDate finishDate, HttpServletRequest request) {
+        User user = userMapper.selectById(request.getHeader("Token"));
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        Project project = projectMapper.selectById(id);
+        if (user.getId().equals(project.getInchargerId()) || (user.getCompanyId().equals(project.getCompanyId()) && user.getRole() > 0)) {
+            project.setStatus(status);
+            if (status == 2) {
+                project.setFinishDate(finishDate);
+            }
+            //更新状态
+            projectMapper.updateById(project);
+
+        } else {
+            httpRespMsg.setError("无权操作");
+        }
+        return httpRespMsg;
+    }
+
     //获取某个项目每个人分别需要的工时
     @Override
     public HttpRespMsg getProjectCost(String startDate, String endDate, Integer projectId, HttpServletRequest request) {

+ 3 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -146,12 +146,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                 memb.put("data", rList);
                                 memb.put("cost", total);
                                 double reportTime = 0;
-                                if (list.size() > 0) {
-                                    for (Map<String, Object> m : list) {
+                                if (rList.size() > 0) {
+                                    for (Map<String, Object> m : rList) {
                                         double t = (double) m.get("time");
                                         reportTime += t;
                                     }
-                                    memb.put("state", list.get(0).get("state"));
+                                    memb.put("state", rList.get(0).get("state"));
                                 }
                                 DecimalFormat df = new DecimalFormat("0.00");
                                 memb.put("reportTime", df.format(reportTime));

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/StagesServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.Stages;
+import com.management.platform.mapper.StagesMapper;
+import com.management.platform.service.StagesService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Service
+public class StagesServiceImpl extends ServiceImpl<StagesMapper, Stages> implements StagesService {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskCommentServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.TaskComment;
+import com.management.platform.mapper.TaskCommentMapper;
+import com.management.platform.service.TaskCommentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Service
+public class TaskCommentServiceImpl extends ServiceImpl<TaskCommentMapper, TaskComment> implements TaskCommentService {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskFileServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.TaskFile;
+import com.management.platform.mapper.TaskFileMapper;
+import com.management.platform.service.TaskFileService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Service
+public class TaskFileServiceImpl extends ServiceImpl<TaskFileMapper, TaskFile> implements TaskFileService {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.TaskGroup;
+import com.management.platform.mapper.TaskGroupMapper;
+import com.management.platform.service.TaskGroupService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Service
+public class TaskGroupServiceImpl extends ServiceImpl<TaskGroupMapper, TaskGroup> implements TaskGroupService {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskLogServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.TaskLog;
+import com.management.platform.mapper.TaskLogMapper;
+import com.management.platform.service.TaskLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Service
+public class TaskLogServiceImpl extends ServiceImpl<TaskLogMapper, TaskLog> implements TaskLogService {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.Task;
+import com.management.platform.mapper.TaskMapper;
+import com.management.platform.service.TaskService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-19
+ */
+@Service
+public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService {
+
+}

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -85,6 +85,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             }
             //检测密码正确时
             UserVO userVO = new UserVO().setCompanyName(company.getCompanyName());
+            userVO.setCompany(company);
             BeanUtils.copyProperties(userList.get(0), userVO);
             //还要多返回一个公司名字
             userVO.setPassword("");

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/VcompanyCustomerContactServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.VcompanyCustomerContact;
+import com.management.platform.mapper.VcompanyCustomerContactMapper;
+import com.management.platform.service.VcompanyCustomerContactService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * VIEW 服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2021-04-07
+ */
+@Service
+public class VcompanyCustomerContactServiceImpl extends ServiceImpl<VcompanyCustomerContactMapper, VcompanyCustomerContact> implements VcompanyCustomerContactService {
+
+}

+ 3 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/CodeGenerator.java

@@ -92,7 +92,7 @@ public class CodeGenerator {
 
         // 数据源配置
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://47.100.37.243:7644/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8");
+        dsc.setUrl("jdbc:mysql://47.100.37.243:7644/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8");
 //        dsc.setSchemaName("public");
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
@@ -204,9 +204,9 @@ public class CodeGenerator {
         //若想要生成的实体类继承某个Controller,则可打开下面注释。写上需要继承的Controller的位置即可
 //        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
         //此处user是表名,多个英文逗号分割
-        strategy.setInclude("user");
+//        strategy.setInclude("project,project_docfolder,project_document,stages,task,task_comment,task_file,task_log");
 //        strategy.setExclude();//数据库表全生成
-//        strategy.setInclude(scanner("user").split(","));//表名,多个英文逗号分割
+        strategy.setInclude(scanner("请输入表名").split(","));//表名,多个英文逗号分割
         strategy.setControllerMappingHyphenStyle(true);
         //数据库表前缀,不配置这行的话,生成的类会带有T如:TUser,配置后即可将前缀去掉
 //        strategy.setTablePrefix("tb_");

+ 8 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/ListUtil.java

@@ -144,4 +144,12 @@ public class ListUtil {
 		String str = "123|456";
 		System.out.println(str.contains("|"));
 	}
+
+	public static List<Integer> fromIntegers(int[] data) {
+		List<Integer> ids = new ArrayList<>();
+		for (int i : data) {
+			ids.add(i);
+		}
+		return ids;
+	}
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -17,7 +17,7 @@ spring:
 #    url: jdbc:mysql://localhost:3306/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
 #    username: root
 #    password: p011430seya1026
-    url: jdbc:mysql://47.100.37.243:7644/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+    url: jdbc:mysql://47.100.37.243:7644/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
     username: root
     password: Ziyu1026!@
     hikari:

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CompanyCustomerContactMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.CompanyCustomerContactMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.CompanyCustomerContact">
+        <id column="company_id" property="companyId" />
+        <result column="contacted" property="contacted" />
+        <result column="feedback" property="feedback" />
+        <result column="indate" property="indate" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        company_id, contacted, feedback, indate
+    </sql>
+
+</mapper>

+ 6 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/CompanyMapper.xml

@@ -9,11 +9,16 @@
         <result column="staff_count_max" property="staffCountMax" />
         <result column="expiration_date" property="expirationDate" />
         <result column="set_meal" property="setMeal" />
+        <result column="package_worktime" property="packageWorktime" />
+        <result column="package_project" property="packageProject" />
+        <result column="package_contract" property="packageContract" />
+        <result column="package_oa" property="packageOa" />
+        <result column="package_etimecard" property="packageEtimecard" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_name, staff_count_max, expiration_date, set_meal
+        id, company_name, staff_count_max, expiration_date, set_meal, package_worktime, package_project, package_contract, package_oa, package_etimecard
     </sql>
 
 </mapper>

+ 23 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectDocfolderMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ProjectDocfolderMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ProjectDocfolder">
+        <id column="id" property="id" />
+        <result column="project_id" property="projectId" />
+        <result column="folder" property="folder" />
+        <result column="parent_fid" property="parentFid" />
+        <result column="path" property="path" />
+        <result column="indate" property="indate" />
+        <result column="update_time" property="updateTime" />
+        <result column="creator_id" property="creatorId" />
+        <result column="creator_name" property="creatorName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, project_id, folder, parent_fid, path, indate, update_time, creator_id, creator_name
+    </sql>
+
+</mapper>

+ 26 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectDocumentMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ProjectDocumentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ProjectDocument">
+        <id column="id" property="id" />
+        <result column="document_name" property="documentName" />
+        <result column="server_name" property="serverName" />
+        <result column="url" property="url" />
+        <result column="creator_id" property="creatorId" />
+        <result column="creator_name" property="creatorName" />
+        <result column="indate" property="indate" />
+        <result column="project_id" property="projectId" />
+        <result column="folder_id" property="folderId" />
+        <result column="size" property="size" />
+        <result column="document_type" property="documentType" />
+        <result column="flat" property="flat" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, document_name, server_name, url, creator_id, creator_name, indate, project_id, folder_id, size, document_type, flat
+    </sql>
+
+</mapper>

+ 9 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -9,12 +9,20 @@
         <result column="company_id" property="companyId" />
         <result column="project_code" property="projectCode" />
         <result column="incharger_id" property="inchargerId" />
+        <result column="plan_start_date" property="planStartDate" />
+        <result column="plan_end_date" property="planEndDate" />
+        <result column="progress" property="progress" />
+        <result column="level" property="level" />
+        <result column="status" property="status" />
+        <result column="finish_date" property="finishDate" />
+        <result column="budget" property="budget" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, project_name, company_id, project_code, incharger_id
+        id, project_name, company_id, project_code, incharger_id, plan_start_date, plan_end_date, progress, level, status, finish_date, budget
     </sql>
+
     <!--获取查询者所在公司每个项目的工时成本-->
     <select id="getParticipatedProject" resultType="java.util.Map">
         SELECT id, project_name AS projectName

+ 19 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/StagesMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.StagesMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.Stages">
+        <id column="id" property="id" />
+        <result column="stages_name" property="stagesName" />
+        <result column="project_id" property="projectId" />
+        <result column="sequence" property="sequence" />
+        <result column="group_id" property="groupId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, stages_name, project_id, sequence, group_id
+    </sql>
+
+</mapper>

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskCommentMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.TaskCommentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.TaskComment">
+        <id column="id" property="id" />
+        <result column="task_id" property="taskId" />
+        <result column="stages_id" property="stagesId" />
+        <result column="user_id" property="userId" />
+        <result column="user_name" property="userName" />
+        <result column="content" property="content" />
+        <result column="create_time" property="createTime" />
+        <result column="mod_time" property="modTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, task_id, stages_id, user_id, user_name, content, create_time, mod_time
+    </sql>
+
+</mapper>

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskFileMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.TaskFileMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.TaskFile">
+        <id column="id" property="id" />
+        <result column="task_id" property="taskId" />
+        <result column="file_mapping_id" property="fileMappingId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, task_id, file_mapping_id
+    </sql>
+
+</mapper>

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskGroupMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.TaskGroupMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.TaskGroup">
+        <id column="id" property="id" />
+        <result column="project_id" property="projectId" />
+        <result column="name" property="name" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, project_id, name
+    </sql>
+
+</mapper>

+ 24 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskLogMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.TaskLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.TaskLog">
+        <result column="task_id" property="taskId" />
+        <result column="task_desc" property="taskDesc" />
+        <result column="executor_name" property="executorName" />
+        <result column="task_level" property="taskLevel" />
+        <result column="task_status" property="taskStatus" />
+        <result column="end_date" property="endDate" />
+        <result column="stages" property="stages" />
+        <result column="update_date" property="updateDate" />
+        <result column="user_id" property="userId" />
+        <result column="user_name" property="userName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        task_id, task_desc, executor_name, task_level, task_status, end_date, stages, update_date, user_id, user_name
+    </sql>
+
+</mapper>

+ 33 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.TaskMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.Task">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="task_desc" property="taskDesc" />
+        <result column="creater_id" property="createrId" />
+        <result column="creater_name" property="createrName" />
+        <result column="executor_id" property="executorId" />
+        <result column="executor_name" property="executorName" />
+        <result column="task_level" property="taskLevel" />
+        <result column="task_status" property="taskStatus" />
+        <result column="create_date" property="createDate" />
+        <result column="end_date" property="endDate" />
+        <result column="project_id" property="projectId" />
+        <result column="stages_id" property="stagesId" />
+        <result column="company_id" property="companyId" />
+        <result column="indate" property="indate" />
+        <result column="parent_tid" property="parentTid" />
+        <result column="group_id" property="groupId" />
+        <result column="seq" property="seq" />
+        <result column="plan_hours" property="planHours" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, name, task_desc, creater_id, creater_name, executor_id, executor_name, task_level, task_status, create_date, end_date, project_id, stages_id, company_id, indate, parent_tid, group_id, seq, plan_hours
+    </sql>
+
+</mapper>

+ 25 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/VcompanyCustomerContactMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.VcompanyCustomerContactMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.VcompanyCustomerContact">
+        <result column="id" property="id" />
+        <result column="company_name" property="companyName" />
+        <result column="staff_count_max" property="staffCountMax" />
+        <result column="expiration_date" property="expirationDate" />
+        <result column="set_meal" property="setMeal" />
+        <result column="name" property="name" />
+        <result column="phone" property="phone" />
+        <result column="contacted" property="contacted" />
+        <result column="feedback" property="feedback" />
+        <result column="indate" property="indate" />
+        <result column="c_time" property="cTime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, company_name, staff_count_max, expiration_date, set_meal, name, phone, contacted, feedback, indate, c_time
+    </sql>
+
+</mapper>

+ 23 - 0
fhKeeper/formulahousekeeper/timesheet/package-lock.json

@@ -4,6 +4,11 @@
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
+    "@tinymce/tinymce-vue": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/@tinymce/tinymce-vue/download/@tinymce/tinymce-vue-4.0.0.tgz",
+      "integrity": "sha1-aU4hTwcTcN+tGsGZBWNzBIV45u4="
+    },
     "abbrev": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -8163,6 +8168,11 @@
         "is-plain-obj": "^1.0.0"
       }
     },
+    "sortablejs": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npm.taobao.org/sortablejs/download/sortablejs-1.10.2.tgz",
+      "integrity": "sha1-bkA2TZE/mLhaFPZnj5K1wSIfUpA="
+    },
     "source-list-map": {
       "version": "0.1.8",
       "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
@@ -8502,6 +8512,11 @@
       "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
       "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
     },
+    "tinymce": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npm.taobao.org/tinymce/download/tinymce-5.7.1.tgz?cache=0&sync_timestamp=1615946148495&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftinymce%2Fdownload%2Ftinymce-5.7.1.tgz",
+      "integrity": "sha1-ZYpvtMfVOoSWzAD42jP0uCkNoG0="
+    },
     "to-arraybuffer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
@@ -9100,6 +9115,14 @@
       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
       "dev": true
     },
+    "vuedraggable": {
+      "version": "2.24.3",
+      "resolved": "https://registry.npm.taobao.org/vuedraggable/download/vuedraggable-2.24.3.tgz",
+      "integrity": "sha1-Q8k4SbdGokzlA+Ej1bJZxwG6DRk=",
+      "requires": {
+        "sortablejs": "1.10.2"
+      }
+    },
     "vuex": {
       "version": "2.5.0",
       "resolved": "https://registry.npmjs.org/vuex/-/vuex-2.5.0.tgz",

+ 3 - 0
fhKeeper/formulahousekeeper/timesheet/package.json

@@ -10,15 +10,18 @@
     "build": "node build/build.js"
   },
   "dependencies": {
+    "@tinymce/tinymce-vue": "^4.0.0",
     "axios": "^0.15.3",
     "echarts": "^3.8.5",
     "element-ui": "^2.13.0",
     "font-awesome": "^4.7.0",
     "jquery": "^3.4.1",
     "nprogress": "^0.2.0",
+    "tinymce": "^5.7.1",
     "vue": "^2.6.10",
     "vue-clipboard2": "^0.3.0",
     "vue-router": "^2.3.0",
+    "vuedraggable": "^2.24.3",
     "vuex": "^2.0.0-rc.6"
   },
   "devDependencies": {

+ 5 - 5
fhKeeper/formulahousekeeper/timesheet/src/main.js

@@ -65,13 +65,13 @@ router.beforeEach((to, from, next) => {
             if(user != null) {
                 addRouFlag = true
                 if(user.role == 0) {
-                    var getRoutes = baseRoleGetRouters(user.leader?leaderRouter:staffRouter, 1);
+                    var getRoutes = baseRoleGetRouters(user.leader?leaderRouter:staffRouter, user);
                     global.antRouter = fixedRouter.concat(getRoutes);
                     router.addRoutes(fixedRouter.concat(getRoutes));
                     router.options.routes = fixedRouter.concat(getRoutes);
                     router.push({ path: to.path })
                 } else {
-                    var getRoutes = baseRoleGetRouters(manageRouter, 1);
+                    var getRoutes = baseRoleGetRouters(manageRouter, user);
                     global.antRouter = fixedRouter.concat(getRoutes);
                     router.addRoutes(fixedRouter.concat(getRoutes));
                     router.options.routes = fixedRouter.concat(getRoutes);
@@ -83,13 +83,13 @@ router.beforeEach((to, from, next) => {
     }
 })
 
-function baseRoleGetRouters(allRoutes, roles) {
+function baseRoleGetRouters(allRoutes, user) {
     // allRoutes是动态路由表
     // roles是取到的用户角色,数组
     let rightRoutes = allRoutes.filter((route, index) => {
-        if (true) {
+        if (route.group == null || (user.company.packageProject == 1 && route.group == 'packageProject')) {
             if (route.children && route.children.length) {
-                route.children = baseRoleGetRouters(route.children, roles)
+                route.children = baseRoleGetRouters(route.children, user)
             }
             return true
         }

+ 23 - 1
fhKeeper/formulahousekeeper/timesheet/src/routes.js

@@ -22,6 +22,8 @@ import list from './views/project/list.vue'
 import cost from './views/project/cost.vue'
 import proDetail from './views/project/detail.vue'
 import depDetail from './views/project/detailDep.vue'
+import task from './views/task/list.vue'
+import projectInside from  './views/project/projectInside.vue'
 
 // 团队管理
 import team from './views/team/index.vue'
@@ -30,7 +32,7 @@ import team from './views/team/index.vue'
 import timetype from './views/settings/timetype.vue';
 
 import finance from './views/project/finance';
-
+import Market from './views/market/list';
 Vue.use(Router)
 
 export const fixedRouter = [
@@ -45,6 +47,12 @@ export const fixedRouter = [
         component: Register,
         name: '',
         hidden: true
+    },
+    {
+        path: '/market',
+        component: Market,
+        name: '',
+        hidden: true
     }
 ]
 
@@ -106,6 +114,19 @@ export const manageRouter = [
             { path: '/finance', component: finance, name: '财务核算成本' },
         ]
     },
+    //任务列表
+    {
+        path: '/',
+        component: Home,
+        name: '任务列表',
+        iconCls: 'iconfont firerock-iconxiangmu',
+        leaf: false,
+        group:'packageProject',
+        children: [
+            { path: '/task', component: task, name: '任务列表' },
+        ]
+    },
+
     //项目管理
     {
         path: '/',
@@ -115,6 +136,7 @@ export const manageRouter = [
         leaf: true,
         children: [
             { path: '/list', component: list, name: '项目管理' },
+            { path: '/projectInside/:id', component: projectInside, name: '项目查看' },
         ]
     },
     //组织架构

+ 236 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/market/list.vue

@@ -0,0 +1,236 @@
+<template>
+    <section>
+        <!--工具条-->
+        <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
+            <el-form :inline="true">
+                <el-form-item label="公司列表">
+                    
+                </el-form-item>
+            </el-form>
+        </el-col>
+
+        <!--列表-->
+        <el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+            <el-table-column type="index" width="60">
+                <template slot-scope="scope" >
+                        {{scope.$index+1+(page-1)*size}}
+                    </template>
+            </el-table-column>
+            <el-table-column prop="companyName" label="公司名称"  ></el-table-column>
+            <el-table-column prop="ctime" label="注册时间"  ></el-table-column>
+            <el-table-column prop="name" label="联系人" ></el-table-column>
+            <el-table-column prop="phone" label="联系方式"  width="150"></el-table-column>
+            <el-table-column prop="contacted" label="是否联系" >
+                <template slot-scope="scope">
+                    <font v-if="scope.row.contacted" color="green">已联系</font>
+                    <font v-if="!scope.row.contacted" color="red">未联系</font>
+                </template>
+            </el-table-column>
+            <el-table-column prop="feedback" label="客户反馈" ></el-table-column>
+            <el-table-column label="操作" width="290">
+                <template slot-scope="scope">
+                    <el-button size="small" type="primary" @click="handleAdd(scope.$index, scope.row)">填写反馈</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+
+        <!--工具条-->
+        <el-col :span="24" class="toolbar">
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :page-sizes="[20 , 50 , 80 , 100]"
+                :page-size="20"
+                layout="total, sizes, prev, pager, next"
+                :total="total"
+                style="float:right;"
+            ></el-pagination>
+        </el-col>
+
+        <!--新增界面-->
+        <el-dialog :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth" width="600px">
+            <el-form ref="form1" :model="addForm" :rules="rules" label-width="100px">
+                
+                <el-form-item label="公司名称" prop="companyName">
+                    {{addForm.companyName}}
+                </el-form-item>
+                <el-form-item label="反馈结果">
+                    <el-input type="area" v-model="addForm.feedback"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click.native="addFormVisible = false">取消</el-button>
+                <el-button type="primary" @click="submitInsert" :loading="addLoading">提交</el-button>
+            </div>
+        </el-dialog>
+
+    </section>
+</template>
+<style scoped>
+.input-with-select .el-input-group__prepend {
+    background-color: #fff;
+  }
+.line {
+    padding:10px;
+}
+.line span{
+    font-size:18px;
+}
+.line span:nth-child(even){
+    float:right;
+}
+</style>
+<script>
+    import util from "../../common/js/util";
+
+    export default {
+        data() {
+            return {
+                searchField:null,
+                keyword:null,
+                user: JSON.parse(sessionStorage.getItem("user")),
+                userDetailVisible: false,
+                userDetail:{},
+                date: new Date(),
+                users: [],
+                participator:[],
+                tableHeight: 0,
+                listLoading: false,
+                total: 0,
+                page: 1,
+                size: 20,
+                list: [],
+                subProjectVisible: false,
+                subProjectList: [],//子项目列表
+                currentProject:{},
+                addSubProject: false,
+                addFormVisible: false,
+                addLoading: false,
+                title: "",
+                addForm: {
+                    companyName: '',
+                    companyId:null,
+                    feedback:null,
+                },
+                rules: {
+                    feedback: [{ required: true, message: "请输入客户反馈", trigger: "blur" }],
+                }
+            };
+        },
+        methods: {
+            
+            //分页
+            handleCurrentChange(val) {
+                this.page = val;
+                this.getList();
+            },
+
+            handleSizeChange(val) {
+                this.size = val;
+                this.getList();
+            },
+
+            //获取项目列表
+            getList() {
+                this.listLoading = true;
+                this.http.post('/company-customer-contact/getList', {
+                    pageIndex: this.page,
+                    pageSize: this.size,
+                },
+                res => {
+                    this.listLoading = false;
+                    if (res.code == "ok") {
+                        var list = res.data.records;
+                        for(var i in list) {
+                            var participator = list[i].participator , str = "";
+                            for(var j in participator) {
+                                if(j == participator.length-1) {
+                                    str += participator[j].name
+                                } else {
+                                    str += participator[j].name + ','
+                                }
+                            }
+                            list[i].userNames = str;
+                        }
+                        this.list = list;
+                        this.total = res.data.total;
+                    } else {
+                        this.$message({
+                        message: res.msg,
+                        type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.listLoading = false;
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
+
+            //显示新增界面
+            handleAdd(i, item) {
+                var list = item.participator , arr = [];
+                for(var j in list) {
+                    arr.push(list[j].id)
+                }
+                
+                this.addForm = {
+                    companyId: item.id,
+                    companyName: item.companyName,
+                    feedback: item.feedback,
+                }
+                this.addFormVisible = true;
+            },
+
+            submitInsert() {
+                this.$refs.form1.validate(valid => {
+                    if (valid) {
+                        this.addLoading = true;
+                        this.http.post('/company-customer-contact/handle',this.addForm,
+                        res => {
+                            this.addLoading = false;
+                            if (res.code == "ok") {
+                                this.$message({
+                                    message: "填写成功",
+                                    type: "success"
+                                });
+                                this.addFormVisible = false;
+                                this.getList();
+                            } else {
+                                this.$message({
+                                    message: res.msg,
+                                    type: "error"
+                                });
+                            }
+                        },
+                        error => {
+                            this.listLoading = false;
+                            this.$message({
+                                message: error,
+                                type: "error"
+                            });
+                            }
+                        );
+                    }
+                });
+            },
+        },
+        created() {
+            let height = window.innerHeight;
+            this.tableHeight = height - 115;
+            const that = this;
+            window.onresize = function temp() {
+                that.tableHeight = window.innerHeight - 115;
+            };
+        },
+        mounted() {
+            this.getList();
+        }
+    };
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 107 - 8
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -3,6 +3,30 @@
         <!--工具条-->
         <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
             <el-form :inline="true">
+                <el-form-item label="项目列表">
+                    
+                </el-form-item>
+                <el-form-item >
+                    <div>
+                    <el-input style="float:left;" v-model="keyword" class="input-with-select" placeholder="请输入项目名称关键字" clearable="true">
+                        <el-select v-model="searchField" style="width:120px;"  slot="prepend" placeholder="请选择">
+                            <el-option label="项目名称" value=1 ></el-option>
+                            <el-option label="项目编码" value=2></el-option>
+                        </el-select>
+                        <el-button slot="append" @click="searchList" icon="el-icon-search"></el-button>
+                    </el-input>
+                    </div>
+                </el-form-item>
+
+                <el-form-item v-if="user.company.packageProject==1">
+                    <span style="margin-left:10px;margin-right:10px;">状态</span>
+                    <el-select v-model="status" style="width:120px;"  placeholder="请选择" @change="searchList">
+                            <el-option label="全部" value=0 ></el-option>
+                            <el-option label="进行中" value=1 ></el-option>
+                            <el-option label="已完成" value=2 ></el-option>
+                            <el-option label="已撤销" value=3 ></el-option>
+                        </el-select>
+                </el-form-item>
                 <el-form-item style="float:right;">
                     <el-link type="primary" :underline="false" @click="handleAdd(-1,null)">新增项目</el-link>
                 </el-form-item>
@@ -17,20 +41,34 @@
                     </template>
             </el-table-column>
             <el-table-column prop="projectCode" label="项目编码" sortable width="150"></el-table-column>
-            <el-table-column prop="projectName" label="项目名称" sortable></el-table-column>
+            <el-table-column prop="projectName" label="项目名称" sortable>
+                 <template slot-scope="scope">
+                    <el-link type="primary" :href="'#/projectInside/'+scope.row.id">{{scope.row.projectName}}</el-link>
+                </template>
+            </el-table-column>
             <el-table-column prop="inchargerName" label="负责人" sortable width="150">
                 <template slot-scope="scope">
                     <el-link type="primary" @click="showUser(scope.row.inchargerId)">{{scope.row.inchargerName}}</el-link>
                 </template>
             </el-table-column>
             <el-table-column prop="participator" label="参与者" sortable>
-                
                 <template slot-scope="scope">
                     <v-for v-for="par in scope.row.participator" :key="par.id" >
                         <el-link style="margin-right:10px;" type="primary" @click="showUser(par.id)">{{par.name}}</el-link>
                     </v-for>
                 </template>
             </el-table-column>
+            <!--专业项目协作-->
+            <el-table-column prop="status" label="状态" width="100" v-if="user.company.packageProject == 1">
+                <template slot-scope="scope">
+                    {{scope.row.status == null?"-":statusTxt[scope.row.status]}}
+                </template>
+            </el-table-column>
+            <el-table-column prop="progress" label="完成度" width="100"  v-if="user.company.packageProject == 1">
+                <template slot-scope="scope">
+                    {{scope.row.progress==null?"-":scope.row.progress}}%
+                </template>
+            </el-table-column>
             <el-table-column label="操作" width="290">
                 <template slot-scope="scope">
                     <el-button v-if="user.role>0" size="small" type="primary" @click="subProject(scope.row)">子项目</el-button>
@@ -55,7 +93,7 @@
 
         <!--新增界面-->
         <el-dialog :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth" width="600px">
-            <el-form ref="form1" :model="addForm" :rules="rules" label-width="100px">
+            <el-form ref="form1" :model="addForm" :rules="rules" label-width="120px">
                 <el-form-item label="项目编号" >
                     <el-input v-model="addForm.code" :disabled="user.role==0" placeholder="请输入项目编号" clearable></el-input>
                 </el-form-item>
@@ -72,7 +110,32 @@
                         <el-option v-for="item in participator" :key="item.id" :label="item.name" :value="item.id"></el-option>
                     </el-select>
                 </el-form-item>
-                
+                <!--专业项目协作版本功能 -->
+                <el-form-item label="级别" >
+                    <el-select v-model="addForm.level" v-if="user.company.packageProject==1" placeholder="请选择负责人" style="width:32%;" >
+                        <el-option v-for="item in importanceList" :key="item.id" :label="item.label" :value="item.id"></el-option>
+                    </el-select>
+                    <span style="margin-left:50px;margin-right:10px;">项目预算</span>
+                    <el-input v-model="addForm.budget"  v-if="user.company.packageProject==1"  style="width:32%;"
+                    placeholder="整数" clearable @keyup.native="number"></el-input><span style="margin-left:10px;">元</span>
+                </el-form-item>
+                <el-form-item label="开始日期" prop="planStartDate">
+                    <el-date-picker v-model="addForm.planStartDate" v-if="user.company.packageProject==1" 
+                     :editable="false" 
+                     format="yyyy-MM-dd" 
+                     value-format="yyyy-MM-dd"
+                     :clearable="false" type="date" 
+                     placeholder="选择日期"></el-date-picker>
+                </el-form-item>
+                <el-form-item label="截止日期" prop="planEndDate">
+                    <el-date-picker v-model="addForm.planEndDate" v-if="user.company.packageProject==1" 
+                     :editable="false" 
+                     format="yyyy-MM-dd" 
+                     value-format="yyyy-MM-dd"
+                     :clearable="false" type="date" 
+                     placeholder="选择日期"></el-date-picker>
+                </el-form-item>
+               
             </el-form>
             <div slot="footer" class="dialog-footer">
                 <el-button @click.native="addFormVisible = false">取消</el-button>
@@ -129,6 +192,9 @@
     </section>
 </template>
 <style scoped>
+.input-with-select .el-input-group__prepend {
+    background-color: #fff;
+  }
 .line {
     padding:10px;
 }
@@ -145,6 +211,11 @@
     export default {
         data() {
             return {
+                status:null,
+                statusTxt:["-","进行中","已完成","已撤销"],
+                importanceList:[{id:1,label:'正常'},{id:2,label:'紧急'},{id:3,label:'重要'},{id:4,label:'重要且紧急'}],
+                searchField:null,
+                keyword:null,
                 user: JSON.parse(sessionStorage.getItem("user")),
                 userDetailVisible: false,
                 userDetail:{},
@@ -167,6 +238,7 @@
                 addForm: {
                     name: '',
                     userId: [],
+                    level:1,
                 },
                 rules: {
                     name: [{ required: true, message: "请输入项目名称", trigger: "blur" }],
@@ -174,6 +246,10 @@
             };
         },
         methods: {
+            number(){  
+             this.addForm.budget = this.addForm.budget.replace(/[^\.\d]/g,'');
+                this.addForm.budget = this.addForm.budget.replace('.','');
+          },
             deleteSubPro(subProject) {
                 this.$confirm("确定要删除子项目" + subProject.name + "吗?","删除子项目", {
                     confirmButtonText: "确定",
@@ -211,10 +287,13 @@
                 })
                 .catch(() => {});
             },
-            
+            searchList() {
+                this.page = 1;
+                this.getList();
+            },
             addNewSubProject(subProject) {
                 if (subProject == null) {
-                    this.addForm = {projectId: this.currentProject.id}
+                    this.addForm = {projectId: this.currentProject.id, level:1}
                 } else {
                     this.addForm = subProject;
                 }
@@ -319,7 +398,10 @@
                 this.listLoading = true;
                 this.http.post(this.port.project.listPage, {
                     pageIndex: this.page,
-                    pageSize: this.size
+                    pageSize: this.size,
+                    keyword:this.keyword,
+                    searchField: this.searchField,
+                    status: this.status
                 },
                 res => {
                     this.listLoading = false;
@@ -363,6 +445,7 @@
                         userId: [],
                         code:'',
                         inchargerId:null,
+                        level:1,
                     }
                 } else {
                     this.title = "修改项目";
@@ -376,7 +459,11 @@
                         name: item.projectName,
                         userId: arr,
                         code:item.projectCode,
-                        inchargerId: item.inchargerId
+                        inchargerId: item.inchargerId,
+                        level: item.level,
+                        planStartDate: item.planStartDate,
+                        planEndDate: item.planEndDate,
+                        budget: item.budget,
                     }
                     this.changeParticipator();
                 }
@@ -434,6 +521,18 @@
                         if(this.addForm.code != null) {
                             formData.append("code", this.addForm.code);
                         }
+                        if(this.addForm.planStartDate != null) {
+                            formData.append("planStartDate", this.addForm.planStartDate);
+                        }
+                        if(this.addForm.planEndDate != null) {
+                            formData.append("planEndDate", this.addForm.planEndDate);
+                        }
+                        if(this.addForm.level != null) {
+                            formData.append("level", this.addForm.level);
+                        }
+                        if(this.addForm.budget != null) {
+                            formData.append("budget", this.addForm.budget);
+                        }
                         
                         this.http.uploadFile(this.port.project.add,formData,
                         res => {