Browse Source

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

Jing 3 weeks ago
parent
commit
bb43838c5e
4 changed files with 315 additions and 24 deletions
  1. 80 0
      src/api/news.js
  2. 68 17
      src/layout/components/Navbar.vue
  3. 109 0
      src/store/modules/news.js
  4. 58 7
      src/views/website/categoryList.vue

+ 80 - 0
src/api/news.js

@@ -190,3 +190,83 @@ export function getSurveyInfo(data) {
   })
 }
 // 2.投票列表 end  fr ------------------------------------->
+
+//20250324  通知,公告,消息
+export function getNoticeList(data) {
+  return request({
+    url: '/news/getNoticeList',
+    method: 'post',
+    data
+  })
+}
+export function getNoticeInfo(data) {
+  return request({
+    url: '/news/getNoticeInfo',
+    method: 'post',
+    data
+  })
+}
+export function addNotice(data) {
+  return request({
+    url: '/news/addNotice',
+    method: 'post',
+    data
+  })
+}
+export function updateNotice(data) {
+  return request({
+    url: '/news/updateNotice',
+    method: 'post',
+    data
+  })
+}
+export function deleteNotice(data) {
+  return request({
+    url: '/news/deleteNotice',
+    method: 'post',
+    data
+  })
+}
+export function getMSG(data) {
+  return request({
+    url: '/news/getMSG',
+    method: 'post',
+    data
+  })
+}
+export function getComplaintList(data) {
+  return request({
+    url: '/news/getComplaintList',
+    method: 'post',
+    data
+  })
+}
+export function getComplaintInfo(data) {
+  return request({
+    url: '/news/getComplaintInfo',
+    method: 'post',
+    data
+  })
+}
+export function addComplaint1(data) {
+  return request({
+    url: '/news/addComplaint',
+    method: 'post',
+    data
+  })
+}
+export function updateComplaint(data) {
+  return request({
+    url: '/news/updateComplaint',
+    method: 'post',
+    data
+  })
+}
+export function deleteComplaint(data) {
+  return request({
+    url: '/news/deleteComplaint',
+    method: 'post',
+    data
+  })
+}
+//20250324  通知,公告,消息

+ 68 - 17
src/layout/components/Navbar.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="navbar">
-    <div class="pageTitle">{{this.$route.meta.title}}</div>
+    <div class="pageTitle">{{ this.$route.meta.title }}</div>
     <!--收缩左侧菜单按钮-->
     <!-- <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
     <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> -->
@@ -16,12 +16,45 @@
         </el-tooltip>
         <lang-select class="right-menu-item hover-effect" />
       </template> -->
+      <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
+        <div class="avatar-wrapper">
+
+          <!-- <img src="@/assets/public/nav/notice.png" class="user-notice"></img> -->
+          <span
+            style="display: inline-block; width: 40px; height: 40px; border-radius: 50%; background-color: red; color: white; text-align: center; line-height: 40px; font-size: 12px;">{{
+              msg.count }}</span>
+          <img src="@/assets/public/nav/arrowDown.png" class="arrowDown">
+          <!--向下按钮-->
+          <!-- <i class="el-icon-caret-bottom" /> -->
+        </div>
+
+        <el-dropdown-menu slot="dropdown" style="width: 200px;">
+          <router-link to="/examine">
+            <div class="userMenuDownItem">
+              <el-dropdown-item>
+                <span style="display:block;">审核列表</span>
+              </el-dropdown-item>
+            </div>
+          </router-link>
+          <router-link :to="`/creatNews?id=${item.id}`" v-for="item in msg.apply_articale" :key="item.id">
+            <div class="userMenuDownItem" style="width: 200px;">
+              <el-dropdown-item divided style="width: 200px;">
+                <el-tooltip :content="item.title" effect="dark" placement="top">
+                  <span style="display:block;width: 150px;" :alt="item.title">{{ item.title.substring(0, 10) }}</span>
+                </el-tooltip>
+              </el-dropdown-item>
+            </div>
+          </router-link>
+
+
+        </el-dropdown-menu>
+      </el-dropdown>
       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
         <div class="avatar-wrapper">
           <!-- <img src="@/assets/public/nav/notice.png" class="user-notice"> -->
-          <img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar" v-if="avatar!=''">
+          <img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" v-if="avatar != ''">
           <img src="@/assets/login/userDefault.png" class="user-avatar" v-else>
-          <span class="userName">{{this.$store.state.user.name}}</span>
+          <span class="userName">{{ this.$store.state.user.name }}</span>
           <img src="@/assets/public/nav/arrowDown.png" class="arrowDown">
           <!--向下按钮-->
           <!-- <i class="el-icon-caret-bottom" /> -->
@@ -49,7 +82,7 @@
           </a> -->
           <el-dropdown-item divided @click.native="logout">
             <div class="userMenuDownItem">
