Explorar o código

建议和投诉模块编写完成

yl %!s(int64=2) %!d(string=hai) anos
pai
achega
a40aa5574a
Modificáronse 21 ficheiros con 1696 adicións e 227 borrados
  1. 38 17
      education_family/.idea/workspace.xml
  2. 5 59
      education_family/service/service-education/src/main/java/com/xunwang/education/controller/ComplaintController.java
  3. 2 27
      education_family/service/service-education/src/main/java/com/xunwang/education/controller/MySuggestionController.java
  4. 8 3
      education_family/service/service-education/src/main/java/com/xunwang/education/service/ComplaintService.java
  5. 2 1
      education_family/service/service-education/src/main/java/com/xunwang/education/service/MySuggestionService.java
  6. 57 3
      education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/ComplaintServiceImpl.java
  7. 5 6
      education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/MySuggestionServiceImpl.java
  8. 1 1
      education_uni/components/my-login/my-login.vue
  9. 5 2
      education_uni/components/my-userinfo/my-userinfo.vue
  10. 55 1
      education_uni/pages.json
  11. 247 0
      education_uni/subpkg/allcomplaintDetail/allcomplaintDetail.vue
  12. 33 17
      education_uni/subpkg/allsuggestionDetail/allsuggestionDetail.vue
  13. 183 0
      education_uni/subpkg/complaintDetail/complaintDetail.vue
  14. 224 0
      education_uni/subpkg/complaintHandle/complaintHandle.vue
  15. 197 0
      education_uni/subpkg/complaintManage/complaintManage.vue
  16. 161 0
      education_uni/subpkg/complaintWrite/complaintWrite.vue
  17. 178 0
      education_uni/subpkg/my_complaint/my_complaint.vue
  18. 3 7
      education_uni/subpkg/my_suggestion/my_suggestion.vue
  19. 2 0
      education_uni/subpkg/suggestionDetail/suggestionDetail.vue
  20. 31 8
      education_uni/subpkg/suggestionHandle/suggestionHandle.vue
  21. 259 75
      education_uni/subpkg/suggestionManage/suggestionManage.vue

+ 38 - 17
education_family/.idea/workspace.xml

@@ -4,15 +4,21 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="c798eeaa-3460-4908-b6b9-d794b9d8599e" name="Changes" comment="">
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MyFavoriteNeedsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MyFavoriteNeedsController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/resources/application.yml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/controller/MiniProgramOpenidUidController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-ucenter/src/main/java/com/xunwang/ucenter/controller/MiniProgramOpenidUidController.java" afterDir="false" />
+    <list default="true" id="c798eeaa-3460-4908-b6b9-d794b9d8599e" name="Changes" comment="Changes">
+      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/ComplaintController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/ComplaintController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MySuggestionController.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/controller/MySuggestionController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/ComplaintService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/ComplaintService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/MySuggestionService.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/MySuggestionService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/ComplaintServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/ComplaintServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/MySuggestionServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/service-education/src/main/java/com/xunwang/education/service/impl/MySuggestionServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/components/my-login/my-login.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/components/my-login/my-login.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/components/my-userinfo/my-userinfo.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/components/my-userinfo/my-userinfo.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/main.js" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/main.js" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/manifest.json" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/manifest.json" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/../education_uni/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/package-lock.json" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../education_uni/pages.json" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/pages.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/allsuggestionDetail/allsuggestionDetail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/allsuggestionDetail/allsuggestionDetail.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/my_suggestion/my_suggestion.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/my_suggestion/my_suggestion.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/suggestionDetail/suggestionDetail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/suggestionDetail/suggestionDetail.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/suggestionHandle/suggestionHandle.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/suggestionHandle/suggestionHandle.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../education_uni/subpkg/suggestionManage/suggestionManage.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../education_uni/subpkg/suggestionManage/suggestionManage.vue" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -75,7 +81,7 @@
     <property name="project.structure.last.edited" value="Modules" />
     <property name="project.structure.proportion" value="0.15" />
     <property name="project.structure.side.proportion" value="0.54591835" />
-    <property name="settings.editor.selected.configurable" value="http.proxy" />
+    <property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
     <property name="settings.editor.splitter.proportion" value="0.2657219" />
     <property name="vue.rearranger.settings.migration" value="true" />
   </component>
@@ -113,14 +119,7 @@
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="ServiceFileApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
-      <module name="service-file" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.xunwang.file.ServiceFileApplication" />
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="ServiceUcApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
+    <configuration name="ServiceUcApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true">
       <module name="service-ucenter" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.xunwang.ucenter.ServiceUcApplication" />
       <method v="2">
@@ -129,6 +128,7 @@
     </configuration>
     <recent_temporary>
       <list>
+        <item itemvalue="Spring Boot.ServiceUcApplication" />
         <item itemvalue="Spring Boot.ApiGatewayApplication" />
       </list>
     </recent_temporary>
@@ -153,7 +153,24 @@
       <workItem from="1672916955677" duration="310000" />
       <workItem from="1672917425215" duration="1185000" />
       <workItem from="1672971464926" duration="3191000" />
-      <workItem from="1672986926024" duration="1737000" />
+      <workItem from="1672986926024" duration="8371000" />
+      <workItem from="1673000875450" duration="889000" />
+      <workItem from="1673144859011" duration="769000" />
+      <workItem from="1673157665077" duration="4391000" />
+      <workItem from="1673169824347" duration="1167000" />
+      <workItem from="1673227408121" duration="2446000" />
+      <workItem from="1673232730775" duration="968000" />
+      <workItem from="1673247621902" duration="1124000" />
+      <workItem from="1673250987428" duration="7326000" />
+      <workItem from="1673314400403" duration="2347000" />
+      <workItem from="1673318758965" duration="171000" />
+      <workItem from="1673318953768" duration="513000" />
+      <workItem from="1673319483630" duration="80000" />
+      <workItem from="1673400568468" duration="276000" />
+      <workItem from="1673400864342" duration="51000" />
+      <workItem from="1673421636606" duration="11000" />
+      <workItem from="1673432987928" duration="1011000" />
+      <workItem from="1673486508239" duration="2455000" />
     </task>
     <servers />
   </component>
@@ -171,4 +188,8 @@
       </map>
     </option>
   </component>
+  <component name="XSLT-Support.FileAssociations.UIState">
+    <expand />
+    <select />
+  </component>
 </project>

+ 5 - 59
education_family/service/service-education/src/main/java/com/xunwang/education/controller/ComplaintController.java

@@ -1,6 +1,5 @@
 package com.xunwang.education.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import com.xunwang.commonutils.JwtUtils;
 import com.xunwang.commonutils.R;
