Переглянути джерело

Merge branch 'master' of http://face3d.4dage.com:7005/shaogen1995/YFYC-H5

任一存 2 роки тому
батько
коміт
236d529899

BIN
houtai/public/favicon.ico


+ 1 - 1
houtai/public/index.html

@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-    <title>河南博物院-文物展示平台后台</title>
+    <title>芜湖一房一册管理后台</title>
   </head>
   <body>
     <noscript>

+ 7 - 39
houtai/src/views/tab2/index.vue

@@ -23,44 +23,11 @@
                 }}
               </template>
             </el-table-column>
-            <el-table-column label="名称" prop="name"> </el-table-column>
-            <el-table-column label="总登记号">
-              <template #default="{ row }">
-                <span
-                  style="cursor: pointer"
-                  :title="row.registerNum"
-                  v-if="row.registerNum"
-                  >{{
-                    row.registerNum.length > 10
-                      ? row.registerNum.substring(0, 10) + "..."
-                      : row.registerNum
-                  }}</span
-                >
-                <span v-else>(空)</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="类别">
-              <template #default="{ row }">
-                <span v-if="row.dictTextureName">{{
-                  row.dictTextureName
-                }}</span>
-                <span v-else>(空)</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="年代">
-              <template #default="{ row }">
-                <span v-if="row.dictAgeFront">{{ row.dictAgeFront }}</span>
-                <span v-else>(空)</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="级别">
-              <template #default="{ row }">
-                <span v-if="row.dictLevelName">{{ row.dictLevelName }}</span>
-                <span v-else>(空)</span>
-              </template>
-            </el-table-column>
+            <el-table-column label="标题" prop="name"> </el-table-column>
+            <el-table-column label="话题" prop="name"> </el-table-column>
+            <el-table-column label="位置" prop="name"> </el-table-column>
 
-            <el-table-column label="图片" width="120">
+            <el-table-column label="封面图片" width="120">
               <template #default="{ row }">
                 <img
                   class="table_img"
@@ -70,10 +37,11 @@
                 />
               </template>
             </el-table-column>
-            <el-table-column prop="day" label="日期"> </el-table-column>
+            <el-table-column prop="day" label="发布时间"> </el-table-column>
+            <el-table-column prop="day" label="审核状态"> </el-table-column>
             <el-table-column label="操作">
               <template #default="{ row }">
-                <el-button type="text">查看</el-button>
+                <el-button type="text">审核</el-button>
                 <el-button
                   type="text"
                   style="color: #d9001b"

+ 20 - 0
yfyc/src/App.vue

@@ -1,6 +1,10 @@
 <template>
   <div id="app">
     <Router-view />
+    <!-- 发送接口出现的loading -->
+    <div class="loadingApp">
+      <van-loading color="#1989fa" />
+    </div>
   </div>
 </template>
 <script>
@@ -28,5 +32,21 @@ export default {
   // max-width: 500px;
   margin: 0 auto;
   overflow: hidden;
+  .loadingApp {
+    display: none;
+    background-color: rgba(0, 0, 0, 0.4);
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    z-index: 11;
+    .van-loading{
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%,-50%);
+    }
+  }
 }
 </style>

+ 41 - 1
yfyc/src/api/interact.js

@@ -2,6 +2,46 @@ import axios from '../utils/request'
 // 登录----
 export const getCodeAPI = (code) => {
   return axios({
-    url: `wxMini/mp/wxLogin/${code}`,
+    url: `wx/wxLogin/${code}`,
+  })
+}
+
+// 上传图片
+export const uploadImgAPI = (fd) => {
+  return axios({
+    method: 'post',
+    url: 'cms/share/upload',
+    data:fd
+  })
+}
+
+// 删除图片
+export const delImgAPI = (id) => {
+  return axios({
+    url: `cms/share/delFile/${id}`,
+  })
+}
+
+// 建筑可对话发布
+export const shareSaveAPI = (data) => {
+  return axios({
+    method: 'post',
+    url: 'cms/share/save',
+    data
+  })
+}
+
+// 获取话题列表
+export const getDictAPI = (type) => {
+  return axios({
+    url: `show/dict/getList/${type}`,
+  })
+}
+
+// 获取位置列表
+export const getLoctionAPI = () => {
+  return axios({
+    method: 'post',
+    url: 'show/position/list',
   })
 }

BIN
yfyc/src/assets/img/IMGerror.png


BIN
yfyc/src/assets/img/loading.gif


