liyongli 1 سال پیش
والد
کامیت
ba1a07bdfd

+ 2 - 0
src/view/allMedia/H5Mall.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="H5Mall">
+    <header_local />
     <div class="mainBody">
       <div
         class="item"
@@ -70,6 +71,7 @@
 </template>
 
 <script setup>
+import header_local from './components/header.vue';
 import { ref } from 'vue';
 import { ElMessage } from 'element-plus';
 import { useRouter } from 'vue-router';

+ 219 - 219
src/view/allMedia/analysis.vue

@@ -1,4 +1,6 @@
 <template>
+  <div>
+    <header_local />
     <el-scrollbar ref="scrollbar" class="analysis" @scroll="scroll">
       <div class="head">
         <div class="title">账号分析</div>
@@ -65,231 +67,229 @@
       <div class="body">
         <analysisList ref="analysisListEle" />
       </div>
-  
+
       <analysisHotList @changeSearch="hotList" province="" />
       <el-icon :size="45" class="upload" v-show="showUpload" @click="upload"
         ><Upload
       /></el-icon>
     </el-scrollbar>
-  </template>
-  
-  <script setup>
-  import dayjs from 'dayjs';
-  import { ref, onMounted } from 'vue';
-  import { getClass } from '../../api/index';
-  
-  import analysisList from './components/analysis_list.vue';
-  import analysisHotList from './components/analysis_hot_list.vue';
-  
-  const nowTime = Date.now();
-  const scrollbar = ref();
-  const analysisListEle = ref();
-  const showUpload = ref(false);
-  const searchActive = ref({
-    classification: 0,
-    time: 0,
-    area: 0,
-    areaSon: 0,
-  });
-  const defaultOption = {
+  </div>
+</template>
+
+<script setup>
+import header_local from './components/header.vue';
+import dayjs from 'dayjs';
+import { ref, onMounted } from 'vue';
+import { getClass } from '../../api/index';
+
+import analysisList from './components/analysis_list.vue';
+import analysisHotList from './components/analysis_hot_list.vue';
+
+const nowTime = Date.now();
+const scrollbar = ref();
+const analysisListEle = ref();
+const showUpload = ref(false);
+const searchActive = ref({
+  classification: 0,
+  time: 0,
+  area: 0,
+  areaSon: 0,
+});
+const defaultOption = {
+  type: 'option',
+  name: '全部',
+  id: 0,
+};
+const classification = ref([defaultOption]);
+const time = [
+  {
     type: 'option',
-    name: '全部',
-    id: 0,
-  };
-  const classification = ref([defaultOption]);
-  const time = [
-    {
-      type: 'option',
-      time: nowTime - 86400000,
-      name: '24小时',
-      id: 1,
-    },
-    {
-      type: 'option',
-      time: nowTime - 172800000,
-      name: '48小时',
-      id: 2,
-    },
-    {
-      type: 'option',
-      time: nowTime - 604800000,
-      name: '近7天',
-      id: 3,
-    },
-    {
-      type: 'option',
-      time: nowTime - 2592000000,
-      name: '近30天',
-      id: 4,
-    },
-  ];
-  const searchText = ref('');
-  const date = ref([]);
-  
-  const pageSize = 10;
-  let page = 1;
-  
-  onMounted(() => {
-    getList();
-  });
-  
-  getClass({}).then(res => {
-    const li = res || [];
-    const l = [];
-    for (let i = 0; i < li.length; i++) {
-      const v = li[i];
-      l.push({
-        type: 'option',
-        name: v,
-      });
-    }
-    classification.value.push(...l);
-  });
-  
-  const getList = () => {
-    const search = {
-      category:
-        classification.value[searchActive.value.classification].name || undefined,
-      keywords: searchText.value,
-      page: page++,
-      pageSize,
-    };
-    search.category === '全部' ? (search.category = '') : '';
-    search.city === '全部' ? (search.city = '') : '';
-    // 时间区间
-    if (searchActive.value['time'] === -1) {
-      search.start = date.value[0];
-      search.end = date.value[1];
-    } else {
-      search.start = dayjs(time[searchActive.value['time']].time).format(
-        'YYYY-MM-DD HH:mm:ss'
-      );
-      search.end = dayjs(nowTime).format('YYYY-MM-DD HH:mm:ss');
-    }
-    analysisListEle.value.getlist(search);
-  };
-  
-  const clickSelect = (select, index) => {
-    searchActive.value[select] = index;
-    if (index === -1) return;
-    page = 1;
-    getList();
-  };
-  
-  const change = () => {
-    date.value = [date.value[0] + ' 00:00:00', date.value[1] + ' 23:59:59'];
-    page = 1;
-    getList();
-  };
-  
-  const search = () => {
-    page = 1;
-    getList();
-  };
-  
-  const hotList = searchTextHot => {
-    if (!searchTextHot) return;
-    page = 1;
-    searchText.value = searchTextHot;
-    getList();
-  };
-  
-  const scroll = e => {
-    const height =
-      document.querySelector('.analysis .head').offsetHeight +
-      document.querySelector('.analysis .body').offsetHeight -
-      document.querySelector('.analysis').offsetHeight;
-    const scrollNum = e.scrollTop.toFixed(2) - 0;
-    if (!showUpload.value && scrollNum > 180) showUpload.value = true;
-    else if (scrollNum <= 180) showUpload.value = false;
-    if (height - scrollNum > 0) return;
-    getList();
-  };
-  
-  const upload = () => {
-    scrollbar.value.setScrollTop(0);
-  };
+    time: nowTime - 86400000,
+    name: '24小时',
+    id: 1,
+  },
+  {
+    type: 'option',
+    time: nowTime - 172800000,
+    name: '48小时',
+    id: 2,
+  },
+  {
+    type: 'option',
+    time: nowTime - 604800000,
+    name: '近7天',
+    id: 3,
+  },
+  {
+    type: 'option',
+    time: nowTime - 2592000000,
+    name: '近30天',
+    id: 4,
+  },
+];
+const searchText = ref('');
+const date = ref([]);
 
