Jing 1 mês atrás
pai
commit
53b74d8557

+ 10 - 7
src/components/edit/myEditor.vue

@@ -31,13 +31,13 @@ export default {
         font_formats: '微软雅黑=Microsoft YaHei,Helvetica Neue,PingFang SC,sans-serif;宋体=simsun,serif',
         fontsize_formats: '12px 14px 16px 18px 20px 22px 24px 28px 32px 36px 42px 48px',
         branding: false,
-        images_upload_handler: function (blobInfo , success, failure) {
+        images_upload_handler: function (blobInfo, success, failure) {
           var xhr, formData;
           xhr = new XMLHttpRequest();
           xhr.withCredentials = false;
           //创建连接
           xhr.open('POST', url.baseUrl + '/public/uploadFile');
-          xhr.onload = function() {
+          xhr.onload = function () {
             var json;
             if (xhr.status < 200 || xhr.status >= 300) {
               failure('HTTP Error: ' + xhr.status);
@@ -45,18 +45,18 @@ export default {
             }
             json = JSON.parse(xhr.responseText);
             console.log(json)
-            if (json.code!=200) {
+            if (json.code != 200) {
               failure('图片上传失败! ' + json.message);
               return;
             }
             success(json.data.imgUrl);
             // Listen for the NodeChange event to set the alt attribute
             const editor = tinymce.activeEditor;
-            editor.on('NodeChange', function(e) {
+            editor.on('NodeChange', function (e) {
               const imgElm = e.element;
               if (imgElm.nodeName === 'IMG' && imgElm.src === json.data.imgUrl) {
-                console.log("Setting alt attribute to:",  json.data.oldName || '全国政务信息一体化应用平台'); // Debugging: Check the alt value
-                editor.dom.setAttrib(imgElm, 'alt',json.data.oldName || '全国政务信息一体化应用平台'); // Use oldName or a default value
+                console.log("Setting alt attribute to:", json.data.oldName || '全国政务信息一体化应用平台'); // Debugging: Check the alt value
+                editor.dom.setAttrib(imgElm, 'alt', json.data.oldName || '全国政务信息一体化应用平台'); // Use oldName or a default value
                 editor.off('NodeChange'); // Remove the event listener after setting the alt
               }
             });
@@ -89,10 +89,13 @@ export default {
     }
   },
   components: {
-      'tiny-editor': editor,
+    'tiny-editor': editor,
   },
   created() {
 
+  },
+  mounted() {
+    this.reinitEditor();
   },
   methods: {
     // 强制重新初始化编辑器(必要时使用)

+ 454 - 112
src/layout/components/Navbar.vue

@@ -17,52 +17,98 @@
         <lang-select class="right-menu-item hover-effect" />
       </template> -->
       <div class="noticeIconBox">
-        <img src="@/assets/public/nav/notice1.png" class="noticeIconImg" @click="showTabs = !showTabs"/>
-        <span class="unreadCount">{{msg.count}}</span>
+        <img src="@/assets/public/nav/notice1.png" class="noticeIconImg" @click="showTabs = !showTabs" />
+        <span class="unreadCount">{{ msg.count }}</span>
         <!-- <img src="@/assets/public/nav/arrowDown.png" class="arrowDown" /> -->
 
         <div class="noticeTabsBox" v-if="showTabs" ref="noticeTabsBox">
           <div class="noticeTabsTitleBox">
-            <div :class="{'noticeTabs': true, 'active': tabsIndex == 1}" @click="changeTabs(1)">
+            <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 1 }" @click="changeTabs(1)">
               <div class="noticeTabsItem">
                 资讯
                 <span class="noticeMessageNew" v-if="msg.apply_articale.length > 0"></span>
               </div>
             </div>
-            <div :class="{'noticeTabs': true, 'active': tabsIndex == 2}" @click="changeTabs(2)" v-if="msg.good">
+            <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 2 }" @click="changeTabs(2)">
               <div class="noticeTabsItem">
                 商品
                 <span class="noticeMessageNew" v-if="msg.good.length > 0"></span>
               </div>
             </div>
-            <!-- <div :class="{'noticeTabs': true, 'active': tabsIndex == 3}" @click="changeTabs(3)">
+            <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 4 }" @click="changeTabs(4)">
+              <div class="noticeTabsItem">
+                书刊
+                <span class="noticeMessageNew" v-if="msg.book.length > 0"></span>
+              </div>
+            </div>
+            <div :class="{ 'noticeTabs': true, 'active': tabsIndex == 3 }" @click="changeTabs(3)">
               <div class="noticeTabsItem">
                 求职招聘
-                <span class="noticeMessageNew"></span>
+                <span class="noticeMessageNew"
+                  v-if="msg.job_hunting.length > 0 || msg.job_recruiting.length > 0 || msg.job_apply.length > 0 || msg.job_resume.length > 0">
+                </span>
               </div>
-            </div> -->
+            </div>
+
+
+          </div>
+          <div class="noticeTabsLine" v-if="tabsIndex == 3" style="height: 20px; margin: 0px; margin-top: -20px;">
+            <ul class="noticeTabsLink">
+              <li v-if="userType == 1">
+                求职
+              </li>
+              <li v-if="userType == 3">
+                招聘
+              </li>
+            </ul>
+            <ul class="noticeTabsLink" v-if="userType == 10000">
+              <li v-if="qiu" @click="changeJob(1)">
+                求职
+                <img src="@/assets/public/nav/arrowDown.png" class="arrowDown" />
+              </li>
+              <li v-if="zhao" @click="changeJob(2)">
+                招聘
+                <img src="@/assets/public/nav/arrowDown.png" class="arrowDown" />
+              </li>
+            </ul>
           </div>
           <div class="noticeTabsLinkLine">
-            <div v-if="userType == 10000">
-              <div v-if="tabsIndex == 1" @click="goToPath(1,0)">待审核列表</div>
-              <div v-if="tabsIndex == 2" @click="goToPath(2,0)">待审核列表</div>
-              <div v-if="tabsIndex == 3" @click="goToPath(3,0)">待审核列表</div>
+            <div v-if="userType == 10000 || userType == 1 || userType == 3">
+              <div v-if="tabsIndex == 1" @click="goToPath(1, 0)">待审核列表</div>
+              <div v-if="tabsIndex == 2" @click="goToPath(2, 0)">待审核列表</div>
+              <div class="qiuFlex" v-if="tabsIndex == 3 && qiu == true && (userType == 10000 || userType == 1)"
+                @click="goToPath(3, 0)">
+                <span :class="{ 'qiuPillow': true, 'qiuPillowHover': qiu1 == true }" @mouseover="handleQiu(1)"
+                  @click="goToPath(3.1, 0)">待审核列表</span>
+                <span :class="{ 'qiuPillow': true, 'qiuPillowHover': qiu2 == true }" @mouseover="handleQiu(2)"
+                  @click="goToPath(3.2, 0)">职场机会</span>
+              </div>
+              <div class="qiuFlex" v-if="tabsIndex == 3 && zhao == true && (userType == 10000 || userType == 3)"
+                @click="goToPath(3, 0)">
+                <span :class="{ 'qiuPillow': true, 'qiuPillowHover': zhao1 == true }" @mouseover="handleQiu(3)"
+                  @click="goToPath(3.3, 0)">待审核列表</span>
+                <span :class="{ 'qiuPillow': true, 'qiuPillowHover': zhao2 == true }" @mouseover="handleQiu(4)"
+                  @click="goToPath(3.4, 0)">人才库</span>
+              </div>
+              <div v-if="tabsIndex == 4" @click="goToPath(4, 0)">待审核列表</div>
             </div>
             <div v-else>
-              <div v-if="tabsIndex == 1" @click="goToPath(1,-1)">资讯列表</div>
-              <div v-if="tabsIndex == 2" @click="goToPath(2,-1)">商品列表</div>
-              <div v-if="tabsIndex == 3" @click="goToPath(3,-1)">求职招聘列表</div>
+              <div v-if="tabsIndex == 1" @click="goToPath(1, -1)">资讯列表</div>
+              <div v-if="tabsIndex == 2" @click="goToPath(2, -1)">商品列表</div>
+              <div v-if="tabsIndex == 3" @click="goToPath(3, -1)">求职招聘列表</div>
+              <div v-if="tabsIndex == 4" @click="goToPath(4, -1)">书刊列表</div>
             </div>
           </div>
-          <div class="noticeTabsDataBox" v-if="tabsIndex==1">
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 1">
             <div v-if="msg.apply_articale && msg.apply_articale.length > 0">
-              <div class="noticeTabsDataItem" v-for="item in msg.apply_articale" :key="item.id" @click="goToPath(1,item.id)">
+              <div class="noticeTabsDataItem" v-for="item in msg.apply_articale" :key="item.id"
+                @click="goToPath(1, item.id)">
                 <div class="noticeTabsDataItemImg newsIcon">
                   <img src="@/assets/public/nav/message-news.png">
                 </div>
                 <div class="noticeTabsDataItemContent">
-                  <div class="noticeNewsTitle">{{item.title}}</div>
-                  <div class="noticeNewsTime">{{item.updated_at}}</div>
+                  <div class="noticeNewsTitle">{{ item.title }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
                 </div>
               </div>
             </div>
@@ -75,15 +121,39 @@
               </div>
             </div>
           </div>
-          <div class="noticeTabsDataBox" v-if="tabsIndex==2">
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 2">
             <div v-if="msg.good && msg.good.length > 0">
-              <div class="noticeTabsDataItem" v-for="item in msg.good" :key="item.id" @click="goToPath(2,item.id)">
+              <div class="noticeTabsDataItem" v-for="item in msg.good" :key="item.id" @click="goToPath(2, item.id)">
                 <div class="noticeTabsDataItemImg newsIcon">
                   <img src="@/assets/public/nav/message-news.png">
                 </div>
                 <div class="noticeTabsDataItemContent">
-                  <div class="noticeNewsTitle">{{item.name}}</div>
-                  <div class="noticeNewsTime">{{item.updated_at}}</div>
+                  <div class="noticeNewsTitle">{{ item.name }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
+            </div>
+            <div v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
+            </div>
+          </div>
+          <!-- 求职信息  待审核 -->
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && qiu == true && qiu1 == true && userType == 10000">
+            <div v-if="msg.job_hunting && msg.job_hunting.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.job_hunting" :key="item.id"
+                @click="goToPath(3.1, item.id)">
+                <!-- 待审核求职 -->
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+                  <div class="noticeNewsTitle">{{ item.user_name + ':' + item.website_name + '-' + '发布求职信息了' }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
                 </div>
               </div>
             </div>
@@ -96,76 +166,222 @@
               </div>
             </div>
           </div>
-          <!-- <div class="noticeTabsDataBox" v-if="tabsIndex==3">
-            
-          </div> -->
-        </div>
-      </div>
 
-      <!--刘剑 --> 
-      <!--<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
-        <div class="avatar-wrapper">
-          <div class="avatar-wrapper">
-            <img src="@/assets/public/nav/notice1.png" class="user-notice" style="width:40px;height:40px;" />
-            <span class="unread-count">{{msg.count}}</span>
-            <img src="@/assets/public/nav/arrowDown.png" class="arrowDown" />
+          <!-- 求职信息  职场机会 -->
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && qiu == true && qiu2 == true && userType == 10000">
+            <div v-if="msg.job_apply && msg.job_apply.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.job_apply" :key="item.id"
+                @click="goToPath(3.2, item.recruit_id)">
+
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+                  <div class="noticeNewsTitle">{{ item.business_name + ':' + item.website_name + ' ' + '关注了' +
+                    item.user_name
+                    + '的简历' }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
+            </div>
+            <div v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
+            </div>
           </div>
-        </div>
-        <el-dropdown-menu slot="dropdown" style="width: 200px;">
-          <router-link to="/examine" v-if="msg.apply_articale && msg.apply_articale.length > 0">
-            <div class="userMenuDownItem">
-              <el-dropdown-item>
-                <span style="display:block; text-align: center; width: 100%; color: #409EFF;">审核列表</span>
-              </el-dropdown-item>
+
+          <!-- 招聘信息  招聘信息  job_recruiting -->
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && zhao == true && zhao1 == true && userType == 10000">
+            <div v-if="msg.job_recruiting && msg.job_recruiting.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.job_recruiting" :key="item.id"
+                @click="goToPath(3.3, item.id)">
+                <!-- 招聘信息 job_recruiting -->
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+                  <div class="noticeNewsTitle">{{ item.user_name + ':' + item.website_name + ' ' + '-' + item.title
+                    + '岗位' }}
+                  </div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
             </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 v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
             </div>
-          </router-link>
-          <router-link to="/hall" v-if="msg.chat && msg.chat.length > 0">
-            <div class="userMenuDownItem">
-              <el-dropdown-item>
-                <span style="display:block;  color: #409EFF;">未读单聊</span>
-              </el-dropdown-item>
+          </div>
+
+          <!-- 招聘信息  人才库   job_apply -->
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && zhao == true && zhao2 == true && userType == 10000">
+            <div v-if="msg.job_apply && msg.job_apply.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.job_apply" :key="item.id"
+                @click="goToPath(3.4, item.hunt_id)">
+                <!-- 人才库 job_apply -->
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+
+                  <div class="noticeNewsTitle">{{ item.user_name + ': 求职了' + '-' + item.business_name +
+                    '-' +
+                    item.job_name }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
             </div>
-          </router-link>
-          <router-link to="/hall" v-for="item in msg.chat" :key="item.id">
-            <div class="userMenuDownItem" style="width: 200px;">
-              <el-dropdown-item divided style="width: 200px;">
-                <el-tooltip :content="item.content" effect="dark" placement="top">
-                  <span style="display:block;width: 150px;" :alt="item.content">{{ item.content.substring(0, 10)
-                  }}</span>
-                </el-tooltip>
-              </el-dropdown-item>
+            <div v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
             </div>
-          </router-link>
-          <router-link to="/hall" v-if="msg.chat_group && msg.chat_group.length > 0">
-            <div class="userMenuDownItem">
-              <el-dropdown-item>
-                <span style="display:block; color: #409EFF;">未读群聊</span>
-              </el-dropdown-item>
+          </div>
+
+          <!-- 求职信息  待审核 -->
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && qiu == true && qiu1 == true && userType == 1">
+            <div v-if="msg.job_hunting && msg.job_hunting.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.job_hunting" :key="item.id"
+                @click="goToPath(3.1, item.id)">
+                <!-- 待审核求职 -->
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+                  <div class="noticeNewsTitle">{{ item.user_name + ':' + item.website_name + '-' + '发布求职信息了' }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
             </div>
-          </router-link>
-          <router-link to="/hall" v-for="item in msg.chat_group" :key="item.id">
-            <div class="userMenuDownItem" style="width: 200px;">
-              <el-dropdown-item divided style="width: 200px;">
-                <el-tooltip :content="item.content" effect="dark" placement="top">
-                  <span style="display:block;width: 150px;" :alt="item.content">{{ item.content.substring(0, 10)
-                  }}</span>
-                </el-tooltip>
-              </el-dropdown-item>
+            <div v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
             </div>
-          </router-link>
-        </el-dropdown-menu>
-      </el-dropdown> -->
+          </div>
+
+          <!-- 求职信息  职场机会 -->
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && qiu == true && qiu2 == true && userType == 1">
+            <div v-if="msg.job_apply && msg.job_apply.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.job_apply" :key="item.id"
+                @click="goToPath(3.2, item.recruit_id)">
+
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+                  <div class="noticeNewsTitle">{{ item.business_name + ':' + item.website_name + ' ' + '关注了' +
+                    item.user_name
+                    + '的简历' }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
+            </div>
+            <div v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
+            </div>
+          </div>
+
+          <!-- 招聘信息  招聘信息  job_recruiting -->
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && zhao == true && zhao1 == true && userType == 3">
+            <div v-if="msg.job_recruiting && msg.job_recruiting.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.job_recruiting" :key="item.id"
+                @click="goToPath(3.3, item.id)">
+                <!-- 招聘信息 job_recruiting -->
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+                  <div class="noticeNewsTitle">{{ item.user_name + ':' + item.website_name + ' ' + '-' + item.title
+                    + '岗位' }}
+                  </div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
+            </div>
+            <div v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
+            </div>
+          </div>
+
+          <!-- 招聘信息  人才库   job_apply -->
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 3 && zhao == true && zhao2 == true && userType == 3">
+            <div v-if="msg.job_apply && msg.job_apply.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.job_apply" :key="item.id"
+                @click="goToPath(3.4, item.hunt_id)">
+                <!-- 人才库 job_apply -->
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+
+                  <div class="noticeNewsTitle">{{ item.user_name + ': 求职了' + '-' + item.business_name +
+                    '-' +
+                    item.job_name }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
+            </div>
+            <div v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
+            </div>
+          </div>
+
+
+          <div class="noticeTabsDataBox" v-if="tabsIndex == 4">
+            <div v-if="msg.book && msg.book.length > 0">
+              <div class="noticeTabsDataItem" v-for="item in msg.book" :key="item.id" @click="goToPath(4, item.id)">
+                <div class="noticeTabsDataItemImg newsIcon">
+                  <img src="@/assets/public/nav/message-news.png">
+                </div>
+                <div class="noticeTabsDataItemContent">
+                  <div class="noticeNewsTitle">{{ item.title }}</div>
+                  <div class="noticeNewsTime">{{ item.updated_at }}</div>
+                </div>
+              </div>
+            </div>
+            <div v-else class="noticeTabsDataItemEmpty">
+              <div class="noticeEmpty">
+                <img src="@/assets/public/nav/message-empty.png">
+              </div>
+              <div class="noticeEmptyText">
+                暂无消息
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
 
-      <!-- 用户头像和菜单 --> 
+      <!-- 用户头像和菜单 -->
       <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"> -->
@@ -205,7 +421,6 @@
           </el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
-
     </div>
   </div>
 </template>
@@ -222,7 +437,7 @@ import Search from '@/components/HeaderSearch'
 import axios from 'axios';
 import router, { resetRouter } from '@/router'
 import BASEURL from '@/utils/baseUrl'
-import { getUseType } from '@/utils/auth'
+import { getUseType, removeLoginStatus } from '@/utils/auth'
 
 export default {
   components: {
@@ -239,7 +454,14 @@ export default {
       msg: {},
       userType: '', //用户类型
       tabsIndex: 1, //显示哪个选项卡
-      showTabs: false //是否显示悬浮菜单
+      showTabs: false, //是否显示悬浮菜单
+      //求职招聘
+      qiu: false,
+      zhao: true,
+      qiu1: true,
+      qiu2: false,
+      zhao1: true,
+      zhao2: false,
     }
   },
   computed: {
@@ -253,6 +475,9 @@ export default {
     this.getMsg();
     //获得用户类型
     this.userType = getUseType();
+    if (this.userType == 1) {
+      this.qiu = true;
+    }
 
     // 添加点击事件监听器
     document.addEventListener('click', this.handleClickOutside);
@@ -288,14 +513,17 @@ export default {
         console.log(response);
         this.$store.commit("user/LOGOUT");
         //this.$router.push(`/login`);
+        //刷新页面
         window.location.reload();
       }).catch(error => {
         console.log(error);
         this.$store.commit("user/LOGOUT");
-        // this.$router.push(`/login`);
-        // this.$message.error(response.message);
+        //this.$router.push(`/login`);
+        //this.$message.error(response.message);
         window.location.reload();
       });
+
+      removeLoginStatus();
     },
     // async logout() {
     //   await this.$store.dispatch('user/logout')
@@ -319,9 +547,9 @@ export default {
     //2.1 获取通知消息列表
     getMsg() {
       this.$store.dispatch('news/getMSG').then(response => {
-        console.log(response);
+        console.log('response1111111111', response);
         this.msg = response.data;
-        console.log(this.msg);
+        // console.log(this.msg);
       }).catch(error => {
         console.log(error);
       });
@@ -331,32 +559,74 @@ export default {
       this.tabsIndex = index;
     },
     //2.3跳转方法
-    goToPath(type,id){
+    goToPath(type, id) {
       //如果id是0 跳转到列表
-      if(id==0){
-        if(type == 1){
+      if (id == 0) {
+        if (type == 1) {
           this.$router.push(`/examine`);
-        }else if(type == 2){
+        } else if (type == 2) {
           this.$router.push(`/goodListApply`);
-        }else if(type == 3){
-          this.$router.push(`/jobHuntingList`);
+        } else if (type == 3.1) {  //求职 待审核
+          this.$router.push(`/jobHuntingListApply`);
+        }
+        else if (type == 3.2) { // 职场机会
+          this.$router.push(`/jobOpportunities`);
+        }
+        else if (type == 3.3) {   // 招聘 待审核
+          this.$router.push(`/checkjobRecruitingList`);
+        }
+        else if (type == 3.4) {   // 人才库
+          this.$router.push(`/jobHuntingApplyList`);
         }
-      }else if(id==-1){
-        if(type == 1){
+        else if (type == 4) {
+          this.$router.push(`/bookListApply`);
+        }
+      } else if (id == -1) {
+        if (type == 1) {
           this.$router.push(`/articleList`);
-        }else if(type == 2){
+        } else if (type == 2) {
           this.$router.push(`/goodList`);
-        }else if(type == 3){
+        } else if (type == 3) {
+          this.$router.push(`/jobHuntingList`);
+        }
+        else if (type == 3.1) {  //求职 待审核
           this.$router.push(`/jobHuntingList`);
         }
-      }else{
-        if(type == 1){
+        else if (type == 3.2) { // 职场机会
+          this.$router.push(`/jobOpportunities`);
+        }
+        else if (type == 3.3) {   // 招聘 待审核
+          this.$router.push(`/jobRecruitingList`);
+        }
+        else if (type == 3.4) {   // 人才库
+          this.$router.push(`/jobHuntingApplyList`);
+        }
+        else if (type == 4) {
+          this.$router.push(`/bookList`);
+        }
+      } else {
+        if (type == 1) {
           this.$router.push(`/creatNews?id=${id}`);
-        }else if(type == 2){
+        } else if (type == 2) {
           this.$router.push(`/addGood?id=${id}`);
-        }else if(type == 3){
+        } else if (type == 3) {
           this.$router.push(`/addJobHunting?id=${id}`);
         }
+        else if (type == 3.1) {  //求职 待审核
+          this.$router.push(`/addJobHunting?id=${id}`);
+        }
+        else if (type == 3.2) { // 职场机会
+          this.$router.push(`/jobOpportunitiesDetails?id=${id}`);
+        }
+        else if (type == 3.3) {   // 招聘 待审核
+          this.$router.push(`/creatJob?id=${id}`);
+        }
+        else if (type == 3.4) {   // 人才库
+          this.$router.push(`/jobHuntingApplyDetil?id=${id}`);
+        }
+        else if (type == 4) {
+          this.$router.push(`/addBook?id=${id}`);
+        }
       }
       this.showTabs = false;
     },
@@ -364,13 +634,37 @@ export default {
     handleClickOutside(event) {
       const noticeTabsBox = this.$refs.noticeTabsBox;
       const noticeIconImg = event.target.closest('.noticeIconImg');
-      
+
       // 如果点击的不是通知图标,并且点击的区域不在通知框内,则关闭通知框
       if (!noticeIconImg && noticeTabsBox && !noticeTabsBox.contains(event.target)) {
         this.showTabs = false;
       }
     },
     //2.通知消息 end---------------------------------------->
+    changeJob(index) {
+      if (index == 1) {
+        this.qiu = false;
+        this.zhao = true;
+      } else if (index == 2) {
+        this.qiu = true;
+        this.zhao = false;
+      }
+    },
+    handleQiu(index) {
+      if (index == 1) {
+        this.qiu1 = true;
+        this.qiu2 = false;
+      } else if (index == 2) {
+        this.qiu1 = false;
+        this.qiu2 = true;
+      } else if (index == 3) {
+        this.zhao1 = true;
+        this.zhao2 = false;
+      } else if (index == 4) {
+        this.zhao1 = false;
+        this.zhao2 = true;
+      }
+    }
   }
 }
 </script>
@@ -496,12 +790,14 @@ export default {
       box-sizing: border-box;
       padding-top: 8px;
       position: relative;
+
       .noticeIconImg {
         width: 34px;
         height: 34px;
         cursor: pointer;
       }
-      .unreadCount{
+
+      .unreadCount {
         position: absolute;
         top: 5px;
         right: 10px;
@@ -514,6 +810,7 @@ export default {
         color: #fff;
         border-radius: 50%;
       }
+
       //通知消息 悬浮菜单
       .noticeTabsBox {
         position: absolute;
@@ -525,23 +822,27 @@ export default {
         right: 20px;
         top: 50px;
         box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15);
-        padding:25px 20px;
+        padding: 25px 20px;
         box-sizing: border-box;
+
         .noticeTabsTitleBox {
           display: flex;
           align-items: center;
           border-bottom: 1px solid #E9EDF7;
+
           .noticeTabs {
             height: 41px;
             border-bottom: 2px solid #fff;
             margin-right: 40px;
             display: flex;
             cursor: pointer;
+
             .noticeTabsItem {
               height: 20px;
               line-height: 20px;
               font-size: 16px;
               position: relative;
+
               .noticeMessageNew {
                 width: 5px;
                 height: 5px;
@@ -553,22 +854,25 @@ export default {
               }
             }
           }
+
           .active {
             border-bottom: 2px solid #5570F1;
           }
         }
+
         .noticeTabsLinkLine {
           height: 38px;
           box-sizing: border-box;
           font-size: 14px;
           cursor: pointer;
           background: #F5F7FB;
-          border:1px solid #E3E8FA;
+          border: 1px solid #E3E8FA;
           text-align: center;
           line-height: 38px;
           border-radius: 8px;
           margin: 20px 0;
         }
+
         .noticeTabsDataBox {
           .noticeTabsDataItem {
             display: flex;
@@ -577,10 +881,13 @@ export default {
             border-radius: 8px;
             box-sizing: border-box;
             padding: 5px 10px;
+
             &:hover {
               background: #F5F7FB;
             }
+
             height: 95px;
+
             .noticeTabsDataItemImg {
               border-radius: 50%;
               width: 26px;
@@ -591,11 +898,14 @@ export default {
               margin-right: 15px;
               margin-top: 6px;
             }
-            .newsIcon{
+
+            .newsIcon {
               background: #BAC5F8;
             }
-            .noticeTabsDataItemContent{
+
+            .noticeTabsDataItemContent {
               flex: 1;
+
               .noticeNewsTitle {
                 font-size: 14px;
                 line-height: 28px;
@@ -607,20 +917,23 @@ export default {
                 -webkit-line-clamp: 2;
                 -webkit-box-orient: vertical;
               }
+
               .noticeNewsTime {
                 height: 30px;
-                line-height:30px;
+                line-height: 30px;
                 font-size: 14px;
-                color:#999;
+                color: #999;
               }
             }
           }
+
           .noticeTabsDataItemEmpty {
             .noticeEmpty {
               text-align: center;
               padding-top: 150px;
               box-sizing: border-box;
             }
+
             .noticeEmptyText {
               text-align: center;
               color: #999;
@@ -666,4 +979,33 @@ export default {
 .unread-count:empty {
   display: none;
 }
+
+.noticeTabsLink {
+  padding-left: 10px;
+  //  去掉圆点
+  list-style: none;
+}
+
+.qiuPillow {
+  border-radius: 4px;
+  padding: -1px;
+  width: 48%;
+  height: 36px;
+  display: block;
+}
+
+.qiuPillowHover {
+  border-radius: 4px;
+  padding: -1px;
+  width: 48%;
+  height: 36px;
+  background: #dfe9ee;
+  border: #dfe1e7 1px solid;
+}
+
+.qiuFlex {
+  display: flex;
+  justify-content: space-between;
+  text-align: center;
+}
 </style>

+ 119 - 0
src/router/index.js

@@ -972,6 +972,125 @@ export const constantRoutes = [
       }
     ]
   },
+  {
+    path: '/addNotice',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/news/addNotice'),
+        meta: {
+          title: '添加通知',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+  },
+  {
+    path: '/noticeList',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/news/noticeList'),
+        meta: {
+          title: '行政通知列表',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+
+  },
+  {
+    path: '/noticeListApply',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/news/noticeListApply'),
+        meta: {
+          title: '行政通知审核列表',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+
+  },
+  {
+    path: '/ncomplaintList',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/news/ncomplaintList'),
+        meta: {
+          title: '投诉举报',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+
+  },
+  {
+    path: '/ncomplaintListApply',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/news/ncomplaintListApply'),
+        meta: {
+          title: '投诉举报审核列表',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+
+  },
+  {
+    path: '/ncomplaintListDeal',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/news/ncomplaintListDeal'),
+        meta: {
+          title: '投诉举报处理页面',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+
+  },
+
+  {
+    path: '/addNcomplaint',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/news/addNcomplaint'),
+        meta: {
+          title: '添加投诉举报',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+
+  },
 ]
 
 /**

+ 4 - 2
src/views/job/creatJob.vue

@@ -339,6 +339,8 @@ export default {
         due_data: [{ required: true, trigger: 'blur', validator: validateEmpty }],
         // 薪水
         salary: [{ required: true, trigger: 'change', validator: validateZero }],
+        // 公司性质
+        company_nature: [{ required: true, trigger: 'change', validator: validateEmpty }],
 
 
         // 公司名称
@@ -421,7 +423,7 @@ export default {
           }
 
           let parames = {
-            'type': 4,
+            // 'type': 4,
             'website_id': this.websiteid ? this.websiteid : 0,
             'pid': parentId ? parentId : 0
 
@@ -719,7 +721,7 @@ export default {
           this.form.jt_description = res.data.jt_description;//具体要求
           if (res.data.job_level == 0 || res.data.job_level == null || res.data.job_level == '') {
             this.form.job_level = '';  //推荐等级
-          }else{
+          } else {
             this.form.job_level = Number(res.data.job_level);  //推荐等级
           }
           this.form.business_name = res.data.business_name;

+ 4 - 3
src/views/job/jobOpportunitiesDetails.vue

@@ -16,7 +16,7 @@
                             </div>
                             <div class="index_1_box clearfix">
                                 <div class="demand_head_box clearfix">
-                                    <div class="demand_head_name">JAVA开发工程师</div>
+                                    <div class="demand_head_name">{{ pageData.title }}</div>
                                 </div>
                                 <div class="cruit_li_2_foot clearfix">
                                     <span class="cruit_li_2_foot_tag cruit_li_2_foot_exper">
@@ -25,7 +25,7 @@
                                         {{ pageData.jtzw_id }}
                                     </span>
                                     <span class="cruit_li_2_foot_tag cruit_li_2_foot_addres">{{ pageData.city_arr_id
-                                        }}</span>
+                                    }}</span>
                                 </div>
                             </div>
                         </section>
@@ -47,7 +47,7 @@
                                     </div>
                                     <div class="demand_li_2 clearfix">
                                         <div class="demand_li_2_label">工作经验:</div>
-                                        <div class="demand_li_2_text clearfix">{{ pageData.experience }}工作经验</div>
+                                        <div class="demand_li_2_text clearfix">{{ pageData.experience }}</div>
                                     </div>
                                     <div class="demand_li_2 clearfix">
                                         <div class="demand_li_2_label">学历文凭:</div>
@@ -176,6 +176,7 @@ export default {
             let that = this;
             let id = this.$route.query.id;
             this.$store.dispatch('job/getJobRecruitingInfo', { id: id }).then(res => {
+                this.pageData.title = res.data.title;//职位名称
                 this.pageData.updated_at = res.data.updated_at;//更新时间
                 this.getIndustry(res.data.hy_id)//行业分类
                 this.getPositionList(res.data.zw_id, res.data.jtzw_id)//职业分类

+ 16 - 9
src/views/news/addBook.vue

@@ -8,13 +8,14 @@
         <div class="formDiv">
 
           <el-form-item label="站点名称:" prop="website_id" class="custom-align-right" v-if="userType == 10000">
-            <el-select v-model="form.website_id" placeholder="请选择站点名称" filterable clearable>
+            <el-select v-model="form.website_id" placeholder="请选择站点名称" filterable clearable @change="get_WebSite_id">
               <el-option v-for="item in websiteOptions" :key="item.value" :label="item.label" :value="item.value">
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="展示名称:" prop="cat_arr_id" class="custom-align-right">
-            <el-cascader :key="parentKey" v-model="form.cat_arr_id" placeholder="请选择要绑定的展示名称" :props="parentData"
+
+          <el-form-item label="栏目名称:" prop="cat_arr_id" class="custom-align-right">
+            <el-cascader :key="parentKey" v-model="form.cat_arr_id" placeholder="请选择要绑定的栏目名称" :props="parentData"
               filterable clearable></el-cascader>
           </el-form-item>
           <el-form-item label="书刊音像标题:" prop="title" class="custom-align-right">
@@ -191,8 +192,8 @@ export default {
       }
     }
     const validateEmpty = (rule, value, callback) => {
-      console.log(value, '-----------validateEmpty--------------------')
-      if (value == '') {
+      console.log(value, '-------------------------------')
+      if (value.length == 0) {
         callback(new Error('该项不能为空!'))
       } else {
         callback()
@@ -354,7 +355,6 @@ export default {
           let website_id = self.form.website_id == '' ? 2 : self.form.website_id;
           console.log(website_id, 'website_id--111-----');
           let parames = {
-            'type': 3,
             'website_id': website_id,
             'pid': pid
           }
@@ -364,7 +364,6 @@ export default {
                 value: item.category_id,
                 label: item.alias,
                 leaf: level >= 3,
-                disabled: item.type != 3,
                 children: []
               }))
               resolve(nodes)
@@ -415,6 +414,7 @@ export default {
     async fetchWebsiteOptions() {
       try {
         const response = await this.$store.dispatch('news/websiteList', { page: 1, pageSize: 1000 });
+        console.log(response, 'response');
         if (response && response.data) {
           this.websiteOptions = response.data.rows.map(item => ({
             value: item.id,
@@ -439,6 +439,10 @@ export default {
         });
       })
     },
+    get_WebSite_id(val){
+      // this.form.website_id = val; //赋值
+      console.log(val, 'val')
+    },
     //1.提交表单 start ------------------------------------------------------------>
     beforeAvatarUpload(file) {
       const isJPG = file.type === 'image/jpeg';
@@ -504,6 +508,8 @@ export default {
           this.form.price == '' ? this.form.price = 0 : this.form.price = this.form.price;
           this.form.market_price == '' ? this.form.market_price = 0 : this.form.market_price = this.form.market_price;
           this.form.page == '' ? this.form.page = 0 : this.form.page = this.form.page;
+          console.log(this.form, 'this.form');
+          
           this.$store.dispatch('news/addBook', this.form).then(res => {
             if (res.code == 200) {
               //汇报结果
@@ -579,7 +585,7 @@ export default {
         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.loadCascaderPath(this.form.cat_arr_id); // 加载路径数据
         //回显推荐等级
         this.form.title = res.data.title;
         this.form.website_id = res.data.website_id;
@@ -719,6 +725,7 @@ export default {
 
   },
   watch: {
+
     '$route'(to, from) {
       console.log(from, '---------------------------------------');
       // 监听路由参数中的 id 变化,若变化则更新页面状态并获取数据
@@ -827,4 +834,4 @@ export default {
   color: #999;
 }
 
-//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/</style>
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/</style>

+ 19 - 20
src/views/news/addGood.vue

@@ -10,13 +10,13 @@
               <el-radio :label="2">求购商品</el-radio>
             </el-radio-group>
           </el-form-item>
-          <el-form-item label="商品名称:" prop="name" class="custom-align-right">
+          <el-form-item label="商品标题:" prop="name" class="custom-align-right">
             <template #label>
               <span class="askBox" v-if="form.type_id == 1">
-                商品名称
+                商品标题
               </span>
               <span class="askBox" v-if="form.type_id == 2">
-                标题:
+                商品标题:
               </span>
             </template>
             <el-input v-model="form.name" autocomplete="off" placeholder="请输入商品标题"></el-input>
@@ -31,8 +31,8 @@
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="展示名称:" prop="cat_arr_id" class="custom-align-right">
-            <el-cascader :key="parentKey" v-model="form.cat_arr_id" placeholder="请选择要绑定的展示名称" :props="parentData"
+          <el-form-item label="栏目名称:" prop="cat_arr_id" class="custom-align-right">
+            <el-cascader :key="parentKey" v-model="form.cat_arr_id" placeholder="请选择要绑定的栏目名称" :props="parentData"
               filterable clearable></el-cascader>
           </el-form-item>
           <div v-if="user_type == 10000">
@@ -114,7 +114,7 @@
             <el-input v-model="form.keyword" autocomplete="off" placeholder="请输入商品关键词"></el-input>
           </el-form-item> -->
 
-          <el-form-item label="商品关键词:" prop="keyword" class="custom-align-right">
+          <el-form-item label="商品关键词:" prop="" class="custom-align-right">
             <template #label>
               <span class="askBox">
                 商品关键词:
@@ -128,11 +128,11 @@
 
 
 
-          <el-form-item label="商品描述:" prop="description" class="custom-align-right">
+          <el-form-item label="商品描述:" prop="" class="custom-align-right">
             <el-input v-model="form.description" maxlength="300" autocomplete="off" placeholder="请输入商品描述"
               type="textarea" :rows="10"></el-input>
           </el-form-item>
-          <el-form-item label="详情说明:" prop="description" class="custom-align-right">
+          <el-form-item label="详情说明:" prop="detail" class="custom-align-right">
             <!--这里是富文本-->
             <myEditor ref="myEditor" v-model="form.detail"></myEditor>
           </el-form-item>
@@ -166,9 +166,6 @@
           <el-form-item label="详细地址:" prop="address" class="custom-align-right">
             <el-input v-model="form.address" autocomplete="off" placeholder="请输入详细地址"></el-input>
           </el-form-item>
-
-
-
         </div>
       </el-form>
     </div>
@@ -229,8 +226,8 @@ export default {
     let self = this;
     //0.全局操作 end ------------------------------------------------------------>
     return {
+      user_type: 0,//用户类型
       userType: 0,
-      user_type: 0,
       websiteOptions: [],
       checked: false,
       formLabelWidth: '80px',//表单的长度
@@ -244,7 +241,8 @@ export default {
       imgUrl: [],//图片数组
       //提交表单
       form: {
-        //1.1使用了外链
+        //1.
+        com: '',//公司名称
         name: '',//商品标题
         type_id: 1,//布类型:1:供应,2求购
         city_arr_id: [],//行政区划
@@ -273,7 +271,6 @@ export default {
         address: '',
         city_id: '',
         imgurl: [],//缩略图
-        com: '',
       },
       //1.2 表单验证规则
       formRules: {
@@ -415,7 +412,6 @@ export default {
           let website_id = self.form.website_id == '' ? 2 : self.form.website_id;
           console.log(website_id, 'website_id--111-----');
           let parames = {
-            'type': 2,
             'website_id': website_id,
             'pid': pid
           }
@@ -425,7 +421,6 @@ export default {
                 value: item.category_id,
                 label: item.alias,
                 leaf: level >= 3,
-                disabled: item.type != 2,
                 children: []
               }))
               resolve(nodes)
@@ -645,7 +640,7 @@ export default {
         id: this.$route.query.id
       };
       this.$store.dispatch('news/getGoodInfo', data).then(res => {
-        console.log(res);
+        console.log('res', 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);
@@ -669,7 +664,10 @@ export default {
         this.form.description = res.data.description;
         //回显编辑器内容
         this.$nextTick(() => {
-          this.form.detail = res.data.detail;
+          if (res.data.detail) {
+            this.form.detail = res.data.detail;
+          }
+          // this.form.detail = res.data.detail;
         });
         this.form.hits = res.data.hits;
         this.form.contact = res.data.contact;
@@ -704,7 +702,7 @@ export default {
           .then((res) => {
             const nodes = res.data.map(item => ({
               value: item.id,
-              label: item.alias,
+              label: item.name,
               leaf: level >= 3, // 假设4层结构,设置叶子节点标记
             }));
             // 级联选择器加载数据
@@ -960,6 +958,7 @@ export default {
 
 .imgBox {
   color: #999;
+  font-size: 14px;
 }
 
-//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/</style>
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/</style>

+ 1 - 1
src/views/news/addJobHunting.vue

@@ -599,7 +599,7 @@ export default {
           }
 
           let parames = {
-            'type': 5,
+            // 'type': 5,
             'website_id': this.websiteid ? this.websiteid : 0,
             'pid': parentId ? parentId : 0
           }