@@ -16,7 +15,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Map;
 
 /**
  * @Author: Yl
@@ -31,24 +30,6 @@ public class ComplaintController {
     @Autowired
     private ComplaintService complaintService;
 
-    @Autowired
-    private UserFeign userFeign;
-
-    /**
-     * params 传递用户id
-     */
-    @ApiOperation("生成token,用于测试")
-    @GetMapping("/token")
-    public R token(HttpServletRequest request){
-        String openId = "a1";
-        String id = request.getParameter("id");
-        System.out.println("******************");
-        System.out.println(id);
-        System.out.println("******************");
-        return R.ok().data("token",JwtUtils.getJwtToken(id,openId));
-    }
-
-
 
     /**
      * 查看个人的所有投诉
@@ -57,32 +38,12 @@ public class ComplaintController {
     @ApiOperation("查询个人投诉列表")
     @GetMapping("/findPersonComplaint")
     public R findPersonComplaint(HttpServletRequest request){
-        /*
-        List<MySuggestion> list = mySuggestionService.findPersonAdvise(request);
+
+        List<Complaint> list = complaintService.findPersonComplaint(request);
         Map<String,Object> map = new HashMap<>();
         map.put("data",list);
         return R.ok().data(map);
 
-         */
-        IPage<Complaint> personComplaint = complaintService.findPersonComplaint(request);
-        List<Complaint> records = personComplaint.getRecords();
-
-        List<Complaint> list = records.stream().map(v->{
-            if (v.getProcessorUid()==null || "".equals(v.getProcessorUid())){
-            }
-            else {
-                R r = userFeign.getUserName(v.getProcessorUid());
-                v.setName((String) r.getData().get("name"));
-            }
-
-            return  v;
-        }).collect(Collectors.toList());
-
-        long total =  personComplaint.getTotal();
-        HashMap<String,Object> map = new HashMap<>();
-        map.put("count",total);
-        map.put("data",list);
-        return R.ok().data(map);
     }
 
     /**
@@ -92,26 +53,11 @@ public class ComplaintController {
     @ApiOperation("查询所有投诉")
     @GetMapping("/findAllComplaint")
     public R findAllComplaint(HttpServletRequest request){
-        IPage<Complaint> personComplaint = complaintService.findAllComplaint(request);
-        List<Complaint> records = personComplaint.getRecords();
-
-        List<Complaint> list = records.stream().map(v->{
 
-            if (v.getProcessorUid()==null || "".equals(v.getProcessorUid())){
-            }
-            else {
-                R r = userFeign.getUserName(v.getProcessorUid());
-                v.setName((String) r.getData().get("name"));
-            }
+       HashMap<String,Object> map  = complaintService.findAllComplaint(request);
 
-            return  v;
-        }).collect(Collectors.toList());
+       return R.ok().data(map);
 
-        long total =  personComplaint.getTotal();
-        HashMap<String,Object> map = new HashMap<>();
-        map.put("count",total);
-        map.put("data",list);
-        return R.ok().data(map);
     }
 
     /**

+ 2 - 27
education_family/service/service-education/src/main/java/com/xunwang/education/controller/MySuggestionController.java

@@ -29,20 +29,6 @@ public class MySuggestionController {
     private MySuggestionService mySuggestionService;
 
 
-    /**
-     * params 传递用户id
-     */
-    @ApiOperation("生成token,用于测试")
-    @GetMapping("/token")
-    public R token(HttpServletRequest request){
-        String openId = "a1";
-        String id = request.getParameter("id");
-        System.out.println("******************");
-        System.out.println(id);
-        System.out.println("******************");
-        return R.ok().data("token",JwtUtils.getJwtToken(id,openId));
-    }
-
     /**
      * headers 需要携带 token
      * Params 需要传递参数(pageNum,pageSize)
@@ -56,13 +42,6 @@ public class MySuggestionController {
         Map<String,Object> map = new HashMap<>();
         map.put("data",list);
         return R.ok().data(map);
-        /*
-        HashMap<String,Object> map = mySuggestionService.findPersonAdvise(request);
-
-        return R.ok().data(map);
-
-         */
-
     }
 
     /**
@@ -74,15 +53,11 @@ public class MySuggestionController {
     @ApiOperation("查询所有建议")
     @GetMapping("/findAllAdvise")
     public R findAllAdvise(HttpServletRequest request){
-        /*
+
         HashMap<String,Object> map = mySuggestionService.findAllAdvise(request);
         return R.ok().data(map);
-         */
 
-        List<MySuggestion> list = mySuggestionService.list(null);
-        Map<String,Object> map = new HashMap<>();
-        map.put("data",list);
-        return R.ok().data(map);
+
     }
 
     /**

+ 8 - 3
education_family/service/service-education/src/main/java/com/xunwang/education/service/ComplaintService.java

@@ -1,10 +1,11 @@
 package com.xunwang.education.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunwang.education.entity.Complaint;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * @Author: Yl
@@ -12,12 +13,16 @@ import javax.servlet.http.HttpServletRequest;
  */
 public interface ComplaintService extends IService<Complaint> {
 
-    IPage<Complaint> findPersonComplaint(HttpServletRequest request);
-    IPage<Complaint> findAllComplaint(HttpServletRequest request);
+
+
+
+   // IPage<Complaint> findPersonComplaint(HttpServletRequest request);
+    HashMap<String,Object> findAllComplaint(HttpServletRequest request);
 
 
     boolean handleComplaint(Complaint complaint,HttpServletRequest request);
 
     boolean handlingComplaint(Complaint complaint, HttpServletRequest request);
 
+    List<Complaint> findPersonComplaint(HttpServletRequest request);
 }

+ 2 - 1
education_family/service/service-education/src/main/java/com/xunwang/education/service/MySuggestionService.java

@@ -21,8 +21,9 @@ public interface MySuggestionService extends IService<MySuggestion> {
 
     //没有分页的个人建议列表
     List<MySuggestion> findPersonAdvise(HttpServletRequest request);
+
     //分页的个人建议列表
-    //HashMap<String,Object> findPersonAdvise(HttpServletRequest request);
+   // HashMap<String,Object> findPersonAdvise(HttpServletRequest request);
 
 
     HashMap<String,Object> findAllAdvise(HttpServletRequest request);

+ 57 - 3
education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/ComplaintServiceImpl.java

@@ -5,15 +5,21 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunwang.commonutils.JwtUtils;
+import com.xunwang.commonutils.R;
 import com.xunwang.education.entity.Complaint;
+import com.xunwang.education.feign.UserFeign;
 import com.xunwang.education.mapper.ComplaintMapper;
 import com.xunwang.education.service.ComplaintService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Author: Yl
@@ -24,6 +30,11 @@ import java.time.format.DateTimeFormatter;
 public class ComplaintServiceImpl extends ServiceImpl<ComplaintMapper, Complaint> implements ComplaintService {
 
 
+    @Autowired
+    private UserFeign userFeign;
+
+
+/*
     @Override
     public IPage<Complaint> findPersonComplaint(HttpServletRequest request) {
         String uid = JwtUtils.getUIdByJwtToken(request);
@@ -34,13 +45,35 @@ public class ComplaintServiceImpl extends ServiceImpl<ComplaintMapper, Complaint
         return iPage;
     }
 
+
+ */
     @Override
-    public IPage<Complaint> findAllComplaint(HttpServletRequest request) {
+    public HashMap<String,Object> findAllComplaint(HttpServletRequest request) {
         String pageNum = request.getParameter("pageNum");
         String pageSize = request.getParameter("pageSize");
         Page<Complaint> suggestionPage = new Page<Complaint>(Long.parseLong(pageNum), Long.parseLong(pageSize));
-        IPage<Complaint> iPage = baseMapper.selectPage(suggestionPage,new QueryWrapper<Complaint>().orderByDesc("fist_datetime"));
-        return iPage;
+        IPage<Complaint> personComplaint = baseMapper.selectPage(suggestionPage,new QueryWrapper<Complaint>().orderByDesc("fist_datetime"));
+
+        List<Complaint> records = personComplaint.getRecords();
+
+        List<Complaint> list = records.stream().map(v->{
+
+            if (v.getProcessorUid()==null || "".equals(v.getProcessorUid())){
+            }
+            else {
+                R r = userFeign.getUserName(v.getProcessorUid());
+                v.setName((String) r.getData().get("name"));
+            }
+
+            return  v;
+        }).collect(Collectors.toList());
+
+        long total =  personComplaint.getTotal();
+        HashMap<String,Object> map = new HashMap<>();
+        map.put("count",total);
+        map.put("data",list);
+
+        return map;
     }
 
     @Override
@@ -61,4 +94,25 @@ public class ComplaintServiceImpl extends ServiceImpl<ComplaintMapper, Complaint
         return baseMapper.updateById(complaint) != 0;
     }
 
+    @Override
+    public List<Complaint> findPersonComplaint(HttpServletRequest request) {
+
+        QueryWrapper<Complaint> wrapper = new QueryWrapper<Complaint>().eq("from_uid", JwtUtils.getUIdByJwtToken(request)).orderByDesc("fist_datetime");
+
+        List<Complaint> list =  baseMapper.selectList(wrapper);
+
+        List<Complaint> list1 = list.stream().map(v->{
+            if (v.getProcessorUid()==null || "".equals(v.getProcessorUid())){
+            }
+            else {
+                R r = userFeign.getUserName(v.getProcessorUid());
+                v.setName((String) r.getData().get("name"));
+            }
+            return  v;
+        }).collect(Collectors.toList());
+
+        return list1;
+
+    }
+
 }

+ 5 - 6
education_family/service/service-education/src/main/java/com/xunwang/education/service/impl/MySuggestionServiceImpl.java

@@ -38,7 +38,7 @@ public class MySuggestionServiceImpl extends ServiceImpl<MySuggestionMapper, MyS
     @Override
     public List<MySuggestion> findPersonAdvise(HttpServletRequest request) {
 
-        QueryWrapper<MySuggestion> wrapper = new QueryWrapper<MySuggestion>().eq("from_uid", JwtUtils.getUIdByJwtToken(request));
+        QueryWrapper<MySuggestion> wrapper = new QueryWrapper<MySuggestion>().eq("from_uid", JwtUtils.getUIdByJwtToken(request)).orderByDesc("fist_datetime");
 
        // QueryWrapper<MySuggestion> wrapper = new QueryWrapper<MySuggestion>().eq("from_uid",2);
 
@@ -58,8 +58,9 @@ public class MySuggestionServiceImpl extends ServiceImpl<MySuggestionMapper, MyS
 
     }
 
-    /*
-    @Override
+
+
+  /*  @Override
     public HashMap<String,Object> findPersonAdvise(HttpServletRequest request) {
 
         String uid = JwtUtils.getUIdByJwtToken(request);
@@ -89,9 +90,7 @@ public class MySuggestionServiceImpl extends ServiceImpl<MySuggestionMapper, MyS
         return map;
     }
 
-     */
-
-
+*/
     @Override
     public HashMap<String,Object> findAllAdvise(HttpServletRequest request) {
         String pageNum = request.getParameter("pageNum");

+ 1 - 1
education_uni/components/my-login/my-login.vue

@@ -3,7 +3,7 @@
 		<!-- 提示登录的图标 -->
 		<uni-icons type="contact-filled" size="100" color="#AFAFAF"></uni-icons>
 		<!-- 登录按钮 -->
-		<button type="primary" class="btn-login" @click="getToken">一键登录</button>		
+		<button type="primary" class="btn-login" @click="getLogin">一键登录</button>		
 		<!-- 登录提示 -->
 		<view class="tips-text">登录后尽享更多权益</view>
 	</view>

+ 5 - 2
education_uni/components/my-userinfo/my-userinfo.vue

@@ -15,13 +15,16 @@
 		        <navigator class="infoList-text" url="/subpkg/student_require/student_require">学员需求</navigator>
 		        <navigator class="infoList-text" url="myTeacher">我收藏的老师</navigator>
 		        <navigator class="infoList-text" url="myStudent">我收藏的学生</navigator>
-		        <navigator class="infoList-text" url="/subpkg/course_publish/course_publish">我的投诉</navigator>
+		        <navigator class="infoList-text" url="/subpkg/my_complaint/my_complaint">我的投诉</navigator>
 		        <navigator class="infoList-text" url="/subpkg/my_suggestion/my_suggestion">我的建议</navigator>
 		        <navigator class="infoList-text" url="refund">退款记录</navigator>
 		        <navigator class="infoList-text" url="/subpkg/teacher_authorize/teacher_authorize">老师认证</navigator>
 				<navigator class="infoList-text" url="/subpkg/course_publish/course_publish">课程发布</navigator>
 		        <navigator class="infoList-text" url="/subpkg/user_detail/user_detail">编辑账号</navigator>
-		    </view>
+				<navigator class="infoList-text" url="/subpkg/suggestionManage/suggestionManage">建议管理</navigator>		  
+				<navigator class="infoList-text" url="/subpkg/complaintManage/complaintManage">投诉管理</navigator>
+				
+			</view>
 		    <view class="recommendMoney">
 		        <text bindtap="cashBack">推荐返现</text>
 		    </view>

+ 55 - 1
education_uni/pages.json

@@ -187,7 +187,7 @@
                     "style" :                                                                                    
                 {
                     "navigationBarTitleText": "建议管理",
-                    "enablePullDownRefresh": false
+                    "enablePullDownRefresh": true
                 }
                 
                 }
@@ -208,6 +208,60 @@
                     "enablePullDownRefresh": false
                 }
                 