-  const nowT = Date.now();
-  const disDate = date => {
-    return date.getTime() > nowT;
-  }
-  </script>
-  
-  <style scoped>
-  .analysis {
-    height: 100%;
-    /* min-width: 1305px; */
-    position: relative;
-  }
-  .analysis .head,
-  .analysis .body {
-    margin: 0 1em;
-    width: calc(100% - 400px);
-    min-width: 855px;
-  }
-  
-  .analysis .body {
-    border: 1px solid #f3f3f3;
-    margin: 1em;
-  }
-  
-  
-  
-  .title {
-    font-size: 16px;
-    font-weight: 600;
-    height: 49px;
-    line-height: 49px;
-    padding-left: 8px;
-    border-bottom: 1px solid #f5f5f5;
-  }
-  
-  .searchRow {
-    margin: 0.5em 0;
-  }
-  
-  .searchCol {
-    display: inline-block;
-    margin: 0 0.5em;
-    padding: 0 0.5em;
-    height: 35px;
-    line-height: 35px;
-    cursor: pointer;
-  }
-  .searchCol:hover {
-    color: rgb(64, 158, 255);
-  }
-  
-  .searchActive {
-    font-weight: 600;
-    color: rgb(64, 158, 255);
-    border-radius: 5px;
-    background-color: rgba(64, 158, 255, 0.1);
-    border-bottom: none;
-  }
-  
-  .searchRow .searchTitle {
-    color: #b9c0d3;
-  }
-  
-  .body .el-checkbox {
-    margin-right: 15px;
-  }
-  
-  .source {
-    color: #22ac38;
+const pageSize = 10;
+let page = 1;
+
+onMounted(() => {
+  getList();
+});
+
+getClass({}).then(res => {
+  const li = res || [];
+  const l = [];
+  for (let i = 0; i < li.length; i++) {
+    const v = li[i];
+    l.push({
+      type: 'option',
+      name: v,
+    });
   }
-  
-  
-  .upload {
-    position: absolute;
-    right: 25px;
-    bottom: 25px;
-    background-color: #e9e9e990;
-    border-radius: 50%;
-    padding: 5px;
-    cursor: pointer;
+  classification.value.push(...l);
+});
+
+const getList = () => {
+  const search = {
+    category:
+      classification.value[searchActive.value.classification].name || undefined,
+    keywords: searchText.value,
+    page: page++,
+    pageSize,
+  };
+  search.category === '全部' ? (search.category = '') : '';
+  search.city === '全部' ? (search.city = '') : '';
+  // 时间区间
+  if (searchActive.value['time'] === -1) {
+    search.start = date.value[0];
+    search.end = date.value[1];
+  } else {
+    search.start = dayjs(time[searchActive.value['time']].time).format(
+      'YYYY-MM-DD HH:mm:ss'
+    );
+    search.end = dayjs(nowTime).format('YYYY-MM-DD HH:mm:ss');
   }
-  </style>
-  
+  analysisListEle.value.getlist(search);
+};
+
+const clickSelect = (select, index) => {
+  searchActive.value[select] = index;
+  if (index === -1) return;
+  page = 1;
+  getList();
+};
+
+const change = () => {
+  date.value = [date.value[0] + ' 00:00:00', date.value[1] + ' 23:59:59'];
+  page = 1;
+  getList();
+};
+
+const search = () => {
+  page = 1;
+  getList();
+};
+
+const hotList = searchTextHot => {
+  if (!searchTextHot) return;
+  page = 1;
+  searchText.value = searchTextHot;
+  getList();
+};
+
+const scroll = e => {
+  const height =
+    document.querySelector('.analysis .head').offsetHeight +
+    document.querySelector('.analysis .body').offsetHeight -
+    document.querySelector('.analysis').offsetHeight;
+  const scrollNum = e.scrollTop.toFixed(2) - 0;
+  if (!showUpload.value && scrollNum > 180) showUpload.value = true;
+  else if (scrollNum <= 180) showUpload.value = false;
+  if (height - scrollNum > 0) return;
+  getList();
+};
+
+const upload = () => {
+  scrollbar.value.setScrollTop(0);
+};
+
+const nowT = Date.now();
+const disDate = date => {
+  return date.getTime() > nowT;
+};
+</script>
+
+<style scoped>
+.analysis {
+  height: 100%;
+  /* min-width: 1305px; */
+  position: relative;
+}
+.analysis .head,
+.analysis .body {
+  margin: 0 1em;
+  width: calc(100% - 400px);
+  min-width: 855px;
+}
+
+.analysis .body {
+  border: 1px solid #f3f3f3;
+  margin: 1em;
+}
+
+.title {
+  font-size: 16px;
+  font-weight: 600;
+  height: 49px;
+  line-height: 49px;
+  padding-left: 8px;
+  border-bottom: 1px solid #f5f5f5;
+}
+
+.searchRow {
+  margin: 0.5em 0;
+}
+
+.searchCol {
+  display: inline-block;
+  margin: 0 0.5em;
+  padding: 0 0.5em;
+  height: 35px;
+  line-height: 35px;
+  cursor: pointer;
+}
+.searchCol:hover {
+  color: rgb(64, 158, 255);
+}
+
+.searchActive {
+  font-weight: 600;
+  color: rgb(64, 158, 255);
+  border-radius: 5px;
+  background-color: rgba(64, 158, 255, 0.1);
+  border-bottom: none;
+}
+
+.searchRow .searchTitle {
+  color: #b9c0d3;
+}
+
+.body .el-checkbox {
+  margin-right: 15px;
+}
+
+.source {
+  color: #22ac38;
+}
+
+.upload {
+  position: absolute;
+  right: 25px;
+  bottom: 25px;
+  background-color: #e9e9e990;
+  border-radius: 50%;
+  padding: 5px;
+  cursor: pointer;
+}
+</style>

+ 109 - 105
src/view/allMedia/analysis_map.vue

@@ -1,119 +1,123 @@
 <template>
-  <el-scrollbar ref="scrollbar" class="analysis" @scroll="scroll">
-    <div class="head">
-      <div class="title">地域热点</div>
-      <div class="searchRow">
-        <div class="searchCol searchTitle">省:</div>
-        <div
-          :class="{
-            searchCol: true,
-            searchActive: searchActive.area === optionindex,
-          }"
-          v-for="(optionitem, optionindex) in areaification"
-          :key="optionindex + 'option'"
-          v-text="optionitem.name"
-          @click="() => clickSelect('area', optionindex)"
-        ></div>
-      </div>
-      <div
-        class="searchRow"
-        v-if="
-          areaification[searchActive.area] &&
-          areaification[searchActive.area].child
-        "
-      >
-        <div class="searchCol searchTitle">市:</div>
-        <div
-          :class="{
-            searchCol: true,
-            searchActive: searchActive.areaSon === optionindex,
-          }"
-          v-for="(optionitem, optionindex) in areaification[searchActive.area]
-            .child"
-          :key="optionindex + 'optionSon'"
-          v-text="optionitem.name"
-          @click="() => clickSelect('areaSon', optionindex)"
-        ></div>
-      </div>
-      <div class="searchRow">
-        <div class="searchCol searchTitle">分类:</div>
-        <div
-          :class="{
-            searchCol: true,
-            searchActive: searchActive.classification === optionindex,
-          }"
-          v-for="(optionitem, optionindex) in classification"
-          :key="optionindex + 'option'"
-          v-text="optionitem.name"
-          @click="() => clickSelect('classification', optionindex)"
-        ></div>
-      </div>
-      <div class="searchRow">
-        <div class="searchCol searchTitle">时间:</div>
-        <div
-          :class="{
-            searchCol: true,
-            searchActive: searchActive.time === optionindex,
-          }"
-          v-for="(optionitem, optionindex) in time"
-          :key="optionindex + 'option'"
-          v-text="optionitem.name"
-          @click="() => clickSelect('time', optionindex)"
-        ></div>
+  <div>
+    <header_local />
+    <el-scrollbar ref="scrollbar" class="analysis" @scroll="scroll">
+      <div class="head">
+        <div class="title">地域热点</div>
+        <div class="searchRow">
+          <div class="searchCol searchTitle">省:</div>
+          <div
+            :class="{
+              searchCol: true,
+              searchActive: searchActive.area === optionindex,
+            }"
+            v-for="(optionitem, optionindex) in areaification"
+            :key="optionindex + 'option'"
+            v-text="optionitem.name"
+            @click="() => clickSelect('area', optionindex)"
+          ></div>
+        </div>
         <div
