فهرست منبع

Merge branch 'pre' of http://git.bjzxtw.org.cn:3000/zxt/admin_home into pre

dangyunlong 2 روز پیش
والد
کامیت
a4291f5cf8

+ 8 - 0
src/api/news.js

@@ -180,6 +180,14 @@ export function updateComplaintStatus(data) {
     data
   })
 }
+export function getDUser(data) {
+  return request({
+    url: '/news/getDUser',
+    method: 'post',
+    data
+  })
+  
+}
 
 //20250306求职
 

+ 19 - 1
src/router/index.js

@@ -640,7 +640,24 @@ export const constantRoutes = [
         path: '',
         component: () => import('@/views/news/ncomplaintListApply'),
         meta: {
-          title: '投诉举报',
+          title: '投诉举报审核列表',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+
+  },
+  {
+    path: '/ncomplaintListDeal',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/news/ncomplaintListDeal'),
+        meta: {
+          title: '投诉举报处理页面',
           hidden: true,
           breadcrumb: true
         }
@@ -648,6 +665,7 @@ export const constantRoutes = [
     ]
 
   },
+  
   {
     path: '/addNcomplaint',
     component: Layout,

+ 10 - 1
src/store/modules/news.js

@@ -4,7 +4,7 @@ import { getArticleList, addArticle, delArticle, getArticleInfo, updateArticle,
   getSurveyList,getSurveyInfo, getJobHuntingList, getJobHuntingInfo,addJobHunting,delJobHunting,updateJobHunting,getJobHuntingData,
   getComplaintList,
   getComplaintInfo, updateComplaint, deleteComplaint,  addComplaint1,    getMSG,  getNoticeList, getNoticeInfo, addNotice, updateNotice, deleteNotice,
-  updateGoodStatus, updateJobHuntingStatus, updateNoticeStatus, updateComplaintStatus,
+  updateGoodStatus, updateJobHuntingStatus, updateNoticeStatus, updateComplaintStatus,getDUser,
   getJobRecruitingList, addJobRecruiting,getJobRecruitingInfo, upJobRecruiting, delJobRecruiting,getIndustry, getJobCompany, upJobCompany, getPositionList, getJobRecruitingArea, getJobNature, getExperience, getEducation, getSalary, getLanguage, getLevel, getCompanySize, getCompanyNature,checkJobRecruiting,
 } from '@/api/news'
 
@@ -303,6 +303,15 @@ const actions = {
       })
     })
   },
+  getDUser({ commit }, data) {
+    return new Promise((resolve, reject) => {
+      getDUser(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
   //20250306  求职信息
 
 

+ 13 - 10
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
@@ -226,12 +230,12 @@ export default {
         this.upRow(id, 2)
       }).catch((the_reback) => {
 
-         if(the_reback=="cancel"){
-                  //输入驳回理由
-                  // console.log("驳回" )
-                  this.examineWindow = true;
-         }    
-		 
+        if (the_reback == "cancel") {
+          //输入驳回理由
+          // console.log("驳回" )
+          this.examineWindow = true;
+        }
+
       })
     },
     //1.列表和分页相关 start ------------------------------------------------------------>
@@ -355,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>

+ 2 - 1
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>
@@ -655,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);

+ 80 - 2
src/views/news/addNcomplaint.vue

@@ -20,6 +20,15 @@
               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>
@@ -80,7 +89,7 @@
         </div>
       </el-form>
     </div>
-    <div class="bottomBtnBox">
+    <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>
@@ -132,6 +141,7 @@ export default {
       formLabelWidth: '80px',//表单的长度
       //1.表单项 start ------------------------------------------------------------>
       editStatus: false,
+      readStatus: false,
       tableDivTitle: "添加投诉举报",
       searchCascaderKey: 0, //列表缓存key
       website_id: 2,
@@ -159,6 +169,7 @@ export default {
         want: "",//我的要求
         type: 1,//发布类型:1:匿名,2:实名
         start: '',//开始时间
+        re_user_ids: [],//行政人员id
       },
       //1.2 表单验证规则
       formRules: {
@@ -166,6 +177,8 @@ export default {
         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 }],
@@ -304,6 +317,52 @@ export default {
     };
   },
   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 });