+                }
+                ,{
+                    "path" : "my_complaint/my_complaint",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "我的投诉",
+                    "enablePullDownRefresh": false
+                }
+                
+                }
+                ,{
+                    "path" : "complaintWrite/complaintWrite",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "写投诉",
+                    "enablePullDownRefresh": false
+                }
+                
+                }
+                ,{
+                    "path" : "complaintDetail/complaintDetail",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "投诉详情",
+                    "enablePullDownRefresh": false
+                }
+                
+                }
+                ,{
+                    "path" : "complaintManage/complaintManage",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "投诉管理",
+                    "enablePullDownRefresh": true
+                }
+                
+                }
+                ,{
+                    "path" : "allcomplaintDetail/allcomplaintDetail",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "",
+                    "enablePullDownRefresh": false
+                }
+                
+                }
+                ,{
+                    "path" : "complaintHandle/complaintHandle",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "",
+                    "enablePullDownRefresh": false
+                }
+                
                 }
             ]
 		}

+ 247 - 0
education_uni/subpkg/allcomplaintDetail/allcomplaintDetail.vue

@@ -0,0 +1,247 @@
+<template>
+	 <view>
+			
+		<view class="wrapper">
+		
+		    <view>
+		        <view class="suggestHead">
+		            <text>投诉号</text>
+		            <text class="suggestHeadDetail">{{complaint.id}}</text>
+		        </view>
+		        <view class="suggestHead">
+		            <text>投诉人UID</text>
+		            <text class="suggestHeadDetailID">{{complaint.fromUid}}</text>
+		        </view>
+		        <view class="suggestHead">
+		            <text>处理人UID</text>
+		            <text class="suggestHeadDetailID">{{complaint.processorUid}}</text>
+		        </view>
+		        <view class="suggestHead">
+		            <text>投诉日期</text>
+		            <text class="suggestHeadDetail">{{complaint.fistDatetime}}</text>
+		        </view>
+		    </view>
+		   
+		    <view>
+		        <view class="suggestTitle">
+		            <text>投诉标题</text>
+		            <text class="suggestTitleDetail">{{complaint.complaintTitle}}</text>
+		        </view>
+		        <view class="suggestContent">
+		            <text>投诉内容</text>
+		            <text class="suggestContentDetail">{{complaint.complaintDetail}}</text>
+		        </view>
+		    </view>
+		  
+		    <view>
+		        <view class="handleResult">
+		            <text>处理结果</text>
+		            <text class="handleResultDetail">{{complaint.result}}</text>
+		        </view>
+		        <view class="handleDate">
+		            <text>结案日期</text>
+		            <text class="DateDetail">{{complaint.closetime}}</text>
+		        </view>
+		        <view class="handleStatus">
+		            <text>状态</text>
+		            <text style="width: 50px;" class="handleStatusDetail">{{complaint.status}}</text>
+										
+					<text class="handleBtn" @click="toHandleSuggest">处理</text>
+					
+					
+		        </view>
+				
+				
+		    </view>
+		
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				complaint: {}
+			};
+		},
+		onLoad(opt){
+			this.complaint = JSON.parse(opt.item);
+			
+			if(this.complaint.result==null){
+				this.complaint.result=" ";
+			}
+			if(this.complaint.closetime==null){
+				this.complaint.closetime = " ";
+			}
+			if(this.complaint.processorUid==null){
+				this.complaint.processorUid = " ";
+			}
+		},
+		methods:{
+			toHandleSuggest(){
+				
+				if(this.complaint.status=="已处理"){
+							
+					uni.showModal({
+					    title: '',
+					    content: '该投诉已被处理'
+					})					
+				
+				}
+				
+				else{
+					uni.request({
+						url: 'http://localhost:8222/education/my-complaint/handlingComplaint',
+						data: {
+								"id": this.complaint.id
+							},
+						header: {
+							token: uni.getStorageSync('token')
+						},
+						method: 'POST',
+						success: res => {
+							// this.isLoading = false
+							console.log(res)
+							this.complaint.status = "处理中"
+							let complaint = JSON.stringify(this.complaint)
+							uni.navigateTo({
+								url: '/subpkg/complaintHandle/complaintHandle?item=' + complaint
+							})
+							
+						}
+					})
+				}
+				
+			}
+		}
+	}
+</script>
+
+
+<style lang="scss" scoped>
+
+page {
+    height: 100%;
+    background-color: #FFF2CC;
+    padding: 20rpx;
+}
+
+.wrapper {
+    // position: relative;
+    height: 100%;
+	background-color: #FFF2CC;
+	padding: 20rpx;
+}
+
+/* 建议号、建议人、建议日期 */
+.suggestHead {
+    display: flex;
+    margin-top: 10rpx;
+    padding: 10rpx;
+}
+
+.suggestHeadDetail,
+.suggestHeadDetailID {
+    margin-left: 20rpx;
+    font-weight: bold;
+}
+
+/* 建议人和处理人ID */
+.suggestHeadDetailID {
+    color: #00B0F0;
+    text-decoration: underline;
+}
+
+/* 建议标题 */
+.suggestTitle,
+.suggestContent {
+    margin-top: 40rpx;
+    display: flex;
+}
+
+/* 建议标题内容 */
+.suggestTitleDetail {
+    display: block;
+    width: 70%;
+    height: 120rpx;
+    margin-left: 20rpx;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 3;
+}
+
+/* 建议内容 */
+.suggestContentDetail {
+    display: block;
+    width: 70%;
+    height: 200rpx;
+    margin-left: 20rpx;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 5;
+}
+
+/* 处理结果 */
+.handleResult {
+    margin-top: 60rpx;
+    display: flex;
+}
+
+/* 处理结果详情 */
+.handleResultDetail {
+    display: block;
+    width: 70%;
+    height: 80rpx;
+    margin-left: 20rpx;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 2;
+}
+
+/* 结案日期、处理状态 */
+.handleDate,
+.handleStatus {
+    display: flex;
+    margin-top: 40rpx;
+}
+
+/* 结案日期详情、状态详情 */
+.DateDetail,
+.handleStatusDetail {
+    margin-left: 20rpx;
+    font-weight: bold;
+}
+
+/* 状态详情颜色 */
+.handleStatusDetail {
+    color: red;
+}
+
+/* 开始处理按钮 */
+.handleStart {
+    position: absolute;
+    bottom: 160rpx;
+    width: 200rpx;
+    margin-left: auto;
+    margin-right: auto;
+    left: 0;
+    right: 0;
+}
+
+.handleBtn {
+   // padding: 10rpx 20rpx;
+	width: 50px;
+	padding-left: 15px;
+    border-radius: 30rpx;
+    background-color: #8FAADC;
+    color: white;
+	margin-left: 20px;
+}
+</style>