-          :class="{
-            searchCol: true,
-            searchActive: searchActive.time === -1,
-          }"
-          @click="() => clickSelect('time', -1)"
+          class="searchRow"
+          v-if="
+            areaification[searchActive.area] &&
+            areaification[searchActive.area].child
+          "
         >
-          自定义
+          <div class="searchCol searchTitle">市:</div>
+          <div
+            :class="{
+              searchCol: true,
+              searchActive: searchActive.areaSon === optionindex,
+            }"
+            v-for="(optionitem, optionindex) in areaification[searchActive.area]
+              .child"
+            :key="optionindex + 'optionSon'"
+            v-text="optionitem.name"
+            @click="() => clickSelect('areaSon', optionindex)"
+          ></div>
         </div>
-        <div class="searchCol">
-          <el-date-picker
-            v-model="date"
-            :disabled="searchActive.time !== -1"
-            @change="change"
-            :disabled-date="disDate"
-            type="daterange"
-            :clearable="false"
-            value-format="YYYY-MM-DD"
-            range-separator="-"
-            start-placeholder="开始时间"
-            end-placeholder="结束时间"
-          />
+        <div class="searchRow">
+          <div class="searchCol searchTitle">分类:</div>
+          <div
+            :class="{
+              searchCol: true,
+              searchActive: searchActive.classification === optionindex,
+            }"
+            v-for="(optionitem, optionindex) in classification"
+            :key="optionindex + 'option'"
+            v-text="optionitem.name"
+            @click="() => clickSelect('classification', optionindex)"
+          ></div>
         </div>
