Sean 4 月之前
父節點
當前提交
f1454bbfd8

+ 27 - 0
src/api/chat.js

@@ -190,6 +190,15 @@ export function updateGroup(data) {
     data
   })
 }
+
+//5.8 编辑群成员
+export function updateGroupMembers(data) {
+  return request({
+    url: '/chat/updateGroupMembers',
+    method: 'post',
+    data
+  })
+}
 //5.群聊 end ------------------------------------->
 
 //6.商圈 start ------------------------------------->
@@ -255,4 +264,22 @@ export function getTopicReply(data) {
     data
   })
 }
+
+//6.8 获取话题分类
+export function topicType(data) {
+  return request({
+    url: '/chat/topicType',
+    method: 'post',
+    data
+  })
+}
+
+//6.9 获取话题状态
+export function topicStatus(data) {
+  return request({
+    url: '/chat/topicStatus',
+    method: 'post',
+    data
+  })
+}
 //6.商圈 end ------------------------------------->

+ 29 - 1
src/store/modules/chat.js

@@ -1,7 +1,8 @@
 import {getTalkSessionList,addFriend,getFriendsList,delFriend,updateFriend,getFriendsApplyList,
   applyFriend,isFriend,getConversation,getChatRecords,addGroup,getGroupMembers,searchFriend,getFriendInfo,
   getGroupList,getGroupInfo,joinGroup,getGroupChatRecords,delGroup,updateGroup,
-  getTopicsList,addTopic,getTopicInfo,updateTopic,delTopic,addReply,getTopicReply
+  getTopicsList,addTopic,getTopicInfo,updateTopic,delTopic,addReply,getTopicReply,topicType,
+  topicStatus,updateGroupMembers
 } from '@/api/chat'
 
 const state = {
@@ -214,6 +215,15 @@ const actions = {
       })
     })
   },