@@ -482,6 +541,7 @@ export default {
         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) {
@@ -584,6 +644,19 @@ export default {
 
   },
   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 变化,若变化则更新页面状态并获取数据
@@ -599,15 +672,20 @@ export default {
       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 ------------------------------------------------------------>
   },

+ 6 - 1
src/views/news/jobHuntingListApply.vue

@@ -47,7 +47,8 @@
             <el-table-column fixed="right" label="操作" width="300" header-align="center">
               <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>删除</div>
@@ -98,6 +99,8 @@
 import tableTitle from './components/tableTitle';
 //引入公用样式
 import '@/styles/global.less';
+import { getUseType } from '@/utils/auth'
+
 
 export default {
   components: {
@@ -109,6 +112,7 @@ export default {
       tableDivTitle: "求职信息列表",
       tableData: [],//内容
       editId: 0,//要修改的网站id
+      type_id: getUseType(),//发布类型
       examineWindow: false,//审核窗口
       //提交驳回
       form: {
@@ -123,6 +127,7 @@ export default {
         page: 1,//当前是第几页
         page_size: 10,//一共多少条
       },
+      formLabelWidth: '80px',//表单的长度
       allCount: 0,//总条数
       //分页相关 end ------------------------------------------------------------>
     }

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

@@ -125,6 +125,10 @@
 <script>
 //表格标题
 import tableTitle from './components/tableTitle';
+
+//获得用户身份
+import { getUseType } from '@/utils/auth'
+
 //引入公用样式
 import '@/styles/global.less';
 
@@ -149,6 +153,7 @@ export default {
         page_size: 10,//一共多少条
       },
       allCount: 0,//总条数
+      type_id: 0,
       //分页相关 end ------------------------------------------------------------>
 
     }
@@ -259,6 +264,7 @@ export default {
     //添加新闻 end ------------------------------------------------------------>
   },
   mounted() {
+    this.type_id = getUseType()
     //1.获得初始数据
     this.getData();
   }

+ 108 - 24
src/views/news/ncomplaintListApply.vue

@@ -55,7 +55,7 @@
             </el-table-column>
             <el-table-column prop="title" label="投诉类型" width="">
             </el-table-column>
-            <el-table-column prop="type" label="接收人" width="">
+            <el-table-column prop="cityname" label="接收人" width="">
             </el-table-column>
 
             <el-table-column prop="status" label="审核状态" width="">
@@ -92,9 +92,12 @@
             </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">
+            <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
@@ -117,6 +120,24 @@
       </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>
@@ -124,6 +145,9 @@
 <script>
 //表格标题
 import tableTitle from './components/tableTitle';
+//获得用户身份
+import { getUseType } from '@/utils/auth'
+
 //引入公用样式
 import '@/styles/global.less';
 
@@ -137,6 +161,15 @@ export default {
       tableDivTitle: "投诉列表",
       tableData: [],//内容
       editId: 0,//要修改的网站id
+      examineWindow: false,//审核窗口
+      //提交驳回
+      formLabelWidth: '80px',//表单的长度
+      type_id: 0,//用户身份
+      form: {
+        reason: ""
+      },
+      formRules: {
+      },
       getApiData: {
         name: "",//标题
         category_name: "",//导航池id
@@ -152,6 +185,74 @@ export default {
     }
   },
   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) {
@@ -197,25 +298,7 @@ export default {
       });
     },
     //1.3 修改网站状态
-    upRow(id, status) {
-      let data = {
-        id: id,
-        status: status
-      }
-      this.$store.dispatch('news/upComplaintStatus', data).then(res => {
-        if (res.code == 200) {
-          this.$message({
-            type: 'success',
-            message: '通知状态已修改!'
-          });
-        }
-      }).catch(() => {
-        this.$message({
-          type: 'warning',
-          message: '已取消删除'
-        });
-      });
-    },
+
     //1.4 列表内容分页
     //直接跳转
     handleSizeChange(val) {
@@ -239,10 +322,10 @@ export default {
     },
     //列表和分页相关 end ------------------------------------------------------------>
     //2.添加新闻 start ------------------------------------------------------------>
-    //跳转到通知发布页面
+    //跳转到投诉举报发布页面
     goCreat() {
       this.$router.push({
-        path: '/addComplaint',
+        path: '/addNComplaint',
       });
     },
     goEdit(id) {
@@ -250,13 +333,14 @@ export default {
         id: id
       }
       this.$router.push({
-        path: '/addComplaint',
+        path: '/addNComplaint',
         query: data
       });
     }
     //添加新闻 end ------------------------------------------------------------>
   },
   mounted() {
+    this.type_id = getUseType()
     //1.获得初始数据
     this.getData();
   }

+ 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>

+ 5 - 1
src/views/news/noticeListApply.vue

@@ -94,7 +94,8 @@
             <el-table-column fixed="right" label="操作" width="300" header-align="center">
               <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>删除</div>
@@ -145,6 +146,8 @@
 import tableTitle from './components/tableTitle';
 //引入公用样式
 import '@/styles/global.less';
+import { getUseType } from '@/utils/auth'
+
 
 export default {
   components: {
@@ -157,6 +160,7 @@ export default {
       tableData: [],//内容
       editId: 0,//要修改的网站id
       examineWindow: false,//审核窗口
+      type_id: getUseType(),//发布类型
       //提交驳回
       form: {
         reason: ""

+ 2 - 2
src/views/tabbar/tabbar.vue

@@ -7,7 +7,7 @@
                 <el-col :span="6" class="left">
                     <div class="searchBox">
                         <div class="searchTitle">网站名称</div>
-                        <el-input v-model="webSiteName_name" class="input" placeholder="请输入网站名称"></el-input>
+                        <el-input v-model="webSiteName_name" class="input" placeholder="请输入网站名称" clearable ></el-input>
                         <!-- <el-select v-model="webSiteName_id" :multiple="false" :multiple-limit="1" filterable remote
                             reserve-keyword placeholder="请输入网站名称" :remote-method="getWebNavList"
                             :loading="webSiteLoading" @change="selectWebSite">
@@ -20,7 +20,7 @@
                 <el-col :span="6" class="left">
                     <div class="searchBox">
                         <div class="searchTitle">单页名称</div>
-                        <el-input v-model="tabbarName" class="input" placeholder="请输入单页名称"></el-input>
+                        <el-input v-model="tabbarName" class="input" placeholder="请输入单页名称" clearable ></el-input>
                     </div>
                 </el-col>
                 <el-col :span="8" class="right">

+ 2 - 2
src/views/tabbar/tabbarDetail.vue

@@ -7,13 +7,13 @@
                 <el-col :span="6" class="left">
                     <div class="searchBox">
                         <div class="searchTitle">列表标题</div>
-                        <el-input v-model="listTitle" class="input" placeholder="请输入列表标题"></el-input>
+                        <el-input v-model="listTitle" class="input" placeholder="请输入列表标题" clearable ></el-input>
                     </div>
                 </el-col>
                 <el-col :span="6" class="left">
                     <div class="searchBox">
                         <div class="searchTitle">内容标题</div>
-                        <el-input v-model="contentTitle" class="input" placeholder="请输入内容标题"></el-input>
+                        <el-input v-model="contentTitle" class="input" placeholder="请输入内容标题" clearable ></el-input>
                     </div>
                 </el-col>
                 <el-col :span="8" class="right">

+ 7 - 7
src/views/website/addWebsite.vue

@@ -11,13 +11,13 @@
                         <el-form-item label="网站名称:" :label-width="formLabelWidth" prop="website_name"
                             class="custom-align-right">
                             <el-input v-model="form.website_name" autocomplete="off"
-                                @blur="checkWebsiteName(form.website_name)" placeholder="请输入网站名称"></el-input>
+                                @change="checkWebsiteName(form.website_name)" placeholder="请输入网站名称"></el-input>
                         </el-form-item>
                         <el-form-item label="网站地址1:" :label-width="formLabelWidth" prop="website_url[0].url"
                             class="custom-align-right">
                             <div class="formLabelFloatBox">
                                 <el-input v-model="form.website_url[0].url" autocomplete="off"
-                                    @blur="checkWebsiteUrl(form.website_url[0].url, 0)"
+                                    @change="checkWebsiteUrl(form.website_url[0].url, 0)"
                                     placeholder="请输入网站地址1"></el-input>
                                 <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addUrlInput(1)"
                                     class="formLabeladdIcon"></el-button>
@@ -29,7 +29,7 @@
                             v-if="form.website_url[1].show == true" class="custom-align-right">
                             <div class="formLabelFloatBox">
                                 <el-input v-model="form.website_url[1].url" autocomplete="off"
-                                    @blur="checkWebsiteUrl(form.website_url[1].url, 1)"
+                                    @change="checkWebsiteUrl(form.website_url[1].url, 1)"
                                     placeholder="请输入网站地址2"></el-input>
                                 <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addUrlInput(2)"
                                     class="formLabeladdIcon"></el-button>
@@ -41,7 +41,7 @@
                             v-if="form.website_url[2].show == true" class="custom-align-right">
                             <div class="formLabelFloatBox">
                                 <el-input v-model="form.website_url[2].url" autocomplete="off"
-                                    @blur="checkWebsiteUrl(form.website_url[2].url, 2)"
+                                    @change="checkWebsiteUrl(form.website_url[2].url, 2)"
                                     placeholder="请输入网站地址3"></el-input>
                                 <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addUrlInput(3)"
                                     class="formLabeladdIcon"></el-button>
@@ -53,7 +53,7 @@
                             v-if="form.website_url[3].show == true" class="custom-align-right">
                             <div class="formLabelFloatBox">
                                 <el-input v-model="form.website_url[3].url" autocomplete="off"
-                                    @blur="checkWebsiteUrl(form.website_url[3].url, 3)"
+                                    @change="checkWebsiteUrl(form.website_url[3].url, 3)"
                                     placeholder="请输入网站地址4"></el-input>
                                 <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addUrlInput(4)"
                                     class="formLabeladdIcon"></el-button>
@@ -65,7 +65,7 @@
                             v-if="form.website_url[4].show == true" class="custom-align-right">
                             <div class="formLabelFloatBox">
                                 <el-input v-model="form.website_url[4].url" autocomplete="off"
-                                    @blur="checkWebsiteUrl(form.website_url[4].url, 4)"
+                                    @change="checkWebsiteUrl(form.website_url[4].url, 4)"
                                     placeholder="请输入网站地址5"></el-input>
                                 <el-button type="info" icon="el-icon-plus" circle size="mini" @click=""
                                     class="formLabeladdIcon" disabled></el-button>
@@ -429,7 +429,7 @@ export default {
                 //网站地址不能为空
                 'website_url[0].url': [
                     { required: true, message: '至少要填写一个网站地址!', trigger: 'blur' },
-                    { validator: this.validateWebsiteUrl, trigger: 'blur' }
+                    // { validator: this.validateWebsiteUrl, trigger: 'blur' }
                 ],
                 //网系不能为空 注意,因为是select框,只有提交的时候才会验证
                 website_column_arr_id: [{ type: 'array', required: true, trigger: 'change', message: '必须选择一个网系!' }],

+ 15 - 7
src/views/website/blogroll.vue

@@ -8,7 +8,7 @@
                         <div class="searchTitle">所属站点</div>
                         <el-select v-model="siteName" :multiple="false" :multiple-limit="1" filterable remote
                             reserve-keyword placeholder="请输入所属站点" :remote-method="getWebNavList"
-                            :loading="webSiteLoading" @change="selectWebSite">
+                            :loading="webSiteLoading" @change="selectWebSite" clearable>
                             <el-option v-for="item in webSiteList" :key="item.value" :label="item.label"
                                 :value="item.value">
                             </el-option>
@@ -18,7 +18,7 @@
                 <el-col :span="6" class="left">
                     <div class="searchBox">
                         <div class="searchTitle">链接名称</div>
-                        <el-input v-model="webName" placeholder="请输入链接名称"></el-input>
+                        <el-input v-model="webName" placeholder="请输入链接名称" clearable></el-input>
                     </div>
                 </el-col>
                 <el-col :span="10" class="right">
@@ -111,8 +111,8 @@
                         <el-radio v-model="ruleForm.type" label="2">文本</el-radio>
                         <el-radio v-model="ruleForm.type" label="3">底部</el-radio>
                     </el-form-item>
-                    <el-form-item label="网站logo:" prop="" :label-width="formLabelWidth" :class="['custom-form-item']"
-                        class="custom-align-right" v-show="this.ruleForm.type != '2'">
+                    <el-form-item label="网站logo:" prop="webLogo" :label-width="formLabelWidth"
+                        :class="['custom-form-item']" class="custom-align-right" v-if="this.ruleForm.type != '2'">
                         <div class="uploaderBox">
                             <!--图片上传组件 start ------------------------------------------------------------>
                             <div class="avatar-upload-container" @mouseenter="hovering = true"
@@ -244,6 +244,7 @@ export default {
                 webName: [{ required: true, trigger: 'blur', validator: validateEmpty }],
                 webUrl: [{ required: true, trigger: 'blur', validator: validateEmpty }],
                 type: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                webLogo: [{ required: true, trigger: 'blur', validator: validateEmpty }],
                 sort: [{ required: true, trigger: 'blur', validator: validateEmpty }]
             },
 
@@ -377,8 +378,8 @@ export default {
             this.ruleForm.webName = ''
             this.ruleForm.webUrl = ''
             this.ruleForm.type = '1'
-            this.logoUrl = 'http://183.131.25.186:9501/image/20241225/17350893036168.png'
-            this.ruleForm.webLogo = 'http://183.131.25.186:9501/image/20241225/17350893036168.png'
+            this.logoUrl = ''
+            this.ruleForm.webLogo = ''
             this.ruleForm.webDesc = ''
             this.ruleForm.sort = 0
         },
@@ -440,6 +441,10 @@ export default {
                         }
                     })
                 } else {
+                    if (this.ruleForm.webLogo == '') {
+                        this.$message.error("请上传网站logo");
+                        return
+                    }
                     createLink({
                         title: this.ruleForm.webName,
                         website_id: this.website_id,
@@ -462,7 +467,6 @@ export default {
                         }
                     })
                 }
-
             }
             if (this.dialogName == "编辑") {
                 if (this.website_id == " ") {
@@ -497,6 +501,10 @@ export default {
                         }
                     })
                 } else {
+                    if (this.ruleForm.webLogo == '') {
+                        this.$message.error("请上传网站logo");
+                        return
+                    }
                     updateLink({
                         title: this.ruleForm.webName,
                         website_id: this.website_id,