+ 33 - 17
education_uni/subpkg/allsuggestionDetail/allsuggestionDetail.vue

@@ -1,9 +1,8 @@
 <template>
-	<view>
-		<!--pages/manageSuggestDetail/manageSuggestDetail.wxml-->
-		
+	 <view>
+			
 		<view class="wrapper">
-		    <!-- 建议信息 -->
+		
 		    <view>
 		        <view class="suggestHead">
 		            <text>建议号</text>
@@ -22,7 +21,7 @@
 		            <text class="suggestHeadDetail">{{suggestion.fistDatetime}}</text>
 		        </view>
 		    </view>
-		    <!-- 建议详情 -->
+		   
 		    <view>
 		        <view class="suggestTitle">
 		            <text>建议标题</text>
@@ -33,7 +32,7 @@
 		            <text class="suggestContentDetail">{{suggestion.adviseDetail}}</text>
 		        </view>
 		    </view>
-		    <!-- 处理结果 -->
+		  
 		    <view>
 		        <view class="handleResult">
 		            <text>处理结果</text>
@@ -45,13 +44,16 @@
 		        </view>
 		        <view class="handleStatus">
 		            <text>状态</text>
-		            <text class="handleStatusDetail">{{suggestion.status}}</text>
+		            <text style="width: 50px;" class="handleStatusDetail">{{suggestion.status}}</text>
+										
+					<text class="handleBtn" @click="toHandleSuggest">处理</text>
+					
+					
 		        </view>
+				
+				
 		    </view>
-		    <!-- 开始处理按钮 -->
-		    <view class="handleStart" @click="toHandleSuggest">
-		        <text class="handleBtn">开始处理</text>
-		    </view>
+		
 		</view>
 	</view>
 </template>