+ 8 - 1
yfyc/src/main.js

@@ -12,6 +12,14 @@ import infiniteScroll from 'vue-infinite-scroll'
 import Vant from 'vant';
 import 'vant/lib/index.css';
 Vue.use(Vant);
+
+// 图片懒加载
+Vue.use(VueLazyload, {
+  error: require('@/assets/img/IMGerror.png'),
+  loading: require('@/assets/img/loading.gif')
+})
+
+
 // 初始样式
 import './assets/base.css'
 import "@/assets/my-reset.css"
@@ -25,7 +33,6 @@ console.log(`version: ${process.env.VUE_APP_VERSION}`)
 
 Vue.use(clickOutside)
 Vue.use(Viewer)
-Vue.use(VueLazyload)
 Vue.use(infiniteScroll)
 
 new Vue({

+ 15 - 4
yfyc/src/utils/request.js

@@ -1,15 +1,23 @@
 import axios from 'axios'
+import {
+  Toast
+} from "vant";
+export const baseURL = process.env.NODE_ENV === 'development' ? 'http://192.168.20.55:8037/api' : '/api'
+//export const baseURL = process.env.NODE_ENV === 'development' ? 'http://192.168.20.55:8037/api' : '/api'
+let axajInd = 0
 const service = axios.create({
-  baseURL: process.env.NODE_ENV === 'development' ? 'http://192.168.20.55:8037/api' : '',
-  // baseURL: process.env.NODE_ENV === 'development' ? 'https://hnbwg.4dage.com/api' : '',
+  baseURL: baseURL,
   timeout: 5000
 })
 // 请求拦截器
 service.interceptors.request.use(function (config) {
+  document.querySelector('.loadingApp').style.display = 'block'
+  axajInd++
   // console.log('触发拦截器')
   // 在发送请求之前做些什么:看看有没有token,如果有通过请求头的方式传递token
   const token = localStorage.getItem('YFYC_token')
   if (token) { // 判断是否有token,有,则
+
     // config.headers['Authorization'] = token
     config.headers.token = token
   }
@@ -22,16 +30,19 @@ service.interceptors.request.use(function (config) {
 
 // 添加响应拦截器
 service.interceptors.response.use(function (response) {
+  axajInd--
   // console.log('触发相应拦截器', response)
   // 对响应数据做点什么--response就是发送每个请求的返回值
   if (response.data.code === 5001 || response.data.code === 5002) {
-    // Toast.fail('未登录,请先登录')
+    Toast.fail('未登录,请先登录!')
     localStorage.removeItem('YFYC_token')
   }
+  if (axajInd === 0) document.querySelector('.loadingApp').style.display = 'none'
   return response.data
 }, function (error) {
+  Toast.fail(error.message);
   // 对响应错误做点什么
   return Promise.reject(error)
 })
 
-export default service
+export default service

+ 1 - 1
yfyc/src/views/Construct/components/search.vue

@@ -46,7 +46,7 @@ export default {
       txt: '',
       data: [
         { id: 1, name: '全部', done: false, children: [{ id: 1001, name: '芜湖老海关' }] },
-        { id: 2, name: '镜湖', done: false, children: [] },
+        { id: 2, name: '镜湖', done: false, children: [{ id: 1001, name: '芜湖老海关' }] },
         { id: 3, name: '鸠江', done: false, children: [] },
         { id: 4, name: '弋江', done: false, children: [] },
         { id: 5, name: '湾沚', done: false, children: [] },

+ 2 - 2
yfyc/src/views/Goods/index.vue

@@ -15,7 +15,7 @@
           />
         </van-swipe-item>
       </van-swipe>
-      <div class="title_rr">
+      <div class="title_rr" v-show="0">
         <div>
           <img src="../../assets/img/goods/inco1.png" alt="" />
           <p>130</p>
@@ -307,7 +307,7 @@ export default {
   methods: {
     toPage(path) {
       if (!path) return Toast("敬请期待!");
-      this.$router.push(item.path);
+      this.$router.push(path);
     },
 
     videoPlayFu() {

+ 142 - 57
yfyc/src/views/Interact/components/InteractIssue.vue

@@ -2,7 +2,11 @@
   <div class="InteractIssue">
     <div class="txt1">
       <div class="txtBs">{{ txt1.length }}/20</div>
-      <van-field v-model="txt1" maxlength="20" placeholder="在此处填写标题" />
+      <van-field
+        v-model.trim="txt1"
+        maxlength="20"
+        placeholder="在此处填写标题"
+      />
     </div>
     <div class="txt2">
       <div class="txtBs">{{ txt2.length }}/500</div>
@@ -30,111 +34,182 @@
       </div>
     </div>
 
-    <div class="imgTit" @click="locationClick">
+    <div class="imgTit" @click="LocationShow = true">
       <div class="rightInco">
         <van-icon name="arrow" />
       </div>
       <img src="../../../assets/img/interact/add.png" alt="" />
-      位:
+      位
     </div>
     <!-- 定位标签 -->
-    <div class="locationBox">
-      <div
-        class="location"
-        v-for="item in locationData"
-        :key="item.id"
-        :class="{ locationAc: location === item.id }"
-        @click="location = item.id"
-      >
-        {{ item.name }}
-      </div>
+    <div class="locationBox" v-show="locationInfo.id">
+      <div class="location locationAc">{{ locationInfo.name }}</div>
     </div>
 
     <!-- 上传图片 -->
     <div class="upFile">
-      <van-uploader accept=".png,.jpg">
-        <div class="upImg"></div>
-      </van-uploader>
+      <div>
+        <input
+          type="file"
+          accept=".png,.jpg,.gif"
+          ref="myInput"
+          @input="handeUpPhoto"
+          v-show="0"
+        />
+        <div
+          class="upImg"
+          @click="$refs.myInput.click()"
+          v-show="imgList.length < 5"
+        ></div>
+      </div>
       <Draggable
         class="moveDraggable"
+        :class="{ moveDraggableAll: imgList.length === 5 }"
         v-model="imgList"
         group="itxst"
         @start="start"
         animation="300"
       >
         <transition-group>
-          <div class="imgRow" v-for="(item, index) in imgList" :key="item.name">
+          <div class="imgRow" v-for="(item, index) in imgList" :key="item.id">
             <img
-              :src="require(`@/assets/img/interact/${item.url}.png`)"
+              :src="baseURL + item.filePath"
               alt=""
-              @click="lookImg"
+              @click="lookImg(baseURL + item.filePath)"
             />
             <!-- 删除 -->
-            <div class="delImg" @click="delImg(item.name)"></div>
+            <div class="delImg" @click="delImg(item.id)"></div>
             <!-- 封面 -->
             <div class="imgCover" v-show="index === 0">封面</div>
           </div>
         </transition-group>
       </Draggable>
     </div>
-    <div class="imgUpTit">可拖动图片调整顺序,首张图将作为封面。</div>
+    <div class="imgUpTit">
+      可拖动图片调整顺序,首张图将作为封面。<br />最大支持5M,最多可上传5张图片。
+    </div>
     <!-- 发布按钮 -->
     <div class="issueBtn" @click="issueDone">发 布</div>
+
+    <!-- 点击定位之后出来的页面 -->
+    <Location
+      v-show="LocationShow"
+      @closeLoc="LocationShow = false"
+      @setLocationInfo="setLocationInfo"
+    />
   </div>
 </template>
 
 <script>
+import { baseURL } from "@/utils/request";
+import {
+  uploadImgAPI,
+  shareSaveAPI,
+  delImgAPI,
+  getDictAPI,
+} from "@/api/interact.js";
+import Location from "./interactLocation.vue";
+import { Toast } from "vant";
 //导入draggable组件
 import Draggable from "vuedraggable";
 import { Dialog, ImagePreview } from "vant";
 export default {
   name: "InteractIssue",
-  components: { Draggable },
+  components: { Draggable, Location },
   data() {
     return {
+      baseURL,
       txt1: "",
       txt2: "",
       topicData: [
-        { id: 1, name: "景点" },
-        { id: 2, name: "美食" },
-        { id: 3, name: "游玩" },
-        { id: 4, name: "酒店" },
+        // { id: 1, name: "景点" },
+        // { id: 2, name: "美食" },
+        // { id: 3, name: "游玩" },
+        // { id: 4, name: "酒店" },
       ],
       topic: 1,
-      locationData: [
-        { id: 1, name: "鸠兹广场" },
-        { id: 2, name: "中江塔" },
-        { id: 3, name: "老海关" },
-        { id: 4, name: "鸠兹古镇" },
-      ],
-      location: 1,
+      locationInfo: {},
+      LocationShow: false,
       // 上传相关
-      imgCover: "",
-      dragging: null,
       imgList: [
-        { name: "1", url: "1" },
-        { name: "2", url: "2" },
-        { name: "3", url: "3" },
+        // {
+        //   id: 65,
+        //   fileName: "22222.jpg",
+        //   filePath: "/comment/img/20221125_1113069452.jpg",
+        // },
       ],
     };
   },
   computed: {},
   watch: {},
   methods: {
-    // 点击定位
-    locationClick(){
-     this.$router.push('/layout/interact/location')
+    // -------------关于上传
+    async handeUpPhoto(e) {
+      if (e.target.files) {
+        // 拿到files信息
+        const filesInfo = e.target.files[0];
+        // 校验格式
+        const type = ["image/jpeg", "image/png", "image/gif"];
+        if (!type.includes(filesInfo.type)) {
+          e.target.value = "";
+          return Toast.fail("只支持jpg、png、gif格式!");
+        }
+        // 校验大小
+        if (filesInfo.size > 5 * 1024 * 1024) {
+          e.target.value = "";
+          return Toast.fail("最大支持5M!");
+        }
+        // 创建FormData对象
+        const fd = new FormData();
+        // 把files添加进FormData对象(‘photo’为后端需要的字段)
+        fd.append("file", filesInfo);
+        fd.append("type", "img");
+        const res = await uploadImgAPI(fd);
+        if (res.code === 0) {
+          Toast.success("上传成功!");
+        } else Toast.fail(res.msg);
+        this.imgList.push(res.data);
+      }
+    },
+
+    // 设置位置
+    setLocationInfo(item) {
+      this.locationInfo = item;
+      this.LocationShow = false;
     },
     // 点击发布
-    issueDone(){
-      console.log('-------发布');
+    async issueDone() {
+      if (this.txt1 === "") return Toast.fail("标题不能为空!");
+      if (this.txt2.replaceAll("\n", "").replaceAll(" ", "") === "")
+        return Toast.fail("正文不能为空!");
+      if (!this.locationInfo.id) return Toast.fail("请选择位置!");
+      if (this.imgList.length === 0) return Toast.fail("至少上传一张图片!");
+      // 图片id数组
+      const imgArr = this.imgList.map((v) => {
+        return v.id;
+      });
+      const obj = {
+        description: this.txt2
+          .replaceAll("\n", "<br/>")
+          .replaceAll(" ", "&ensp;"),
+        positionId: this.locationInfo.id,
+        dictTopicId: this.topic,
+        fileIds: imgArr.join(","),
+        name: this.txt1,
+        thumb: this.imgList[0].filePath,
+      };
+      const res = await shareSaveAPI(obj);
+      if (res.code === 0) {
+        Toast.success("发布成功!");
+        this.$router.push("/layout/interact");
+      } else Toast.fail(res.msg);
     },
     // 拖拽图片
     start(e) {},
     // 查看大图
-    lookImg() {
+    lookImg(url) {
       ImagePreview({
-        images: ["https://img01.yzcdn.cn/vant/apple-1.jpg"],
+        images: [url],
         showIndex: false,
       });
     },
@@ -142,17 +217,23 @@ export default {
     delImg(id) {
       Dialog.confirm({
         title: "确定删除吗?",
-        beforeClose: (action, done) => {
+        beforeClose: async (action, done) => {
           if (action === "confirm") {
+            await delImgAPI(id);
             // 点击了确定
-            this.imgList = this.imgList.filter((v) => v.name !== id);
+            this.imgList = this.imgList.filter((v) => v.id !== id);
+            Toast.success("删除成功!");
           }
           done();
         },
       });
     },
   },
-  created() {},
+  async created() {
+    // 获取话题列表
+    const res = await getDictAPI("topic");
+    this.topicData = res.data;
+  },
   mounted() {},
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前
@@ -277,6 +358,7 @@ export default {
       line-height: 32px;
       margin-right: 16px;
       margin-bottom: 12px;
+      text-align: center;
     }
     .locationAc {
       border: none;
@@ -290,18 +372,21 @@ export default {
     margin: 20px 0 0px;
     display: flex;
     flex-wrap: wrap;
-    /deep/.van-uploader {
-      margin: 0 10px 10px 0;
-    }
+
     .upImg {
       width: 80px;
       height: 80px;
       background-image: url("../../../assets/img/interact/upload.png");
       background-size: 100% 100%;
+      margin-right: 10px;
+      margin-bottom: 10px;
     }
-    .moveDraggable{
+    .moveDraggable {
       width: calc(100% - 90px);
     }
+    .moveDraggableAll {
+      width: 100%;
+    }
     .moveDraggable span {
       display: flex;
       flex-wrap: wrap;
@@ -343,18 +428,18 @@ export default {
       }
     }
   }
-  .imgUpTit{
-    font-size: 14px;
-    color: #A6A6A6;
+  .imgUpTit {
+    font-size: 12px;
+    color: #a6a6a6;
     margin: 10px 0 40px;
   }
-  .issueBtn{
+  .issueBtn {
     width: 80%;
     height: 50px;
     max-width: 300px;
     margin: 0 auto 30px;
     line-height: 50px;
-    background-color: #FF7E89;
+    background-color: #ff7e89;
     border-radius: 25px;
     text-align: center;
     color: #fff;

+ 41 - 25
yfyc/src/views/Interact/components/interactLocation.vue

@@ -1,18 +1,27 @@
 <template>
   <div class="interactLocation">
+    <!-- 关闭按钮 -->
+    <div class="close" @click="$emit('closeLoc')">
+      <van-icon name="cross" />
+    </div>
     <!-- 输入框 -->
-    <div class="inputBox" @keydown.enter="searchFu()">
+    <div class="inputBox" @keydown.enter="searchFu()" v-show="0">
       <div class="searInco" @click="searchFu()">
         <van-icon name="search" />
       </div>
       <van-field maxlength="20" v-model="txt" placeholder="搜索位置" />
     </div>
     <div class="locationBox">
-      <div class="row" v-for="item in locationData" :key="item.id">
-        <h3>{{item.name}}</h3>
+      <div
+        class="row"
+        v-for="item in locationData"
+        :key="item.id"
+        @click="$emit('setLocationInfo', item)"
+      >
+        <h3>{{ item.name }}</h3>
         <div class="row_floo">
-          <div class="row_flooLL">{{item.loc}}</div>
-          <div class="row_flooRR">{{item.num}}</div>
+          <div class="row_flooLL">{{ item.location }}</div>
+          <div class="row_flooRR">{{ item.num }}</div>
         </div>
       </div>
     </div>
@@ -20,23 +29,16 @@
 </template>
 
 <script>
+import { getLoctionAPI } from "@/api/interact.js";
 export default {
   name: "interactLocation",
   components: {},
   data() {
     return {
       txt: "",
-      locationData:[
-        {id:1,name:'芜湖市',loc:'中国安徽省芜湖市',num:''},
-        {id:2,name:'鸠兹广场',loc:'安徽省芜湖市镜湖区滨江路桥口',num:''},
-        {id:3,name:'中江塔',loc:'安徽省芜湖市镜湖区滨江路桥口',num:''},
-        {id:4,name:'方特旅游区',loc:'安徽省芜湖市镜湖区银湖北路80号',num:''},
-        {id:5,name:'芜湖滨江公园',loc:'芜湖市镜湖区新芜路7号',num:''},
-        {id:6,name:'芜湖长江三桥',loc:'安徽省芜湖市',num:''},
-        {id:7,name:'鸠兹古镇',loc:'安徽省芜湖市鸠江区陈棱路与徽州路交汇处西北角',num:''},
-        {id:8,name:'临江桥',loc:'安徽省芜湖市',num:''},
-        {id:9,name:'芜湖大剧院',loc:'安徽芜湖市镜湖区滨江路17号',num:''}
-      ]
+      locationData: [
+        // { id: 1, name: "芜湖市", location: "中国安徽省芜湖市", num: "" },
+      ],
     };
   },
   computed: {},
@@ -44,7 +46,10 @@ export default {
   methods: {
     searchFu() {},
   },
-  created() {},
+  async created() {
+    const res = await getLoctionAPI();
+    this.locationData=res.data
+  },
   mounted() {},
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前
@@ -57,11 +62,22 @@ export default {
 </script>
 <style lang='less' scoped>
 .interactLocation {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 10;
   width: 100%;
   height: 100%;
   padding: 10px 15px 40px;
   overflow-y: auto;
-
+  background-color: #fff;
+  .close {
+    position: absolute;
+    right: 20px;
+    top: 20px;
+    font-size: 24px;
+    color: black;
+  }
   .inputBox {
     margin: 0px auto;
     width: 100%;
@@ -87,27 +103,27 @@ export default {
       height: 30px;
       line-height: 30px;
       padding: 0px 0 0px 36px;
-      background-color: #F9F9F9;
+      background-color: #f9f9f9;
       border-radius: 5px;
     }
   }
-  .locationBox{
+  .locationBox {
     margin-top: 20px;
-    .row{
+    .row {
       padding-bottom: 15px;
-      border-bottom: 1px solid #E5E5E5;
+      border-bottom: 1px solid #e5e5e5;
       padding-top: 15px;
-      &>h3{
+      & > h3 {
         font-size: 16px;
         color: #393939;
       }
-      .row_floo{
+      .row_floo {
         margin: 10px 0 0;
         display: flex;
         justify-content: space-between;
         font-size: 14px;
         color: #868686;
-        .row_flooLL{
+        .row_flooLL {
           max-width: 80%;
         }
       }

+ 43 - 19
yfyc/src/views/Interact/index.vue

@@ -26,12 +26,15 @@
         v-for="item in dataShow"
         :key="item.id"
       >
-        <img :src="require(`@/assets/img/interact/row${item.id}.png`)" alt="" />
+        <img
+          v-lazy="require(`@/assets/img/interact/row${item.id}.png`)"
+          alt=""
+        />
         <div class="name">{{ item.name }}</div>
         <div class="author">
           <div class="author_ll">
             <img src="../../assets/img/interact/user.png" alt="" />
-            <span>{{ item.author }}</span>
+            <p>{{ item.author }}</p>
           </div>
           <div class="author_rr">{{ item.time }}</div>
         </div>
@@ -49,25 +52,23 @@
 </template>
 
 <script>
-import { Toast } from "vant";
-import { getCodeAPI } from "@/api/interact.js";
+import { getCodeAPI, getDictAPI } from "@/api/interact.js";
 export default {
   components: {},
   data() {
     return {
       txt: "",
       bsData: [
-        { id: 1, name: "梦幻游乐王国" },
-        { id: 2, name: "古建筑" },
-        { id: 3, name: "美食" },
-        { id: 4, name: "周边风景游玩" },
-        { id: 5, name: "美景" },
+        // { id: 1, name: "景点" },
+        // { id: 2, name: "美食" },
+        // { id: 3, name: "游玩" },
+        // { id: 4, name: "酒店" },
       ],
       spotData: [
         {
           id: 1,
-          name: "方特梦幻王国万圣夜",
-          author: "王大锤",
+          name: "方特梦幻王国万圣夜方特梦幻王国万圣夜圣夜",
+          author: "王大锤王大锤王大锤王大锤王大锤",
           time: "2022-11-16",
         },
         { id: 2, name: "芜湖老海关", author: "孔连顺", time: "2022-11-16" },
@@ -123,6 +124,10 @@ export default {
 
     this.getList();
 
+    // 获取话题列表
+    const res1 = await getDictAPI("topic");
+    this.bsData = res1.data;
+
     let code = this.getQueryCode();
     if (code) {
       let res = await getCodeAPI(code);
@@ -132,9 +137,11 @@ export default {
           "YFYC_userInfo",
           JSON.stringify({ ...res.data.wxUser, time: Date.now() })
         );
-      } else {
-        Toast.fail("登录失败,请联系管理人员");
+        this.$router.push("/layout/interact/issue");
       }
+      // else {
+      //   Toast.fail("登录失败,请联系管理人员");
+      // }
     }
   },
   mounted() {},
@@ -256,7 +263,6 @@ export default {
       background-color: #f7f8fa;
       border-radius: 4px;
       color: #333333;
-
       &:nth-of-type(2n) {
         margin-right: 0;
       }
@@ -268,28 +274,46 @@ export default {
       }
 
       .name {
-        padding: 10px 10px 5px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+
+        padding: 10px 8px 5px;
         font-size: 14px;
         font-weight: 700;
       }
 
       .author {
-        margin-top: 12px;
-        padding: 0 10px;
+        margin-top: 10px;
+        height: 20px;
+        padding: 0 8px;
         display: flex;
         align-items: center;
         justify-content: space-between;
         font-size: 12px;
 
         .author_ll {
-          vertical-align: middle;
-
+          height: 100%;
+          width: calc(100% - 65px);
+          display: flex;
+          align-items: center;
           & > img {
+            margin-top: -3px;
             margin-right: 5px;
             width: 12px;
             height: 12px;
             border-radius: 50%;
           }
+          p {
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+
+            width: calc(100% - 18px);
+          }
+        }
+        .author_rr {
+          width: 61px;
         }
       }
     }