LiuJ 2 napja
szülő
commit
e11f1002d3

+ 16 - 8
src/views/news/GoodListApply.vue

@@ -102,7 +102,8 @@
               <template slot-scope="scope">
                 <div class="listBtnBox">
 
-                  <div class="listMainBtn" @click="getUpRow(scope.row.id, tableData)"><i class="el-icon-check"></i>审核
+                  <div class="listMainBtn" v-if="type_id == 10000" @click="getUpRow(scope.row.id, tableData)"><i
+                      class="el-icon-check"></i>审核
                   </div>
                   <div class="listDeleteBtn" @click="deleteRow(scope.row.id, tableData)"><i
                       class="el-icon-delete"></i>删除
@@ -154,6 +155,8 @@
 <script>
 //表格标题
 import tableTitle from './components/tableTitle';
+import { getUseType } from '@/utils/auth'
+
 //引入公用样式
 import '@/styles/global.less';
 
@@ -168,6 +171,7 @@ export default {
       tableData: [],//内容
       editId: 0,//要修改的网站id.
       examineWindow: false,//审核窗口
+      type_id: getUseType(),//发布类型
       getApiData: {
         name: "",//标题
         category_name: "",//导航池id
@@ -220,13 +224,18 @@ export default {
       this.$confirm('将此商品通过审核吗?', '提示', {
         confirmButtonText: '通过',
         cancelButtonText: '拒绝',
+        distinguishCancelAndClose: true,  // 关键配置项
         type: 'warning'
       }).then(() => {
         this.upRow(id, 2)
-      }).catch(() => {
-        //输入驳回理由
-        console.log("驳回")
-        this.examineWindow = true;
+      }).catch((the_reback) => {
+
+        if (the_reback == "cancel") {
+          //输入驳回理由
+          // console.log("驳回" )
+          this.examineWindow = true;
+        }
+
       })
     },
     //1.列表和分页相关 start ------------------------------------------------------------>
@@ -350,12 +359,11 @@ export default {
     //添加新闻 end ------------------------------------------------------------>
   },
   mounted() {
+    this.type_id = getUseType()
     //1.获得初始数据
     this.getData();
   }
 }
 </script>
 
-<style scoped lang="less">
-.listBtnBox div {}
-</style>
+<style scoped lang="less"></style>

+ 17 - 13
src/views/news/addGood.vue

@@ -40,6 +40,7 @@
               <el-select v-model="form.level" multiple clearable placeholder="请选择推荐等级.." @change="levelChange">
                 <el-option label="为你精选" :value="1"></el-option>
                 <el-option label="热门产品" :value="2"></el-option>
+                <el-option label="热搜商品" :value="3"></el-option>
               </el-select>
             </el-form-item>
           </div>
@@ -135,9 +136,11 @@
             <!--这里是富文本-->
             <myEditor ref="myEditor" v-model="form.detail"></myEditor>
           </el-form-item>
-          <el-form-item label="浏览量:" prop="hits" class="custom-align-right">
+
+          <el-form-item v-if="user_type == 10000" label="浏览量:" prop="hits" class="custom-align-right">
             <el-input type="number" v-model="form.hits" autocomplete="off" placeholder="请输入浏览量"></el-input>
           </el-form-item>
+
           <el-form-item label="联系人:" prop="contact" class="custom-align-right">
             <el-input v-model="form.contact" autocomplete="off" placeholder="请输入联系人"></el-input>
           </el-form-item>
@@ -473,11 +476,11 @@ export default {
         console.log(res)
         this.userType = res.data.type_id;
         this.user_type = res.data.type_id;
-        
+
         if (this.userType != 10000) {
-          this.form.website_id = getWebSiteId() 
+          this.form.website_id = getWebSiteId()
         }
-       
+
         //if(res.data.type_id==10000){}//管理员
         //if(res.data.type_id==4){}//调研员
         //个人会员=1 政务会员=2 企业会员=3 调研员=4 管理员=10000 游客=20000
@@ -524,9 +527,9 @@ export default {
     },
     //1.2 提交表单
     addToServe() {
-      
+
       this.form.website_id = getWebSiteId();
-      console.log("提交时获取网站id:",this.form.website_id)
+      console.log("提交时获取网站id:", this.form.website_id)
       //先进行验证
       this.$refs.form.validate(valid => {
         console.log(this.form.validity, 'this.form.validity-----------------')
@@ -653,7 +656,7 @@ export default {
         this.form.postal = res.data.postal;
         this.form.address = res.data.address;
         this.form.level = res.data.level;
-        if (res.data.level == "[]" || res.data.level == "") {
+        if (res.data.level == "[0]" || res.data.level == "[]" || res.data.level == "") {
           this.form.level = [];
         } else {
           this.form.level = JSON.parse(res.data.level);
@@ -770,11 +773,11 @@ export default {
       this.tags = newTags;
       this.form.keyword = newTags.join(',');
     },
-    selectChange(checked){
-      if(checked==true){
+    selectChange(checked) {
+      if (checked == true) {
         this.form.validity = '1970-01-01 00:00:00';
-      }else{
-        
+      } else {
+
       }
     }
   },
@@ -836,7 +839,7 @@ export default {
       },
       immediate: true // 立即执行一次
     }
-    
+
   },
   mounted() {
     this.user_type = getUseType();
@@ -927,7 +930,8 @@ export default {
 ::v-deep .el-checkbox {
   margin-left: 20px;
 }
-.imgBox{
+
+.imgBox {
   color: #999;
 }
 

+ 17 - 4
src/views/news/addJobHunting.vue

@@ -489,7 +489,7 @@ export default {
         cat_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
       },
       //1.3富文本编辑器配置
-      
+
       //1.4图片上传
       //获取父级导航池
       parentKey: 0,//获取父级导航
@@ -729,7 +729,6 @@ export default {
           formCopy.website_id = formCopy.web_site_id == 0 ? this.websiteid : formCopy.web_site_id;
           // 去掉 formCopy.web_site_id
           delete formCopy.web_site_id;
-
           if (formCopy.website_id == 0) {
             this.$message.error('请选择站点名称');
             return;
@@ -750,7 +749,14 @@ export default {
             item = formatLocalDate(item);
           });
           console.log(new Date().getTime(), '-------------------校验结束------------------');
-
+          //判断用户身份
+          if (this.creatNews_user_type == 10000) {
+            console.log("用户身份为管理员,无需审核直接发布!")
+            this.form.status = 2;
+          } else {
+            console.log("用户身份为其他用户,提交到审核!")
+            this.form.status = 1;
+          }
           this.$store.dispatch('news/addJobHunting', formCopy).then(res => {
             if (res.code == 200) {
               //汇报结果
@@ -928,7 +934,14 @@ export default {
             item = formatLocalDate(item);
           });
           console.log(new Date().getTime(), '-------------------校验结束------------------');
-
+          //判断用户身份
+          if (this.creatNews_user_type == 10000) {
+            console.log("用户身份为管理员,无需审核直接发布!")
+            this.form.status = 2;
+          } else {
+            console.log("用户身份为其他用户,提交到审核!")
+            this.form.status = 1;
+          }
           this.$store.dispatch('news/updateJobHunting', formCopy).then(res => {
             //记录结束时间
             let endTime = new Date().getTime(); //计算时间差

+ 740 - 0
src/views/news/addNcomplaint.vue

@@ -0,0 +1,740 @@
+<template>
+
+
+  <div class="mainBox">
+    <div class="layerBox">
+      <tableTitle :name="tableDivTitle" />
+      <el-form :model="form" ref="form" :rules="formRules" label-position="left" label-width="120px">
+        <div class="formDiv">
+          <el-form-item label="投诉标题:" prop="title" class="custom-align-right">
+            <el-input v-model="form.title" autocomplete="off" placeholder="请输入投诉标题"></el-input>
+          </el-form-item>
+
+
+          <el-form-item label="发布范围:" prop="city_arr_id" class="custom-align-right">
+            <el-cascader :key="cascaderKey" v-model="form.city_arr_id" placeholder="请选择发布范围" :props="cityData"
+              filterable clearable></el-cascader>
+          </el-form-item>
+          <el-form-item label="行政职能:" prop="department_arr_id" class="custom-align-right">
+            <el-cascader :key="searchDepartmentKey" v-model="form.department_arr_id" placeholder="请选择行政职能"
+              popper-class="my_cascader" :props="searchDepartmentData" filterable clearable></el-cascader>
+          </el-form-item>
+
+          <el-form-item label="行政人员:" prop="re_user_ids" class="custom-align-right">
+            <el-select v-model="form.re_user_ids" placeholder="请选择行政人员" multiple filterable clearable
+              @visible-change="getDUser">
+              <el-option v-for="item in re_user_ids" :key="item.id" :label="item.user_name + '/' + item.nickname"
+                :value="item.id">
+              </el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="事件描述:" prop="content" class="custom-align-right">
+            <el-input v-model="form.content" maxlength="500" autocomplete="off" placeholder="请输入事件描述:" type="textarea"
+              rows="10"></el-input>
+          </el-form-item>
+
+          <el-form-item label="我的要求:" prop="want" class="custom-align-right">
+            <el-input v-model="form.want" maxlength="500" autocomplete="off" placeholder="请输入我的要求:" type="textarea"
+              rows="10"></el-input>
+          </el-form-item>
+
+
+          <el-form-item label="发生日期:" prop="start" class="custom-align-right">
+            <el-date-picker v-model="form.start" placeholder="请选择发生日期">
+            </el-date-picker>
+          </el-form-item>
+
+          <el-form-item label="附件:" class="custom-align-right" prop="">
+            <div class="uploaderBox" @mouseenter="hovering = true" mouseleave="hovering = false">
+              <el-upload class="avatar-uploader" action="#" :show-file-list="false" :before-upload="beforeAvatarUpload">
+                <!-- 预览图片 -->
+                <img v-if="file && (fileType == 'jpeg' || fileType == 'png')" :src="file" class="avatar">
+                <div v-if="file && (fileType == 'pdf' || fileType == 'word')" class="chooseImgDiv1">
+                  <div>
+                    <div>{{ file }}</div>
+                  </div>
+                </div>
+                <div v-else class="chooseImgDiv">
+                  <div>
+                    <img src="@/assets/public/upload/noImage.png">
+                    <div>选择文档</div>
+                  </div>
+                </div>
+              </el-upload>
+              <input type="hidden" v-model="form.imgurl">
+              <span class="photo_tips">支持文件形式pdf,word,jpg,文件最大2M。</span>
+              <div v-if="hovering && imgUrl" class="delete-button" @click="handleDelete">
+                <i class="el-icon-delete"></i>
+              </div>
+            </div>
+          </el-form-item>
+          <el-form-item label="投诉方式" prop="type" class="custom-align-right">
+            <el-radio-group v-model="form.type">
+              <el-radio :label="1">匿名</el-radio>
+              <el-radio :label="2">实名</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <!-- <el-form-item label="建立群聊:" prop="is_group" class="custom-align-right">
+            <el-radio-group v-model="form.is_group" :disabled="this.$route.query.id != undefined">
+              <el-radio :label="1">是</el-radio>
+              <el-radio :label="0">否</el-radio>
+            </el-radio-group>
+          </el-form-item>
+
+          <el-form-item label="群聊名称:" prop="group_name" class="custom-align-right" v-if="form.is_group == 1"
+            :disabled="this.$route.query.id != undefined">
+            <el-input v-model="form.group_name" autocomplete="off" placeholder="请输入群聊名称"></el-input>
+          </el-form-item> -->
+        </div>
+      </el-form>
+    </div>
+    <div class="bottomBtnBox" v-if="readStatus == false">
+      <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>
+    </div>
+  </div>
+</template>
+
+<script>
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+//格式化时间
+import { formatLocalDate } from '@/utils/public';
+
+export default {
+  components: {
+    tableTitle
+  },
+  data() {
+    //0.全局操作 start ------------------------------------------------------------>
+    //表单验证
+    const validateNull = (rule, value, callback) => {
+      console.log(value, '-------------------------------')
+      if (value == '' || value == undefined || value == null) {
+        callback(new Error('该项不能为空!'))
+      } else {
+        callback()
+      }
+    }
+    const validateEmpty = (rule, value, callback) => {
+      console.log(value, '-------------------------------')
+      if (value.length == 0) {
+        callback(new Error('该项不能为空!'))
+      } else {
+        callback()
+      }
+    }
+    const validateArray = (rule, value, callback) => {
+      if (value.length == 0) {
+        callback(new Error('该项不能为空!'))
+      } else {
+        callback()
+      }
+    }
+    let self = this;
+    //0.全局操作 end ------------------------------------------------------------>
+    return {
+      formLabelWidth: '80px',//表单的长度
+      //1.表单项 start ------------------------------------------------------------>
+      editStatus: false,
+      readStatus: false,
+      tableDivTitle: "添加投诉举报",
+      searchCascaderKey: 0, //列表缓存key
+      website_id: 2,
+      file: '',
+      userType: 1, //用户类型 1:普通用户,
+      pickerOptions: {
+        selectableRange: '1900-01-01 to 2100-12-31', // 允许选择的日期范围
+        // disabledDate(time) {
+        //   return time.getTime() < Date.now() - 86400000; // 禁用今天之前的日期
+        // },
+      },
+
+      //提交表单
+      form: {
+        //1.1使用了外链
+        title: '',//投诉举报标题
+        type: 1,//类型:1:公告,2:投诉举报
+        level: 1,//级别:1:常规,2:紧急,3:特急
+        city_arr_id: [],//行政区划
+        city_id: '',//城市id
+        content: "",
+        file: "",//文件路径
+        department_arr_id: [],//部门id
+        department_id: '',//部门id
+        want: "",//我的要求
+        type: 1,//发布类型:1:匿名,2:实名
+        start: '',//开始时间
+        re_user_ids: [],//行政人员id
+      },
+      //1.2 表单验证规则
+      formRules: {
+        title: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        type: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        city_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
+        department_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
+        re_user_ids: [{ required: true, trigger: 'blur', validator: validateArray }],
+
+        level: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        content: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        address: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        is_group: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+      },
+      //1.3富文本编辑器配置
+      showHtml: false, //用于保存源码内容
+      editorHtml: '',
+      cascaderKey: 0,//弹窗用的key
+      websiteData: {
+        lazy: true,
+        checkStrictly: 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 = {
+            'page': 1,
+            'pageSize': 1000,
+          }
+          self.$store.dispatch('news/websiteList', parames).then(res => {
+            if (res.data) {
+              const nodes = res.data.rows.map(item => ({
+                value: item.id,
+                label: item.website_name,
+                leaf: level >= 3,
+                children: []
+              }))
+
+              console.log(nodes, 'leaf')
+              resolve(nodes)
+            }
+          })
+        },
+      },
+
+      cityData: {
+        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, '====level-----')
+          let parentId = level == 0 ? 0 : data.value
+          let parames = {
+            'pid': parentId
+          }
+          self.$store.dispatch('pool/getcityList', parames).then(res => {
+            if (res.data) {
+              const nodes = res.data.map(item => ({
+                value: item.id,
+                label: item.name,
+                leaf: level >= 3,
+                children: []
+              }))
+              resolve(nodes)
+            }
+          })
+        }
+      },
+
+      imgurl: [],
+      //获取父级导航池
+      parentKey: 0,//获取父级导航
+      parentData: {
+        checkStrictly: true,
+        lazy: true,
+        async lazyLoad(node, resolve) {
+          console.log(resolve, 'node')
+          const { level, data } = node;
+          if (data && data.children && data.children.length !== 0) {
+            return resolve(node)
+          }
+          console.log(level, 'level--1--');
+          let pid = level == 0 ? 0 : data.value
+          let website_id = self.form.website_id == '' ? 2 : self.form.website_id;
+          console.log(website_id, 'website_id--111-----');
+          let parames = {
+            'website_id': website_id,
+            'pid': pid
+          }
+          self.$store.dispatch('news/getWebsiteNavList', parames).then(res => {
+            if (res.data) {
+              const nodes = res.data.map(item => ({
+                value: item.category_id,
+                label: item.name,
+                leaf: level >= 3,
+                children: []
+              }))
+              resolve(nodes)
+            } else {
+              //输出报错原因
+              console.log(res.msg, 'getWebsiteNavList--1--');
+
+            }
+          })
+        }
+      },
+      //行政职能部门
+      searchDepartmentKey: 0, //列表缓存key
+      searchDepartmentData: {
+        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/getDepartment', parames).then(res => {
+            if (res.data) {
+              const nodes = res.data.map(item => ({
+                value: item.id,
+                label: item.name,
+                leaf: level >= 3,
+                children: []
+              }))
+              resolve(nodes)
+            }
+          })
+        }
+      },
+      inputList: [
+        { value: '' }
+      ]
+      //表单项 end ------------------------------------------------------------>
+    };
+  },
+  methods: {
+    //获取行政人员
+    getDUser() {
+      this.$forceUpdate();
+      let department_id = this.form.department_arr_id;
+      let city_id = this.form.city_arr_id;
+      if (department_id.length == 0) {
+        this.$message.warning('请选择行政职能');
+        return;
+      }
+      if (city_id.length == 0) {
+        this.$message.warning('请选择行政区划');
+        return;
+      }
+      department_id = department_id.at(-1) || 0;
+      city_id = city_id.at(-1) || 0;
+      let parames = {
+        'department_id': department_id,
+        'city_id': city_id,
+      }
+      //如果是编辑,就返回数据
+      // if (this.$route.query.id != undefined) {
+      //   let ids = Array.isArray(this.form.re_user_ids) ? this.form.re_user_ids : JSON.parse(this.form.re_user_ids)
+      //   if (ids.length > 0) {
+      //     parames = {
+      //       'ids': ids,
+      //     }
+      //   } else {
+      //     this.$message({
+      //       type: 'info',
+      //       message: '用户数据为空'
+      //     });
+      //     return;
+      //   }
+
+      // }
+      this.$store.dispatch('news/getDUser', parames).then(res => {
+        // this.form.re_user_ids = res.data;
+        this.re_user_ids = res.data;
+        this.$forceUpdate();
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '网络错误,请重试!'
+        });
+      })
+    },
+    async fetchWebsiteOptions() {
+      try {
+        const response = await this.$store.dispatch('news/websiteList', { page: 1, pageSize: 1000 });
+        if (response && response.data) {
+          this.websiteOptions = response.data.rows.map(item => ({
+            value: item.id,
+            label: item.website_name,
+          }));
+        }
+      } catch (error) {
+        console.error('获取网站列表失败:', error);
+      }
+    },
+    //获取用户身份信息
+    getUserInfo() {
+      this.$store.dispatch('public/getInfo').then(res => {
+        console.log(res)
+        this.userType = res.data.type_id;
+
+        //个人会员=1 政务会员=2 企业会员=3 调研员=4 管理员=10000 游客=20000
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '网络错误,请重试!'
+        });
+      })
+    },
+    //1.提交表单 start ------------------------------------------------------------>
+    beforeAvatarUpload(file) {
+      const isJPG = file.type === 'image/jpeg';
+      const isPNG = file.type === 'image/png';
+      //word  pdf
+      const isWord = file.type === 'application/msword' || file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || file.type === 'application/vnd.ms-word' || file.type === 'doc';
+      const isPdf = file.type === 'application/pdf' || file.type === 'application/x-pdf' || file.type === 'application/acrobat' || file.type === 'pdf' || file.type === 'text/x-pdf' || file.type === 'application/x-download' || file.type === 'application/octet-stream';
+      const isLt2M = file.size / 1024 / 1024 < 2;
+      console.log(this.imgurl.length, '-0--------------------------------')
+      if (this.imgurl.length > 4) {
+        this.$message.warning('只能上传5张图片');
+        return false;
+      }
+
+      if (!isJPG && !isPNG && !isWord && !isPdf) {
+        this.$message.error('上传文件只能是 JPG、PNG、WORD、PDF 格式!');
+        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.file = res.data.imgUrl;//提供表单地址
+        this.fileType = res.data.fileType;
+        this.oldFileName = res.data.oldFileName;
+        this.form.file.push(res.data.imgUrl);//提供表单地址
+        console.log(res.data.imgUrl, '00000')
+      })
+      // 阻止默认的上传行为
+      return false;
+    },
+    deleteImage(index) { // 删除图片
+      this.file.splice(index, 1);
+    },
+    //1.2 提交表单
+    addToServe() {
+      //先进行验证
+      this.$refs.form.validate(valid => {
+        console.log(this.form.validity, 'this.form.validity-----------------')
+        if (valid) {
+          if (this.form.validity) {
+            this.form.validity = formatLocalDate(this.form.validity);
+          }
+          if (this.form.department_arr_id.length == 0) {
+            this.form.department_id = 0;
+          }
+          if (this.form.city_arr_id.length == 0) {
+            this.form.city_id = 0;
+          }
+          console.log(typeof this.form.city_arr_id, '---=-==-=')
+          if (typeof this.form.city_arr_id == 'object') {
+            this.form.city_id = this.form.city_arr_id.at(-1) || 0;
+            this.form.city_arr_id = JSON.stringify(this.form.city_arr_id);
+          }
+          if (typeof this.form.department_arr_id == 'object') {
+            this.form.department_id = this.form.department_arr_id.at(-1) || 0;
+            this.form.department_arr_id = JSON.stringify(this.form.department_arr_id);
+          }
+
+          delete this.form.cat_arr_id;
+          delete this.form.catid;
+          this.form.file = this.file;
+          console.log(this.form, 'this.form-----------------')
+          if (this.userType == 10000) {
+            this.form.status = 2
+          } else {
+            this.form.status = 1
+          }
+          this.$store.dispatch('news/addComplaint1', this.form).then(res => {
+            if (res.code == 200) {
+              //汇报结果
+              this.$message({
+                type: 'success',
+                message: '已成功添加投诉举报!'
+              });
+              this.cleatForm();
+              //返回列表页
+              this.returnPage()
+            } else {
+              this.$message({
+                type: 'error',
+                message: "投诉举报发布失败,请稍后再试!"
+              });
+            }
+          })
+        }
+      })
+    },
+    formatDate(date) {
+      if (date instanceof Date) {
+        return date.toISOString().slice(0, 19).replace('T', ' ');
+      } else if (typeof date === 'string') {
+        // 将 ISO 8601 格式的字符串转换为 MySQL 期望的格式
+        const parsedDate = new Date(date);
+        return parsedDate.toISOString().slice(0, 19).replace('T', ' ');
+      } else {
+        return date;
+      }
+    },
+    //1.3 清理表单
+    cleatForm() {
+    },
+    //提交表单 end ------------------------------------------------------------>
+
+    //2.跳转操作 start ------------------------------------------------------------>
+    returnPage() {
+      this.$router.push({
+        path: '/ncomplaintList',
+      });
+    },
+    //跳转操作 end ------------------------------------------------------------>
+
+    //3.回显操作 ------------------------------------------------------------>
+    //3.1回显数据
+    getMainData() {
+      let data = {
+        id: this.$route.query.id
+      };
+      this.$store.dispatch('news/getComplaintInfo', data).then(res => {
+        console.log(res);
+        this.form.name = res.data.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.form.city_arr_id = Array.isArray(res.data.city_arr_id) ? res.data.city_arr_id : JSON.parse(res.data.city_arr_id);
+        this.parentKey += 1; // 触发级联选择器重新加载
+        this.loadCascaderPath(this.form.cat_arr_id); // 加载路径数据
+        //回显推荐等级
+
+        this.form.title = res.data.title;
+        this.form.type = res.data.type;
+        this.form.website_id = res.data.website_id;
+        this.form.level = res.data.level;
+        this.form.content = res.data.content;
+        this.form.department_arr_id = Array.isArray(res.data.department_arr_id) ? res.data.department_arr_id : JSON.parse(res.data.department_arr_id);
+        this.form.city_id = res.data.city_id;
+        this.form.department_id = res.data.department_id;
+        this.form.cat_id = res.data.cat_id;
+        this.form.file = res.data.file;
+        this.file = res.data.file;
+        const filePath = res.data.file;
+        const fileExtension = filePath.split('.').pop().toLowerCase();
+        this.fileType = fileExtension; // 设置文件类型
+        this.form.is_group = parseInt(res.data.is_group);
+        this.form.group_name = res.data.group_name;
+        this.form.want = res.data.want;
+        this.form.start = res.data.start ? new Date(res.data.start) : null; // 处理时间格式
+        this.form.re_user_ids = Array.isArray(res.data.re_user_ids) ? res.data.re_user_ids : JSON.parse(res.data.re_user_ids);
+      })
+    },
+    async loadCascaderPath(path) {
+      for (let i = 0; i < path.length; i++) {
+        const parentId = path[i - 1] || 0; // 获取当前层级的父级ID
+        const level = i; // 当前层级的索引
+        // self.$store.dispatch('news/getWebsiteNavList', parames).then(res => {
+        //     if (res.data) {
+        //       const nodes = res.data.map(item => ({
+        //         value: item.category_id,
+        //         label: item.name,
+        //         leaf: level >= 3,
+        //         children: []
+        //       }))
+        //       resolve(nodes)
+        await this.$store.dispatch('pool/categoryList', { pid: parentId })
+          .then((res) => {
+            const nodes = res.data.map(item => ({
+              value: item.id,
+              label: item.name,
+              leaf: level >= 3, // 假设4层结构,设置叶子节点标记
+            }));
+            // 级联选择器加载数据
+            if (level === path.length - 1) {
+              this.form.cat_arr_id = path; // 确保最后一级路径正确设置
+              this.parentKey += 1; // 强制刷新 cascader
+            }
+          });
+      }
+    },
+    //1.3提交修改
+    editToServe() {
+      console.log(this.form)
+      //添加要修改的id
+      this.form.id = this.editId;
+      //先进行验证
+
+      this.$refs.form.validate(valid => {
+
+        if (valid) {
+          if (this.form.start) {
+            this.form.start = formatLocalDate(this.form.start);
+          }
+          if (this.form.department_arr_id.length == 0) {
+            this.form.department_id = 0;
+          }
+          if (this.form.city_arr_id.length == 0) {
+            this.form.city_id = 0;
+          }
+          console.log(typeof this.form.city_arr_id, '---=-==-=')
+          if (typeof this.form.city_arr_id == 'object') {
+            this.form.city_id = this.form.city_arr_id.at(-1) || 0;
+            this.form.city_arr_id = JSON.stringify(this.form.city_arr_id);
+          }
+          if (typeof this.form.department_arr_id == 'object') {
+            this.form.department_id = this.form.department_arr_id.at(-1) || 0;
+            this.form.department_arr_id = JSON.stringify(this.form.department_arr_id);
+          }
+
+          delete this.form.cat_arr_id;
+          delete this.form.time;
+          delete this.form.catid;
+          this.form.file = this.file;
+          console.log(this.form, 'this.form-----------------')
+
+          if (this.userType == 10000) {
+            this.form.status = 2
+          } else {
+            this.form.status = 1
+          }
+
+          this.$store.dispatch('news/updateComplaint', this.form).then(res => {
+            if (res.code != 200) {
+              this.$message.error("修改失败,请稍后再试!");
+            } else {
+              //汇报结果
+              this.$message({
+                type: 'success',
+                message: '已成功编辑投诉举报!'
+              });
+              this.cleatForm();
+              //返回列表页
+              this.returnPage()
+            }
+          }).catch(() => {
+            this.$message({
+              type: 'info',
+              message: '网络错误,请重试!'
+            });
+          })
+        }
+      })
+    },
+    //跳转操作 end ------------------------------------------------------------>
+    //4.富文本编辑器 start ------------------------------------------------------------>
+    //4.1 编辑器点击上传图片
+    //4.2 图片粘贴上传
+    // 处理从网页粘贴的图片 URL
+    //富文本编辑器 end ------------------------------------------------------------>
+
+  },
+  watch: {
+    //监听发布范围和行政职能的变化,获取行政人员
+    'form.city_arr_id': function (newVal, oldVal) {
+      console.log(newVal, oldVal, 'newVal, oldVal')
+      if (newVal.length > 0) {
+        this.getDUser();
+      }
+    },
+    'form.department_arr_id': function (newVal, oldVal) {
+      console.log(newVal, oldVal, 'newVal, oldVal')
+      if (newVal.length > 0) {
+        this.getDUser();
+      }
+    },
+    '$route'(to, from) {
+      console.log(from, '---------------------------------------');
+      // 监听路由参数中的 id 变化,若变化则更新页面状态并获取数据
+      if (to.query.id) {
+        this.getMainData();
+      }
+    },
+
+  },
+  mounted() {
+    //1.判断是新建还是回显
+    if (this.$route.query.id != undefined) {
+      this.editId = this.$route.query.id;
+      this.editStatus = true;
+      this.tableDivTitle = "编辑投诉举报";
+      console.log("编辑投诉举报")
+      this.getMainData();
+    } else {
+      this.editStatus = false;
+      console.log("添加投诉举报!")
+    }
+    if (this.$route.query.read == 1) {
+      this.readStatus = true;;
+    } else {
+      this.readStatus = false;
+    }
+    this.fetchWebsiteOptions();
+    this.getUserInfo();
+    // this.getDUser();
+    //复制内容到富文本 start ------------------------------------------------------------>
+    //复制富文本 end ------------------------------------------------------------>
+  },
+};
+</script>
+<style scoped lang="less">
+//执行v-deep穿透scope选择器 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 {
+  width: 100%;
+  /* 禁止用户拖拽调整大小 */
+}
+
+::v-deep .el-input-group__prepend {
+  color: black !important;
+}
+
+.formLabelFloatBox {
+  margin-bottom: 10px;
+  position: relative;
+
+  .formLabeladdIcon {
+    position: absolute;
+    right: 45px;
+    top: 5px;
+    width: 38px;
+    height: 24px;
+  }
+
+  .formLabelDelIcon {
+    position: absolute;
+    right: 5px;
+    top: 5px;
+    width: 38px;
+    height: 24px;
+  }
+}
+
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/</style>

+ 41 - 20
src/views/news/addNotice.vue

@@ -1,10 +1,11 @@
 <template>
+
+
   <div class="mainBox">
     <div class="layerBox">
       <tableTitle :name="tableDivTitle" />
       <el-form :model="form" ref="form" :rules="formRules" label-position="left" label-width="120px">
         <div class="formDiv">
-
           <el-form-item label="标题:" prop="title" class="custom-align-right">
             <el-input v-model="form.title" autocomplete="off" placeholder="请输入标题"></el-input>
           </el-form-item>
@@ -29,7 +30,7 @@
             <el-cascader :key="cascaderKey" v-model="form.city_arr_id" placeholder="请选择发布范围" :props="cityData"
               filterable clearable></el-cascader>
           </el-form-item>
-          <el-form-item label="行政职能:"  prop="department_arr_id" class="custom-align-right">
+          <el-form-item label="行政职能:" prop="department_arr_id" class="custom-align-right">
             <el-cascader :key="searchDepartmentKey" v-model="form.department_arr_id" placeholder="请选择行政职能"
               popper-class="my_cascader" :props="searchDepartmentData" filterable clearable></el-cascader>
           </el-form-item>
@@ -38,15 +39,15 @@
               end-placeholder="结束日期" :picker-options="pickerOptions">
             </el-date-picker>
           </el-form-item>
-        
+
           <el-form-item label="附件:" class="custom-align-right" prop="">
             <div class="uploaderBox" @mouseenter="hovering = true" mouseleave="hovering = false">
               <el-upload class="avatar-uploader" action="#" :show-file-list="false" :before-upload="beforeAvatarUpload">
                 <!-- 预览图片 -->
-                <img v-if="file && (fileType == 'jpeg' || fileType =='png' )" :src="file" class="avatar">
-                <div v-if="file && (fileType == 'pdf' || fileType =='word' )" class="chooseImgDiv1">
+                <img v-if="file && (fileType == 'jpeg' || fileType == 'png')" :src="file" class="avatar">
+                <div v-if="file && (fileType == 'pdf' || fileType == 'word')" class="chooseImgDiv1">
                   <div>
-                    <div>{{file}}</div>
+                    <div>{{ file }}</div>
                   </div>
                 </div>
                 <div v-else class="chooseImgDiv">
@@ -64,14 +65,15 @@
             </div>
           </el-form-item>
           <el-form-item label="建立群聊:" prop="is_group" class="custom-align-right">
-              <el-radio-group v-model="form.is_group" :disabled="this.$route.query.id!=undefined"> 
-                <el-radio :label="1">是</el-radio>
-                <el-radio :label="0">否</el-radio>
-              </el-radio-group>
-            </el-form-item>
-
-          <el-form-item label="群聊名称:" prop="group_name" class="custom-align-right" v-if="form.is_group == 1" :disabled="this.$route.query.id!=undefined">
-                <el-input v-model="form.group_name" autocomplete="off" placeholder="请输入群聊名称"></el-input>
+            <el-radio-group v-model="form.is_group" :disabled="this.$route.query.id != undefined">
+              <el-radio :label="1">是</el-radio>
+              <el-radio :label="0">否</el-radio>
+            </el-radio-group>
+          </el-form-item>
+
+          <el-form-item label="群聊名称:" prop="group_name" class="custom-align-right" v-if="form.is_group == 1"
+            :disabled="this.$route.query.id != undefined">
+            <el-input v-model="form.group_name" autocomplete="off" placeholder="请输入群聊名称"></el-input>
           </el-form-item>
         </div>
       </el-form>
@@ -132,6 +134,7 @@ export default {
       searchCascaderKey: 0, //列表缓存key
       website_id: 2,
       file: '',
+      userType: 1, //用户类型 1:普通用户,
       pickerOptions: {
         selectableRange: '1900-01-01 to 2100-12-31', // 允许选择的日期范围
         // disabledDate(time) {
@@ -391,7 +394,7 @@ export default {
           }
           console.log(typeof this.form.time, '---=-==-=')
           console.log(this.form.time.length, '---=-==-=')
-          if (typeof this.form.time=='object' && this.form.time.length > 0) {
+          if (typeof this.form.time == 'object' && this.form.time.length > 0) {
             this.form.start = this.formatDate(this.form.time[0]);
             this.form.end = this.formatDate(this.form.time[1]);
             delete this.form.time;
@@ -401,6 +404,11 @@ export default {
           delete this.form.catid;
           this.form.file = this.file;
           console.log(this.form, 'this.form-----------------')
+          if (this.userType == 10000) {
+            this.form.status = 2
+          } else {
+            this.form.status = 1
+          }
           this.$store.dispatch('news/addNotice', this.form).then(res => {
             if (res.code == 200) {
               //汇报结果
@@ -472,11 +480,11 @@ export default {
         this.form.cat_id = res.data.cat_id;
         this.form.time = [res.data.start, res.data.end];
         this.form.file = res.data.file;
-        this.file = res.data.file; 
+        this.file = res.data.file;
         const filePath = res.data.file;
         const fileExtension = filePath.split('.').pop().toLowerCase();
         this.fileType = fileExtension; // 设置文件类型
-        this.form.is_group = parseInt(res.data.is_group );
+        this.form.is_group = parseInt(res.data.is_group);
         this.form.group_name = res.data.group_name;
       })
     },
@@ -539,7 +547,7 @@ export default {
             this.form.department_arr_id = JSON.stringify(this.form.department_arr_id);
           }
           console.log(typeof this.form.time, '---=-==-=')
-          if (typeof this.form.time=='object' && this.form.time.length > 0) {
+          if (typeof this.form.time == 'object' && this.form.time.length > 0) {
             this.form.start = this.formatDate(this.form.time[0]);
             this.form.end = this.formatDate(this.form.time[1]);
             delete this.form.time;
@@ -549,6 +557,13 @@ export default {
           delete this.form.catid;
           this.form.file = this.file;
           console.log(this.form, 'this.form-----------------')
+
+          if (this.userType == 10000) {
+            this.form.status = 2
+          } else {
+            this.form.status = 1
+          }
+
           this.$store.dispatch('news/updateNotice', this.form).then(res => {
             if (res.code != 200) {
               this.$message.error("修改失败,请稍后再试!");
@@ -580,6 +595,14 @@ export default {
 
   },
   watch: {
+    '$route'(to, from) {
+      console.log(from, '---------------------------------------');
+      // 监听路由参数中的 id 变化,若变化则更新页面状态并获取数据
+      if (to.query.id) {
+        this.getMainData();
+      }
+    },
+
   },
   mounted() {
     //1.判断是新建还是回显
@@ -602,8 +625,6 @@ export default {
 };
 </script>
 <style scoped lang="less">
-
-
 //执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
 ::v-deep .custom-form-item>.el-form-item__label {
   line-height: 140px !important;

+ 24 - 23
src/views/news/creatNews.vue

@@ -7,8 +7,8 @@
           <el-form-item label="资讯题目:" prop="title" class="custom-align-right">
             <el-input v-model="form.title" autocomplete="off" placeholder="请输入资讯标题"></el-input>
             <!-- <el-checkbox v-model="form.islink">是否使用外链</el-checkbox> -->
-            <el-checkbox v-model="form.islink" v-if="creatNews_user_type == 10000">是否使用外链</el-checkbox>
-                                           
+            <el-checkbox v-model="form.islink" v-if="creatNews_user_type == 10000">是否使用外链</el-checkbox> 
+             
           </el-form-item>
           <div v-if="form.islink == true">
             <el-form-item label="站点名称:" prop="web_site_id" class="custom-align-right">
@@ -109,7 +109,7 @@
               <el-form-item label="作者:" prop="author" class="custom-align-right">
                 <el-input v-model="form.author" autocomplete="off" placeholder="请输入作者"></el-input>
               </el-form-item>
-              <el-form-item label="浏览量:" class="custom-align-right">
+              <el-form-item label="浏览量:" v-if="creatNews_user_type == 10000" class="custom-align-right">
                 <el-input v-model="form.hits" autocomplete="off" placeholder="请输入浏览量"></el-input>
               </el-form-item>
               <el-form-item label="是否为原创:" prop="is_original" class="custom-align-right">
@@ -584,7 +584,7 @@ export default {
       }
 
       //先进行验证
-      console.log(this.form);
+      // console.log( "this.form==", this.form);
 
       this.$refs.form.validate(valid => {
         if (valid) {
@@ -603,8 +603,9 @@ export default {
             formData.commend_id = '[]';
           }
 
-          this.$store.dispatch('news/addArticle', formData).then(res => {
+          this.$store.dispatch('news/addArticle', formData).then(res => {//
             if (res.code == 200) {
+               console.log("资讯发布成功!200")   
               //汇报结果
               this.$message({
                 type: 'success',
@@ -614,7 +615,7 @@ export default {
               //返回列表页
               this.returnPage()
             } else {
-               
+              
                let the_message = res.message 
                let the_word = (the_message.split(':'))[0]
                 
@@ -631,7 +632,7 @@ export default {
                               message: "资讯发布失败,请稍后再试!"
                         }); 
                }
-
+ 
             }
           }).catch(() => {
             this.$message({
@@ -915,22 +916,22 @@ export default {
           //console.log(this.form)
           this.$store.dispatch('news/updateArticle', formData).then(res => {
             if (res.code != 200) {
-              
-                let the_message_2 = res.message 
-                let the_word_2 = (the_message_2.split(':'))[0]
-                  
-                if(the_word_2==="发现违禁词"){
-
-                      this.$message({
-                        type: 'error',
-                          message: "该内容存在非法信息,请修改后重新发布"
-                      }); 
-                    
-                }else { 
 
-                      this.$message.error("修改失败,请稍后再试!");
-                }
+               let the_message_2 = res.message 
+               let the_word_2 = (the_message_2.split(':'))[0]
                 
+               if(the_word_2==="发现违禁词"){
+
+                     this.$message({
+                       type: 'error',
+                        message: "该内容存在非法信息,请修改后重新发布"
+                     }); 
+                   
+               }else { 
+
+                     this.$message.error("修改失败,请稍后再试!");
+               }
+
             } else {
               //汇报结果
               this.$message({
@@ -978,7 +979,7 @@ export default {
         });
       })
     },
-    get_creatNews_nav_pool_arr_fun() {//xx
+    get_creatNews_nav_pool_arr_fun() {//
       this.$store.dispatch('pool/get_creatNews_nav_actions', { page: 1, pageSize: 666666 }).then(res => {
         res.data.rows.forEach((per_obj) => {
           let new_per = {
@@ -998,7 +999,7 @@ export default {
       //开启导航池级联选择器
       this.ifwebsitId = true;
       console.log(this.ifwebsitId)
-      //xx  导航池级
+      //  导航池级
       let that = this;
       this.form.web_site_id = this.form.web_site_id[0]
       that.parentKey_2 += 1;

+ 114 - 105
src/views/news/examine.vue

@@ -7,19 +7,19 @@
           <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-input placeholder="请输入栏目名称" autocomplete="off" v-model="getApiData.category_name" />
             </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.author" />
             </div>
           </el-col>
         </el-row>
@@ -47,7 +47,7 @@
         </el-row>
       </div>
     </div>
-    
+
     <div class="layerBoxNoBg">
       <div>
         <!-- <el-button type="primary" @click="goCreat">发布资讯</el-button> -->
@@ -61,21 +61,21 @@
 
     <!--表格内容 start------------------------------------------------------------>
     <div class="layerBox">
-      <tableTitle :name="tableDivTitle"/>
+      <tableTitle :name="tableDivTitle" />
       <el-row>
         <template>
           <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="alias" label="展示名称" width=""></el-table-column>
+            <el-table-column prop="alias" label="展示名称" width="100"></el-table-column>
             <el-table-column prop="islink" label="是否引用外链" width=""></el-table-column>
             <el-table-column prop="linkurl" label="是否为原创" width="">
               <template slot-scope="scope">
-                <span v-if="scope.row.is_original==1">
+                <span v-if="scope.row.is_original == 1">
                 </span>
-                <span v-if="scope.row.is_original==0">
+                <span v-if="scope.row.is_original == 0">
                 </span>
               </template>
@@ -93,28 +93,35 @@
                   :inactive-value="0"
                   @change="upRow(scope.row.id,scope.row.status)"
                 ></el-switch> -->
-                <span v-if="scope.row.status==0">待审核</span>
-                <span v-if="scope.row.status==1">已审核</span>
-                <span v-if="scope.row.status==2">已拒绝</span>
+                <span v-if="scope.row.status == 0">待审核</span>
+                <span v-if="scope.row.status == 1">已审核</span>
+                <span v-if="scope.row.status == 2">已拒绝</span>
               </template>
             </el-table-column>
-            <el-table-column fixed="right" label="操作" width="360" header-align="center" v-if="creatNews_user_type == 10000">
+            <el-table-column fixed="right" label="操作" width="360" header-align="center"
+              v-if="creatNews_user_type == 10000">
               <template slot-scope="scope">
                 <div class="listBtnBox">
-                  <div class="listMainBtn" @click="getUpRow(scope.row.id, tableData)"><i class="el-icon-check"></i>审核</div>
-                  <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="getUpRow(scope.row.id, tableData)"><i class="el-icon-check"></i>审核
+                  </div>
+                  <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>
               </template>
             </el-table-column>
-            <el-table-column fixed="right" label="操作" width="360" header-align="center" v-if="creatNews_user_type != 10000">
+            <el-table-column fixed="right" label="操作" width="360" header-align="center"
+              v-if="creatNews_user_type != 10000">
               <template slot-scope="scope">
                 <div class="listBtnBox">
                   <!-- <div class="listLinkBtn" @click="selectRow(scope.row.cat_arr_id, scope.row)"><i class="el-icon-full-screen"></i>站点选择</div>
                   <div class="listMainBtn" @click="getUpRow(scope.row.id, tableData)" v-if="scope.row.status==0"><i class="el-icon-check"></i>审核</div>
                   <div class="listUpBtn" @click="returnRow(scope.row.id, tableData)" v-else><i class="el-icon-refresh-right"></i>撤回</div> -->
-                  <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="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>
               </template>
             </el-table-column>
@@ -127,7 +134,9 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" :current-page="getApiData.page" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <el-pagination @size-change="handleSizeChange" :current-page="getApiData.page"
+            @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+            :total="allCount"></el-pagination>
         </el-col>
       </el-row>
     </div>
@@ -139,13 +148,14 @@
       <el-form :model="form" ref="form" :rules="formRules" label-position="left">
         <div class="formDiv">
           <el-form-item label="驳回原因:" :label-width="formLabelWidth" prop="reason" class="custom-align-right">
-            <el-input type="textarea" v-model="form.reason" class="custom-textarea" placeholder="请输入驳回原因" :rows="3"></el-input>
+            <el-input type="textarea" v-model="form.reason" class="custom-textarea" placeholder="请输入驳回原因"
+              :rows="3"></el-input>
           </el-form-item>
         </div>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <div>
-          <el-button type="info" @click="examineWindow=false">取消</el-button>
+          <el-button type="info" @click="examineWindow = false">取消</el-button>
           <el-button type="primary" @click="examineToServe">确定</el-button>
         </div>
       </div>
@@ -154,9 +164,10 @@
 
     <!--弹出框2:选择要发布的网站 start------------------------------------------------------------>
     <el-dialog title="请选择不要发布的网站" :visible.sync="selectStatusWindow" :close-on-click-modal="false">
-      <el-form label-position="left" >
+      <el-form label-position="left">
         <div class="formDiv">
-          <el-table v-loading="loading" ref="multipleTable" :data="webSiteData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
+          <el-table v-loading="loading" ref="multipleTable" :data="webSiteData" tooltip-effect="dark"
+            style="width: 100%" @selection-change="handleSelectionChange">
             <el-table-column type="selection" width="55"></el-table-column>
             <el-table-column prop="website_id" label="网站id"></el-table-column>
             <el-table-column prop="website_name" label="网站名称"></el-table-column>
@@ -165,13 +176,13 @@
       </el-form>
       <div slot="footer" class="dialog-footer">
         <div>
-          <el-button type="info" @click="selectStatusWindow=false">取消</el-button>
+          <el-button type="info" @click="selectStatusWindow = false">取消</el-button>
           <el-button type="primary" @click="selectWebSiteToServe">确定</el-button>
         </div>
       </div>
     </el-dialog>
     <!--弹出框2:选择要发布的网站 end------------------------------------------------------------>
-    
+
   </div>
 </template>
 
@@ -201,60 +212,60 @@ export default {
     //0.全局操作 end ------------------------------------------------------------>
     return {
       //1.列表和分页相关 start ------------------------------------------------------------>
-      tableDivTitle:"资讯列表",
-      creatNews_user_type:0,//用户类型
-      tableData:[],//内容
+      tableDivTitle: "资讯列表",
+      creatNews_user_type: 0,//用户类型
+      tableData: [],//内容
       webSiteData: [],//可选网站列表
-      editId:0,//要修改的网站id
-      editStatus:0,//要修改的网站状态
-      selectStatusWindow:false,//反选窗口
-      examineWindow:false,//审核窗口
-      formLabelWidth:"120px",//表单label宽度
-      getApiData:{
-        title:"",//标题
-        category_name:"",//导航池id
-        author:"",//作者
-        islink:"",//是否使用外链
-        status:"",//资讯状态
-        status1:"[0,2]", //默认传递 - 如果不为空,表示获取所有未审核与已拒绝的
-        page:1,//当前是第几页
-        pageSize:10,//一共多少条
+      editId: 0,//要修改的网站id
+      editStatus: 0,//要修改的网站状态
+      selectStatusWindow: false,//反选窗口
+      examineWindow: false,//审核窗口
+      formLabelWidth: "120px",//表单label宽度
+      getApiData: {
+        title: "",//标题
+        category_name: "",//导航池id
+        author: "",//作者
+        islink: "",//是否使用外链
+        status: "",//资讯状态
+        status1: "[0,2]", //默认传递 - 如果不为空,表示获取所有未审核与已拒绝的
+        page: 1,//当前是第几页
+        pageSize: 10,//一共多少条
       },
       //提交驳回
-      form:{
-        reason:""
+      form: {
+        reason: ""
       },
       //选择要发布的网站
-      webSiteForm:{
-        ignore_ids:[]
+      webSiteForm: {
+        ignore_ids: []
       },
-      ids:[],//待选网站列表
-      loading:false,//loading
+      ids: [],//待选网站列表
+      loading: false,//loading
       formRules: {
         //导航池名称不能为空
         reason: [{ required: true, trigger: 'blur', validator: validateEmpty }],
       },
-      allCount:0,//总条数
+      allCount: 0,//总条数
       //分页相关 end ------------------------------------------------------------>
     }
   },
   methods: {
     //1.列表和分页相关 start ------------------------------------------------------------>
     //1.1 开始请求列表信息方法
-    getData(type){
-      if(type=="search"){
+    getData(type) {
+      if (type == "search") {
         this.getApiData.page = 1;
       }
-      this.$store.dispatch('news/getArticleList',this.getApiData).then(res=> {
+      this.$store.dispatch('news/getArticleList', this.getApiData).then(res => {
         //格式化:islink=0为不使用外面 islink=1为使用外链
         //status=1为显示 status=2为不显示
         let data = [];
-        for(let item of res.data.rows){
+        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="是"}
+          if (item.islink == 0) { item.islink = "否" }
+          if (item.islink == 1) { item.islink = "是" }
           data.push(item)
         }
         this.tableData = res.data.rows; //给与内容
@@ -267,14 +278,14 @@ export default {
       })
     },
     //1.2 删除内容
-    deleteRow(id){
+    deleteRow(id) {
       this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
         console.log("当前删除:" + id)
-        this.$store.dispatch('news/delArticle',{id:id}).then(res=> {
+        this.$store.dispatch('news/delArticle', { id: id }).then(res => {
           this.getData();
           this.$message({
             type: 'success',
@@ -284,18 +295,18 @@ export default {
       })
     },
     //1.3 撤回审核
-    returnRow(id){
+    returnRow(id) {
       this.$confirm('确定要撤回吗?', '提示', {
         confirmButtonText: '撤回',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
         //撤回,把文章状态修改为0,重新进行审核
-        this.upRow(id,0)
+        this.upRow(id, 0)
       })
     },
     //1.4 审核温江
-    getUpRow(id){
+    getUpRow(id) {
       //设置待审核的id
       this.editId = id;
       console.log(id)
@@ -304,21 +315,21 @@ export default {
         cancelButtonText: '拒绝',
         type: 'warning'
       }).then(() => {
-        this.upRow(id,1)
+        this.upRow(id, 1)
       }).catch(() => {
-       //输入驳回理由
-       console.log("驳回")
-       this.examineWindow = true;
+        //输入驳回理由
+        console.log("驳回")
+        this.examineWindow = true;
       })
     },
     //1.5 修改文章状态
-    upRow(id,status){
+    upRow(id, status) {
       let data = {
-        id:id,
-        status:status
+        id: id,
+        status: status
       }
-      this.$store.dispatch('news/upArticleStatus',data).then(res=> {
-        if(res.code==200){
+      this.$store.dispatch('news/upArticleStatus', data).then(res => {
+        if (res.code == 200) {
           this.$message({
             type: 'success',
             message: '操作成功!'
@@ -328,16 +339,16 @@ export default {
       })
     },
     //提交驳回内容
-    examineToServe(id){
+    examineToServe(id) {
       this.$refs.form.validate(valid => {
         if (valid) {
           let data = {
-            id:this.editId,
-            status:2,//驳回status
-            reason:this.form.reason
+            id: this.editId,
+            status: 2,//驳回status
+            reason: this.form.reason
           }
-          this.$store.dispatch('news/upArticleStatus',data).then(res=> {
-            if(res.code==200){
+          this.$store.dispatch('news/upArticleStatus', data).then(res => {
+            if (res.code == 200) {
               this.$message({
                 type: 'success',
                 message: '操作成功!'
@@ -347,13 +358,13 @@ export default {
               this.examineWindow = false;
             }
           })
-        }else{
+        } else {
           this.$message.error("驳回理由不能为空!")
         }
       })
     },
     //1.6 打开反选窗口
-    selectRow(cid,row){
+    selectRow(cid, row) {
       console.log(row)
       this.selectStatusWindow = true;
       //给与编辑的id
@@ -364,7 +375,7 @@ export default {
       let cidArr = cid.replace(/[\[\]]/g, '').split(',');
       // 获取数组的最后一个元素
       let cidLast = cidArr[cidArr.length - 1];
-      this.getWebsiteNavPoolSite(cidLast,row)
+      this.getWebsiteNavPoolSite(cidLast, row)
     },
     //1.7 列表内容分页
     //直接跳转
@@ -378,7 +389,7 @@ export default {
       this.getData();
     },
     //1.9 重置按钮
-    clearSearchList(){
+    clearSearchList() {
       this.tableData = [];
       this.getApiData.title = "";
       this.getApiData.category_name = "";
@@ -390,11 +401,11 @@ export default {
       this.getData();
     },
     //1.10 获取可选网站列表
-    getWebsiteNavPoolSite(cid,row){
+    getWebsiteNavPoolSite(cid, row) {
       this.loading = true;
       let ignoreIds = JSON.parse(row.ignore_ids);
       this.webSiteData = [];
-      this.$store.dispatch('news/getWebsiteNavPoolSite',{category_id:cid}).then(res=>{
+      this.$store.dispatch('news/getWebsiteNavPoolSite', { category_id: cid }).then(res => {
         // for(let item of res.data){
         //   if(item.website_name!=null){
         //     this.webSiteData.push(item)
@@ -402,10 +413,10 @@ export default {
         // }
         this.webSiteData = res.data;
         //延迟一会返显,否则可能显示不了
-        if(res.data.length>0&&ignoreIds!=null){
-          setTimeout(()=>{
-            for(let index in this.webSiteData){
-              if(ignoreIds.includes(this.webSiteData[index].website_id)){
+        if (res.data.length > 0 && ignoreIds != null) {
+          setTimeout(() => {
+            for (let index in this.webSiteData) {
+              if (ignoreIds.includes(this.webSiteData[index].website_id)) {
                 console.log(1234656)
                 console.log(index)
                 //调用回显方法
@@ -413,16 +424,16 @@ export default {
               }
             }
             this.loading = false;
-          },500)
-        }else{
+          }, 500)
+        } else {
           this.loading = false;
         }
       })
     },
     //1.11 提交选择的网站列表
-    selectWebSiteToServe(id){
+    selectWebSiteToServe(id) {
       let ids = [];
-      for(let item of this.ids){
+      for (let item of this.ids) {
         ids.push(item.website_id)
       }
       //把数组转换为字符串
@@ -430,25 +441,25 @@ export default {
       //把数组转换为字符串
       let idsStr = JSON.stringify(ids);
 
-      if(idsStr.length==0){
+      if (idsStr.length == 0) {
         this.$message.error("至少需要选择一个网站!")
         return;
-      }else{
+      } else {
         let data = {
-          id:this.editId,
-          ignore_ids:idsStr,
-          status:this.editStatus
+          id: this.editId,
+          ignore_ids: idsStr,
+          status: this.editStatus
         }
-        this.$store.dispatch('news/upArticleStatus',data).then(res=>{
+        this.$store.dispatch('news/upArticleStatus', data).then(res => {
           console.log(res)
-          if(res.code==200){
+          if (res.code == 200) {
             this.$message({
               type: 'success',
               message: '资讯绑定网站成功!'
             });
             this.selectStatusWindow = false;
             this.getData();
-          }else{
+          } else {
             this.$message.error(res.data.msg)
           }
         })
@@ -474,15 +485,15 @@ export default {
 
     //2.添加新闻 start ------------------------------------------------------------>
     //跳转到资讯发布页面
-    goCreat(){
+    goCreat() {
       this.$router.push({
         path: '/creatNews',
       });
     },
-    goEdit(id){
+    goEdit(id) {
       let data = {
-        id:id,
-        to:"examine"
+        id: id,
+        to: "examine"
       }
       this.$router.push({
         path: '/creatNews',
@@ -491,7 +502,7 @@ export default {
     }
     //添加新闻 end ------------------------------------------------------------>
   },
-  mounted(){
+  mounted() {
     this.creatNews_user_type = getUseType()
     //1.获得初始数据
     this.getData();
@@ -499,6 +510,4 @@ export default {
 }
 </script>
 
-<style scoped lang="less">
-
-</style>
+<style scoped lang="less"></style>

+ 8 - 0
src/views/news/jobHuntingList.vue

@@ -35,6 +35,13 @@
             <el-table-column prop="username" label="标题名称" width=""></el-table-column>
             <el-table-column prop="category_name" label="分类" width=""></el-table-column>
             <el-table-column prop="website_name" label="网站名称" width=""></el-table-column>
+            <el-table-column prop="status" label="审核状态" width="">
+              <template slot-scope="scope">
+                <div v-if="scope.row.status == 1">待审核</div>
+                <div v-if="scope.row.status == 2">已审核</div>
+                <div v-if="scope.row.status == 3">已拒绝</div>
+              </template>
+            </el-table-column>
             <el-table-column prop="updated_at" label="更新时间" width=""></el-table-column>
 
             <el-table-column fixed="right" label="操作" width="200" header-align="center">
@@ -87,6 +94,7 @@ export default {
         category_name: "",//导航池id
         website_name: "",//网站名称
         type_id: "",//发布类型
+        status: 2,//状态
 
         page: 1,//当前是第几页
         page_size: 10,//一共多少条

+ 299 - 0
src/views/news/jobHuntingListApply.vue

@@ -0,0 +1,299 @@
+<template>
+  <div class="mainBox">
+    <!--搜索功能 start------------------------------------------------------------>
+    <div class="layerBox_search">
+      <div class="layerBoxLine">
+        <el-row>
+          <el-col :span="8">
+            <div class="searchBox">
+              <div class="searchTitle">标签名称</div>
+              <el-input placeholder="请输入标签名称" autocomplete="off" v-model="getApiData.username" />
+            </div>
+          </el-col>
+
+        </el-row>
+      </div>
+    </div>
+    <div class="layerBoxNoBg">
+      <div>
+        <el-button type="primary" @click="goCreat">发布求职信息</el-button>
+      </div>
+      <div>
+        <el-button @click="clearSearchList">重置</el-button>
+        <el-button type="primary" @click="getData('search')">搜索</el-button>
+      </div>
+    </div>
+    <!--搜索功能 end------------------------------------------------------------>
+
+    <!--表格内容 start------------------------------------------------------------>
+    <div class="layerBox">
+      <tableTitle :name="tableDivTitle" />
+      <el-row>
+        <template>
+          <el-table :data="tableData" style="width: 100%">
+            <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
+            <el-table-column prop="username" label="标题名称" width=""></el-table-column>
+            <el-table-column prop="category_name" label="分类" width=""></el-table-column>
+            <el-table-column prop="website_name" label="网站名称" width=""></el-table-column>
+            <el-table-column prop="status" label="审核状态" width="">
+              <template slot-scope="scope">
+                <div v-if="scope.row.status == 1">待审核</div>
+                <div v-if="scope.row.status == 2">已审核</div>
+                <div v-if="scope.row.status == 3">已拒绝</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="updated_at" label="更新时间" width=""></el-table-column>
+
+            <el-table-column fixed="right" label="操作" width="300" header-align="center">
+              <template slot-scope="scope">
+                <div class="listBtnBox">
+                  <div class="listMainBtn" v-if="type_id == 10000" @click="getUpRow(scope.row.id, tableData)"><i
+                      class="el-icon-check"></i>审核
+                  </div>
+                  <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>
+              </template>
+            </el-table-column>
+          </el-table>
+        </template>
+      </el-row>
+    </div>
+    <!--分页 start------------------------------------------------------------>
+    <!--弹出框1:外部表单弹出框 start------------------------------------------------------------>
+    <el-dialog title="请输入驳回理由" :visible.sync="examineWindow" :close-on-click-modal="false">
+      <el-form :model="form" ref="form" :rules="formRules" label-position="left">
+        <div class="formDiv">
+          <el-form-item label="驳回原因:" :label-width="formLabelWidth" prop="reason" class="custom-align-right">
+            <el-input type="textarea" v-model="form.reason" class="custom-textarea" placeholder="请输入驳回原因"
+              :rows="3"></el-input>
+          </el-form-item>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <div>
+          <el-button type="info" @click="examineWindow = false">取消</el-button>
+          <el-button type="primary" @click="examineToServe">确定</el-button>
+        </div>
+      </div>
+    </el-dialog>
+    <!--弹出框1:外部表单弹出框 end------------------------------------------------------------>
+    <div class="alignBox">
+      <el-row>
+        <el-col :span="24">
+          <el-pagination @size-change="handleSizeChange" :current-page="getApiData.page"
+            @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+            :total="allCount"></el-pagination>
+        </el-col>
+      </el-row>
+    </div>
+    <!--分页 end------------------------------------------------------------>
+    <!--表格内容 end------------------------------------------------------------>
+  </div>
+</template>
+
+<script>
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+import { getUseType } from '@/utils/auth'
+
+
+export default {
+  components: {
+    tableTitle,//表格标题
+  },
+  data() {
+    return {
+      //1.列表和分页相关 start ------------------------------------------------------------>
+      tableDivTitle: "求职信息列表",
+      tableData: [],//内容
+      editId: 0,//要修改的网站id
+      type_id: getUseType(),//发布类型
+      examineWindow: false,//审核窗口
+      //提交驳回
+      form: {
+        reason: ""
+      },
+      getApiData: {
+        name: "",//标题
+        category_name: "",//导航池id
+        website_name: "",//网站名称
+        type_id: "",//发布类型
+        status1: 1,//审核状态 1待审核 2已审核 3已拒绝
+        page: 1,//当前是第几页
+        page_size: 10,//一共多少条
+      },
+      formLabelWidth: '80px',//表单的长度
+      allCount: 0,//总条数
+      //分页相关 end ------------------------------------------------------------>
+    }
+  },
+  methods: {
+    //提交驳回内容
+    examineToServe(id) {
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          let data = {
+            id: this.editId,
+            status: 3,//驳回status
+            reason: this.form.reason
+          }
+          this.$store.dispatch('news/updateJobHuntingStatus', data).then(res => {
+            if (res.code == 200) {
+              this.$message({
+                type: 'success',
+                message: '操作成功!'
+              });
+              this.getData();
+              this.form.reason = "";//清空上一次的输入
+              this.examineWindow = false;
+            }
+          })
+        } else {
+          this.$message.error("驳回理由不能为空!")
+        }
+      })
+    },
+    getUpRow(id) {
+      //设置待审核的id
+      this.editId = id;
+      console.log(id)
+      this.$confirm('将此商品通过审核吗?', '提示', {
+        confirmButtonText: '通过',
+        cancelButtonText: '拒绝',
+        type: 'warning'
+      }).then(() => {
+        this.upRow(id, 2)
+      }).catch(() => {
+        //输入驳回理由
+        console.log("驳回")
+        this.examineWindow = true;
+      })
+    },
+    upRow(id, status) {
+      let data = {
+        id: id,
+        status: status
+      }
+      this.$store.dispatch('news/updateJobHuntingStatus', data).then(res => {
+        if (res.code == 200) {
+          this.$message({
+            type: 'success',
+            message: '商品状态已修改!'
+          });
+          this.getData();
+        }
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+    //1.列表和分页相关 start ------------------------------------------------------------>
+    //1.1 开始请求列表信息方法
+    getData(type) {
+      if (type == "search") {
+        this.getApiData.page = 1;
+      }
+      console.log(this.getApiData, '--1-1--')
+      this.$store.dispatch('news/getJobHuntingList', this.getApiData).then(res => {
+        //格式化:islink=0为不使用外面 islink=1为使用外链
+        //status=1为显示 status=2为不显示
+        console.log(res.data, '-111--2-')
+        let data = [];
+        for (let item of res.data.rows) {
+          item.username = item.username + '简历'
+          item.category_name = '求职信息'
+
+          data.push(item)
+        }
+        this.tableData = res.data.rows; //给与内容
+        this.allCount = res.data.count; //给与总条数
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '网络错误,请重试!'
+        });
+      })
+    },
+    //1.2 删除内容
+    deleteRow(id) {
+      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        console.log("当前删除:" + id)
+        this.$store.dispatch('news/delJobHunting', { id: id }).then(res => {
+          this.getData();
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'warning',
+            message: '网络错误,请重试!'
+          });
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+
+    //1.4 列表内容分页
+    //直接跳转
+    handleSizeChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.5 点击分页
+    handleCurrentChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.6 重置按钮
+    clearSearchList() {
+      this.tableData = [];
+      this.getApiData.username = "";
+
+      this.getApiData.page = 1;
+      this.getApiData.pageSize = 10;
+      this.getData();
+    },
+    //列表和分页相关 end ------------------------------------------------------------>
+
+    //2.添加求职信息start ------------------------------------------------------------>
+    //跳转到求职信息发布页面
+    goCreat() {
+      this.$router.push({
+        path: '/addJobHunting',
+      });
+    },
+    goEdit(id) {
+      let data = {
+        id: id
+      }
+      this.$router.push({
+        path: '/addJobHunting',
+        query: data
+      });
+    }
+    //添加求职信息end ------------------------------------------------------------>
+  },
+  mounted() {
+    //1.获得初始数据
+    this.getData();
+  }
+}
+</script>
+
+<style scoped lang="less"></style>

+ 273 - 0
src/views/news/ncomplaintList.vue

@@ -0,0 +1,273 @@
+<template>
+  <div class="mainBox">
+    <!--搜索功能 start------------------------------------------------------------>
+    <div class="layerBox_search">
+      <div class="layerBoxLine">
+        <el-row>
+
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">投诉主题:</div>
+              <el-input placeholder="请输入投诉主题" autocomplete="off" v-model="getApiData.title" />
+            </div>
+          </el-col>
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">投诉类型:</div>
+              <el-input placeholder="请输入投诉类型" autocomplete="off" v-model="getApiData.title" />
+            </div>
+          </el-col>
+
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">处理状态:</div>
+              <el-select v-model="getApiData.deal" 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="不予处理" value="4"></el-option>
+              </el-select>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+
+    </div>
+
+    <div class="layerBoxNoBg">
+      <div>
+        <el-button type="primary" @click="goCreat">发布投诉举报</el-button>
+      </div>
+      <div>
+        <el-button @click="clearSearchList">重置</el-button>
+        <el-button type="primary" @click="getData('search')">搜索</el-button>
+      </div>
+    </div>
+    <!--搜索功能 end------------------------------------------------------------>
+
+    <!--表格内容 start------------------------------------------------------------>
+    <div class="layerBox">
+      <tableTitle :name="tableDivTitle" />
+      <el-row>
+        <template>
+          <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="department_name" label="投诉类型" width="">
+            </el-table-column>
+            <el-table-column prop="cityname" label="接收人" width="">
+            </el-table-column>
+
+            <el-table-column prop="status" label="审核状态" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.status == 1">
+                  未审核
+                </span>
+                <span v-if="scope.row.status == 2">
+                  已审核
+                </span>
+                <span v-if="scope.row.status == 3">
+                  已拒绝
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="deal" label="处理状态" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.deal == 1">
+                  未处理
+                </span>
+                <span v-if="scope.row.deal == 2">
+                  处理中
+                </span>
+                <span v-if="scope.row.deal == 3">
+                  已完结
+                </span>
+                <span v-if="scope.row.deal == 4">
+                  不予处理
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="start" label="投诉时间" width="">
+
+            </el-table-column>
+            <el-table-column prop="created_at" label="创建时间" width=""></el-table-column>
+
+            <el-table-column fixed="right" label="操作" width="200" 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>
+              </template>
+            </el-table-column>
+          </el-table>
+        </template>
+      </el-row>
+    </div>
+    <!--分页 start------------------------------------------------------------>
+    <div class="alignBox">
+      <el-row>
+        <el-col :span="24">
+          <el-pagination @size-change="handleSizeChange" :current-page="getApiData.page"
+            @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+            :total="allCount"></el-pagination>
+        </el-col>
+      </el-row>
+    </div>
+    <!--分页 end------------------------------------------------------------>
+    <!--表格内容 end------------------------------------------------------------>
+  </div>
+</template>
+
+<script>
+//表格标题
+import tableTitle from './components/tableTitle';
+
+//获得用户身份
+import { getUseType } from '@/utils/auth'
+
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+  components: {
+    tableTitle,//表格标题
+  },
+  data() {
+    return {
+      //1.列表和分页相关 start ------------------------------------------------------------>
+      tableDivTitle: "投诉列表",
+      tableData: [],//内容
+      editId: 0,//要修改的网站id
+      getApiData: {
+        name: "",//标题
+        category_name: "",//导航池id
+        website_name: "",//网站名称
+        type_id: "",//发布类型
+        status: 2,//发布状态
+
+        page: 1,//当前是第几页
+        page_size: 10,//一共多少条
+      },
+      allCount: 0,//总条数
+      type_id: 0,
+      //分页相关 end ------------------------------------------------------------>
+
+    }
+  },
+  methods: {
+    //1.列表和分页相关 start ------------------------------------------------------------>
+    //1.1 开始请求列表信息方法
+    getData(type) {
+      if (type == "search") {
+        this.getApiData.page = 1;
+      }
+      console.log(this.getApiData, '---1--')
+      this.$store.dispatch('news/getComplaintList', this.getApiData).then(res => {
+        console.log(this.getApiData, '---2-')
+        let data = [];
+        for (let item of res.data.rows) {
+          data.push(item)
+        }
+        this.tableData = res.data.rows; //给与内容
+        this.allCount = res.data.count; //给与总条数
+      })
+    },
+    //1.2 删除内容
+    deleteRow(id) {
+      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        console.log("当前删除:" + id)
+        this.$store.dispatch('news/deleteComplaint', { id: id }).then(res => {
+          this.getData();
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'warning',
+            message: '网络错误,请重试!'
+          });
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+    //1.3 修改网站状态
+    upRow(id, status) {
+      let data = {
+        id: id,
+        status: status
+      }
+      this.$store.dispatch('news/updateComplaintStatus', data).then(res => {
+        if (res.code == 200) {
+          this.$message({
+            type: 'success',
+            message: '通知状态已修改!'
+          });
+        }
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+    //1.4 列表内容分页
+    //直接跳转
+    handleSizeChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.5 点击分页
+    handleCurrentChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.6 重置按钮
+    clearSearchList() {
+      this.tableData = [];
+      this.getApiData.title = "";
+      this.getApiData.level = "";
+
+      this.getApiData.page = 1;
+      this.getApiData.pageSize = 10;
+      this.getData();
+    },
+    //列表和分页相关 end ------------------------------------------------------------>
+    //2.添加新闻 start ------------------------------------------------------------>
+    //跳转到通知发布页面
+    goCreat() {
+      this.$router.push({
+        path: '/addNcomplaint',
+      });
+    },
+    goEdit(id) {
+      let data = {
+        id: id
+      }
+      this.$router.push({
+        path: '/addNcomplaint',
+        query: data
+      });
+    }
+    //添加新闻 end ------------------------------------------------------------>
+  },
+  mounted() {
+    this.type_id = getUseType()
+    //1.获得初始数据
+    this.getData();
+  }
+}
+</script>
+<style scoped lang="less"></style>

+ 349 - 0
src/views/news/ncomplaintListApply.vue

@@ -0,0 +1,349 @@
+<template>
+  <div class="mainBox">
+    <!--搜索功能 start------------------------------------------------------------>
+    <div class="layerBox_search">
+      <div class="layerBoxLine">
+        <el-row>
+
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">投诉主题:</div>
+              <el-input placeholder="请输入投诉主题" autocomplete="off" v-model="getApiData.title" />
+            </div>
+          </el-col>
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">投诉类型:</div>
+              <el-input placeholder="请输入投诉类型" autocomplete="off" v-model="getApiData.title" />
+            </div>
+          </el-col>
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">处理状态:</div>
+              <el-select v-model="getApiData.deal" 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="不予处理" value="4"></el-option>
+              </el-select>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+
+    </div>
+
+    <div class="layerBoxNoBg">
+      <div>
+        <el-button type="primary" @click="goCreat">发布投诉举报</el-button>
+      </div>
+      <div>
+        <el-button @click="clearSearchList">重置</el-button>
+        <el-button type="primary" @click="getData('search')">搜索</el-button>
+      </div>
+    </div>
+    <!--搜索功能 end------------------------------------------------------------>
+
+    <!--表格内容 start------------------------------------------------------------>
+    <div class="layerBox">
+      <tableTitle :name="tableDivTitle" />
+      <el-row>
+        <template>
+          <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="title" label="投诉类型" width="">
+            </el-table-column>
+            <el-table-column prop="cityname" label="接收人" width="">
+            </el-table-column>
+
+            <el-table-column prop="status" label="审核状态" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.status == 1">
+                  未审核
+                </span>
+                <span v-if="scope.row.status == 2">
+                  已审核
+                </span>
+                <span v-if="scope.row.status == 3">
+                  已拒绝
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="deal" label="处理状态" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.deal == 1">
+                  未处理
+                </span>
+                <span v-if="scope.row.deal == 2">
+                  处理中
+                </span>
+                <span v-if="scope.row.deal == 3">
+                  已完结
+                </span>
+                <span v-if="scope.row.deal == 4">
+                  不予处理
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="start" label="投诉时间" width="">
+
+            </el-table-column>
+            <el-table-column prop="created_at" label="创建时间" width=""></el-table-column>
+
+            <el-table-column fixed="right" label="操作" width="300" header-align="center">
+              <template slot-scope="scope">
+                <div class="listBtnBox">
+                  <div class="listMainBtn" v-if="type_id == 10000" @click="getUpRow(scope.row.id, tableData)"><i
+                      class="el-icon-check"></i>审核
+                  </div>
+                  <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>
+              </template>
+            </el-table-column>
+          </el-table>
+        </template>
+      </el-row>
+    </div>
+    <!--分页 start------------------------------------------------------------>
+    <div class="alignBox">
+      <el-row>
+        <el-col :span="24">
+          <el-pagination @size-change="handleSizeChange" :current-page="getApiData.page"
+            @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+            :total="allCount"></el-pagination>
+        </el-col>
+      </el-row>
+    </div>
+    <!--分页 end------------------------------------------------------------>
+    <!--弹出框1:外部表单弹出框 start------------------------------------------------------------>
+    <el-dialog title="请输入驳回理由" :visible.sync="examineWindow" :close-on-click-modal="false">
+      <el-form :model="form" ref="form" :rules="formRules" label-position="left">
+        <div class="formDiv">
+          <el-form-item label="驳回原因:" :label-width="formLabelWidth" prop="reason" class="custom-align-right">
+            <el-input type="textarea" v-model="form.reason" class="custom-textarea" placeholder="请输入驳回原因"
+              :rows="3"></el-input>
+          </el-form-item>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <div>
+          <el-button type="info" @click="examineWindow = false">取消</el-button>
+          <el-button type="primary" @click="examineToServe">确定</el-button>
+        </div>
+      </div>
+    </el-dialog>
+    <!--弹出框1:外部表单弹出框 end------------------------------------------------------------>
+    <!--表格内容 end------------------------------------------------------------>
+  </div>
+</template>
+
+<script>
+//表格标题
+import tableTitle from './components/tableTitle';
+//获得用户身份
+import { getUseType } from '@/utils/auth'
+
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+  components: {
+    tableTitle,//表格标题
+  },
+  data() {
+    return {
+      //1.列表和分页相关 start ------------------------------------------------------------>
+      tableDivTitle: "投诉列表",
+      tableData: [],//内容
+      editId: 0,//要修改的网站id
+      examineWindow: false,//审核窗口
+      //提交驳回
+      formLabelWidth: '80px',//表单的长度
+      type_id: 0,//用户身份
+      form: {
+        reason: ""
+      },
+      formRules: {
+      },
+      getApiData: {
+        name: "",//标题
+        category_name: "",//导航池id
+        website_name: "",//网站名称
+        type_id: "",//发布类型
+        status1: 1,//审核状态
+        page: 1,//当前是第几页
+        page_size: 10,//一共多少条
+      },
+      allCount: 0,//总条数
+      //分页相关 end ------------------------------------------------------------>
+
+    }
+  },
+  methods: {
+
+    //提交驳回内容
+    examineToServe(id) {
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          let data = {
+            id: this.editId,
+            status: 3,//驳回status
+            reason: this.form.reason
+          }
+          this.$store.dispatch('news/updateComplaintStatus', data).then(res => {
+            if (res.code == 200) {
+              this.$message({
+                type: 'success',
+                message: '操作成功!'
+              });
+              this.getData();
+              this.form.reason = "";//清空上一次的输入
+              this.examineWindow = false;
+            }
+          })
+        } else {
+          this.$message.error("驳回理由不能为空!")
+        }
+      })
+    },
+    getUpRow(id) {
+      //设置待审核的id
+      this.editId = id;
+      console.log(id)
+      this.$confirm('将此投诉举报通过审核吗?', '提示', {
+        confirmButtonText: '通过',
+        cancelButtonText: '拒绝',
+        distinguishCancelAndClose: true,  // 关键配置项
+        type: 'warning'
+      }).then(() => {
+        this.upRow(id, 2)
+      }).catch((the_reback) => {
+
+        if (the_reback == "cancel") {
+          //输入驳回理由
+          // console.log("驳回" )
+          this.examineWindow = true;
+        }
+
+      })
+    },
+    upRow(id, status) {
+      let data = {
+        id: id,
+        status: status
+      }
+      this.$store.dispatch('news/updateComplaintStatus', data).then(res => {
+        if (res.code == 200) {
+          this.$message({
+            type: 'success',
+            message: '投诉举报状态已修改!'
+          });
+          this.getData();
+        }
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+
+    //1.列表和分页相关 start ------------------------------------------------------------>
+    //1.1 开始请求列表信息方法
+    getData(type) {
+      if (type == "search") {
+        this.getApiData.page = 1;
+      }
+      console.log(this.getApiData, '---1--')
+      this.$store.dispatch('news/getComplaintList', this.getApiData).then(res => {
+        console.log(this.getApiData, '---2-')
+        let data = [];
+        for (let item of res.data.rows) {
+          data.push(item)
+        }
+        this.tableData = res.data.rows; //给与内容
+        this.allCount = res.data.count; //给与总条数
+      })
+    },
+    //1.2 删除内容
+    deleteRow(id) {
+      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        console.log("当前删除:" + id)
+        this.$store.dispatch('news/deleteComplaint', { id: id }).then(res => {
+          this.getData();
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'warning',
+            message: '网络错误,请重试!'
+          });
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+    //1.3 修改网站状态
+
+    //1.4 列表内容分页
+    //直接跳转
+    handleSizeChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.5 点击分页
+    handleCurrentChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.6 重置按钮
+    clearSearchList() {
+      this.tableData = [];
+      this.getApiData.title = "";
+      this.getApiData.level = "";
+
+      this.getApiData.page = 1;
+      this.getApiData.pageSize = 10;
+      this.getData();
+    },
+    //列表和分页相关 end ------------------------------------------------------------>
+    //2.添加新闻 start ------------------------------------------------------------>
+    //跳转到投诉举报发布页面
+    goCreat() {
+      this.$router.push({
+        path: '/addNComplaint',
+      });
+    },
+    goEdit(id) {
+      let data = {
+        id: id
+      }
+      this.$router.push({
+        path: '/addNComplaint',
+        query: data
+      });
+    }
+    //添加新闻 end ------------------------------------------------------------>
+  },
+  mounted() {
+    this.type_id = getUseType()
+    //1.获得初始数据
+    this.getData();
+  }
+}
+</script>
+<style scoped lang="less"></style>

+ 375 - 0
src/views/news/ncomplaintListDeal.vue

@@ -0,0 +1,375 @@
+<template>
+  <div class="mainBox">
+    <!--搜索功能 start------------------------------------------------------------>
+    <div class="layerBox_search">
+      <div class="layerBoxLine">
+        <el-row>
+
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">投诉主题:</div>
+              <el-input placeholder="请输入投诉主题" autocomplete="off" v-model="getApiData.title" />
+            </div>
+          </el-col>
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">投诉类型:</div>
+              <el-input placeholder="请输入投诉类型" autocomplete="off" v-model="getApiData.title" />
+            </div>
+          </el-col>
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">处理状态:</div>
+              <el-select v-model="getApiData.deal" 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="不予处理" value="4"></el-option>
+              </el-select>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+
+    </div>
+
+    <div class="layerBoxNoBg">
+      <div>
+        <el-button type="primary" @click="goCreat">发布投诉举报</el-button>
+      </div>
+      <div>
+        <el-button @click="clearSearchList">重置</el-button>
+        <el-button type="primary" @click="getData('search')">搜索</el-button>
+      </div>
+    </div>
+    <!--搜索功能 end------------------------------------------------------------>
+    <!--表格内容 start------------------------------------------------------------>
+    <div class="layerBox">
+      <tableTitle :name="tableDivTitle" />
+      <el-row>
+        <template>
+          <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="title" label="投诉类型" width="">
+            </el-table-column>
+            <el-table-column prop="cityname" label="接收人" width="">
+            </el-table-column>
+
+            <el-table-column prop="status" label="审核状态" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.status == 1">
+                  未审核
+                </span>
+                <span v-if="scope.row.status == 2">
+                  已审核
+                </span>
+                <span v-if="scope.row.status == 3">
+                  已拒绝
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="deal" label="处理状态" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.deal == 1">
+                  未处理
+                </span>
+                <span v-if="scope.row.deal == 2">
+                  处理中
+                </span>
+                <span v-if="scope.row.deal == 3">
+                  已完结
+                </span>
+                <span v-if="scope.row.deal == 4">
+                  不予处理
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="start" label="投诉时间" width="">
+
+            </el-table-column>
+            <el-table-column prop="created_at" label="创建时间" width=""></el-table-column>
+
+            <el-table-column fixed="right" label="操作" width="400" header-align="center">
+              <template slot-scope="scope">
+                <div class="listBtnBox">
+                  <div class="listMainBtn" v-if="scope.row.deal == 1" @click="getUpRow(scope.row.id, tableData)"><i
+                      class="el-icon-check"></i>处理
+                  </div>
+                  <div class="listMainBtn" v-if="scope.row.deal == 2" @click="setOverRow(scope.row.id, tableData)"><i
+                      class="el-icon-check"></i>完结
+                  </div>
+
+                  <div class="listEditBtn" @click="goEdit(scope.row.id, tableData)"><i
+                      class="el-icon-edit-outline"></i>编辑</div>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+        </template>
+      </el-row>
+    </div>
+    <!--分页 start------------------------------------------------------------>
+    <div class="alignBox">
+      <el-row>
+        <el-col :span="24">
+          <el-pagination @size-change="handleSizeChange" :current-page="getApiData.page"
+            @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+            :total="allCount"></el-pagination>
+        </el-col>
+      </el-row>
+    </div>
+    <!--分页 end------------------------------------------------------------>
+    <!--弹出框1:外部表单弹出框 start------------------------------------------------------------>
+    <el-dialog title="请输入驳回理由" :visible.sync="examineWindow" :close-on-click-modal="false">
+      <el-form :model="form" ref="form" :rules="formRules" label-position="left">
+        <div class="formDiv">
+          <el-form-item label="驳回原因:" :label-width="formLabelWidth" prop="reason" class="custom-align-right">
+            <el-input type="textarea" v-model="form.reason" class="custom-textarea" placeholder="请输入驳回原因"
+              :rows="3"></el-input>
+          </el-form-item>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <div>
+          <el-button type="info" @click="examineWindow = false">取消</el-button>
+          <el-button type="primary" @click="examineToServe">确定</el-button>
+        </div>
+      </div>
+    </el-dialog>
+    <!--弹出框1:外部表单弹出框 end------------------------------------------------------------>
+    <!--表格内容 end------------------------------------------------------------>
+  </div>
+</template>
+
+<script>
+//表格标题
+import tableTitle from './components/tableTitle';
+//获得用户身份
+import { getUseType } from '@/utils/auth'
+
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+  components: {
+    tableTitle,//表格标题
+  },
+  data() {
+    return {
+      //1.列表和分页相关 start ------------------------------------------------------------>
+      tableDivTitle: "投诉列表",
+      tableData: [],//内容
+      editId: 0,//要修改的网站id
+      examineWindow: false,//审核窗口
+      //提交驳回
+      formLabelWidth: '80px',//表单的长度
+      type_id: 0,//用户身份
+      user_id: this.$store.state.user.userid,
+      form: {
+        reason: ""
+      },
+      formRules: {
+      },
+      getApiData: {
+        name: "",//标题
+        category_name: "",//导航池id
+        website_name: "",//网站名称
+        type_id: "",//发布类型
+        status: 2,//审核状态
+        deal_user: 1,//处理状态
+        page: 1,//当前是第几页
+        page_size: 10,//一共多少条
+      },
+      allCount: 0,//总条数
+      //分页相关 end ------------------------------------------------------------>
+
+    }
+  },
+  methods: {
+
+    //提交驳回内容
+    examineToServe(id) {
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          let data = {
+            id: this.editId,
+            status: 2,//驳回status
+            deal: 4,//处理状态
+            deal_reason: this.form.reason
+          }
+          this.$store.dispatch('news/updateComplaintStatus', data).then(res => {
+            if (res.code == 200) {
+              this.$message({
+                type: 'success',
+                message: '操作成功!'
+              });
+              this.getData();
+              this.form.reason = "";//清空上一次的输入
+              this.examineWindow = false;
+            }
+          })
+        } else {
+          this.$message.error("驳回理由不能为空!")
+        }
+      })
+    },
+    getUpRow(id) {
+      //设置待审核的id
+      this.editId = id;
+      console.log(id)
+      this.$confirm('您将处理此投诉举报吗?', '提示', {
+        confirmButtonText: '处理',
+        cancelButtonText: '拒绝',
+        distinguishCancelAndClose: true,  // 关键配置项
+        type: 'warning'
+      }).then(() => {
+        this.upRow(id, 2, 2)
+      }).catch((the_reback) => {
+
+        if (the_reback == "cancel") {
+          //输入驳回理由
+          // console.log("驳回" )
+          this.examineWindow = true;
+        }
+
+      })
+    },
+    setOverRow(id) {
+      //设置待审核的id
+      this.editId = id;
+      console.log(id)
+      this.$confirm('您将完结此投诉举报吗?', '提示', {
+        confirmButtonText: '完结',
+        distinguishCancelAndClose: true,  // 关键配置项
+        type: 'warning'
+      }).then(() => {
+        this.upRow(id, 3, 2)
+      }).catch((the_reback) => {
+        if (the_reback == "cancel") {
+          // //输入驳回理由
+          // // console.log("驳回" )
+          // this.examineWindow = true;
+        }
+
+      })
+    },
+    upRow(id, deal, status) {
+      let data = {
+        id: id,
+        deal: deal,
+        status: status
+      }
+      this.$store.dispatch('news/updateComplaintStatus', data).then(res => {
+        if (res.code == 200) {
+          this.$message({
+            type: 'success',
+            message: '投诉举报处理状态已修改!'
+          });
+          this.getData();
+        }
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+
+    //1.列表和分页相关 start ------------------------------------------------------------>
+    //1.1 开始请求列表信息方法
+    getData(type) {
+      if (type == "search") {
+        this.getApiData.page = 1;
+      }
+      console.log(this.getApiData, '---1--')
+      this.$store.dispatch('news/getComplaintList', this.getApiData).then(res => {
+        console.log(this.getApiData, '---2-')
+        let data = [];
+        for (let item of res.data.rows) {
+          data.push(item)
+        }
+        this.tableData = res.data.rows; //给与内容
+        this.allCount = res.data.count; //给与总条数
+      })
+    },
+    //1.2 删除内容
+    deleteRow(id) {
+      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        console.log("当前删除:" + id)
+        this.$store.dispatch('news/deleteComplaint', { id: id }).then(res => {
+          this.getData();
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'warning',
+            message: '网络错误,请重试!'
+          });
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+    //1.3 修改网站状态
+
+    //1.4 列表内容分页
+    //直接跳转
+    handleSizeChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.5 点击分页
+    handleCurrentChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.6 重置按钮
+    clearSearchList() {
+      this.tableData = [];
+      this.getApiData.title = "";
+      this.getApiData.level = "";
+
+      this.getApiData.page = 1;
+      this.getApiData.pageSize = 10;
+      this.getData();
+    },
+    //列表和分页相关 end ------------------------------------------------------------>
+    //2.添加新闻 start ------------------------------------------------------------>
+    //跳转到投诉举报发布页面
+    goCreat() {
+      this.$router.push({
+        path: '/addNComplaint',
+      });
+    },
+    goEdit(id) {
+      let data = {
+        id: id,
+        read: 1
+      }
+      this.$router.push({
+        path: '/addNComplaint',
+        query: data
+      });
+    }
+    //添加新闻 end ------------------------------------------------------------>
+  },
+  mounted() {
+    this.type_id = getUseType()
+
+    //1.获得初始数据
+    this.getData();
+  }
+}
+</script>
+<style scoped lang="less"></style>

+ 16 - 3
src/views/news/noticeList.vue

@@ -5,13 +5,13 @@
       <div class="layerBoxLine">
         <el-row>
 
-          <el-col :span="8">
+          <el-col :span="6">
             <div class="searchBox">
               <div class="searchTitle">标题:</div>
               <el-input placeholder="请输入标题" autocomplete="off" v-model="getApiData.title" />
             </div>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="6">
             <div class="searchBox">
               <div class="searchTitle">公告级别:</div>
               <el-select v-model="getApiData.level" placeholder="请选择..">
@@ -72,6 +72,19 @@
                 </span>
               </template>
             </el-table-column>
+            <el-table-column prop="status" label="审核状态" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.status == 1">
+                  未审核
+                </span>
+                <span v-if="scope.row.status == 2">
+                  已审核
+                </span>
+                <span v-if="scope.row.status == 3">
+                  已拒绝
+                </span>
+              </template>
+            </el-table-column>
             <el-table-column prop="start" label="开始时间" width="">
 
             </el-table-column>
@@ -128,7 +141,7 @@ export default {
         category_name: "",//导航池id
         website_name: "",//网站名称
         type_id: "",//发布类型
-
+        status: 2,
         page: 1,//当前是第几页
         page_size: 10,//一共多少条
       },

+ 356 - 0
src/views/news/noticeListApply.vue

@@ -0,0 +1,356 @@
+<template>
+  <div class="mainBox">
+    <!--搜索功能 start------------------------------------------------------------>
+    <div class="layerBox_search">
+      <div class="layerBoxLine">
+        <el-row>
+
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">标题:</div>
+              <el-input placeholder="请输入标题" autocomplete="off" v-model="getApiData.title" />
+            </div>
+          </el-col>
+          <el-col :span="6">
+            <div class="searchBox">
+              <div class="searchTitle">公告级别:</div>
+              <el-select v-model="getApiData.level" placeholder="请选择..">
+                <el-option label="常规" value="1"></el-option>
+                <el-option label="紧急" value="2"></el-option>
+                <el-option label="特急" value="3"></el-option>
+              </el-select>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+
+    </div>
+
+    <div class="layerBoxNoBg">
+      <div>
+        <el-button type="primary" @click="goCreat">发布通知</el-button>
+      </div>
+      <div>
+        <el-button @click="clearSearchList">重置</el-button>
+        <el-button type="primary" @click="getData('search')">搜索</el-button>
+      </div>
+    </div>
+    <!--搜索功能 end------------------------------------------------------------>
+
+    <!--表格内容 start------------------------------------------------------------>
+    <div class="layerBox">
+      <tableTitle :name="tableDivTitle" />
+      <el-row>
+        <template>
+          <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="type" label="类型" width="">
+
+
+              <template slot-scope="scope">
+                <span v-if="scope.row.type == 1">
+                  公告
+                </span>
+                <span v-if="scope.row.type == 2">
+                  通知
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="level" label="级别" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.level == 1">
+                  常规
+                </span>
+                <span v-if="scope.row.level == 2">
+                  紧急
+                </span>
+                <span v-if="scope.row.level == 3">
+                  特急
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="status" label="审核状态" width="">
+              <template slot-scope="scope">
+                <span v-if="scope.row.status == 1">
+                  未审核
+                </span>
+                <span v-if="scope.row.status == 2">
+                  已审核
+                </span>
+                <span v-if="scope.row.status == 3">
+                  已拒绝
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="start" label="开始时间" width="">
+
+            </el-table-column>
+            <el-table-column prop="end" label="到期时间" width=""></el-table-column>
+            <el-table-column prop="created_at" label="创建时间" width=""></el-table-column>
+
+            <el-table-column fixed="right" label="操作" width="300" header-align="center">
+              <template slot-scope="scope">
+                <div class="listBtnBox">
+                  <div class="listMainBtn" v-if="type_id == 10000" @click="getUpRow(scope.row.id, tableData)"><i
+                      class="el-icon-check"></i>审核
+                  </div>
+                  <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>
+              </template>
+            </el-table-column>
+          </el-table>
+        </template>
+      </el-row>
+    </div>
+    <!--弹出框1:外部表单弹出框 start------------------------------------------------------------>
+    <el-dialog title="请输入驳回理由" :visible.sync="examineWindow" :close-on-click-modal="false">
+      <el-form :model="form" ref="form" :rules="formRules" label-position="left">
+        <div class="formDiv">
+          <el-form-item label="驳回原因:" :label-width="formLabelWidth" prop="reason" class="custom-align-right">
+            <el-input type="textarea" v-model="form.reason" class="custom-textarea" placeholder="请输入驳回原因"
+              :rows="3"></el-input>
+          </el-form-item>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <div>
+          <el-button type="info" @click="examineWindow = false">取消</el-button>
+          <el-button type="primary" @click="examineToServe">确定</el-button>
+        </div>
+      </div>
+    </el-dialog>
+    <!--弹出框1:外部表单弹出框 end------------------------------------------------------------>
+    <!--分页 start------------------------------------------------------------>
+    <div class="alignBox">
+      <el-row>
+        <el-col :span="24">
+          <el-pagination @size-change="handleSizeChange" :current-page="getApiData.page"
+            @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+            :total="allCount"></el-pagination>
+        </el-col>
+      </el-row>
+    </div>
+    <!--分页 end------------------------------------------------------------>
+    <!--表格内容 end------------------------------------------------------------>
+  </div>
+</template>
+
+<script>
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+import { getUseType } from '@/utils/auth'
+
+
+export default {
+  components: {
+    tableTitle,//表格标题
+  },
+  data() {
+    return {
+      //1.列表和分页相关 start ------------------------------------------------------------>
+      tableDivTitle: "通知列表",
+      tableData: [],//内容
+      editId: 0,//要修改的网站id
+      examineWindow: false,//审核窗口
+      type_id: getUseType(),//发布类型
+      //提交驳回
+      form: {
+        reason: ""
+      },
+      getApiData: {
+        name: "",//标题
+        category_name: "",//导航池id
+        website_name: "",//网站名称
+        type_id: "",//发布类型
+        status1: 1,//审核状态 1待审核 2已审核 3已拒绝
+        page: 1,//当前是第几页
+        page_size: 10,//一共多少条
+      },
+      allCount: 0,//总条数
+      //分页相关 end ------------------------------------------------------------>
+
+    }
+  },
+  methods: {
+    //提交驳回内容
+    examineToServe(id) {
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          let data = {
+            id: this.editId,
+            status: 3,//驳回status
+            reason: this.form.reason
+          }
+          this.$store.dispatch('news/updateNoticeStatus', data).then(res => {
+            if (res.code == 200) {
+              this.$message({
+                type: 'success',
+                message: '操作成功!'
+              });
+              this.getData();
+              this.form.reason = "";//清空上一次的输入
+              this.examineWindow = false;
+            }
+          })
+        } else {
+          this.$message.error("驳回理由不能为空!")
+        }
+      })
+    },
+    getUpRow(id) {
+      //设置待审核的id
+      this.editId = id;
+      console.log(id)
+      this.$confirm('将此商品通过审核吗?', '提示', {
+        confirmButtonText: '通过',
+        cancelButtonText: '拒绝',
+        type: 'warning'
+      }).then(() => {
+        this.upRow(id, 2)
+      }).catch(() => {
+        //输入驳回理由
+        console.log("驳回")
+        this.examineWindow = true;
+      })
+    },
+    upRow(id, status) {
+      let data = {
+        id: id,
+        status: status
+      }
+      this.$store.dispatch('news/updateNoticeStatus', data).then(res => {
+        if (res.code == 200) {
+          this.$message({
+            type: 'success',
+            message: '商品状态已修改!'
+          });
+          this.getData();
+        }
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+
+
+    //1.列表和分页相关 start ------------------------------------------------------------>
+    //1.1 开始请求列表信息方法
+    getData(type) {
+      if (type == "search") {
+        this.getApiData.page = 1;
+      }
+      console.log(this.getApiData, '---1--')
+      this.$store.dispatch('news/getNoticeList', this.getApiData).then(res => {
+        console.log(this.getApiData, '---2-')
+        let data = [];
+        for (let item of res.data.rows) {
+          data.push(item)
+        }
+        this.tableData = res.data.rows; //给与内容
+        this.allCount = res.data.count; //给与总条数
+      })
+    },
+    //1.2 删除内容
+    deleteRow(id) {
+      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        console.log("当前删除:" + id)
+        this.$store.dispatch('news/deleteNotice', { id: id }).then(res => {
+          this.getData();
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'warning',
+            message: '网络错误,请重试!'
+          });
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+    //1.3 修改网站状态
+    upRow(id, status) {
+      let data = {
+        id: id,
+        status: status
+      }
+      this.$store.dispatch('news/updateNoticeStatus', data).then(res => {
+        if (res.code == 200) {
+          this.$message({
+            type: 'success',
+            message: '通知状态已修改!'
+          });
+        }
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消删除'
+        });
+      });
+    },
+    //1.4 列表内容分页
+    //直接跳转
+    handleSizeChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.5 点击分页
+    handleCurrentChange(val) {
+      this.getApiData.page = val;
+      this.getData();
+    },
+    //1.6 重置按钮
+    clearSearchList() {
+      this.tableData = [];
+      this.getApiData.title = "";
+      this.getApiData.level = "";
+
+      this.getApiData.page = 1;
+      this.getApiData.pageSize = 10;
+      this.getData();
+    },
+    //列表和分页相关 end ------------------------------------------------------------>
+    //2.添加新闻 start ------------------------------------------------------------>
+    //跳转到通知发布页面
+    goCreat() {
+      this.$router.push({
+        path: '/addNotice',
+      });
+    },
+    goEdit(id) {
+      let data = {
+        id: id
+      }
+      this.$router.push({
+        path: '/addNotice',
+        query: data
+      });
+    }
+    //添加新闻 end ------------------------------------------------------------>
+  },
+  mounted() {
+    //1.获得初始数据
+    this.getData();
+  }
+}
+</script>
+<style scoped lang="less"></style>

+ 57 - 58
src/views/news/surveyList.vue

@@ -4,13 +4,13 @@
         <!-- 头部搜索框部分 -->
         <div class="title">
             <el-row>
-                <el-col :span="11" class="left">
+                <el-col :span="8" class="left">
                     <div class="searchBox">
                         <div class="searchTitle">投票名称</div>
                         <el-input v-model="tabbarName" class="input" placeholder="请输入投票名称" :maxlength="10"></el-input>
                     </div>
                 </el-col>
-                <el-col :span="11" class="left">
+                <el-col :span="8" class="left">
                     <div class="searchBox">
                         <div class="searchTitle">投票类型</div>
                         <el-select v-model="typeid" placeholder="请选择投票类型...">
@@ -19,7 +19,7 @@
                         </el-select>
                     </div>
                 </el-col>
-<!-- 
+                <!-- 
 <el-col :span="8" class="left">
     <div class="searchBox">
         <div class="searchTitle">是否开启</div>
@@ -30,9 +30,6 @@
     </div>
 </el-col>
 -->
-                
-            </el-row>
-            <el-row>
                 <el-col :span="8" class="right">
                     <div class="btnList">
                         <button class="search" @click="goSearch">搜索</button>
@@ -50,12 +47,12 @@
                         <el-table-column prop="id" label="编号" width="90">
                         </el-table-column>
                         <el-table-column prop="survey_name" label="投票名称" width="500"></el-table-column>
-                        <el-table-column prop="survey_type" label="投票类型" width="100" >
+                        <el-table-column prop="survey_type" label="投票类型" width="100">
                             <template slot-scope="scope">
-                                <span v-if="scope.row.survey_type==1">
+                                <span v-if="scope.row.survey_type == 1">
                                     多选
                                 </span>
-                                <span v-if="scope.row.survey_type==0">
+                                <span v-if="scope.row.survey_type == 0">
                                     单选
                                 </span>
                             </template>
@@ -80,9 +77,9 @@
                             <template slot-scope="scope">
                                 <div class="listBtnBox">
                                     <div class="listLookBtn" @click="goLook(scope.row.survey_id)">
-                                      <i class="el-icon-view"></i>
-                                      查看
-                                  </div>
+                                        <i class="el-icon-view"></i>
+                                        查看
+                                    </div>
                                 </div>
                             </template>
                         </el-table-column>
@@ -106,20 +103,21 @@
 
         <!-- 弹出框 编辑 start----------------------------------------------------------->
         <el-dialog :title="dialogName" :visible.sync="dialogTableVisible" width="50%" top="8vh">
-          <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
-            <p style="font-size: 16px;"><b>投票名称:{{sur_name}}</b></p>
-            <el-table :data="choose" style="width: 100%" height="250" row-key="id" border lazy :load="load":tree-props="{children: 'children', hasChildren: 'hasChildren'}">
-                <el-table-column type="index" :index="indexMethod"></el-table-column>
-                <el-table-column prop="choice_name" label="选项名称"></el-table-column>
-                <el-table-column prop="results" label="投票结果" width="180"></el-table-column>
-            
-            </el-table>
-            <p style="font-size: 16px;text-align: right;margin-right: 80px;">总计:{{ total_num }}</p>
-              <div class="dialogBtn">
-                  <el-button type="primary" @click="cancelForm">确定</el-button>
-              </div>
-          </el-form>
-      </el-dialog>
+            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
+                <p style="font-size: 16px;"><b>投票名称:{{ sur_name }}</b></p>
+                <el-table :data="choose" style="width: 100%" height="250" row-key="id" border lazy :load="load"
+                    :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+                    <el-table-column type="index" :index="indexMethod"></el-table-column>
+                    <el-table-column prop="choice_name" label="选项名称"></el-table-column>
+                    <el-table-column prop="results" label="投票结果" width="180"></el-table-column>
+
+                </el-table>
+                <p style="font-size: 16px;text-align: right;margin-right: 80px;">总计:{{ total_num }}</p>
+                <div class="dialogBtn">
+                    <el-button type="primary" @click="cancelForm">确定</el-button>
+                </div>
+            </el-form>
+        </el-dialog>
         <!-- 弹出框 编辑 end----------------------------------------------------------->
     </div>
 </template>
@@ -163,25 +161,25 @@ export default {
                 tabbarName: '', //底部导航名称
             },
             rules: {
-                tabbarName: [{ required: true, message:"课题分类名称不能为空"}],
+                tabbarName: [{ required: true, message: "课题分类名称不能为空" }],
             }
         }
     },
-    methods: {         
+    methods: {
         //1.1 开始请求列表信息方法
-        getData(){
+        getData() {
             let formData = {
                 page: this.page,
                 pageSize: this.pageSize,
-                survey_name:this.tabbarName,
-                survey_type:this.typeid,
-                is_survey:this.status
+                survey_name: this.tabbarName,
+                survey_type: this.typeid,
+                is_survey: this.status
             }
             this.$store.dispatch('news/getSurveyList', formData).then(res => {
                 if (res.code == 200) {
                     this.tableData = res.data.rows;
-                    this.total = res.data.count;  
-                }else{
+                    this.total = res.data.count;
+                } else {
                     this.$message({
 
 
@@ -196,7 +194,7 @@ export default {
                 });
             })
         },
-         //1.2 列表内容分页
+        //1.2 列表内容分页
         //直接跳转
         handleSizeChange(val) {
             this.page = val;
@@ -219,19 +217,19 @@ export default {
             this.status = ""
             this.getData()
         },
-       //取消添加或编辑
+        //取消添加或编辑
         cancelForm() {
             this.dialogTableVisible = false
         },
-       
+
         //列表和分页相关 end ------------------------------------------------------------>
         // //1.9 查看
-        goLook(id, val) { 
+        goLook(id, val) {
             this.dialogName = '查看'
 
             this.activeid = id
             this.dialogTableVisible = true
-            this.disabled=true
+            this.disabled = true
             //数据回显\
             this.getSurveyInfo(id);
             // this.ruleForm.tabbarName = val.survey_name //课题分类名称
@@ -242,33 +240,33 @@ export default {
         addTopicClass() {
             this.dialogTableVisible = true
             this.dialogName = "添加"
-            this.disabled=false
+            this.disabled = false
             //添加时清空回显回来的数据
             this.ruleForm.tabbarName = '' //课题分类名称
         },
 
         getSurveyInfo(sur_id) {
-          if (sur_id !== '') {
-              let data = { sur_id: sur_id }
-              this.$store.dispatch('news/getSurveyInfo', data).then(res => {
-                 if(res.code==200){
-                    this.sur_name = res.data.choose[0].survey_name
-                    this.total_num = res.data.total
-                    if(res.data.choose.length>0){
-                        this.choose = res.data.choose
+            if (sur_id !== '') {
+                let data = { sur_id: sur_id }
+                this.$store.dispatch('news/getSurveyInfo', data).then(res => {
+                    if (res.code == 200) {
+                        this.sur_name = res.data.choose[0].survey_name
+                        this.total_num = res.data.total
+                        if (res.data.choose.length > 0) {
+                            this.choose = res.data.choose
+                        }
+                        // console.log(res.data.other.id);
                     }
-                    // console.log(res.data.other.id);
-                 }
                 }).catch(() => {
-                  this.$message({
-                      type: 'info',
-                      message: '网络错误,请重试!'
-                  });
-               })
-          } 
+                    this.$message({
+                        type: 'info',
+                        message: '网络错误,请重试!'
+                    });
+                })
+            }
         },
         indexMethod(index) {
-            return index +1;
+            return index + 1;
         },
         load(tree, treeNode, resolve) {
             setTimeout(() => {
@@ -285,7 +283,7 @@ export default {
                 resolve(allChildren);
             }, 1000);
         }
-      
+
     },
     mounted() {
         this.getData()
@@ -389,6 +387,7 @@ input[aria-hidden=true] {
         }
     }
 }
+
 .layerBox {
     padding: 30px 20px;
     position: relative;