@@ -65,6 +67,16 @@
 		},
 		onLoad(opt){
 			this.suggestion = JSON.parse(opt.item);
+			
+			if(this.suggestion.result==null){
+				this.suggestion.result=" ";
+			}
+			if(this.suggestion.closetime==null){
+				this.suggestion.closetime = " ";
+			}
+			if(this.suggestion.processorUid==null){
+				this.suggestion.processorUid = " ";
+			}
 		},
 		methods:{
 			toHandleSuggest(){
@@ -91,10 +103,10 @@
 						success: res => {
 							// this.isLoading = false
 							console.log(res)
-							
+							this.suggestion.status = "处理中"
 							let suggestion = JSON.stringify(this.suggestion)
 							uni.navigateTo({
-								url: '/subpkg/suggestionDetail/suggestionDetail?item=' + suggestion
+								url: '/subpkg/suggestionHandle/suggestionHandle?item=' + suggestion
 							})
 							
 						}
@@ -106,10 +118,9 @@
 	}
 </script>
 
+
 <style lang="scss" scoped>
-/* pages/manageSuggestDetail/manageSuggestDetail.wxss */
 
-/* 设置页面背景 */
 page {
     height: 100%;
     background-color: #FFF2CC;
@@ -117,8 +128,10 @@ page {
 }
 
 .wrapper {
-    position: relative;
+    // position: relative;
     height: 100%;
+	background-color: #FFF2CC;
+	padding: 20rpx;
 }
 
 /* 建议号、建议人、建议日期 */
@@ -223,9 +236,12 @@ page {
 }
 
 .handleBtn {
-    padding: 10rpx 20rpx;
+   // padding: 10rpx 20rpx;
+	width: 50px;
+	padding-left: 15px;
     border-radius: 30rpx;
     background-color: #8FAADC;
     color: white;
+	margin-left: 20px;
 }
 </style>

+ 183 - 0
education_uni/subpkg/complaintDetail/complaintDetail.vue

@@ -0,0 +1,183 @@
+<template>
+	<view>
+		<!--pages/suggesDetail/suggestDetail.wxml-->
+		
+	
+		<view class="suggestNumWrapper">
+		    <view class="suggestHead">
+		        <text>投诉号:</text>
+		        <text class="suggestNum">{{complaint.id}}</text>
+		    </view>
+		    <view class="suggestHead">
+		        <text class="suggestHeadID">ID</text>
+		        <text class="suggestNum">{{complaint.fromUid}}</text>
+		    </view>
+		</view>
+		<!-- 处理人ID和处理人昵称 -->
+		<view class="handleSuggest">
+		    <view class="suggestHead">
+		        <text class="suggestPerId">处理人ID:</text>
+		        <text class="suggestPerNum">{{complaint.processorUid}}</text>
+		    </view>
+		    <view class="suggestHeadRight">
+		        <text class="suggestPerNickname">处理人昵称:</text>
+		        <text class="suggestNum">{{complaint.name}}</text>
+		    </view>
+		</view>
+		<!-- 建议标题和日期 -->
+		<view class="suggestTitleWrapper">
+		    <text class="suggestTtile">投诉标题</text>
+		    <text class="suggestTime">{{complaint.complaintTitle}}</text>
+		</view>
+		<!-- 建议内容 -->
+		<view class="suggestContentWrapper">
+		    <text>投诉内容:</text>
+		    <text>{{complaint.complaintDetail}}</text>
+		</view>
+		<!-- 处理结果 -->
+		<view class="handleResult">
+		    <text>处理结果描述:</text>
+		    <text>{{complaint.result}}</text>
+		</view>
+		<!-- 日期 -->
+		<view class="handleResult">
+		    <text>结案日期时间:</text>
+		    <text class="handleTime">{{complaint.closetime}}</text>
+		</view>
+		<!-- 处理状态 -->
+		<view class="handleStatus">
+		    <text>{{complaint.status}}</text>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				complaint: {}
+			}
+		},
+		onLoad(opt){
+			console.log(opt);
+			this.complaint = JSON.parse(opt.item);
+			if(this.complaint.processorUid==null){
+				this.complaint.processorUid = " ";
+			}
+			if(this.complaint.name==null){
+				this.complaint.name = " ";
+			}
+			if(this.complaint.result==null){
+				this.complaint.result = " ";
+			}
+			if(this.complaint.closetime==null){
+				this.complaint.closetime = " ";
+			}
+			
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+/* pages/suggesDetail/suggestDetail.wxss */
+
+/* 设置背景 */
+
+page{
+    padding: 20rpx;
+    background-color: #E2F0D9;
+}
+
+
+/* 设置建议号、处理人的格式 */
+.suggestNumWrapper,
+.handleSuggest{
+    display: flex;
+    margin-top: 20rpx;
+    font-size: 28rpx;
+}
+
+/* 设置顶部标题宽度 */
+.suggestHead,
+.suggestHeadRight{
+    display: flex;
+    width: 45%;
+}
+/* ID和处理人昵称 */
+.suggestHeadRight,
+.suggestHeadID{
+    margin-left: 20rpx;
+}
+/* 处理人ID宽度 */
+.suggestPerId{
+    width: 120rpx;
+}
+/* 处理人ID和处理人昵称公共样式 */
+.suggestPerNum,
+.suggestNum{
+    margin-left: 10rpx;
+    display: block;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+/* 处理人ID内容宽度 */
+.suggestPerNum{
+    width: calc(45vw - 130rpx);
+}
+/* 处理人昵称宽度 */
+.suggestPerNickname{
+    width: 160rpx;
+}
+/* 处理人昵称内容宽度 */
+.suggestNum{
+    width: calc(45vw - 160rpx);
+}
+
+/* 建议标题和时间 */
+.suggestTitleWrapper{
+    margin-top: 50rpx;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+}
+/* 单独设置标题 */
+.suggestTtile{
+    font-weight: bold;
+}
+/* 单独设置建议时间 */
+.suggestTime{
+    font-size: 26rpx;
+    color: #A6A6A6;
+}
+
+/* 建议内容 */
+.suggestContentWrapper{
+    margin-top: 40rpx;
+    display: flex;
+    flex-direction: column;
+    height: 600rpx;
+}
+/* 处理结果 */
+.handleResult{
+    margin-top: 30rpx;
+}
+/* 处理时间 */
+.handleTime{
+    font-weight: bold;
+}
+/* 处理状态 */
+.handleStatus{
+    margin: 60rpx 0;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    font-weight: bold;
+    color: red;
+}
+
+</style>

+ 224 - 0
education_uni/subpkg/complaintHandle/complaintHandle.vue

@@ -0,0 +1,224 @@
+<template>
+	<view style=" background-color: #FFF2CC;">
+		<!--pages/handleSuggest/handleSuggest.wxml-->
+		
+		<!-- 建议信息 -->
+		<view class="suggestHead">
+		    <text>投诉号</text>
+		    <text class="suggestHeadDetail">{{complaint.id}}</text>
+		</view>
+		<view class="suggestHead">
+		    <text>投诉人UID</text>
+		    <text class="suggestHeadId">{{complaint.fromUid}}</text>
+		</view>
+		<view class="suggestHead">
+		    <text>处理人UID</text>
+		    <text class="suggestHeadId">{{complaint.processorUid}}</text>
+		</view>
+		<view class="suggestHead">
+		    <text>投诉日期</text>
+		    <text class="suggestHeadDetail">{{complaint.fistDatetime}}</text>
+		</view>
+		<!-- 建议标题 -->
+		<view class="suggestTitle">
+		    <text class="suggestTitleText">投诉标题</text>
+		    <text class="suggestTitleDetail">{{complaint.complaintTitle}}</text>
+		</view>
+		<!-- 建议内容 -->
+		<view class="suggestTitle">
+		    <text class="suggestTitleText">投诉内容</text>
+		    <text class="suggestTitleDetail">{{complaint.complaintDetail}}</text>
+		</view>
+		<!-- 结案日期 -->
+		<view class="handleDate">
+		    <text>结案日期</text>
+		    <text class="handleDateDetail">{{complaint.closetime}}</text>
+		</view>
+		<!-- 处理状态 -->
+		<view class="handleStatus">
+		    <text>状态</text>
+		    <text class="handleStatusDetail">{{complaint.status}}</text>
+		</view>
+		<!-- 处理结果 -->
+		<view class="handleResult">
+		    <view class="handleResultTitle">处理结果</view>
+		    <!-- 未处理 -->
+		    <view>
+		        <textarea v-model="result"  class="handleDetail" maxlength="512" placeholder="不超过512个字"></textarea>
+		    </view>
+		   
+		</view>
+		<!-- 底部按钮 -->
+		<view class="handleEnd">
+		    <text class="handleClosed" @click="toHandle">结案</text>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+					complaint: {},
+					result: ""
+			};
+		},
+		onLoad(opt){
+			this.complaint = JSON.parse(opt.item);
+			if(this.complaint.processorUid==null){
+				this.complaint.processorUid = " ";
+			}
+		},
+		methods:{
+			toHandle(){
+				
+				var head = '^[ ]+$';
+				 
+				var re = new RegExp(head);
+				if (re.test(this.result)) {
+				             uni.showModal({
+				                 title: '',
+				                 content: '结果不能为空'
+				             })
+				} 
+				else if(this.result==null || this.result==""){
+					uni.showModal({
+					    title: '',
+					    content: '结果不能为空'
+					})
+				}
+				else{
+				uni.request({
+					url: 'http://localhost:8222/education/my-complaint/handleComplaint',
+					data: {
+							"id": this.complaint.id,
+							"result": this.result
+						},
+					header: {
+						token: uni.getStorageSync('token')
+					},
+					method: 'POST',
+					success: res => {
+						// this.isLoading = false
+						console.log(res)
+						
+						
+						uni.$showMsg(res.data.message)
+						/* setTimeout(() => {
+							uni.navigateBack()
+						}, 1000) */
+						
+						uni.navigateBack({
+						     delta: 2,
+						})
+					}
+				})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+/* pages/handleSuggest/handleSuggest.wxss */
+
+/* 设置页面背景 */
+page{
+    padding: 20rpx;
+    height: 100%;
+    background-color: #FFF2CC;
+}
+
+/* 顶部的建议信息 */
+.suggestHead{
+    margin-top: 20rpx;
+}
+/* 顶部建议信息详情、结案日期详情、状态处理详情 */
+.suggestHeadDetail,
+.suggestHeadId,
+.handleDateDetail,
+.handleStatusDetail{
+    margin-left: 20rpx;
+    font-weight: bold;
+}
+.suggestHeadId{
+    color: #00B0F0;
+    text-decoration: underline;
+}
+
+/* 建议详情 */
+.suggestTitle{
+    margin-top: 30rpx;
+    display: flex;
+    flex-direction: column;
+}
+/* 标题 */
+.suggestTitleText{
+    text-align: center;
+    font-weight: bold;
+    margin-bottom: 10rpx;
+}
+/* 内容 */
+.suggestTitleDetail{
+    width: 94%;    
+}
+
+/* 结案日期 */
+.handleDate{
+    margin-top: 40rpx;
+}
+
+/* 处理状态 */
+.handleStatus{
+    margin-top: 40rpx;
+}
+.handleStatusDetail{
+    color: red;
+}
+
+/* 处理结果 */
+.handleResult{
+    display: flex;
+    flex-direction: column;
+}
+.handleResultTitle{
+    text-align: center;
+    margin: 20rpx 0;
+    font-weight: bold;
+}
+
+/* 处理结果详情 */
+.handleDetail{
+    padding: 10rpx;
+    background-color: #fff;
+    border: 1rpx solid gray;
+    border-radius: 20rpx;
+    width: 93%;
+	margin: auto;
+    //margin-bottom: 40rpx;
+}
+.handleResultDetail{
+    min-height: 200rpx;
+    padding: 10rpx;
+    background-color: #fff;
+    border-radius: 20rpx;
+    width: 93%;
+    margin-bottom: 40rpx;
+}
+
+/* 结案 */
+.handleEnd{
+    display: flex;
+    justify-content: center;
+    margin-bottom: 40rpx;
+}
+.handleClosed{
+    background-color: #8FAADC;
+    font-size: 40rpx;
+    padding: 10rpx 30rpx;
+    border-radius: 40rpx;
+    color: white;
+}
+
+</style>

+ 197 - 0
education_uni/subpkg/complaintManage/complaintManage.vue

@@ -0,0 +1,197 @@
+<template>
+	<!--pages/suggestList/suggestList.wxml-->
+	<view>
+	    <!-- 建议列表 -->
+	    <view class="suggestContainer">
+	        <view class="suggest" @click="toSuggestDetail(item)" v-for="(item, index) in currentList" :key="item">
+	            <view class="suggestion">
+	                <view class="suggestHead">
+	                    <view>标题</view>
+	                    <view class="suggestTitle">{{item.complaintTitle}}</view>
+	                </view>
+	                <view class="suggestBody">
+	                    <view>日期</view>
+	                    <view class="suggestContent">{{item.fistDatetime}}</view>
+	                </view>
+	            </view>
+	            <view>
+	                <view class="dispose">{{item.status}}</view>
+	            </view>
+	       
+			</view>
+	    </view>
+	   
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				complaint: [],
+				obj: {
+					pageSize: 6,
+					pageNum: 1
+				},
+				total: 0,
+				currentList: []
+			};
+		},
+		
+		onPullDownRefresh() {
+			this.obj.pageNum = 1;
+			this.init();
+			uni.stopPullDownRefresh();
+		},
+		
+		onReachBottom() {
+			// 判断是否有下一页的数据
+			if (this.obj.pageNum * this.obj.pageSize >= this.total){
+				uni.$showMsg('已经是最后一页数据了!')
+			}
+			else{
+				
+				this.obj.pageNum += 1
+				setTimeout(() => {
+					this.init()
+				}, 1000)
+							
+			}
+			
+		},
+		
+		onShow(){
+			this.obj.pageNum = 1;
+			this.init();
+		},
+		
+		methods:{
+			async init(){
+				
+				const { data: result } =await uni.$http.get('/education/my-complaint/findAllComplaint',this.obj)
+				
+				this.complaint = result.data.data;
+				
+				this.total = result.data.count;
+				
+				if(this.obj.pageNum==1){
+					this.currentList = this.complaint;
+				}
+				else{
+					
+					for(var item of this.complaint) 
+					{
+						this.currentList.push(item);
+					}
+					
+				}
+				
+			},
+			
+			// 点击建议列表,跳转到对应的建议详情页
+				
+			toSuggestDetail(item){
+				let complaint = JSON.stringify(item)
+				uni.navigateTo({
+					url: '/subpkg/allcomplaintDetail/allcomplaintDetail?item=' + complaint
+				})
+			}
+		}
+	}
+</script>
+<style lang="scss"scoped>
+	/* pages/suggestList/suggestList.wxss */
+	
+	/* 页面背景 */
+	page{
+	    /* height: 100%; */
+	    /* height: auto !important; */
+	    background-color: #E2F0D9;
+	}
+	
+	/* 建议列表区 */
+	.suggestContainer{
+	    height: 100%;
+	    padding-bottom: 120rpx;
+	}
+	
+	/* 单条建议的背景 */
+	.suggest{
+	    display: flex;
+	    padding: 20rpx;
+	    margin: 20rpx 10rpx;
+	    height: 140rpx;
+	    border-radius: 30rpx;
+	    background-color: #FFF2CC;
+	}
+	
+	/* 单条建议左侧标题和内容摘要 */
+	.suggestion{
+	    width: 75%;
+	}
+	
+	/* 标题和内容摘要布局 */
+	.suggestHead,
+	.suggestBody{
+	    display: flex;
+	}
+	
+	/* 摘要 */
+	.suggestBody{
+	    margin-top: 10rpx;
+	}
+	
+	/* 标题详情和内容详情左边距 */
+	.suggestTitle,
+	.suggestContent{
+	    margin-left: 20rpx;
+	}
+	
+	/* 标题内容详情 */
+	.suggestTitle{
+	    width: 65%;
+	    white-space: nowrap;
+	    overflow: hidden;
+	    text-overflow: ellipsis;
+	}
+	
+	/* 内容摘要详情 */
+	.suggestContent{
+	    width: 80%;
+	    overflow: hidden;
+	    text-overflow: ellipsis;
+	    display: -webkit-box;
+	    -webkit-box-orient: vertical;
+	    -webkit-line-clamp: 2;
+	}
+	
+	/* 处理状态 */
+	.dispose{
+	    font-weight: bold;
+	    color: red;
+	    margin-left: 30rpx;
+	}
+	
+	/* 写建议按钮 */
+	.toWriteSuggestion{
+	    display: flex;
+	    position: relative;
+	    justify-content: center;
+	}
+	.writeSuggestion{
+	    text-align: center;    
+	    position: fixed;
+	    bottom: 0rpx;
+	    width: 100%;
+	    height: 120rpx;
+	    line-height: 120rpx;
+	    background-color: #E2F0D9;
+	}
+	.writeSuggestion text{
+	    background-color: #8FAADC;
+	    font-size: 36rpx;
+	    color: white;
+	    border-radius: 30rpx;
+	    padding: 10rpx 20rpx;
+	}
+</style>