-              <span style="display:block;">{{$t('navbar.logOut')}}</span>
+              <span style="display:block;">{{ $t('navbar.logOut') }}</span>
               <img src="@/assets/public/nav/Logout.png">
             </div>
           </el-dropdown-item>
@@ -82,6 +115,11 @@ export default {
     LangSelect,
     Search
   },
+  data() {
+    return {
+      msg: {}
+    }
+  },
   computed: {
     ...mapGetters([
       'sidebar',
@@ -89,7 +127,19 @@ export default {
       'device'
     ]),
   },
+  mounted() {
+    this.getMsg();
+  },
   methods: {
+    getMsg() {
+      this.$store.dispatch('news/getMSG').then(response => {
+        console.log(response);
+        this.msg = response.data;
+        console.log(this.msg);
+      }).catch(error => {
+        console.log(error);
+      });
+    },
     toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')
     },
@@ -114,7 +164,7 @@ export default {
       //   this.$router.push(`/login`);
       // });
 
-      axios.get(BASEURL.WebCLogoutUrl, {params:{token:token} }).then(response => {
+      axios.get(BASEURL.WebCLogoutUrl, { params: { token: token } }).then(response => {
         console.log(response);
         this.$store.commit("user/LOGOUT");
         this.$router.push(`/login`);
@@ -123,7 +173,7 @@ export default {
         this.$store.commit("user/LOGOUT");
         this.$router.push(`/login`);
         this.$message.error(response.message);
-      }); 
+      });
     },
     getTokenFromCookie() {
       const name = "Admin-Token=";
@@ -146,12 +196,12 @@ export default {
   height: 60px;
   overflow: hidden;
   position: relative;
-  display:flex;
+  display: flex;
   align-items: center;
   justify-content: space-between;
   background: #fff;
   // box-shadow: 0 1px 4px rgba(0,21,41,.08);
-  border-bottom:1px solid #E9EDF7;
+  border-bottom: 1px solid #E9EDF7;
 
   .pageTitle {
     font-size: 20px;
@@ -162,7 +212,7 @@ export default {
 
   .userName {
     font-size: 14px;
-    color:#1C1D22;
+    color: #1C1D22;
     margin-left: 10px;
     font-weight: bold;
   }
@@ -174,7 +224,7 @@ export default {
     float: left;
     cursor: pointer;
     transition: background .3s;
-    -webkit-tap-highlight-color:transparent;
+    -webkit-tap-highlight-color: transparent;
 
     &:hover {
       background: rgba(0, 0, 0, .025)
@@ -232,15 +282,15 @@ export default {
         }
 
         .arrowDown {
-          width:12px;
-          height:8px;
-          margin-left:10px;
+          width: 12px;
+          height: 8px;
+          margin-left: 10px;
         }
 
         .user-notice {
           width: 20px;
           height: 20px;
-          margin-right:20px;
+          margin-right: 20px;
         }
 
         .el-icon-caret-bottom {
@@ -254,15 +304,16 @@ export default {
     }
   }
 }
+
 .userMenuDownItem {
   width: 100px;
-  display:flex;
+  display: flex;
   align-items: center;
   justify-content: space-between;
 }
+
 .el-dropdown-menu__item:not(.is-disabled):hover {
   background: none;
-  color:#606266;
+  color: #606266;
 }
-
 </style>

+ 109 - 0
src/store/modules/news.js

@@ -1,6 +1,9 @@
+import { addComplaint } from '@/api/complaint'
 import { getArticleList, addArticle, delArticle, getArticleInfo, updateArticle, upArticleStatus, getGoodList, addGood, delGood,
   getGoodInfo, updateGood, websiteList, getWebsiteNavList, getWebsiteNavPool, getWebsiteNavPoolSite,
   getSurveyList,getSurveyInfo, getJobHuntingList, getJobHuntingInfo,addJobHunting,delJobHunting,updateJobHunting,getJobHuntingData,
+  getComplaintList,
+  getComplaintInfo, updateComplaint, deleteComplaint,  addComplaint1,  getMSG,  getNoticeList, getNoticeInfo, addNotice, updateNotice, deleteNotice
 } from '@/api/news'
 
 const state = {
@@ -252,6 +255,112 @@ const actions = {
 
   //1投票列表 end ---------------------------------------->
 
+  //20250324  通知,公告,消息
+  getNoticeList({commit},data) {
+    return new Promise((resolve, reject) => {
+      getNoticeList(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  getNoticeInfo({commit},data) {
+    return new Promise((resolve, reject) => {
+      getNoticeInfo(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+    },
+  addNotice({commit},data) {
+    return new Promise((resolve, reject) => {
+      addNotice(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  updateNotice({commit},data) {
+    return new Promise(
+      (resolve, reject) => {
+        updateNotice(data).then(response => {
+          resolve(response)
+        }).catch(error => {
+          reject(error)
+        })
+
+      }
+    )
+  },
+  deleteNotice({commit},data) {
+    return new Promise((resolve, reject) => {
+      deleteNotice(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  getMSG({commit},data) {
+    return new Promise((resolve, reject) => {
+      getMSG(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  getComplaintList({commit},data) {
+    return new Promise((resolve, reject) => {
+      getComplaintList(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  getComplaintInfo({ commit }, data) {
+    return new Promise((resolve, reject) => {
+
+      getComplaintInfo(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  updateComplaint({ commit }, data) {
+    return new Promise((resolve, reject) => {
+      updateComplaint(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  deleteComplaint({ commit }, data) {
+    return new Promise((resolve, reject) => {
+      deleteComplaint(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  addComplaint1({ commit }, data) {
+    return new Promise((resolve, reject) => {
+      addComplaint1(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  //20250324  通知,公告,消息
+
 }
 
 

+ 58 - 7
src/views/website/categoryList.vue

@@ -14,7 +14,7 @@
     </div>
     <div class="layerBoxNoBg">
       <div>
-        <el-button type="primary" @click="addCategoryList">添加栏目名称</el-button>
+        <el-button type="primary" @click="addCategoryList()">添加栏目名称</el-button>
       </div>
       <div>
         <el-button @click="clearSearchList">重置</el-button>
@@ -51,13 +51,12 @@
             </el-table-column>
             <el-table-column prop="created_at" label="创建时间"></el-table-column>
             <el-table-column prop="updated_at" label="修改时间"></el-table-column>
-            <el-table-column fixed="right" label="操作" width="200" header-align="center">
+            <el-table-column fixed="right" label="操作" width="230" header-align="center">
               <template slot-scope="scope">
                 <div class="listBtnBox">
-                  <div class="listDeleteBtn" @click="deleteData(scope.row.id, tableData)"><i
-                      class="el-icon-delete"></i>删除</div>
-                  <div class="listEditBtn" @click="getDataMain(scope.row.id, tableData)"><i
-                      class="el-icon-edit-outline"></i>编辑</div>
+                  <div class="listDeleteBtn" @click="deleteData(scope.row.id, tableData)"><i class="el-icon-delete"></i>删除</div>
+                  <div class="listEditBtn" @click="getDataMain(scope.row.id, tableData)"><i  class="el-icon-edit-outline"></i>编辑</div>
+                  <div class="listMainBtn" @click="addCategoryList(scope.row)"><i class="el-icon-document-add"></i>添加</div>
                 </div>
                 <!-- <el-button @click.native.prevent="deleteData(scope.row.id, tableData)" type="text" size="small">删除</el-button>
                 <el-button @click.native.prevent="getDataMain(scope.row.id, tableData)" type="text" size="small">编辑</el-button> -->
@@ -524,12 +523,26 @@ export default {
       this.windowStatus = true;
     },
     //2.1.1 添加栏目池
-    addCategoryList() {
+    addCategoryList(row) {
+      this.form.pid_arr =[];
       this.show_url = false;
       // this.form.is_url = 0;
       this.editId = 0;
       this.editBtn = false;
       this.tags = []
+      if(row){
+        if(row.pid==0){
+          this.form.pid_arr.push(row.id)
+        }else{
+          let pidArr = [];
+          // console.log("fuck:",row.pid_arr);
+          pidArr =  JSON.parse(row.pid_arr)
+          pidArr.push(row.id)
+          this.form.pid_arr = pidArr
+          // console.log('追加id:',this.form.pid_arr)
+        }
+      }
+      // console.log("=========:", this.form.pid_arr)
       this.openWindow();
     },
     //2.2 关闭弹出框
@@ -758,5 +771,43 @@ export default {
   text-align: right;
   /* 设置标签文字右对齐 */
 }
+.collector {
+        margin-left: 0px;
+        padding-left: 0px;
+        margin-right: 20px;
+        width: 76px;
+        height: 36px;
+        line-height: 36px;
+        position: relative;
+
+        .collectorIcon {
+            display: inline-block;
+            width: 20px;
+            height: 20px;
+            background: url("../../assets/advertise/Graph.png");
+            vertical-align: middle;
+            margin-right: 6px;
+        }
+
+        .collectorIcon1 {
+            position: absolute;
+            top: 12px;
+            left: 8px;
+        }
+
+    }
+
+
+    .collector {
+        text-align: center;
+        border-radius: 8px;
+        cursor: pointer;
+        color: #519C66;
+        background-color: rgba(81, 156, 102, 0.16);
+
+        >i {
+            padding-right: 8px;
+        }
+    }
 
 //表单微调 end------------------------------------------------------------>*/</style>