+  updateGroupMembers({commit},data) {
+    return new Promise((resolve, reject) => {
+      updateGroupMembers(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
   //5.群聊 end ------------------------------------->
 
   //6.商圈 start ------------------------------------->
@@ -279,6 +289,24 @@ const actions = {
         reject(error)
       })
     })
+  },
+  topicType({commit},data) {
+    return new Promise((resolve, reject) => {
+      topicType(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  topicStatus({commit},data) {
+    return new Promise((resolve, reject) => {
+      topicStatus(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
   }
   //6.商圈 end ------------------------------------->
 }

+ 2 - 2
src/utils/request.js

@@ -8,8 +8,8 @@ import URL from '@/utils/baseUrl';
 const service = axios.create({
   //千万不能在这里使用绝对地址,这会导致webpack的devserve不生效
   //baseURL: URL.testUrl, //刘佳伟的电脑
-  //baseURL: URL.liuUrl, //刘剑的电脑
-  baseURL: URL.baseUrl, //测试服务器
+  baseURL: URL.liuUrl, //刘剑的电脑
+  //baseURL: URL.baseUrl, //测试服务器
   //baseURL: URL.servUrl, //正式服务器
   //baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
   //withCredentials: true, // send cookies when cross-domain requests

+ 15 - 3
src/views/chat/contacts.vue

@@ -28,7 +28,7 @@
           <div class="searchFriendBox" v-if="searchWindowStatus==true">
             <div class="searchFriendItem">
               <div class="searchFriendAvatar">
-                <img src="@/assets/chat/user/user.png">
+                <img :src="searchFriendList.avatar">
               </div>
               <div class="searchFriendInfo">
                 <div class="searchFriendName">
@@ -62,7 +62,9 @@
             </div> -->
             <div class="searchFriendButton">
               <el-button type="primary" v-if="searchFriendList.isfriend==0||searchFriendList.isfriend==null" @click="openAddWindow(searchFriendList.id)">添加到通讯录</el-button>
-              <el-button type="danger" v-else @click="deleteFriend(searchFriendList.id)">删除好友</el-button>
+              <el-button type="danger" v-else @click="deleteFriend(searchFriendList.id)">删除好友
+
+              </el-button>
             </div>
             <!-- <div class="searchFriendButton">
               <div class="searchFriendButtonItem">
@@ -190,6 +192,7 @@
               <img src="@/assets/chat/sendmessage.png">
               <div>删除好友</div>
             </div> -->
+            <el-button type="primary" icon="el-icon-s-promotion" @click="sendMessage(friendInfo)">发送消息</el-button>
             <el-button type="danger" icon="el-icon-delete" @click="deleteFriend">删除好友</el-button>
           </div>
         </div>
@@ -483,7 +486,16 @@ export default {
     openAddWindow(id){
       this.addform.id = id;
       this.addFriendWindowStatus = true;
-    }
+    },
+    //发送消息
+    sendMessage(friendInfo){
+      console.log(friendInfo);
+      //带着friend_id跳转到hall页面
+      this.$router.push({
+        path:'/hall',
+        query:{friend_id:friendInfo.user_id}
+      }); 
+    },
     //3.操作弹出框 end------------------------------------------------------------>
     
   },

+ 75 - 177
src/views/chat/creatTopic.vue

@@ -5,11 +5,15 @@
       <el-form :model="form" ref="form" :rules="formRules" label-position="left" label-width="120px">
         <div class="formDiv">
           <div>
-            <el-form-item label="课题名称:" prop="cat_arr_id" class="custom-align-right">
-              <el-cascader :key="parentKey" v-model="form.cat_arr_id" placeholder="请选择课题名称" :props="parentData" filterable clearable></el-cascader>
+            <el-form-item label="课题分类:" prop="type" class="custom-align-right">
+              <el-select v-model="form.type" placeholder="请选择课题分类..">
+                <!-- <el-option label="科研" value="1"></el-option>
+                <el-option label="维权" value="2"></el-option> -->
+                <el-option :label="item.label" :value="item.value" v-for="item in topicType"></el-option>
+              </el-select>
             </el-form-item>  
-            <el-form-item label="课题标题:" prop="keyword" class="custom-align-right">
-              <el-input v-model="form.keyword" autocomplete="off" placeholder="请输入资讯关键词"></el-input>
+            <el-form-item label="课题标题:" prop="title" class="custom-align-right">
+              <el-input v-model="form.title" autocomplete="off" placeholder="请输入课题标题"></el-input>
             </el-form-item>
             <div class="QuillTitle">
               <span>* </span>课题内容:
@@ -17,7 +21,7 @@
                 {{ showHtml ? '切换到编辑模式' : '切换到源码模式' }}
               </div>
             </div>
-            <el-form-item label="" prop="content">
+            <el-form-item label="">
               <div class="editor-container">
                 <div v-if="showHtml">
                   <textarea v-model="editorHtml" style="width: 100%; height: 400px;"></textarea>
@@ -29,18 +33,18 @@
                 <input type="file" ref="multiFileInput" @change="handleMultipleFiles" multiple hidden accept="image/jpeg, image/png" />
               </div>
             </el-form-item>
-            <el-form-item label="建立群聊:" prop="is_original" class="custom-align-right">
-              <el-radio-group v-model="form.is_original">
+            <el-form-item label="建立群聊:" prop="is_group" class="custom-align-right">
+              <el-radio-group v-model="form.is_group" :disabled="editStatus">
                 <el-radio :label="1">是</el-radio>
                 <el-radio :label="0">否</el-radio>
               </el-radio-group>
             </el-form-item>
             <div>
-              <el-form-item label="群聊名称:" prop="copyfrom" class="custom-align-right">
-                <el-input v-model="form.copyfrom" autocomplete="off" placeholder="请输入来源名称"></el-input>
+              <el-form-item label="群聊名称:" prop="group_name" class="custom-align-right" v-if="form.is_group==1">
+                <el-input v-model="form.group_name" autocomplete="off" placeholder="请输入群聊名称" :disabled="editStatus"></el-input>
               </el-form-item>
-              <el-form-item label="作者:" prop="linkurl" class="custom-align-right">
-                <el-input v-model="form.linkurl" autocomplete="off" placeholder="请输入来源链接"></el-input>
+              <el-form-item label="作者:" class="custom-align-right">
+                <el-input v-model="form.author" autocomplete="off" placeholder="请输入作者名"></el-input>
               </el-form-item>
             </div>
           </div>
@@ -50,7 +54,7 @@
     <div class="bottomBtnBox">
       <el-button type="info" @click="returnPage">返回</el-button>
       <el-button type="primary" @click="editToServe" v-if="editStatus==true">确定</el-button>
-      <el-button type="primary" @click="addToServe" v-else>发布</el-button>
+      <el-button type="primary" @click="addToServe" v-else>创建</el-button>
     </div>
   </div>
 </template>
@@ -101,49 +105,21 @@ export default {
       disclaimer:true,//免责声明
       //提交表单
       form: {
-        //1.1使用了外链
-        title: '',//资讯标题
-        islink:0,//是否使用外链 0非 1是
-        linkurl:"",//外链地址
-        //1.2没有使用外链
-        cat_arr_id:'',//导航池名称
-        level:"",//推荐等级
-        imgurl:"",//缩略图
-        keyword:"",//关键词
-        introduce:"",//描述
+        type:"",//课题分类
+        title:"",//课题标题
         content:"",//内容
+        is_group:0,//是否创建群聊
+        group_name:"",//群聊名称
         author:"",//作者
-        hits:"",//浏览量
-        is_original:0,//是否为原创 0非 1是
-        copyfrom:"",//来源名称
-        fromurl:"",//来源地址
-        status:0//状态 0待发布 1已发布 404已删除
       },
+      topicType:[],//课题分类
+      topicStatus:[],//课题状态
       //1.2 表单验证规则
       formRules: {
-        //资讯名称不能为空
         title:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //如果使用了外链,外链地址不能为空
-        linkurl:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //导航池名称不能为空
-        cat_arr_id:[{required:true,trigger:'blur',validator:validateArray}],
-        //推荐等级不能为空
-        //level:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //关键词不能为空
-        keyword:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //描述不能为空
-        introduce:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //内容不能为空
-        content:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //作者不能为空
-        author:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //是否原创不能为空
-        is_original:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //来源名称和地址不能为空
-        copyfrom:[{required:true,trigger:'blur',validator:validateEmpty}],
-        fromurl:[{required:true,trigger:'blur',validator:validateEmpty}],
-        //缩略图不能为空
-        imgUrl:[{required:true,trigger:'blur',validator:validateEmpty}]
+        type:[{required:true,trigger:'blur',validator:validateArray}],
+        is_group:[{required:true,trigger:'blur',validator:validateEmpty}],
+        group_name:[{required:true,trigger:'blur',validator:validateEmpty}],
       },
       //1.3富文本编辑器配置
       showHtml: false, //用于保存源码内容
@@ -187,36 +163,6 @@ export default {
           }
         }
       },
-      //1.4图片上传
-      imgUrl:"",//在页面上显示缩略图
-      //获取父级导航池
-      parentKey:0,//获取父级导航
-      parentData: {
-        checkStrictly: true,
-        lazy: true,
-        async lazyLoad (node, resolve) {
-          const { level, data } = node;
-          if (data && data.children && data.children.length !== 0) {
-            return resolve(node)
-          }
-          console.log(level)
-          let parentId = level == 0 ? 0 : data.value
-          let parames = {
-            'pid':parentId
-          }
-          self.$store.dispatch('pool/categoryList',parames).then(res=> {
-            if (res.data) {
-              const nodes = res.data.map(item => ({
-                value: item.id,
-                label: item.name,
-                leaf: level >= 3,
-                children: []
-              }))
-              resolve(nodes)
-            }
-          })
-        }
-      },
       //表单项 end ------------------------------------------------------------>
     };
   },
@@ -250,32 +196,22 @@ export default {
           message: '网络错误,请重试!'
         });
       })
-
       // 阻止默认的上传行为
       return false;
     },
     //1.2 提交表单
     addToServe(){
-      //提交之前先判断是否为外链
-      //如果使用了外链,清理掉除了外链以外的内容
-      if(this.form.islink==true){
-        this.form.islink = 1;
-        this.cleatForm(1)
-      }else{
-        this.form.islink = 0;
-      }
-
       //先进行验证
       this.$refs.form.validate(valid => {
         if (valid) {
           //console.log(this.form)
-          this.$store.dispatch('news/addArticle',this.form).then(res=> {
+          this.$store.dispatch('chat/addTopic',this.form).then(res=> {
             //汇报结果
             this.$message({
               type: 'success',
-              message: '已成功添加资讯!'
+              message: '已成功创建商圈!'
             });
-            this.cleatForm(2);
+            this.cleatForm();
             //返回列表页
             this.returnPage()
           }).catch(() => {
@@ -288,47 +224,38 @@ export default {
       })
     },
     //1.3 清理表单
-    cleatForm(type){
-      if(type==1){
-        //使用了外链,进行部分表单清理
-        //this.form.cat_arr_id = "";
-        this.form.level = "";
-        this.form.imgurl = "";
-        this.form.keyword = "";
-        this.form.introduce = "";
-        this.form.content = "";
-        //this.form.author = "";
-        this.form.hits = "";
-        this.form.is_original = "";
-        this.form.copyfrom = "";
-        this.form.fromurl = "";
-        this.form.status = "";
-      }
-      if(type==2){
-        //完全清理表单
-        this.form.title = "";
-        this.form.islink = "";
-        this.form.linkurl = "";
-        this.form.cat_arr_id = "";
-        this.form.level = "";
-        this.form.imgurl = "";
-        this.form.keyword = "";
-        this.form.introduce = "";
-        this.form.content = "";
-        this.form.author = "";
-        this.form.hits = "";
-        this.form.is_original = "";
-        this.form.copyfrom = "";
-        this.form.fromurl = "";
-        this.form.status = "";
-      }
+    cleatForm(){
+      this.form.type = "";
+      this.form.title = "";
+      this.form.content = "";
+      this.form.is_group = "";
+      this.form.group_name = "";
+      this.form.author = "";
+    },
+    //1.4 查询商圈分类
+    getTopicType(){
+      this.$store.dispatch('chat/topicType',this.getApiData).then(res=> {
+        this.topicType = res.data;
+        console.log(this.topicType)
+      }).catch(() => {
+        this.$message.error("查询商圈分类失败!");
+      })
+    },
+    //1.5 查询商圈状态
+    getTopicStatus(){
+      this.$store.dispatch('chat/topicStatus',this.getApiData).then(res=> {
+        this.topicStatus = res.data;
+        console.log(res)
+      }).catch(() => {
+        this.$message.error("查询商圈状态失败!");
+      })
     },
     //提交表单 end ------------------------------------------------------------>
 
     //2.跳转操作 start ------------------------------------------------------------>
     returnPage(){
       this.$router.push({
-        path: '/articleList',
+        path: '/topic',
       });
     },
     //跳转操作 end ------------------------------------------------------------>
@@ -337,50 +264,22 @@ export default {
     //3.1回显数据
     getMainData() {
       let data = {
-        id: this.$route.query.id
+        id: this.$route.query.id + ""
       };
-      this.$store.dispatch('news/getArticleInfo', data).then(res => {
+      this.$store.dispatch('chat/getTopicInfo', data).then(res => {
         console.log(res);
         this.form.title = res.data.title;
-        //判断是否使用了外链
-        if(res.data.islink==1){
-          this.form.islink = true;
-        }else{  
-          this.form.islink = false;
-        }
-        //不是原创的时候显示来源
-        if(res.data.is_original==1){
-          this.form.is_original = 1;
-        }else{
-          this.form.is_original = 0;
-          this.$nextTick(() => {
-            this.form.is_original = 0;
-            console.log('is_original:', this.form.is_original); // 确保值已更新
-          });
-          // <el-radio v-model="form.is_original" label="1">是</el-radio>
-          // <el-radio v-model="form.is_original" label="0">不是</el-radio>
-          this.form.linkurl = res.data.linkurl;
+        this.form.type = res.data.type;
+        this.form.content = res.data.content;
+        //如果已经创建了群聊,阻止其修改
+        if(this.$route.query.id){
+          if(res.data.group_name != null){
+            this.form.is_group = 1;
+            this.form.group_name = res.data.group_name;
+          }
         }
+        this.form.author = res.data.user_name;
         
-
-
-        // 回显导航池
-        this.form.cat_arr_id = Array.isArray(res.data.cat_arr_id) ? res.data.cat_arr_id : JSON.parse(res.data.cat_arr_id);
-        this.parentKey += 1; // 触发级联选择器重新加载
-        this.loadCascaderPath(this.form.cat_arr_id); // 加载路径数据
-
-        this.form.level = res.data.level;
-        this.form.imgurl = res.data.imgurl;
-        this.imgUrl = res.data.imgurl;
-        this.form.keyword = res.data.keyword;
-        this.form.introduce = res.data.introduce;
-        this.form.content = res.data.content;
-        this.form.author = res.data.author;
-        this.form.hits = res.data.hits;
-        this.form.is_original = res.data.is_original;
-        this.form.copyfrom = res.data.copyfrom;
-        this.form.fromurl = res.data.fromurl;
-        this.form.status = res.data.status;
       }).catch(() => {
         this.$message({
           type: 'info',
@@ -411,24 +310,19 @@ export default {
     },
     //1.3提交修改
     editToServe(){
-      //提交之前先判断是否为外链
-      //如果使用了外链,清理掉除了外链以外的内容
-      if(this.form.islink==1){
-        this.cleatForm(1)
-      }
       //添加要修改的id
-      this.form.id = this.editId;
+      this.form.id = this.editId + "";
       //先进行验证
       this.$refs.form.validate(valid => {
         if (valid) {
           //console.log(this.form)
-          this.$store.dispatch('news/updateArticle',this.form).then(res=> {
+          this.$store.dispatch('chat/updateTopic',this.form).then(res=> {
             //汇报结果
             this.$message({
               type: 'success',
-              message: '已成功添加资讯!'
+              message: '已成功修改群信息!'
             });
-            this.cleatForm(2);
+            this.cleatForm();
             //返回列表页
             this.returnPage()
           }).catch(() => {
@@ -549,15 +443,19 @@ export default {
 
   },
   mounted(){
+    //查询课题分类
+    this.getTopicType();
+
+    this.form.author = this.$store.state.user.name;
     //1.判断是新建还是回显
     if(this.$route.query.id!=undefined){
       this.editId = this.$route.query.id;
       this.editStatus = true;
-      console.log("编辑新闻!")
+      console.log("编辑商圈!")
       this.getMainData();
     }else{
       this.editStatus = false;
-      console.log("添加新闻!")
+      console.log("新建商圈!")
     }
 
     //复制内容到富文本 start ------------------------------------------------------------>

+ 626 - 23
src/views/chat/hall.vue

@@ -6,13 +6,44 @@
         <hallTitle :name="tableTitleName" @addUser="creatGroup" />
         <!--添加好友 end------------------------------------------>
         <!--搜索 start------------------------------------------>
-        <div class="searchBox">
-          <el-input
-            placeholder="请输入内容"
-            prefix-icon="el-icon-search"
-            v-model="searchConversation">
-          </el-input>
+        <div class="searchBoxMain">
+          <div class="searchBox">
+            <el-input
+              placeholder="请输入内容"
+              prefix-icon="el-icon-search"
+              v-model="searchConversation"
+              @keyup.enter.native="searchUserConversation"
+            >
+            </el-input>
+          </div>
+          <div class="searchFriendBox" v-if="searchConversationStatus">
+            <div class="searchFriendClose">
+              <div @click="closeSearchConversation" class="rightSlideBoxCloseIcon">
+                <i class="el-icon-close"></i>
+              </div>
+            </div>
+            <div class="searchFriendItem">
+              <div class="searchFriendAvatar" v-if="selectConversationItem.group_name==null">
+                <img :src="selectConversationItem.avatar">
+              </div>
+              <div class="searchFriendAvatar" v-else>
+                <img src="@/assets/chat/user/group.jpg">
+              </div>
+              <div class="searchFriendInfo">
+                <div class="searchFriendName">
+                  <div class="searchFriendNameText" v-if="selectConversationItem.group_name==null">{{selectConversationItem.user_name}}</div>
+                  <div class="searchFriendNameText" v-else>{{selectConversationItem.group_name}}</div>
+                </div>
+                <div class="searchFriendPhone" v-if="selectConversationItem.group_name==null">账号:{{selectConversationItem.user_name}}</div>
+                <div class="searchFriendPhone" v-else>多人群组</div>
+              </div>
+            </div>
+            <div class="searchFriendButton">
+              <el-button type="primary" @click="selectConversation(selectConversationItem)">发送消息</el-button>
+            </div>
+          </div>
         </div>
+        
         <!--搜索 end------------------------------------------>
         <div class="userListBox">
           <!--普通用户 start------------------------------------------>
@@ -176,13 +207,25 @@
                 <img src="@/assets/chat/user/user.png">
               </div>
             </div>
-
           </div>
           <div class="sendMessageBox">
             <div class="sendMessageTools">
-              <img src="@/assets/chat/send_img.png">
-              <img src="@/assets/chat/send_file.png">
-              <img src="@/assets/chat/send_message.png" @click="fileWindowStatus=true">
+              <!--上传文件 start-->
+              <div class="toolsBigBox">
+                <div class="toolsBox">
+                  <el-upload class="avatar-uploader" action="#" :show-file-list="false" :before-upload="beforeAvatarUpload">
+                    <img src="@/assets/chat/send_img.png">
+                  </el-upload>
+                  <img src="@/assets/chat/send_file.png">
+                  <img src="@/assets/chat/send_message.png" @click="fileWindowStatus=true">
+                </div>
+              </div>
+              <div class="fileBox" v-if="sendMessage.img.imgUrl!=''">
+                <img :src="sendMessage.img.imgUrl">
+                <div class="fileBoxText">{{ sendMessage.img.oldFileName }}</div>
+                <div><i class="el-icon-close"></i></div>
+              </div>
+              <!--上传文件 end-->
             </div>
             <div class="sendMessageInput">
               <el-input
@@ -275,7 +318,7 @@
                 </div> -->
               </div>
 
-              <div class="rightSlideUserItem">
+              <div class="rightSlideUserItem" @click="editGroupMember">
                 <div class="rightSlideUserItemIcon">
                   <div class="addUserIcon">
                     <i class="el-icon-plus"></i>
@@ -550,7 +593,7 @@
               <div><img src="@/assets/chat/user/user.png"></div>
             </div>
           </el-tab-pane>
-          <el-tab-pane label="日期" name="date">
+          <!-- <el-tab-pane label="日期" name="date">
             <div class="fileWindowDateBox">
               <el-date-picker
                 v-model="time"
@@ -595,7 +638,7 @@
                 </div>
               </div>
             </div>
-          </el-tab-pane>
+          </el-tab-pane> -->
         </el-tabs>
         <!--聊天记录选项卡 end------------------------------------------------------------>
       </div>
@@ -665,6 +708,81 @@
     </el-dialog>
     <!--加入群聊弹出框 end------------------------------------------------------------>
 
+
+    <!--编辑群成员弹出框 start------------------------------------------------------------>
+    <!--编辑时 左侧显示的是好友列表 右侧显示的是群成员-->
+    <el-dialog :visible.sync="groupEditWindowStatus" :close-on-click-modal="false" width="1028px" @closed="cancelEditGroupMember">
+      <div class="searchWindow">
+        <div class="searchWindowLeft">
+          <div class="searchUserWindowBox">
+            <el-input
+              placeholder="请输入内容"
+              prefix-icon="el-icon-search"
+              v-model="searchGroup"
+              @keyup.enter.native="searchGroupUser">
+            </el-input>
+            <div class="searchFriendBox" v-if="groupEditMainWindowStatus">
+              <div class="searchFriendClose">
+                <div @click="closeAddGroupUserWindow" class="rightSlideBoxCloseIcon">
+                  <i class="el-icon-close"></i>
+                </div>
+              </div>
+              <div class="searchFriendItem">
+                <div class="searchFriendAvatar">
+                  <img :src="groupSearchUser.avatar">
+                </div>
+                <div class="searchFriendInfo">
+                  <div class="searchFriendName">
+                    <div class="searchFriendNameText">{{groupSearchUser.user_name}}</div>
+                  </div>
+                  <div class="searchFriendPhone">账号:{{groupSearchUser.user_name}}</div>
+                </div>
+              </div>
+              <div class="searchFriendButton">
+                <el-button v-if="groupSearchUser.status==false" type="primary" @click="addGroupUser(groupSearchUser)">添加</el-button>
+                <el-button v-else type="warning" @click="addGroupUser(groupSearchUser)">移除</el-button>
+              </div>
+            </div>
+
+          </div>
+          <!--搜索用户 start------------------------------------------------------------>
+          <div class="searchUserBox">
+            <!-- <div class="searchNameEnglish">A</div> -->
+            <div class="searchUserItem" v-for="(item,index) in friendsList" :key="index">
+              <el-checkbox v-model="item.status" @change="changeSelectFriends(item)"></el-checkbox>
+              <img :src="item.avatar">
+              <div class="searchUserName" v-if="item.remark!=null">{{item.remark}}</div>
+              <div class="searchUserName" v-else>{{item.user_name}}</div>
+            </div>
+          </div>
+          <!--搜索用户 end------------------------------------------------------------>
+        </div>
+        <div class="searchWindowRight">
+          <div class="searchWindowRightTop">
+            <div class="searchWindowRightTitle">编辑群聊</div>
+            <div class="searchWindowRightNum">已选择{{groupUserList.length}}个联系人</div>
+          </div>
+          <div class="searchWindowUserList">
+            <div class="searchWindowUserItem" v-for="(item,index) in groupUserList" :key="index" v-if="item.status==true">
+              <div class="searchWindowUserIcon">
+                <img :src="item.avatar">
+                <div class="searchWindowDeleteUser" @click="editRemoveGroupUser(item.user_id)" v-if="Number(creatorId)==Number(myUserId)&&item.user_id!=myUserId">
+                  <i class="el-icon-close"></i>
+                </div>
+              </div>
+              <div class="searchWindowUserName" v-if="item.remark!=null">{{item.remark}}</div>
+              <div class="searchWindowUserName" v-else>{{item.user_name}}</div>
+            </div>
+          </div>
+          <div class="searchWindowFooter">
+            <el-button type="info" @click="cancelEditGroupMember">取消</el-button>
+            <el-button type="primary" @click="saveEditGroupMember" :disabled="groupUserList.filter(item=>item.status).length<2">完成</el-button>
+          </div>
+        </div>
+      </div>
+    </el-dialog>
+    <!--编辑群成员弹出框 end------------------------------------------------------------>
+
     <!-- <div class="layerBox">
       <el-container style="height: 100vh;">
         <el-aside width="300px" style="background: #f2f2f2;">
@@ -752,6 +870,8 @@ export default {
 
       //2.会话列表 start---------------------------------------->
       conversationList:[],//会话列表
+      selectConversationItem:{},//选择会话
+      searchConversationStatus:false,//搜索会话状态
       chatrecords:[],//聊天记录
       ifTop:false,//是否为置顶
       searchConversation:'',//搜索会话
@@ -771,12 +891,15 @@ export default {
       editGroupNoticeWindow:false,//编辑群公告弹出框
       editGroupNameWindow:false,//编辑群名称弹出框
       addGroupWindow:false,//加入群聊弹出框
-      groupId:'',//准备加入群聊的id
+      groupEditWindowStatus:false,//编辑群成员弹出框
+      groupEditMainWindowStatus:false,//编辑弹框中搜索人员
+      groupId:'',//当前编辑的群聊的id
       friendsList:[],//好友列表
       searchGroup:'',//搜索群聊
       groupUserList:[],//群成员列表
       groupInfo:{},//群设置信息
       creatorId:'',//群主id
+      groupSearchUser:{},//搜索群成员
       //4.群聊 end---------------------------------------->
       
       //5.用户详情 start---------------------------------------->
@@ -798,6 +921,16 @@ export default {
         }
       },
       //7.加好友 end---------------------------------------->
+
+      //8.发消息 start---------------------------------------->
+      sendMessage:{
+        img:{
+          imgUrl:'',//图片地址
+          oldFileName:"",//文件名
+        }
+        
+      }
+      //8.发消息 end---------------------------------------->
       
       //老刘的码 start---------------------------------------->
       // activeConversation: null,
@@ -828,6 +961,8 @@ export default {
     },
     //1.2选择会话
     selectConversation(item){
+      //关闭搜索会话搜索框
+      this.closeSearchConversation();
       //清理单聊状态
       this.conversationList.forEach(conversation => {
         conversation.status = (conversation.receiver_id === item.receiver_id) ? 1 : 0;
@@ -855,6 +990,29 @@ export default {
         this.$message.error('获取聊天记录失败!')
       })
     },
+    //1.4搜索会话
+    searchUserConversation(){
+      this.selectConversationItem = {};
+      let flag = false; //是否找到会话
+      //当group_name等于搜索内容的时候,选择会话
+      for(let item of this.conversationList){
+        if(item.group_name==this.searchConversation||item.user_name==this.searchConversation){
+          this.selectConversationItem = item;
+          flag = true;
+        }
+      }
+      //如果没有找到会话 就提示没有找到
+      if(!flag){
+        this.$message.error('没有找到该会话!')
+      }else{
+        this.searchConversationStatus = true;
+      }
+    },
+    //1.5关闭搜索会话
+    closeSearchConversation(){
+      this.selectConversationItem = {};
+      this.searchConversationStatus = false;
+    },
     //1.会话列表 end---------------------------------------->
 
     //2.群聊 start---------------------------------------->
@@ -966,6 +1124,9 @@ export default {
     //2.10获取群成员
     getGroupMember(group_id){
       this.$store.dispatch('chat/getGroupMembers',{group_id:group_id}).then(res=> {
+        for(let item of res.data){
+          item.status = true; //默认选中
+        }
         this.groupUserList = res.data;
       }).catch(() => {
         this.$message.error('获取群成员信息失败!')
@@ -1078,6 +1239,143 @@ export default {
         this.$message.error('编辑群公告失败!')
       })
     },
+    //2.17回显群内成员
+    editGroupMember(){
+      //1.打开编辑窗口
+      this.groupEditWindowStatus = true;
+      //2.获得好友列表
+      this.$store.dispatch('chat/getFriendsList',{user_id:this.myUserId}).then(res=> {
+        //3.设置成未选中
+        for(let item of res.data){
+          item.status = false; //默认未选中
+        }
+        this.friendsList = res.data;
+        console.log(this.friendsList)
+        console.log(this.groupUserList)
+        //4.判断一下groupUserList是否包含friendsList中的成员,如果包含,就把friendsList中的成员status设置为true
+        this.friendsList.forEach(item => {
+          console.log(item.user_id)
+          if(this.groupUserList.find(groupItem => groupItem.user_id == item.friend_id)){
+            item.status = true;
+          }
+        });
+        console.log(this.friendsList)
+      }).catch(() => {
+        this.$message.error('获取好友列表失败!')
+      })
+    },
+    //2.18编辑群成员
+    changeSelectFriends(item) {
+      // 检查 groupUserList 是否包含 item
+      const index = this.groupUserList.findIndex(i => i.user_id == item.friend_id);
+      // 如果包含,就删除这个 item;否则,添加到 groupUserList
+      // 注意不能直接把friend_id放进去,因为最后编辑保存的时候取的是user_id,这里要传一下值
+      if (index !== -1) {
+        this.groupUserList.splice(index, 1);
+      } else {
+        item.user_id = item.friend_id;
+        this.groupUserList.push(item);
+      }
+    },
+    //2.19取消编辑群成员
+    cancelEditGroupMember(){
+      this.groupEditWindowStatus = false;
+      this.getGroupMember(this.groupId);
+    },
+    //2.20保存编辑群成员
+    saveEditGroupMember(){
+      let groupUser = []
+      
+      // console.log(this.myUserId)
+      // console.log(this.groupUserList)
+      //取出所有选择的user_id且不能与自己的id相同
+      for(let item of this.groupUserList){
+        if(Number(item.user_id) != Number(this.myUserId)){
+          groupUser.push(item.user_id);
+        }
+      }
+      groupUser = groupUser.join(',');
+      //console.log(groupUser)
+      let data = {
+        group_id:this.groupId,
+        group_member:groupUser
+      }
+      this.$store.dispatch('chat/updateGroupMembers',data).then(res=> {
+        this.$message.success('群成员保存成功!')
+        this.groupEditWindowStatus = false;
+        this.getGroupMember(this.groupId);
+      }).catch(() => {
+        this.$message.error('群成员保存失败!')
+        this.groupEditWindowStatus = false;
+        this.getGroupMember(this.groupId);
+      })
+    },
+    //2.21搜索群成员
+    searchGroupUser(){
+      this.groupSearchUser = {};
+      let flag = false; //是否找到成员
+      for(let item of this.friendsList){
+        if(item.user_name==this.searchGroup||item.remark==this.searchGroup){
+          this.groupSearchUser = item;
+          flag = true;
+        }
+      }
+      console.log(this.searchGroup)
+      console.log(this.friendsList)
+      console.log(flag)
+      //this.searchGroup 搜索的内容
+      //this.groupEditWindowStatus 弹出框状态
+      //this.groupSearchUser 搜索出来的成员
+      if(!flag){
+        this.$message.error('没有找到该成员!')
+      }else{
+        this.groupEditMainWindowStatus = true;
+      }
+
+    },
+    //2.22添加该群成员
+    addGroupUser(item){
+      item.user_id = item.friend_id;
+      console.log(item)
+      //找到friendsList中的该成员,把status设置为相反的值
+      for(let item of this.friendsList){
+        if(item.user_id==this.groupSearchUser.user_id){
+          item.status = !item.status;
+        }
+      }
+      // 找到groupUserList中是否存在该成员,如果存在就删除,没有不存在就添加
+      const index = this.groupUserList.findIndex(member => member.user_id === item.user_id);
+      if (index !== -1) {
+        // 如果存在,删除该成员
+        this.groupUserList.splice(index, 1);
+      } else {
+        // 如果不存在,添加该成员
+        this.groupUserList.push(item);
+      }
+      //完成后关闭弹出框
+      this.closeAddGroupUserWindow();
+    },
+    //2.23 关闭添加成员弹出框
+    closeAddGroupUserWindow(){
+      this.searchGroup = "";
+      this.groupSearchUser = {};
+      this.groupEditMainWindowStatus = false;
+    },
+    //2.24 编辑移除群成员
+    editRemoveGroupUser(id){
+      console.log(id)
+      //移除this.groupUserList中user_id与id一致的
+      const index = this.groupUserList.findIndex(member => member.user_id === id);
+      if (index !== -1) {
+        this.groupUserList.splice(index, 1);
+      }
+      //找到friendsList中user_id与id一致的,把status设置为false
+      for(let item of this.friendsList){
+        if(item.friend_id==id){
+          item.status = false;
+        }
+      }
+    },
     //2.群聊 end---------------------------------------->
 
     //3.全局应用 start---------------------------------------->
@@ -1093,6 +1391,47 @@ export default {
     },
     //3.全局应用 end---------------------------------------->
     
+    //4.会话框 start---------------------------------------->
+    //4.1上传文件
+    beforeAvatarUpload(file) {
+      const isJPG = file.type === 'image/jpeg';
+      const isPNG = file.type === 'image/png';
+      const isLt2M = file.size / 1024 / 1024 < 2;
+
+      if (!isJPG && !isPNG) {
+        this.$message.error('发送的图片只能是 JPG 或 PNG 格式!');
+        return false;
+      }
+      if (!isLt2M) {
+        this.$message.error('发送的图片大小不能超过 2MB!');
+        return false;
+      }
+
+      const formData = new FormData();
+      formData.append('file', file);
+
+      this.$store.dispatch('pool/uploadFile',formData).then(res=> {
+        // this.imgUrl = res.data.imgUrl;//显示缩略图
+        // this.form.imgurl = res.data.imgUrl;//提供表单地址
+        this.sendMessage.img.imgUrl = res.data.imgUrl;//获取上传的图片地址
+        this.sendMessage.img.oldFileName = res.data.oldFileName;
+        console.log(res.data.imgUrl)
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '网络错误,请重试!'
+        });
+      })
+
+      // 阻止默认的上传行为
+      return false;
+    },
+    //4.会话框 end---------------------------------------->
+    
+
+
+
+
     //老刘的代码 start---------------------------------------->
     // selectConversation(conversation) {
     //   this.activeConversation = conversation;
@@ -1227,11 +1566,126 @@ export default {
       background: #fff;
       border-radius: 20px;
       margin-right: 20px;
-      .searchBox {
-        padding-left: 25px;
-        padding-right: 25px;
-        padding-bottom: 20px;
+      .searchBoxMain {
+        position: relative;
+        .searchFriendClose {
+          display: flex;
+          align-items: center;
+          justify-content: flex-end;
+          padding-right: 10px;
+          padding-bottom: 10px;
+          .rightSlideBoxCloseIcon {
+            cursor: pointer;
+            width: 28px;
+            height: 28px;
+            line-height: 28px;
+            text-align: center;
+            background: #EFEFEF;
+            border-radius: 8px;
+          }
+        }
+        .searchBox {
+          padding-left: 25px;
+          padding-right: 25px;
+          padding-bottom: 20px;
+        }
+        .searchFriendBox {
+          position: absolute;
+          width: 280px;
+          border-radius: 8px;
+          top: 0;
+          right: -300px;
+          background: #fff;
+          box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1);
+          border-radius: 8px;
+          z-index: 100;
+          box-sizing: border-box;
+          padding: 20px 0 30px 0;
+          .searchFriendItem {
+            display: flex;
+            align-items: center;
+            justify-content: flex-start;
+            border-bottom: 1px solid #E9EDF7;
+            padding: 0 20px 30px 20px;
+            .searchFriendAvatar {
+              img {
+                width: 66px;
+                height: 66px;
+                border-radius: 50%;
+              }
+              margin-right: 15px;
+            }
+            .searchFriendInfo {
+              flex: 1;
+              .searchFriendName {
+                display: flex;
+                align-items: center;
+                .gender {
+                  img {
+                    width: 12px;
+                    height: 12px;
+                  }
+                }
+                img {
+                  width: 18px;
+                  height: 18px;
+                  cursor: pointer;
+                }
+                .searchFriendNameText {
+                  font-size: 18px;
+                  width: 120px;
+                  height: 28px;
+                  line-height: 28px;
+                  white-space: nowrap; 
+                  overflow: hidden; 
+                  text-overflow: ellipsis;
+                }
+              }
+              .searchFriendPhone {
+                font-size: 14px;
+                color: #999;
+                margin-top: 10px;
+              }
+            }
+          }
+          .searchFriendLineBox {
+            display: flex;
+            align-items: center;
+            justify-content: flex-start;
+            padding: 20px;
+            border-bottom: 1px solid #E9EDF7;
+            .searchFriendLineTitle{
+              font-size: 16px;
+              color: #999999;
+              width: 90px;
+            }
+            .searchFriendLineContent{
+              font-size: 16px;
+              color: #333;
+              flex: 1;
+              .searchFriendLineContentItem{
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+              }
+            }
+          }
+          .searchFriendButton {
+            padding:40px 0 10px 0;
+            text-align: center;
+            .searchFriendButtonItem {
+              font-size: 14px;
+              color: #5570F1;
+              img {
+                width: 30px;
+                height: 30px;
+                margin-bottom: 5px;
+              }
+            }
+          }
+        }
       }
+      
       .userListBox {
         padding: 15px 0;
         overflow-y: auto;
@@ -1503,11 +1957,44 @@ export default {
         box-sizing: border-box;
         height: 276px;
         .sendMessageTools {
-          img {
-            width: 36px;
-            height: 36px;
-            margin-right: 30px;
-            cursor: pointer;
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+          .toolsBigBox {
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            .toolsBox {
+              display: flex;
+              align-items: center;
+              justify-content: flex-start;
+              img {
+                width: 36px;
+                height: 36px;
+                margin-right: 30px;
+                cursor: pointer;
+              }
+            }
+          }
+          .fileBox {
+            width: 180px;
+            display: flex;
+            align-items: center;
+            border: 1px solid #E9EDF7;
+            border-radius: 8px;
+            padding: 5px 10px;
+            .fileBoxText {
+              font-size: 14px;
+              color: #999;
+              white-space: nowrap;
+              overflow: hidden;
+              text-overflow: ellipsis;
+              width: 110px;
+            }
+            img {
+              width: 40px;
+              margin-right: 5px;
+            }
           }
         }
         .sendMessageInput {
@@ -1899,6 +2386,120 @@ export default {
       box-sizing: border-box;
       border-right: 1px solid #E9EDF7;
       padding-right: 25px;
+      .searchUserWindowBox {
+        position: relative;
+        .searchFriendClose {
+          display: flex;
+          align-items: center;
+          justify-content: flex-end;
+          padding-right: 10px;
+          padding-bottom: 10px;
+          .rightSlideBoxCloseIcon {
+            cursor: pointer;
+            width: 28px;
+            height: 28px;
+            line-height: 28px;
+            text-align: center;
+            background: #EFEFEF;
+            border-radius: 8px;
+          }
+        }
+        .searchFriendBox {
+          position: absolute;
+          width: 280px;
+          border-radius: 8px;
+          top: 0;
+          right: -280px;
+          background: #fff;
+          box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.1);
+          border-radius: 8px;
+          z-index: 100;
+          box-sizing: border-box;
+          padding: 20px 0 30px 0;
+          .searchFriendItem {
+            display: flex;
+            align-items: center;
+            justify-content: flex-start;
+            border-bottom: 1px solid #E9EDF7;
+            padding: 0 20px 30px 20px;
+            .searchFriendAvatar {
+              img {
+                width: 66px;
+                height: 66px;
+                border-radius: 50%;
+              }
+              margin-right: 15px;
+            }
+            .searchFriendInfo {
+              flex: 1;
+              .searchFriendName {
+                display: flex;
+                align-items: center;
+                .gender {
+                  img {
+                    width: 12px;
+                    height: 12px;
+                  }
+                }
+                img {
+                  width: 18px;
+                  height: 18px;
+                  cursor: pointer;
+                }
+                .searchFriendNameText {
+                  font-size: 18px;
+                  width: 120px;
+                  height: 28px;
+                  line-height: 28px;
+                  white-space: nowrap; 
+                  overflow: hidden; 
+                  text-overflow: ellipsis;
+                }
+              }
+              .searchFriendPhone {
+                font-size: 14px;
+                color: #999;
+                margin-top: 10px;
+              }
+            }
+          }
+          .searchFriendLineBox {
+            display: flex;
+            align-items: center;
+            justify-content: flex-start;
+            padding: 20px;
+            border-bottom: 1px solid #E9EDF7;
+            .searchFriendLineTitle{
+              font-size: 16px;
+              color: #999999;
+              width: 90px;
+            }
+            .searchFriendLineContent{
+              font-size: 16px;
+              color: #333;
+              flex: 1;
+              .searchFriendLineContentItem{
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+              }
+            }
+          }
+          .searchFriendButton {
+            padding:40px 0 10px 0;
+            text-align: center;
+            .searchFriendButtonItem {
+              font-size: 14px;
+              color: #5570F1;
+              img {
+                width: 30px;
+                height: 30px;
+                margin-bottom: 5px;
+              }
+            }
+          }
+        }
+      }
       .searchUserBox {
         padding-top: 30px;
         .searchNameEnglish {
@@ -1945,6 +2546,8 @@ export default {
         height: 400px;
         display: flex;
         flex-wrap: wrap;
+        align-items: flex-start;
+        align-content: flex-start;
         .searchWindowUserItem {
           width:20%;
           text-align: center;

+ 110 - 75
src/views/chat/topic.vue

@@ -7,19 +7,23 @@
           <el-col :span="8">
             <div class="searchBox">
               <div class="searchTitle">课题标题:</div>
-              <el-input placeholder="请输入资讯题目" autocomplete="off" v-model="getApiData.title"/>
+              <el-input placeholder="请输入课题标题" autocomplete="off" v-model="getApiData.title"/>
             </div>
           </el-col>
           <el-col :span="8">
             <div class="searchBox">
               <div class="searchTitle">课题分类:</div>
-              <el-input placeholder="请输入导航池名称" autocomplete="off" v-model="getApiData.category_name"/>
+              <el-select v-model="getApiData.type" placeholder="请选择课题分类..">
+                <!-- <el-option label="科研" value="1"></el-option>
+                <el-option label="维权" value="2"></el-option> -->
+                <el-option :label="item.label" :value="item.value" v-for="item in topicType"></el-option>
+              </el-select>
             </div>
           </el-col>
           <el-col :span="8">
             <div class="searchBox">
               <div class="searchTitle">作者:</div>
-              <el-input placeholder="请输入作者姓名" autocomplete="off" v-model="getApiData.author"/>
+              <el-input placeholder="请输入作者姓名" autocomplete="off" v-model="getApiData.nickname"/>
             </div>
           </el-col>
         </el-row>
@@ -29,9 +33,11 @@
           <el-col :span="8">
             <div class="searchBox">
               <div class="searchTitle">审核状态:</div>
-              <el-select v-model="getApiData.islink" placeholder="请选择..">
-                <el-option label="否" value="0"></el-option>
-                <el-option label="是" value="1"></el-option>
+              <el-select v-model="getApiData.status" placeholder="请选择审核状态..">
+                <!-- <el-option label="待审核" value="1"></el-option>
+                <el-option label="已通过" value="2"></el-option>
+                <el-option label="已拒绝" value="3"></el-option> -->
+                <el-option :label="item.label" :value="item.value" v-for="item in topicStatus"></el-option>
               </el-select>
             </div>
           </el-col>
@@ -57,28 +63,28 @@
           <el-table :data="tableData" style="width: 100%">
             <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
             <el-table-column prop="title" label="课题标题" width=""></el-table-column>
-            <el-table-column prop="category_name" label="课题分类" width=""></el-table-column>
-            <el-table-column prop="islink" label="作者" width=""></el-table-column>
-            <el-table-column prop="fromurl" label="创建时间" width=""></el-table-column>
-            <el-table-column prop="author" label="修改时间" width=""></el-table-column>
+            <el-table-column prop="type" label="课题分类" width="">
+              <template slot-scope="scope">
+                <div v-if="scope.row.type==1">科研</div>
+                <div v-if="scope.row.type==2">维权</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="user_name" label="作者" width=""></el-table-column>
+            <el-table-column prop="created_at" label="创建时间" width=""></el-table-column>
+            <el-table-column prop="updated_at" label="修改时间" width=""></el-table-column>
             <el-table-column prop="status" label="状态" width="">
               <template slot-scope="scope">
-                <span v-if="scope.row.status==404">404</span>
-                <el-switch
-                  v-else
-                  v-model="scope.row.status"
-                  :active-value="1"
-                  :inactive-value="0"
-                  @change="upRow(scope.row.id,scope.row.status)"
-                ></el-switch>
+                <div v-if="scope.row.status==1" class="status1">待审核</div>
+                <div v-if="scope.row.status==2" class="status2">已通过</div>
+                <div v-if="scope.row.status==3" class="status3">已拒绝</div>
               </template>
             </el-table-column>
             <el-table-column fixed="right" label="操作" width="280" header-align="center">
               <template slot-scope="scope">
                 <div class="listBtnBox">
-                  <div class="listDeleteBtn" @click="deleteRow(scope.row.id, tableData)"><i class="el-icon-delete"></i>移除</div>
-                  <div class="listEditBtn" @click="goEdit(scope.row.id, tableData)"><i class="el-icon-edit-outline"></i>编辑</div>
-                  <div class="listMainBtn" @click="auditStatus=true"><i class="el-icon-edit-outline"></i>审核</div>
+                  <div class="listDeleteBtn" @click="deleteRow(scope.row.id)"><i class="el-icon-delete"></i>删除</div>
+                  <div class="listEditBtn" @click="goEdit(scope.row.id)"><i class="el-icon-edit-outline"></i>编辑</div>
+                  <div class="listMainBtn" @click="openEditWindow(scope.row.id)"><i class="el-icon-edit-outline"></i>审核</div>
                 </div>
               </template>
             </el-table-column>
@@ -100,20 +106,19 @@
     <!--审核状态弹出框 start------------------------------------------------------------>
     <el-dialog :visible.sync="auditStatus" title="审核状态" :close-on-click-modal="false" width="420px">
       <div>
-        <div>
-          <el-radio-group v-model="radio">
-            <el-radio :label="1">通过</el-radio>
-            <el-radio :label="2">拒绝</el-radio>
+        <div class="contentBox">
+          <el-radio-group v-model="form.radio">
+            <el-radio :label="2">通过</el-radio>
+            <el-radio :label="3">拒绝</el-radio>
           </el-radio-group>
         </div>
         <div class="footerButtonBox">
-          <el-button type="info">取消</el-button>
-          <el-button type="primary">确定</el-button>
+          <el-button type="info" @click="auditStatus = false">取消</el-button>
+          <el-button type="primary" @click="editStatus">确定</el-button>
         </div>
       </div>
     </el-dialog>
     <!--审核状态弹出框 end------------------------------------------------------------>
-
   </div>
 </template>
 
@@ -130,18 +135,24 @@ export default {
   data() {
     return {
       //1.列表和分页相关 start ------------------------------------------------------------>
-      tableDivTitle:"资讯列表",
+      tableDivTitle:"课题列表",
       tableData:[],//内容
       editId:0,//要修改的网站id
+      topicType:[],//课题分类
+      topicStatus:[],//课题状态
       getApiData:{
+        title:"",//标题
+        type:"",//课题分类
+        nickname:"",//作者
+        status:"",//审核状态
         page:1,//当前是第几页
         page_size:10,//一共多少条
       },
       allCount:0,//总条数
-      form:{
-        radio:1 //1=通过 2=拒绝
-      },
       auditStatus:false,//审核状态弹出框
+      form:{
+        radio:2 //1=通过 2=拒绝
+      }
       //分页相关 end ------------------------------------------------------------>
     }
   },
@@ -153,20 +164,8 @@ export default {
         this.getApiData.page = 1;
       }
       this.$store.dispatch('chat/getTopicsList',this.getApiData).then(res=> {
-        console.log(res)
-        //格式化:islink=0为不使用外面 islink=1为使用外链
-        //status=1为显示 status=2为不显示
-        // let data = [];
-        // for(let item of res.data.rows){
-        //   // if(item.status==0){item.status="隐藏"}
-        //   // if(item.status==1){item.status="显示"}
-        //   // if(item.status==404){item.status="已删除"}
-        //   if(item.islink==0){item.islink="否"}
-        //   if(item.islink==1){item.islink="是"}
-        //   data.push(item)
-        // }
-        // this.tableData = res.data.rows; //给与内容
-        // this.allCount = res.data.count; //给与总条数
+        this.tableData = res.data.data; //给与内容
+        this.allCount = res.data.total; //给与总条数
       }).catch(() => {
         this.$message({
           type: 'warning',
@@ -174,7 +173,7 @@ export default {
         });
       })
     },
-    //1.2 删除内容
+    //1.2 删除商圈
     deleteRow(id){
       this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
         confirmButtonText: '确定',
@@ -182,7 +181,10 @@ export default {
         type: 'warning'
       }).then(() => {
         console.log("当前删除:" + id)
-        this.$store.dispatch('news/delArticle',{id:id}).then(res=> {
+        let data = {
+          id:id+""
+        }
+        this.$store.dispatch('chat/delTopic',data).then(res=> {
           this.getData();
           this.$message({
             type: 'success',
@@ -201,26 +203,6 @@ export default {
         });
       });
     },
-    //1.3 修改网站状态
-    upRow(id,status){
-      let data = {
-        id:id,
-        status:status
-      }
-      this.$store.dispatch('news/upArticleStatus',data).then(res=> {
-        if(res.code==200){
-          this.$message({
-            type: 'success',
-            message: '资讯状态已修改!'
-          });
-        }
-      }).catch(() => {
-        this.$message({
-          type: 'warning',
-          message: '已取消删除'
-        });
-      });
-    },
     //1.4 列表内容分页
     //直接跳转
     handleSizeChange(val) {
@@ -236,17 +218,34 @@ export default {
     clearSearchList(){
       this.tableData = [];
       this.getApiData.title = "";
-      this.getApiData.category_name = "";
-      this.getApiData.author = "";
-      this.getApiData.islink = "";
+      this.getApiData.type = "";
+      this.getApiData.nickname = "";
       this.getApiData.status = "";
       this.getApiData.page = 1;
       this.getApiData.pageSize = 10;
       this.getData();
     },
+    //1.7 查询商圈分类
+    getTopicType(){
+      this.$store.dispatch('chat/topicType',this.getApiData).then(res=> {
+        this.topicType = res.data;
+        console.log(this.topicType)
+      }).catch(() => {
+        this.$message.error("查询商圈分类失败!");
+      })
+    },
+    //1.8 查询商圈状态
+    getTopicStatus(){
+      this.$store.dispatch('chat/topicStatus',this.getApiData).then(res=> {
+        this.topicStatus = res.data;
+        console.log(res)
+      }).catch(() => {
+        this.$message.error("查询商圈状态失败!");
+      })
+    },
     //列表和分页相关 end ------------------------------------------------------------>
 
-    //2.添加新闻 start ------------------------------------------------------------>
+    //2.添加商圈 start ------------------------------------------------------------>
     //跳转到资讯发布页面
     goCreat(){
       this.$router.push({
@@ -261,16 +260,52 @@ export default {
         path: '/creatTopic',
         query: data
       });
-    }
-    //添加新闻 end ------------------------------------------------------------>
+    },
+    //添加商圈 end ------------------------------------------------------------>
+
+    //3.审核 start ------------------------------------------------------------>
+    openEditWindow(id){
+      this.editId = id;
+      this.auditStatus = true;
+    },
+    editStatus(){
+      let data = {
+        id:this.editId + "",
+        status:this.form.radio + ""
+      }
+      this.$store.dispatch('chat/updateTopic',data).then(res=> {
+        console.log(res)
+        this.getData();
+        this.auditStatus = false;
+      });
+    },
+    //3.审核 end ------------------------------------------------------------>
   },
   mounted(){
     //1.获得初始数据
     this.getData();
+    //2.查询课题分类
+    this.getTopicType();
+    // //3.查询课题状态
+    this.getTopicStatus();
   }
 }
 </script>
 
 <style scoped lang="less">
-
+  .contentBox {
+    padding: 0 0 20px 0;
+  }
+  .footerButtonBox {
+    text-align: right;
+  }
+  .status1 {
+    color: #F19655;
+  }
+  .status2 {
+    color: #519C66;
+  }
+  .status3 {
+    color: #CC5F5F;
+  }
 </style>

+ 269 - 212
src/views/complaint/complaintList.vue

@@ -6,54 +6,11 @@
         <el-row>
           <el-col :span="8">
             <div class="searchBox">
-              <div class="searchTitle">性质:</div>
+              <div class="searchTitle">类型:</div>
               <el-select v-model="getApiData.nature" placeholder="请选择.." @change="getNatureChildren">
                 <el-option
                   v-for="item in natureData"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
-            </div>
-          </el-col>
-          <el-col :span="8">
-            <div class="searchBox">
-              <div class="searchTitle">性质进度:</div>
-              <el-select v-model="getApiData.nature_level" placeholder="请选择">
-                <el-option
-                  v-for="item in netureLevelData"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
-            </div>
-          </el-col>
-          <el-col :span="8">
-            <div class="searchBox">
-              <div class="searchTitle">类型:</div>
-              <el-select v-model="getApiData.type" placeholder="请选择.." @change="getTypeChildren">
-                <el-option
-                  v-for="item in typeData"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
-            </div>
-          </el-col>
-        </el-row>
-      </div>
-      <div class="layerBoxLineTwo">
-        <el-row>
-          <el-col :span="8">
-            <div class="searchBox">
-              <div class="searchTitle">类型进度:</div>
-              <el-select v-model="getApiData.type_level" placeholder="请选择">
-                <el-option
-                  v-for="item in typeLevelData"
-                  :key="item.value"
+                  :key="item.id"
                   :label="item.label"
                   :value="item.value">
                 </el-option>
@@ -93,10 +50,10 @@
           <el-table :data="tableData" style="width: 100%">
             <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
             <el-table-column prop="title" label="标题"></el-table-column>
-            <el-table-column prop="nature_name" label="性质"></el-table-column>
-            <el-table-column prop="nature_level_name" label="进度"></el-table-column>
+            <el-table-column prop="nature_name" label="类型"></el-table-column>
+            <!-- <el-table-column prop="nature_level_name" label="进度"></el-table-column>
             <el-table-column prop="type_name" label="类型"></el-table-column>
-            <el-table-column prop="type_level_name" label="类型说明"></el-table-column>
+            <el-table-column prop="type_level_name" label="类型说明"></el-table-column> -->
             <el-table-column label="判决书">
               <template slot-scope="scope">
                 {{ scope.row.judgment ? '有' : '无' }}
@@ -156,47 +113,67 @@
           <el-form-item label="标题:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-input v-model="form.title" autocomplete="off" disabled></el-input>
           </el-form-item>
-          <el-form-item label="性质:" :label-width="formLabelWidth" prop="nature" class="custom-align-right">
-            <div class="formLabelFloatBox">
-              <el-select v-model="form.nature" placeholder="请选择.." @change="getWindowNatureChildren">
-                <el-option
-                  v-for="item in windowNatureData"
-                  :key="item.value"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
-              </el-select>
-            </div>
-          </el-form-item>
-          <el-form-item label="性质进度:" :label-width="formLabelWidth" prop="nature_level" class="custom-align-right">
-            <el-select v-model="form.nature_level" placeholder="请选择">
-              <el-option
-                v-for="item in windowNetureLevelData"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="类型:" :label-width="formLabelWidth" prop="type" class="custom-align-right">
-            <el-select v-model="form.type" placeholder="请选择.." @change="getWindowTypeChildren">
-              <el-option
-                v-for="item in typeData"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="类型进度:" :label-width="formLabelWidth" prop="type_level" class="custom-align-right">
-            <el-select v-model="form.type_level" placeholder="请选择">
-              <el-option
-                v-for="item in windowTypeLevelData"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>
+          <el-form-item label="类型:" :label-width="formLabelWidth" prop="" class="custom-align-right">
+            <template>
+              <div class="natureRadioBox">
+                <div>
+                  <el-radio-group v-model="form.nature">
+                    <el-radio :label="item.id" v-for="item in windowNatureData" :key="item.id" @change="clearCheck">{{item.type_name}}</el-radio>
+                  </el-radio-group>
+                </div>
+                <!--民事-->
+                <div v-if="form.nature==1" class="natureRadioBoxItem">
+                  <el-radio-group v-model="form.nature_level0">
+                    <el-radio :label="item.id" v-for="item in windowNatureData[0].children[0].children" :key="item.id">{{item.type_name}}</el-radio>
+                  </el-radio-group>
+                </div>
+                <div v-if="form.nature==1" class="natureRadioBoxItem">
+                  <el-radio-group v-model="form.nature_level1">
+                    <el-radio :label="item.id" v-for="item in windowNatureData[0].children[1].children" :key="item.id">{{item.type_name}}</el-radio>
+                  </el-radio-group>
+                </div>
+                <div class="natureRadioBoxItemOther" v-if="form.nature==1&&form.nature_level1==24">
+                  <el-input v-model="form.other" placeholder="请输入"></el-input>
+                </div>
+                <!--刑事-->
+                <div v-if="form.nature==5" class="natureRadioBoxItem">
+                  <el-radio-group v-model="form.nature_level0">
+                    <el-radio :label="item.id" v-for="item in windowNatureData[1].children[0].children" :key="item.id">{{item.type_name}}</el-radio>
+                  </el-radio-group>
+                </div>
+                <div v-if="form.nature==5" class="natureRadioBoxItem">
+                  <el-radio-group v-model="form.nature_level1">
+                    <el-radio :label="item.id" v-for="item in windowNatureData[1].children[1].children" :key="item.id">{{item.type_name}}</el-radio>
+                  </el-radio-group>
+                </div>
+                <div class="natureRadioBoxItemOther" v-if="form.nature==5&&form.nature_level1==29">
+                  <el-input v-model="form.other" placeholder="请输入"></el-input>
+                </div>
+                <div v-if="form.nature_level0==14&&form.nature==5" class="natureRadioBoxItem">
+                  <el-radio-group v-model="form.nature_level3">
+                    <el-radio :label="item.id" v-for="item in windowNatureData[1].children[0].children[2].children" :key="item.id">{{item.type_name}}</el-radio>
+                  </el-radio-group>
+                </div>
+                <!--行政-->
+                <div v-if="form.nature==15" class="natureRadioBoxItem">
+                  <el-radio-group v-model="form.nature_level0">
+                    <el-radio :label="item.id" v-for="item in windowNatureData[2].children[0].children" :key="item.id">{{item.type_name}}</el-radio>
+                  </el-radio-group>
+                </div>
+                <div class="natureRadioBoxItemOther" v-if="form.nature==15&&form.nature_level0==122">
+                  <el-input v-model="form.other" placeholder="请输入"></el-input>
+                </div>
+                <!--非讼-->
+                <div v-if="form.nature==104" class="natureRadioBoxItem">
+                  <el-radio-group v-model="form.nature_level0">
+                    <el-radio :label="item.id" v-for="item in windowNatureData[3].children[0].children" :key="item.id">{{item.type_name}}</el-radio>
+                  </el-radio-group>
+                </div>
+                <div class="natureRadioBoxItemOther" v-if="form.nature==104&&form.nature_level0==36">
+                  <el-input v-model="form.other" placeholder="请输入"></el-input>
+                </div>
+              </div>
+            </template>
           </el-form-item>
           <el-form-item label="详细说明:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-input type="textarea" v-model="form.describe" class="custom-textarea" disabled placeholder="请输入详细说明"></el-input>
@@ -235,7 +212,7 @@
           <el-form-item label="姓名:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-input v-model="form.name" autocomplete="off" disabled placeholder="请输入姓名"></el-input>
           </el-form-item>
-          <el-form-item label="身份证号:" :label-width="formLabelWidth" prop="" class="custom-align-right">
+          <el-form-item label="身份证号:" :label-width="formLabelWidth" prop="id_card" class="custom-align-right">
             <el-input v-model="form.id_card" autocomplete="off" disabled placeholder="请输入身份证号"></el-input>
           </el-form-item>
           <el-form-item label="期待学习法律:" :label-width="formLabelWidth" prop="" class="custom-align-right">
@@ -294,6 +271,9 @@ export default {
         callback()
       }
     }
+    const validateNull = (rule,value,callback) => {
+      callback()
+    }
     let self = this;
     //0.全局操作 end ------------------------------------------------------------>
 
@@ -337,10 +317,10 @@ export default {
       //3.1 表单收集的数据
       form: {
         title:"",//标题
-        nature:"",//性质
-        nature_level:"",//进度
-        type:"",//类型
-        type_level:"",//类型进度
+        //nature:"",//性质
+        //nature_level:"",//进度
+        //type:"",//类型
+        //type_level:"",//类型进度
         describe:"",//详细说明
         judgment:"",//判决书
         audio_and_video:"",//录音录像
@@ -352,11 +332,22 @@ export default {
         status:"100",//状态
         like_remark:"",//你最想了解的法律知识
         reason:"",//备注信息
+        //编辑性质和数字
+        nature:0,//性质
+        nature_level0:0,//进度
+        nature_level1:0,//性质
+        nature_level3:0,//类型进度
+        //编辑类型和进度文字
+        nature_name:"",//类型
+        nature_name0:"",//进度
+        nature_name1:"",//性质
+        nature_name3:"",//类型进度
+        other:""
       },
-      windowNatureData:[],//所有性质
-      windowNetureLevelData:[],//所有进度
-      windowTypeData:[],//所有类型
-      windowTypeLevelData:[],//所有类型进度
+      windowNatureData:[],//所有性质与进度
+      // windowNetureLevelData:[],//所有进度
+      // windowTypeData:[],//所有类型
+      // windowTypeLevelData:[],//所有类型进度
       windowStatusData:[],//所有状态 
       //3.2表单验证规则
       formRules: {
@@ -370,6 +361,8 @@ export default {
         type_level:[{required:true,trigger:'blur',validator:validateEmpty}],
         //状态不能为空
         status:[{required:true,trigger:'blur',validator:validateEmpty}],
+        //身份证不能为空
+        id_card:[{required:true,trigger:'blur',validator:validateNull}],
       },
       //弹出框中的表单设置 end ------------------------------------------------------------>
     }
@@ -426,29 +419,31 @@ export default {
           //搜索栏
           this.natureData.push(data)
           //弹窗框
-          this.windowNatureData.push(data)
+          //this.windowNatureData.push(data)
         }
         //暂存所有性质进度
         this.allNetureLevelData = res.data;
+        //再窗口里面也存一份
+        this.windowNatureData = res.data;
       })
       //获取类型和类型说明
-      let getType = {
-        type:2
-      }
-      this.$store.dispatch('complaint/getLetterType',getType).then(res=> {
-        for(let item of res.data){
-          let data = {
-            value: item.id,
-            label: item.type_name
-          }
-          //搜索栏
-          this.typeData.push(data)
-          //弹窗框
-          this.windowTypeData.push(data)
-        }
-        //暂存所有类型进度
-        this.allTypeLevelData = res.data;
-      })
+      // let getType = {
+      //   type:2
+      // }
+      // this.$store.dispatch('complaint/getLetterType',getType).then(res=> {
+      //   for(let item of res.data){
+      //     let data = {
+      //       value: item.id,
+      //       label: item.type_name
+      //     }
+      //     //搜索栏
+      //     this.typeData.push(data)
+      //     //弹窗框
+      //     this.windowTypeData.push(data)
+      //   }
+      //   //暂存所有类型进度
+      //   this.allTypeLevelData = res.data;
+      // })
       //获取状态
       let getStatus = {
         type:10
@@ -482,84 +477,84 @@ export default {
           label: item.type_name
         }
         //搜索栏  
-        this.netureLevelData.push(data)
-      }
-    },
-    getTypeChildren(val) {
-      this.getApiData.type_level = "";
-      this.typeLevelData = [];
-      console.log(val);
-      const selectedItem = this.allTypeLevelData.find(item => item.id === val);
-      console.log(selectedItem)
-      for(let item of selectedItem.children){
-        let data = {
-          value: item.id,
-          label: item.type_name
-        }
-        //搜索栏  
-        this.typeLevelData.push(data)
+        //this.netureLevelData.push(data)
       }
     },
+    // getTypeChildren(val) {
+    //   this.getApiData.type_level = "";
+    //   this.typeLevelData = [];
+    //   console.log(val);
+    //   const selectedItem = this.allTypeLevelData.find(item => item.id === val);
+    //   console.log(selectedItem)
+    //   for(let item of selectedItem.children){
+    //     let data = {
+    //       value: item.id,
+    //       label: item.type_name
+    //     }
+    //     //搜索栏  
+    //     this.typeLevelData.push(data)
+    //   }
+    // },
 
     //弹出框中的
-    getWindowNatureChildren(val) {
-      this.form.nature_level = "";
-      this.windowNetureLevelData = [];
-      console.log(val);
-      // 从 allNetureLevelData 中找到 id 与 val 相同的对象
-      const selectedItem = this.allNetureLevelData.find(item => item.id === val);
-      console.log(selectedItem)
-      for(let item of selectedItem.children){
-        let data = {
-          value: item.id,
-          label: item.type_name
-        } 
-        this.windowNetureLevelData.push(data)
-      }
-    },
-    getWindowTypeChildren(val) {
-      this.form.type_level = "";
-      this.windowTypeLevelData = [];
-      console.log(val);
-      const selectedItem = this.allTypeLevelData.find(item => item.id === val);
-      console.log(selectedItem)
-      for(let item of selectedItem.children){
-        let data = {
-          value: item.id,
-          label: item.type_name
-        }
-        //搜索栏  
-        this.windowTypeLevelData.push(data)
-      }
-    },
+    // getWindowNatureChildren(val) {
+    //   this.form.nature_level = "";
+    //   this.windowNetureLevelData = [];
+    //   console.log(val);
+    //   // 从 allNetureLevelData 中找到 id 与 val 相同的对象
+    //   const selectedItem = this.allNetureLevelData.find(item => item.id === val);
+    //   console.log(selectedItem)
+    //   for(let item of selectedItem.children){
+    //     let data = {
+    //       value: item.id,
+    //       label: item.type_name
+    //     } 
+    //     this.windowNetureLevelData.push(data)
+    //   }
+    // },
+    // getWindowTypeChildren(val) {
+    //   this.form.type_level = "";
+    //   this.windowTypeLevelData = [];
+    //   console.log(val);
+    //   const selectedItem = this.allTypeLevelData.find(item => item.id === val);
+    //   console.log(selectedItem)
+    //   for(let item of selectedItem.children){
+    //     let data = {
+    //       value: item.id,
+    //       label: item.type_name
+    //     }
+    //     //搜索栏  
+    //     this.windowTypeLevelData.push(data)
+    //   }
+    // },
     //回显数据
-    returnWindowNatureChildren(val) {
-      console.log(val);
-      const selectedItem = this.allNetureLevelData.find(item => item.id === val);
-      console.log(selectedItem)
-      for(let item of selectedItem.children){
-        let data = {
-          value: item.id,
-          label: item.type_name
-        } 
-        this.windowNetureLevelData.push(data)
-      }
-    },
-    returnWindowTypeChildren(val) {
-      this.form.type_level = "";
-      this.windowTypeLevelData = [];
-      console.log(val);
-      const selectedItem = this.allTypeLevelData.find(item => item.id === val);
-      console.log(selectedItem)
-      for(let item of selectedItem.children){
-        let data = {
-          value: item.id,
-          label: item.type_name
-        }
-        //搜索栏  
-        this.windowTypeLevelData.push(data)
-      }
-    },
+    // returnWindowNatureChildren(val) {
+    //   console.log(val);
+    //   const selectedItem = this.allNetureLevelData.find(item => item.id === val);
+    //   console.log(selectedItem)
+    //   for(let item of selectedItem.children){
+    //     let data = {
+    //       value: item.id,
+    //       label: item.type_name
+    //     } 
+    //     this.windowNetureLevelData.push(data)
+    //   }
+    // },
+    // returnWindowTypeChildren(val) {
+    //   this.form.type_level = "";
+    //   this.windowTypeLevelData = [];
+    //   console.log(val);
+    //   const selectedItem = this.allTypeLevelData.find(item => item.id === val);
+    //   console.log(selectedItem)
+    //   for(let item of selectedItem.children){
+    //     let data = {
+    //       value: item.id,
+    //       label: item.type_name
+    //     }
+    //     //搜索栏  
+    //     this.windowTypeLevelData.push(data)
+    //   }
+    // },
     // 获取子进度 可优化 end---------------------------------------->
 
     //1.2 列表内容分页
@@ -667,14 +662,27 @@ export default {
           console.log(data)
           this.editId = data.id;
           this.form.title = data.title;
+
           //还原性质
-          this.form.nature = data.nature;
-          this.returnWindowNatureChildren(data.nature);
-          this.form.nature_level = data.nature_level;
+          // this.form.nature = data.nature;
+          // this.returnWindowNatureChildren(data.nature);
+          // this.form.nature_level = data.nature_level;
           //还原类型
-          this.form.type = data.type;
-          this.returnWindowTypeChildren(data.type);
-          this.form.type_level = data.type_level;
+          // this.form.type = data.type;
+          // this.returnWindowTypeChildren(data.type);
+          // this.form.type_level = data.type_level;
+
+          this.form.nature = data.nature;
+          this.form.nature_level0 = data.nature_level0;
+          this.form.nature_level1 = data.nature_level1;
+          this.form.nature_level3 = data.nature_level3;
+          //编辑类型和进度文字
+          this.form.nature_name = data.nature_name;
+          this.form.nature_name0 = data.nature_name0;
+          this.form.nature_name1 = data.nature_name1;
+          this.form.nature_name3 = data.nature_name3;
+          this.form.other = data.other;
+
           //详细说明
           this.form.describe = data.describe;
           this.form.judgment = data.judgment;
@@ -732,12 +740,37 @@ export default {
       })
 
     },
+    //清理单选状态
+    clearCheck(){
+      console.log("清理单选状态")
+      this.form.nature_level1 = "";
+      this.form.nature_level3 = "";
+      this.form.nature_name = "";
+      this.form.nature_name0 = "";
+      this.form.nature_name1 = "";
+      this.form.nature_name3 = "";
+      this.form.other = "";
+    },
     //提交编辑
     editData(){
+      //判断什么时候需要需要提交other
+      // if(this.form.nature_level1!=24||this.form.nature_level1!=29||this.form.nature_level0!=122||this.form.nature_level0!=36){
+      //   this.form.other = "";
+      // }
+
       let data = {
         id:this.editId,
+        //提交编辑
         nature:this.form.nature,
-        nature_level:this.form.nature_level,
+        nature_level0:this.form.nature_level0,
+        nature_level1:this.form.nature_level1,
+        nature_level3:this.form.nature_level3,
+        // nature_name:this.form.nature_name,
+        // nature_name0:this.form.nature_name0,
+        // nature_name1:this.form.nature_name1,
+        // nature_name3:this.form.nature_name3,
+        other:this.form.other,
+
         type:this.form.type,
         type_level:this.form.type_level,
         status:this.form.status,
@@ -774,20 +807,44 @@ export default {
 </script>
 
 <style scoped lang="less">
-//表单微调 start------------------------------------------------------------>*/
-::v-deep .custom-form-item > .el-form-item__label {
-  line-height: 140px !important;
-}
-::v-deep .custom-textarea .el-textarea__inner {
-  resize: none; /* 禁止用拖拽调整大小 */
-}
-::v-deep .custom-align-right .el-form-item__label {
-  text-align: right; /* 设置标签文字右对齐 */
-}
-::v-deep .el-select-group__title {
-  color: #909399;
-}
-::v-deep .el-select {
-  width: 100% !important;
-}
+  .natureRadioBox{
+    .natureRadioBoxItem{
+      border: 1px solid #dfe4ed;
+      border-radius: 4px;
+      padding: 10px 10px 0 10px;
+      margin-bottom: 10px;
+      background: #F5F7FA;
+      label {
+        margin-bottom: 10px;
+      }
+    }
+    .natureRadioBoxItemOther{
+      border: 1px solid #dfe4ed;
+      border-radius: 4px;
+      padding: 10px;
+      margin-bottom: 10px;
+      background: #F5F7FA;
+    }
+  }
+
+
+  //表单微调 start------------------------------------------------------------>*/
+  ::v-deep .natureRadioBoxItem .el-radio {
+    margin-bottom: 10px !important;
+  }
+  ::v-deep .custom-form-item > .el-form-item__label {
+    line-height: 140px !important;
+  }
+  ::v-deep .custom-textarea .el-textarea__inner {
+    resize: none; /* 禁止用拖拽调整大小 */
+  }
+  ::v-deep .custom-align-right .el-form-item__label {
+    text-align: right; /* 设置标签文字右对齐 */
+  }
+  ::v-deep .el-select-group__title {
+    color: #909399;
+  }
+  ::v-deep .el-select {
+    width: 100% !important;
+  }
 </style>