+ 161 - 0
education_uni/subpkg/complaintWrite/complaintWrite.vue

@@ -0,0 +1,161 @@
+<template>
+	<view>
+		<!--pages/writeComplaint/writeComplaint.wxml-->
+		
+		<view>
+		    <!-- 投诉标题 -->
+		    <view class="complaintWrapper">
+		        <text class="complaintTitle">投诉标题</text>
+		        <textarea name="投诉标题" v-model="complaintTitle"	cols="30" rows="10" maxlength="50" placeholder="不超过50字" class="titleInput" bindinput="getComplaintTitle"></textarea>
+		    </view>
+		    <!-- 投诉内容 -->
+		    <view class="complaintWrapper">
+		        <text class="complaintTitle">投诉内容</text>
+		        <textarea name="投诉内容" v-model="complaintDetail"	cols="30" rows="10" maxlength="512" placeholder="不超过512字" class="contentInput" bindinput="getComplaintContent"></textarea>
+		    </view>
+		</view>
+		<!-- 取消和提交按钮 -->
+		<view class="suggestBtn">
+		    <view class="confirmBtn" @click="toCancel">取消</view>
+		    <view class="confirmBtn" @click="toConfirm">提交</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				complaintTitle: "",
+				complaintDetail: ""
+			}
+		},
+		methods: {
+			toCancel(){
+				this.complaintTitle = "";
+				this.complaintDetail = "";
+				
+				uni.navigateBack({
+				     delta: 1,
+				})
+			},
+			toConfirm(){
+			
+				var head = '^[ ]+$';
+				 
+				var re = new RegExp(head);
+				
+				if (!this.complaintTitle) {
+						uni.showModal({
+				           title: '投诉标题未写',
+				           content: '请补充标题后再重新提交'
+				    })
+				 }
+				 else if (re.test(this.complaintTitle)) {
+				             uni.showModal({
+				                 title: '标题不能全为空格',
+				                 content: '投诉标题不能全部为空格,请修改投诉标题后再提交'
+				             })
+				} 
+				else if (!this.complaintDetail) {
+				             uni.showModal({
+				                 title: '投诉内容未写',
+				                 content: '投诉内容不能为空,请补充投诉内容后再提交'
+				             })
+				} 
+				else if (re.test(this.complaintDetail)) {
+				             uni.showModal({
+				                 title: '投诉内容不能全部为空格',
+				                 content: '投诉内容不能全部为空格,请修改投诉内容后再提交'
+				             })
+				 }
+				else{
+					//const { data: result } =await uni.$http.get('/education/my-suggestion/writeAdvise',this.queryObj)
+				
+				uni.request({
+					url: 'http://localhost:8222/education/my-complaint/writeComplaint',
+					data: {
+							"complaintTitle": this.complaintTitle,
+							"complaintDetail": this.complaintDetail,
+						},
+					header: {
+						token: uni.getStorageSync('token')
+					},
+					method: 'POST',
+					success: res => {
+						// this.isLoading = false
+						console.log(res)
+						uni.$showMsg(res.data.message)
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 1000)
+						
+						
+					}
+				})
+					
+				}
+			
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+/* pages/writeComplaint/writeComplaint.wxss */
+
+/* 设置页面背景 */
+page{
+    background-color: #E2F0D9;
+    height: 100%;
+}
+
+.complaintWrapper{
+    display: flex;
+    flex-direction: column;
+    width: 100%;
+    padding: 20rpx;
+}
+/* 标题 */
+.complaintTitle{
+    text-align: center;
+    padding-bottom: 20rpx;
+    font-weight: bold;
+}
+/* 输入的建议标题和内容公共样式 */
+.titleInput,
+.contentInput{
+    width: 93%;
+    padding: 10rpx;
+    /* border: 1rpx solid gray; */
+    border-radius: 20rpx;
+    background-color: #fff;
+}
+/* 建议标题输入框的高度 */
+.titleInput{
+    height: 150rpx;
+}
+
+/* 建议内容输入框的高度 */
+.contentInput{
+    height: 800rpx;
+}
+
+/* 下方按钮 */
+.suggestBtn{
+    display: flex;
+    margin-top: 40rpx;
+    justify-content: space-around;
+}
+
+.confirmBtn{
+    font-size: 42rpx;
+    width: 120rpx;
+    padding: 10rpx 20rpx;
+    border-radius: 40rpx;
+    text-align: center;
+    background-color: #8FAADC;
+    color: white;
+}
+</style>

+ 178 - 0
education_uni/subpkg/my_complaint/my_complaint.vue

@@ -0,0 +1,178 @@
+<template>
+	<!--pages/suggestList/suggestList.wxml-->
+
+	  <view>
+	      <view class="complaintContainer">
+	          <view class="complaint" @click="toComplaintDetail(item)" v-for="(item, index) in complaint" :key="item">
+	              <view class="complain">
+	                  <view class="complaintHead">
+	                      <view>标题</view>
+	                      <view class="complaintTitle">{{item.complaintTitle}}</view>
+	                  </view>
+	                  <view class="complaintBody">
+	                      <view>内容摘要</view>
+	                      <view class="complaintContent">{{item.complaintDetail}}</view>
+	                  </view>
+	              </view>
+	              <view>
+	                  <view class="dispose">{{item.status}}</view>
+	              </view>
+	          </view>	  
+	  
+	      </view>
+	      <!-- 开始写建议按钮 -->
+	      <view class="toWriteComplaint">
+	          <view class="writeComplaint" @click="toWriteComplaint()">
+	              <text>写投诉</text>
+	          </view>
+	      </view>
+	  </view>
+</template>
+
+<script>
+
+	export default {
+		data() {
+			return {
+				complaint: [],
+				queryObj: {
+					pageNum: 1,
+					pageSize: 5
+				}
+			};
+		},
+		
+		onShow(){
+			this.init();
+		},
+		
+		created(){
+			this.init();
+		},
+		methods:{
+			
+			async init(){
+				
+				const { data: result } =await uni.$http.get('/education/my-complaint/findPersonComplaint',this.queryObj)
+				
+				this.complaint = result.data.data;
+				
+				
+				console.log("this",this.complaint);
+				
+			},
+			
+			// 点击建议列表,跳转到对应的建议详情页
+				
+			toComplaintDetail(item){
+				let complaint = JSON.stringify(item)
+				uni.navigateTo({
+					url: '/subpkg/complaintDetail/complaintDetail?item=' + complaint
+				})
+			},
+			// 跳转到写建议页面
+			toWriteComplaint(){
+			   uni.navigateTo({
+			   	url: '/subpkg/complaintWrite/complaintWrite'
+			   })
+			}
+			
+		}
+	}
+</script>
+
+<style lang="scss"scoped>
+/* pages/complaintList/complaintList.wxss */
+
+/* 页面背景 */
+page{
+    /* height: 100%; */
+    /* height: auto !important; */
+    background-color: #E2F0D9;
+}
+
+/* 建议列表区 */
+.complaintContainer{
+    height: 100%;
+    padding-bottom: 120rpx;
+}
+
+/* 单条建议的背景 */
+.complaint{
+    display: flex;
+    padding: 20rpx;
+    margin: 20rpx 10rpx;
+    height: 140rpx;
+    border-radius: 30rpx;
+    background-color: #FFF2CC;
+}
+
+/* 单条建议左侧标题和内容摘要 */
+.complain{
+    width: 75%;
+}
+
+/* 标题和内容摘要布局 */
+.complaintHead,
+.complaintBody{
+    display: flex;
+}
+
+/* 摘要 */
+.complaintBody{
+    margin-top: 10rpx;
+}
+
+/* 标题详情和内容详情左边距 */
+.complaintTitle,
+.complaintContent{
+    margin-left: 20rpx;
+    width: 65%;
+}
+
+/* 标题内容详情 */
+.complaintTitle{
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+/* 内容摘要详情 */
+.complaintContent{
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 2;
+}
+
+/* 处理状态 */
+.dispose{
+    font-weight: bold;
+    color: red;
+    margin-left: 30rpx;
+}
+
+/* 写建议按钮 */
+.toWriteComplaint{
+    display: flex;
+    position: relative;
+    justify-content: center;
+}
+.writeComplaint{
+    text-align: center;    
+    position: fixed;
+    bottom: 0rpx;
+    width: 100%;
+    height: 120rpx;
+    line-height: 120rpx;
+    background-color: #E2F0D9;
+}
+.writeComplaint text{
+    background-color: #8FAADC;
+    font-size: 36rpx;
+    color: white;
+    border-radius: 30rpx;
+    padding: 10rpx 20rpx;
+}
+</style>

+ 3 - 7
education_uni/subpkg/my_suggestion/my_suggestion.vue

@@ -34,11 +34,7 @@
 	export default {
 		data() {
 			return {
-				suggestion: [],
-				queryObj: {
-					pageNum: 1,
-					pageSize: 5
-				}
+				suggestion: []				
 			};
 		},
 		
@@ -53,11 +49,11 @@
 			
 			async init(){
 				
-				const { data: result } =await uni.$http.get('/education/my-suggestion/findPersonAdvise',this.queryObj)
+				const { data: result } =await uni.$http.get('/education/my-suggestion/findPersonAdvise',null)
 				
 				this.suggestion = result.data.data;
 				
-				console.log("gg",result);
+				console.log("person",result);
 				
 			},
 			

+ 2 - 0
education_uni/subpkg/suggestionDetail/suggestionDetail.vue

@@ -85,11 +85,13 @@
 /* pages/suggesDetail/suggestDetail.wxss */
 
 /* 设置背景 */
+
 page{
     padding: 20rpx;
     background-color: #E2F0D9;
 }
 
+
 /* 设置建议号、处理人的格式 */
 .suggestNumWrapper,
 .handleSuggest{

+ 31 - 8
education_uni/subpkg/suggestionHandle/suggestionHandle.vue

@@ -1,5 +1,5 @@
 <template>
-	<view>
+	<view style=" background-color: #FFF2CC;">
 		<!--pages/handleSuggest/handleSuggest.wxml-->
 		
 		<!-- 建议信息 -->
@@ -44,7 +44,7 @@
 		    <view class="handleResultTitle">处理结果</view>
 		    <!-- 未处理 -->
 		    <view>
-		        <textarea  v-model="result"  class="handleDetail" maxlength="512" placeholder="不超过512个字"></textarea>
+		        <textarea v-model="result"  class="handleDetail" maxlength="512" placeholder="不超过512个字"></textarea>
 		    </view>
 		   
 		</view>
@@ -53,7 +53,6 @@
 		    <text class="handleClosed" @click="toHandle">结案</text>
 		</view>
 		
-
 	</view>
 </template>
 
@@ -67,9 +66,29 @@
 		},
 		onLoad(opt){
 			this.suggestion = JSON.parse(opt.item);
+			if(this.suggestion.processorUid==null){
+				this.suggestion.processorUid = " ";
+			}
 		},
 		methods:{
 			toHandle(){
+				
+				var head = '^[ ]+$';
+				 
+				var re = new RegExp(head);
+				if (re.test(this.result)) {
+				             uni.showModal({
+				                 title: '',
+				                 content: '结果不能为空'
+				             })
+				} 
+				else if(this.result==null || this.result==""){
+					uni.showModal({
+					    title: '',
+					    content: '结果不能为空'
+					})
+				}
+				else{
 				uni.request({
 					url: 'http://localhost:8222/education/my-suggestion/handleAdvise',
 					data: {
@@ -83,16 +102,19 @@
 					success: res => {
 						// this.isLoading = false
 						console.log(res)
+						
+						
 						uni.$showMsg(res.data.message)
-						setTimeout(() => {
+						/* setTimeout(() => {
 							uni.navigateBack()
-						}, 1000)
+						}, 1000) */
 						
 						uni.navigateBack({
-						     delta: 1,
+						     delta: 2,
 						})
 					}
 				})
+				}
 			}
 		}
 	}
@@ -110,7 +132,7 @@ page{
 
 /* 顶部的建议信息 */
 .suggestHead{
-    margin-top: 10rpx;
+    margin-top: 20rpx;
 }
 /* 顶部建议信息详情、结案日期详情、状态处理详情 */
 .suggestHeadDetail,
@@ -173,7 +195,8 @@ page{
     border: 1rpx solid gray;
     border-radius: 20rpx;
     width: 93%;
-    margin-bottom: 40rpx;
+	margin: auto;
+    //margin-bottom: 40rpx;
 }
 .handleResultDetail{
     min-height: 200rpx;

+ 259 - 75
education_uni/subpkg/suggestionManage/suggestionManage.vue

@@ -1,113 +1,297 @@
 <template>
-	<view>
-		<!--pages/manageSuggest/manageSuggest.wxml-->
-		
-		<view class="handleSuggestWrapper">
-		    <view class="handleSuggest" @click="toManageSuggestDetail(item)" v-for="(item, index) in suggestion" :key="item">
-		        <view>
-		            <text>建议号</text>
-		            <text class="suggestNum">{{item.adviseTitle}}</text>
-		        </view>
-		        <view class="suggestDateStatus">
-		            <view>
-		                <text>日期</text>
-		                <text class="suggestDate">{{item.fistDatetime}}</text>
-		            </view>
-		            <view class="handleStatus">
-		                <text>状态</text>
-		                <text class="suggestStatus">{{item.status}}</text>
-		            </view>
-		        </view>
-		    </view>
-		   
+	<!--pages/suggestList/suggestList.wxml-->
+	<view style="padding-bottom: 10px;">
+	    <!-- 建议列表 -->
+	    <view class="suggestContainer">
+	        <view class="suggest" @click="toSuggestDetail(item)" v-for="(item, index) in suggestion" :key="item">
+	            <view class="suggestion">
+	                <view class="suggestHead">
+	                    <view>标题</view>
+	                    <view class="suggestTitle">{{item.adviseTitle}}</view>
+	                </view>
+	                <view class="suggestBody">
+	                    <view>日期</view>
+	                    <view class="suggestContent">{{item.fistDatetime}}</view>
+	                </view>
+	            </view>
+	            <view>
+	                <view class="dispose">{{item.status}}</view>
+	            </view>
+	       
+			</view>
+	    											
 		</view>
-		
 
+		<view v-if="isShow" class="toWriteSuggestion">
+		        <text class="writeSuggestion" @click="headPage()">首页</text>	    
+			
+			
+			    <text class="writeSuggestion" @click="frontPage()">上一页</text>	    
+			
+				<text style=" font-size: 35rpx; color: black;margin-left: 5px;padding-top: 5px;"> {{obj.pageNum}}/{{Math.ceil(total/obj.pageSize)}} </text>
+			
+			
+				<text class="writeSuggestion" @click="nextPage()">下一页</text>	    
+				
+			
+				<input  v-model="search" style="border: lawngreen 1px solid;
+											   width: 30px;
+											   float: right;
+											   margin-left: 5px;
+											   height: 27px;
+											   text-align: center;
+											   background-color: #ffffff;
+											   "/>
+											   
+				<text class="writeSuggestion"  @click="goalPage()"  style="float: right;margin-right: 10px;">跳转</text>
+				
+														
+		</view>
+		
 	</view>
+
 </template>
 
 <script>
+	
 	export default {
 		data() {
 			return {
-				suggestion: []
+				suggestion: [],
+				obj: {
+					pageSize: 6,
+					pageNum: 1
+				},
+				total: 0,
+				currentList: [],
+				search: '',
+				isShow: false
 			};
 		},
 		
-		onShow(){
+		onPullDownRefresh() {
+			this.obj.pageNum = 1;
 			this.init();
+			uni.stopPullDownRefresh();
 		},
 		
+	/* 	onReachBottom() {
+			// 判断是否有下一页的数据
+			if (this.obj.pageNum * this.obj.pageSize >= this.total)
+			
+			return uni.$showMsg('已经是最后一页数据了!')
+			
+			this.obj.pageNum += 1
+			this.init()
+			
+		}, */
+		
+		onShow(){
+			this.obj.pageNum = 1;
+			this.init();
+		},
 		created(){
+			this.obj.pageNum = 1;
 			this.init();
 		},
+		
 		methods:{
 			async init(){
+										
+				const { data: result } =await uni.$http.get('/education/my-suggestion/findAllAdvise',this.obj)
+								
+				this.suggestion = result.data.data;
+			
+				this.total = result.data.count;
 				
-				const { data: result } =await uni.$http.get('/education/my-suggestion/findAllAdvise',null)
 				
-				this.suggestion = result.data.data;
 				
-				console.log("gg",result);
+				if(this.obj.pageNum==1){
+					this.currentList = this.suggestion;
+				}
+				else{
+					
+					for(var item of this.suggestion) 
+					{
+						this.currentList.push(item);
+					}
+					
+				}
+				
+				this.isShow = true;
 				
 			},
 			
 			// 点击建议列表,跳转到对应的建议详情页
 				
-			toManageSuggestDetail(item){
+			toSuggestDetail(item){
 				let suggestion = JSON.stringify(item)
 				uni.navigateTo({
 					url: '/subpkg/allsuggestionDetail/allsuggestionDetail?item=' + suggestion
 				})
+			},
+			
+			headPage(){
+				this.obj.pageNum = 1;
+				this.init();
+				this.search = "";
+			},
+			frontPage(){
+				if(this.obj.pageNum==1){		
+					uni.$showMsg('已经是第一页了')
+				}else{
+					this.obj.pageNum = this.obj.pageNum - 1;
+					this.init();
+					console.log("front",this.obj);
+				
+				}
+				
+			},
+			nextPage(){
+				if(this.obj.pageNum== Math.ceil(this.total/this.obj.pageSize)){
+						uni.$showMsg('已经是最后一页了')
+				}else{
+					this.obj.pageNum = this.obj.pageNum + 1;
+					this.init();
+					console.log("next",this.obj);
+				
+				}
+			},
+			goalPage(){
+				
+					
+				if(this.search.length==0){
+					uni.$showMsg('请输入页码!')
+				}
+				
+				else if(!/^\d+$/.test(this.search))
+				{
+				  uni.$showMsg('请输入合法的页码!')
+				  
+				 }
+				
+				
+				
+				
+				else{
+					let current = parseInt(this.search);
+					
+					console.log("num",current);
+					
+					if(current < 1){
+						uni.$showMsg('该页码不存在!')
+					}
+					else if(current > Math.ceil(this.total/this.obj.pageSize)){
+						uni.$showMsg('超出页码范围!')
+					}
+					else{
+						this.obj.pageNum = current;
+						this.init();
+						this.search = "";
+					}
+					
+				}
+				
+
 			}
+			
 		}
 	}
 </script>
+<style lang="scss"scoped>
+	/* pages/suggestList/suggestList.wxss */
+	
+	.toWriteSuggestion{
+	    display: flex;
+	    position: relative;
+	    justify-content: center;		
+	}
+	
+	/* 页面背景 */
+	page{
+	    /* height: 100%; */
+	    /* height: auto !important; */
+	    background-color: #E2F0D9;
+	}
+	
+	/* 建议列表区 */
+	.suggestContainer{
+	    height: 100%;
+	    padding-bottom: 10rpx;
+		
+	}
+	
+	/* 单条建议的背景 */
+	.suggest{
+	    display: flex;
+	    padding: 20rpx;
+	    margin: 20rpx 10rpx;
+	    height: 140rpx;
+	    border-radius: 30rpx;
+	    background-color: #FFF2CC;
+	}
+	
+	/* 单条建议左侧标题和内容摘要 */
+	.suggestion{
+	    width: 75%;
+	}
+	
+	/* 标题和内容摘要布局 */
+	.suggestHead,
+	.suggestBody{
+	    display: flex;
+	}
+	
+	/* 摘要 */
+	.suggestBody{
+	    margin-top: 10rpx;
+	}
+	
+	/* 标题详情和内容详情左边距 */
+	.suggestTitle,
+	.suggestContent{
+	    margin-left: 20rpx;
+	}
+	
+	/* 标题内容详情 */
+	.suggestTitle{
+	    width: 65%;
+	    white-space: nowrap;
+	    overflow: hidden;
+	    text-overflow: ellipsis;
+	}
+	
+	/* 内容摘要详情 */
+	.suggestContent{
+	    width: 80%;
+	    overflow: hidden;
+	    text-overflow: ellipsis;
+	    display: -webkit-box;
+	    -webkit-box-orient: vertical;
+	    -webkit-line-clamp: 2;
+	}
+	
+	/* 处理状态 */
+	.dispose{
+	    font-weight: bold;
+	    color: red;
+	    margin-left: 30rpx;
+	}
+	
+	/* 写建议按钮 */
+	.toWriteSuggestion{
+	    display: flex;
+	    position: relative;
+	    justify-content: center;
+	}
+	
+	.writeSuggestion{
+	    background-color: #ffffff;
+	    font-size: 35rpx;
+	    color: gray;
+		border: lawngreen solid 1px;
+		padding: 10rpx 20rpx;
+		margin-left: 6px;
+	}
 
-<style lang="scss" scoped>
-/* pages/manageSuggest/manageSuggest.wxss */
-
-/* 设置页面背景 */
-page{
-    height: 100%;
-    padding: 20rpx;
-    background-color: #E2F0D9;
-}
-
-.handleSuggestWrapper{
-    width: 94%;
-}
-
-/* 投诉列表 */
-.handleSuggest{
-    padding: 20rpx;
-    border-radius: 20rpx;
-    background-color: #FFF2CC;
-    margin-bottom: 20rpx;
-}
-
-/* 日期和状态 */
-.suggestDateStatus{
-    display: flex;
-    position: relative;
-}
-
-/* 处理状态 */
-.handleStatus{
-    position: absolute;
-    left: 56%;
-}
-
-/* 投诉号、日期、状态详情 */
-.suggestNum,
-.suggestDate,
-.suggestStatus{
-    margin-left: 20rpx;
-    font-weight: bold;
-}
-
-/* 状态字体颜色 */
-.suggestStatus{
-    color: red;
-}
-</style>
+</style>