-      </div>
-      <div class="searchRow">
-        <div class="searchCol searchTitle">搜索:</div>
-        <div class="searchCol">
-          <el-input v-model="searchText" placeholder="搜索文章">
-            <template #suffix>
-              <el-icon @click="search"><Search /></el-icon>
-            </template>
-          </el-input>
+        <div class="searchRow">
+          <div class="searchCol searchTitle">时间:</div>
+          <div
+            :class="{
+              searchCol: true,
+              searchActive: searchActive.time === optionindex,
+            }"
+            v-for="(optionitem, optionindex) in time"
+            :key="optionindex + 'option'"
+            v-text="optionitem.name"
+            @click="() => clickSelect('time', optionindex)"
+          ></div>
+          <div
+            :class="{
+              searchCol: true,
+              searchActive: searchActive.time === -1,
+            }"
+            @click="() => clickSelect('time', -1)"
+          >
+            自定义
+          </div>
+          <div class="searchCol">
+            <el-date-picker
+              v-model="date"
+              :disabled="searchActive.time !== -1"
+              @change="change"
+              :disabled-date="disDate"
+              type="daterange"
+              :clearable="false"
+              value-format="YYYY-MM-DD"
+              range-separator="-"
+              start-placeholder="开始时间"
+              end-placeholder="结束时间"
+            />
+          </div>
         </div>
+        <div class="searchRow">
+          <div class="searchCol searchTitle">搜索:</div>
+          <div class="searchCol">
+            <el-input v-model="searchText" placeholder="搜索文章">
+              <template #suffix>
+                <el-icon @click="search"><Search /></el-icon>
+              </template>
+            </el-input>
+          </div>
+        </div>
+      </div>
+      <div class="body">
+        <analysisList ref="analysisListEle" />
       </div>
-    </div>
-    <div class="body">
-      <analysisList ref="analysisListEle" />
-    </div>
 
-    <analysisHotList
-      @changeSearch="hotList"
-      :province="
-        areaification[searchActive.area]
-          ? areaification[searchActive.area].name
-          : ''
-      "
-    />
-    <el-icon :size="45" class="upload" v-show="showUpload" @click="upload"
-      ><Upload
-    /></el-icon>
-  </el-scrollbar>
+      <analysisHotList
+        @changeSearch="hotList"
+        :province="
+          areaification[searchActive.area]
+            ? areaification[searchActive.area].name
+            : ''
+        "
+      />
+      <el-icon :size="45" class="upload" v-show="showUpload" @click="upload"
+        ><Upload
+      /></el-icon>
+    </el-scrollbar>
+  </div>
 </template>
 
 <script setup>
+import header_local from './components/header.vue';
 import dayjs from 'dayjs';
 import { ref, onMounted } from 'vue';
 import { getEconomize, getClass } from '../../api/index';

+ 20 - 0
src/view/allMedia/components/header.vue

@@ -0,0 +1,20 @@
+<template>
+  <header class="header">
+    <el-popconfirm title="Are you sure to delete this?">
+      <template #reference>
+        <el-button type="primary" link>退出</el-button>
+      </template>
+    </el-popconfirm>
+  </header>
+</template>
+
+<script setup></script>
+
+<style>
+.header {
+  text-align: right;
+  height: 2em;
+  line-height: 2em;
+  padding-right: 1em;
+}
+</style>

+ 3 - 1
src/view/allMedia/convergence.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="convergence">
+    <header_local />
     <el-form :inline="true" :model="condition" size="large">
       <el-form-item prop="platform">
         <el-button
@@ -142,6 +143,7 @@
 </template>
 
 <script setup>
+import header_local from './components/header.vue';
 import { ref } from 'vue';
 import { getAccountList, getUpdateTime, getAccountData } from '@/api/index';
 import dayjs from 'dayjs';
@@ -386,7 +388,7 @@ getUpdateTime({ data: {} }).then(res => {
 .convergence {
   height: 100%;
   overflow: auto;
-  padding: 1em;
+  padding: 0 1em;
 }
 .convergence .platform {
   width: 8em;

+ 1 - 1
src/view/allMedia/main.vue

@@ -17,7 +17,7 @@
       >
         <span
           :class="{ menu_iconfont: true, [item.icon]: true }"
-          style="margin-right: 5px;font-size: 20px;"
+          style="margin-right: 5px; font-size: 20px"
         >
         </span>
         {{ item.title }}

+ 12 - 5
src/view/allMedia/proofread.vue

@@ -1,10 +1,16 @@
 <template>
   <div class="edito_youmei">
+    <header_local />
     <div class="onlineTextMain">
       <div class="flex1">
         <div class="btn-grounp">
           文章内容
-          <el-button type="primary" class="jiaoyan" @click="getServer">
+          <el-button
+            type="primary"
+            style="float: right; margin-top: 0.3em; margin-right: 0.5em"
+            class="jiaoyan"
+            @click="getServer"
+          >
             校验
           </el-button>
           <el-button
@@ -95,6 +101,7 @@
 </template>
 
 <script setup>
+import header_local from "./components/header.vue";
 import Editor from '@/components/editor.vue';
 import { Delete } from '@element-plus/icons-vue';
 import { ref } from 'vue';
@@ -154,9 +161,9 @@ function getServer() {
     for (let i = 0; i < list.length; i++) {
       const v = list[i];
       const r = new RegExp(`data-umpos="${v.colorPosition}"`, 'g');
-      let rText = `data-umpos="${v.colorPosition}" style="border-bottom: 3px solid rgb(${
-        errType[v.um_error_level]
-      });`;
+      let rText = `data-umpos="${
+        v.colorPosition
+      }" style="border-bottom: 3px solid rgb(${errType[v.um_error_level]});`;
       if (i == 0) {
         rText += `background-color: rgba(${errType[v.um_error_level]}, 0.5)`;
         lastAtom.value = v.colorPosition;
@@ -356,7 +363,7 @@ function getEle(colorPosition) {
 </style>
 
 <style>
-.el-popper.is-light,
+.edito_youmei .el-popper.is-light,
 .el-popper .el-popper__arrow::before {
   background-color: #2974ff !important;
   color: #fff;

+ 2 - 0
src/view/allMedia/reporting.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="analysis">
+    <header_local />
     <div class="head">
       <div class="title">爆料中心</div>
       <div class="searchRow">
@@ -41,6 +42,7 @@
 </template>
 
 <script setup>
+import header_local from './components/header.vue';
 import dayjs from 'dayjs';
 import { ref, onMounted } from 'vue';
 

+ 7 - 5
src/view/easyDiffusion/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="diffusion">
+    <header_local />
     <h1>
       <img
         id="logo_img"
@@ -410,6 +411,7 @@
 </template>
 
 <script setup>
+import header_local from '../allMedia/components/header.vue';
 import imgCom from './components/imgCom.vue';
 import imageEle from './components/image.vue';
 import imageEdit from './components/imageEdit.vue';
@@ -693,8 +695,8 @@ const makeimg = item => {
 .diffusion .el-collapse-item__header,
 .diffusion .el-collapse,
 .diffusion .el-collapse-item__wrap,
-.el-popper.is-light,
-.el-select__popper.el-popper .el-popper__arrow::before {
+.diffusion .el-popper.is-light,
+.diffusion .el-select__popper.el-popper .el-popper__arrow::before {
   background-color: #2f3136;
   color: #eee;
   border-color: #2f3136;
@@ -712,8 +714,8 @@ const makeimg = item => {
 .dark .el-select-dropdown__item.hover span {
   background-color: #ffffff00;
 }
-.el-popper.is-light,
-.el-select__popper.el-popper .el-popper__arrow::before {
+.diffusion .el-popper.is-light,
+.diffusion .el-select__popper.el-popper .el-popper__arrow::before {
   box-shadow: 0 0 5px #ffffff80;
 }
 .diffusion .el-collapse-item__content {
@@ -732,7 +734,7 @@ const makeimg = item => {
   background-color: #202225;
   box-shadow: 0 0 0 1px #202225 inset;
 }
-.el-select-dropdown__item.hover {
+.diffusion .el-select-dropdown__item.hover {
   background-color: #202225 !important;
 }
 </style>

+ 8 - 4
src/view/ortherPage/index.vue

@@ -1,21 +1,25 @@
 <template>
-    <!-- <object
+  <!-- <object
       :data="route.query.path || 'https://aidoc.sxtvs.net'" 
       style="height:100%;height: 100%;"
       type="text/html"
     ></object> -->
-    <!-- <iframe :src="route.query.path" frameborder="0"></iframe> -->
+  <!-- <iframe :src="route.query.path" frameborder="0"></iframe> -->
+  <div>
+    <header_local />
     <el-empty description="已在新页面打开" class="empty" />
+  </div>
 </template>
 
 <script setup>
+import header_local from '../allMedia/components/header.vue';
 import { useRoute } from 'vue-router';
 const route = useRoute();
 window.open(route.query.path || 'https://aidoc.sxtvs.net/newdoc');
 </script>
 
 <style>
-.el-empty__image{
-    margin: 0 auto;
+.el-empty__image {
+  margin: 0 auto;
 }
 </style>

+ 2 - 0
src/view/qh/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div>
+    <header_local />
     <h2
       style="
         text-align: center;
@@ -142,6 +143,7 @@
   </div>
 </template>
 <script setup>
+import header_local from '../allMedia/components/header.vue';
 import { createSocket } from '@/utils/socket';
 import { ChatDotRound } from '@element-plus/icons-vue';
 import { ref, nextTick, onMounted } from 'vue';