caichengyu 1 月之前
父节点
当前提交
2f39bb5754

+ 3 - 3
.env.development

@@ -1,12 +1,12 @@
 # 页面标题
-VUE_APP_TITLE =广州市建设工程保险风险管理协会
+VUE_APP_TITLE =广东中正教育科技有限公司
 
 # 开发环境配置
 ENV = 'development'
 
 # 开发环境
-VUE_APP_BASE_API = 'http://192.168.1.121:8033/'
-VUE_APP_IMG_API = 'http://192.168.1.121:8033'
+VUE_APP_BASE_API = 'http://192.168.1.123:6060/'
+VUE_APP_IMG_API = 'https://file-dev.xyyxt.net/'
 # 开发环境-web端地址
 VUE_APP_JUMP = 'http://192.168.20:8084'
 

+ 4 - 4
.env.production

@@ -1,14 +1,14 @@
 # 页面标题
-VUE_APP_TITLE = 广州市建设工程保险风险管理协会
+VUE_APP_TITLE = 广东中正教育科技有限公司
 
 # 生产环境配置
 ENV = 'production'
 
 # 生产环境
-VUE_APP_BASE_API = 'https://api.gzjsfx.com/'
-VUE_APP_IMG_API = 'https://api.gzjsfx.com'
+VUE_APP_BASE_API = 'https://gwapi.gdzzkj.net/'
+VUE_APP_IMG_API = 'https://file.xyyxt.net/'
 # 生产环境-web端地址
-VUE_APP_JUMP = 'https://www.gzjsfx.com'
+VUE_APP_JUMP = 'https://gw.gdzzkj.net'
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

文件差异内容过多而无法显示
+ 0 - 0
dist_backup/index.html


文件差异内容过多而无法显示
+ 0 - 0
dist_backup/js/app~80a7b428.dcb9c58a.js


+ 67 - 69
package-lock.json

@@ -2014,6 +2014,51 @@
           "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
           "dev": true
         },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
         "ssri": {
           "version": "8.0.1",
           "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz",
@@ -2022,6 +2067,28 @@
           "requires": {
             "minipass": "^3.1.1"
           }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "vue-loader-v16": {
+          "version": "npm:vue-loader@16.8.3",
+          "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chalk": "^4.1.0",
+            "hash-sum": "^2.0.0",
+            "loader-utils": "^2.0.0"
+          }
         }
       }
     },
@@ -19708,75 +19775,6 @@
         }
       }
     },
-    "vue-loader-v16": {
-      "version": "npm:vue-loader@16.8.3",
-      "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
-      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "chalk": "^4.1.0",
-        "hash-sum": "^2.0.0",
-        "loader-utils": "^2.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
     "vue-router": {
       "version": "3.6.5",
       "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz",

二进制
public/favicon.ico


+ 62 - 29
src/api/XfWebApi.js

@@ -22,26 +22,24 @@ export default {
     //菜单列表
     XfWebApiGetMenuList(data) {
         return request({
-            url: '/api/XfWebApi/GetMenuList',
+            url: '/api/official/list',
             method: 'get',
             params: data,
-            // noToken: true
-            tokenName
+            noToken: true
         })
     },
     //单个菜单信息
     XfWebApiGetMenuModel(data) {
         return request({
-            url: '/api/XfWebApi/GetMenuModel',
+            url: '/api/official/menu/'+data,
             method: 'get',
-            params: data,
             noToken: true
         })
     },
     //根据当前菜单id获取当前树结构
     XfWebApiGetMenuTreeModel(data) {
         return request({
-            url: '/api/XfWebApi/GetMenuTreeModel',
+            url: '/api/official/lists',
             method: 'get',
             params: data,
             noToken: true
@@ -50,7 +48,7 @@ export default {
     //新闻列表
     XfWebApiGetNewsList(data) {
         return request({
-            url: '/api/XfWebApi/GetNewsList',
+            url: '/api/official/article/list',
             method: 'get',
             params: data,
             tokenName
@@ -59,9 +57,8 @@ export default {
     //新闻详情
     XfWebApiGetNewsDetail(data) {
         return request({
-            url: '/api/XfWebApi/GetNewsDetail',
+            url: '/api/official/article/'+data,
             method: 'get',
-            params: data,
             noToken: true
         })
     },
@@ -77,7 +74,7 @@ export default {
     //获取首页广告轮播Banner列表
     XfWebApiGetBannerList(data) {
         return request({
-            url: '/api/XfWebApi/GetBannerList',
+            url: '/api/official/activity/list',
             method: 'get',
             params: data,
             noToken: true
@@ -86,7 +83,52 @@ export default {
     //获取友情链接列表
     XfWebApiGetWebFriendlinks(data) {
         return request({
-            url: '/api/XfWebApi/GetWebFriendlinks',
+            url: '/api/official/link/list',
+            method: 'get',
+            params: data,
+            noToken: true
+        })
+    },
+    //获取常见问题列表
+    XfWebApiGetproblemlist(data) {
+        return request({
+            url: '/api/official/problem/list',
+            method: 'get',
+            params: data,
+            noToken: true
+        })
+    },
+    //获取云学堂教育类型
+    XfWebApiGetEduBusness(data) {
+        return request({
+            url: '/api/official/edu/list',
+            method: 'get',
+            params: data,
+            noToken: true
+        })
+    },
+    //获取云学堂教育类型-单二级
+    XfWebApiGetEduBusness2(data) {
+        return request({
+            url: '/api/official/business/list',
+            method: 'get',
+            params: data,
+            noToken: true
+        })
+    },
+    //获取云学堂推荐课程
+    XfWebApiGetHotCourseList(data) {
+        return request({
+            url: '/api/official/edu/goods/list',
+            method: 'get',
+            params: data,
+            noToken: true
+        })
+    },
+    //获取云学堂推荐课程--全部
+    XfWebApiGetHotCourseListAll(data) {
+        return request({
+            url: '/api/official/edu/h5/goods/list',
             method: 'get',
             params: data,
             noToken: true
@@ -140,7 +182,7 @@ export default {
     //保存建议留言
     XfWebApiSavePropose(data) {
         return request({
-            url: '/api/XfWebApi/SavePropose',
+            url: '/api/official/suggest',
             method: 'post',
             data: data,
             noToken: true
@@ -193,23 +235,14 @@ export default {
         })
     },
     //新闻详细
-    XfWebApiGetNewsDetail(data) {
-        return request({
-            url: '/api/XfWebApi/GetNewsDetail',
-            method: 'get',
-            params: data,
-            tokenName
-        })
-    },
-    //获取微信jsapi配置
-    XfWebApiGetWxConfig(data) {
-        return request({
-            url: '/api/XfWebApi/GetWxConfig',
-            method: 'get',
-            params: data,
-            noToken: true
-        })
-    },
+    // XfWebApiGetNewsDetail(data) {
+    //     return request({
+    //         url: '/api/XfWebApi/GetNewsDetail',
+    //         method: 'get',
+    //         params: data,
+    //         tokenName
+    //     })
+    // },
      //证书列表
      XfWebApiGetCertList(data) {
         return request({

二进制
src/assets/images/Web1.png


二进制
src/assets/images/logo.png


二进制
src/assets/img2/logo.png


+ 102 - 0
src/components/BottomNav/index.vue

@@ -0,0 +1,102 @@
+<!-- src/components/BottomNav.vue -->
+<template>
+  <el-menu 
+    :default-active="activeMenu"
+    mode="horizontal"
+    class="bottom-nav"
+    @select="handleSelect"
+  >
+    <el-menu-item 
+      v-for="item in navItems" 
+      :key="item.name"
+      :index="item.name"
+    >
+      <i :class="item.icon"></i>
+      <span>{{ item.label }}</span>
+    </el-menu-item>
+  </el-menu>
+</template>
+
+<script>
+export default {
+  name: 'BottomNav',
+  props: {
+    activeMenu: {
+      type: String,
+      default: 'home'
+    }
+  },
+  data() {
+    return {
+      navItems: [
+        { name: 'home', label: '首页', icon: 'el-icon-house', path: '/home' },
+        { name: 'category', label: '新闻资讯', icon: 'el-icon-news', path: '/menuList' },
+        { name: 'course', label: '班级课程', icon: 'el-icon-notebook-1', path: '/cart' },
+        { name: 'mine', label: '会员中心', icon: 'el-icon-user', path: '/mine' }
+      ]
+    }
+  },
+  methods: {
+    handleSelect(index) {
+      const selectedItem = this.navItems.find(item => item.name === index)
+      if (selectedItem) {
+        if(selectedItem.name=='course'){
+          window.open('https://h.xyyxt.net/pages/course/index');
+        }
+        else if(selectedItem.name=='mine'){
+          window.open('https://h.xyyxt.net/pages/wd/index');
+        }
+        else{
+        this.$router.push(selectedItem.path);
+        }
+      }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.bottom-nav {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  display: flex;
+  justify-content: space-around;
+  height: 90px;
+  background-color: #6899e6;
+  border-top: 1px solid #e6e6e6;
+  z-index: 100;
+  color:#fff;
+}
+
+.bottom-nav .el-menu-item {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  height: 100%;
+  line-height: 40px;
+  padding: 0 10px;
+  border-bottom: none !important;
+  color:#fff;
+}
+
+.bottom-nav .el-menu-item i {
+  font-size: 44px !important;
+  margin-bottom: 4rpx;
+  color:#fff;
+}
+
+.bottom-nav .el-menu-item.is-active {
+  color: #f8ff39;
+  background-color: transparent !important;
+  i,span{
+    color: #f8ff39;
+  }
+}
+::v-deep .el-menu--horizontal .el-menu-item{
+  line-height: 25px;
+   color:#fff;
+}
+</style>

+ 4 - 4
src/components/footer/index.vue

@@ -1,10 +1,10 @@
 <template>
   <div class="footer">
     <!--底部-->
-    <p>邮箱:GCIRMA@163.com</p>
-    <p>地址:广州市天河区五山路248号金山大厦北塔701房</p>
-    <p>版权所有:广州市建设工程保险风险管理协会</p>
-    <p>粤ICP备2024229555号-1</p>
+    <p>邮箱:1967054212@qq.com</p>
+    <p>地址:广州市天河区燕岭路123号304室</p>
+    <p>版权所有:广东中正教育科技有限公司</p>
+    <p>粤ICP备18088045号</p>
   </div>
   <!--底部end-->
 </template>

+ 65 - 35
src/components/header/index.vue

@@ -1,7 +1,23 @@
 <template>
   <div id="header" ref="pronbit">
     <div class="fe1">
-      <img src="@/assets/images/Web1.png" alt="" @click="jump('/home')" />
+      <!-- <img src="@/assets/images/Web1.png" alt="" @click="jump('/home')" /> -->
+       <div style="margin: 20px 0px 2px;
+      height: 72px;display:flex;"  @click="jump('/home')" >
+        <img
+        class="logo" style="height: 36px;"
+        src="@/assets/images/Web1.png"
+        alt="" 
+      />
+      <div style=" width: 100%;">
+      <h1 style="text-align: left;
+    color: white;
+    font-size: 20px;
+    padding: 0px 5px;">
+        广东中正教育科技有限公司
+      </h1>
+      <p style="color: white;font-size: 9px;">Guangdong Zhongzheng Education Technology Co., Ltd</p>
+    </div></div>
       <div class="bottom">
         <div class="rights">
           <input
@@ -19,9 +35,23 @@
     </div>
     <van-popup v-model="show" position="left">
       <div class="box_nav">
-        <div class="imgs">
-          <img src="@/assets/images/logo@2x.png" alt="" />
-        </div>
+        <div style="margin: 10px 0px 2px 5px;
+      display:flex;"  @click="jump('/home')" >
+        <img
+        class="logo" style="height: 36px;"
+        @click="$router.replace('/')"
+        src="@/assets/images/Web1.png"
+        alt=""
+      />
+      <div style=" width: 100%;">
+      <h1 style="text-align: left;
+    color: #1d3966;
+    font-size: 15px;
+    padding: 0px 5px;">
+        广东中正教育科技有限公司
+      </h1>
+      <p style="color: #1d3966;font-size: 8px;">Guangdong Zhongzheng Education Technology Co., Ltd</p>
+    </div></div>
         <el-menu
           unique-opened
           :default-active="activeIndex"
@@ -35,62 +65,60 @@
         >
           <template v-for="(item, index) in $store.state.asyncRouter">
             <el-menu-item
-              v-if="!item.ChildList || item.ChildList.length <= 0"
+              v-if="!item.childList || item.childList.length <= 0"
               :index="
-                item.MenuId === 1
+                item.name === '首页'
                   ? 'home'
-                  : item.WebUrl
+                  : item.webUrl
                   ? null
-                  : `menuList?ParentId=${item.ParentId}&MenuId=${item.MenuId}`
+                  : `menuList?parentId=${item.parentId}&menuId=${item.menuId}`
               "
               ><a
-                v-if="item.WebUrl && item.MenuId !== 1"
-                :href="item.WebUrl"
-                target="_blank"
+                v-if="item.webUrl && item.name !== '首页'"
+                :href="item.webUrl"
                 style="color: rgb(0, 0, 0); display: block"
-                >{{ item.Name }}</a
-              ><span v-else>{{ item.Name }}</span></el-menu-item
+                >{{ item.name }}</a
+              ><span v-else>{{ item.name }}</span></el-menu-item
             >
             <el-submenu
               v-else
-              :index="`menuList?ParentId=${item.ParentId}&MenuId=${item.MenuId}`"
+              :index="`menuList?parentId=${item.parentId}&menuId=${item.menuId}`"
             >
-              <template slot="title">{{ item.Name }}</template>
-              <template v-for="(items, indexs) in item.ChildList">
+              <template slot="title">{{ item.name }}</template>
+              <template v-for="(items, indexs) in item.childList">
                 <el-menu-item
-                  v-if="items.Type === 2"
+                  v-if="items.type === 2"
                   :key="indexs"
                   :index="
-                    items.WebUrl
+                    items.webUrl
                       ? null
-                      : `menuList?ParentId=${items.ParentId}&MenuId=${items.MenuId}`
+                      : `menuList?parentId=${items.parentId}&menuId=${items.menuId}`
                   "
                   ><a
-                    v-if="items.WebUrl"
-                    :href="items.WebUrl"
-                    target="_blank"
+                    v-if="items.webUrl"
+                    :href="items.webUrl"
                     style="color: rgb(0, 0, 0);display: block"
-                    >{{ items.Name }}</a
-                  ><span v-else>{{ items.Name }}</span></el-menu-item
+                    >{{ items.name }}</a
+                  ><span v-else>{{ items.name }}</span></el-menu-item
                 ><el-submenu
                   v-else
-                  :index="`menuList?ParentId=${items.ParentId}&MenuId=${items.MenuId}`"
+                  :index="`menuList?parentId=${items.parentId}&menuId=${items.menuId}`"
                 >
-                  <template slot="title">{{ items.Name }}</template>
-                  <template v-for="(itemsxt, indexsxt) in items.ChildList">
+                  <template slot="title">{{ items.name }}</template>
+                  <template v-for="(itemsxt, indexsxt) in items.childList">
                     <el-menu-item
                       :index="
-                        itemsxt.WebUrl
+                        itemsxt.webUrl
                           ? null
-                          : `menuList?ParentId=${itemsxt.ParentId}&MenuId=${itemsxt.MenuId}`
+                          : `menuList?parentId=${itemsxt.parentId}&menuId=${itemsxt.menuId}`
                       "
                       ><a
-                        v-if="itemsxt.WebUrl"
-                        :href="itemsxt.WebUrl"
+                        v-if="itemsxt.webUrl"
+                        :href="itemsxt.webUrl"
                         target="_blank"
                         style="color: rgb(0, 0, 0); display: block"
-                        >{{ itemsxt.Name }}</a
-                      ><span v-else>{{ itemsxt.Name }}</span></el-menu-item
+                        >{{ itemsxt.name }}</a
+                      ><span v-else>{{ itemsxt.name }}</span></el-menu-item
                     >
                   </template>
                 </el-submenu>
@@ -104,11 +132,11 @@
           <!-- <el-button type="text" @click="certsel">证书查询</el-button> -->
           <el-button type="text" @click="openSuggestion">网站建议</el-button>
           <br />
-          <template v-if="$store.state.token">
+          <!-- <template v-if="$store.state.token">
             <el-button type="text" @click="openVip">会员中心</el-button>
             <el-button type="text" @click="outLogin">退出</el-button>
           </template>
-          <el-button v-else type="text" @click="login">会员入口</el-button>
+          <el-button v-else type="text" @click="login">会员入口</el-button> -->
         </div>
       </div>
     </van-popup>
@@ -330,7 +358,9 @@ export default {
 }
 .box_nav {
   min-width: 70vw;
+  max-width: 100px;
   height: 100vh;
+  
   background-color: #fff;
   border-top-right-radius: 40%;
   border-bottom-right-radius: 40px;

+ 7 - 7
src/components/suggestion/index.vue

@@ -17,19 +17,19 @@
       >
         <el-row>
           <el-col :span="24"
-            ><el-form-item label="联系电话" prop="Mobile">
+            ><el-form-item label="联系电话" prop="phone">
               <el-input
                 clearable
-                v-model.trim="ruleForm.Mobile"
+                v-model.trim="ruleForm.phone"
               ></el-input> </el-form-item
           ></el-col>
 
           <el-col :span="24"
-            ><el-form-item label="建议留言" prop="ProposeContent">
+            ><el-form-item label="建议留言" prop="content">
               <el-input
                 type="textarea"
                 clearable
-                v-model.trim="ruleForm.ProposeContent"
+                v-model.trim="ruleForm.content"
               ></el-input> </el-form-item
           ></el-col>
         </el-row>
@@ -69,12 +69,12 @@ export default {
     };
     return {
       loading: false,
-      ruleForm: { Mobile: "", ProposeContent: "" },
+      ruleForm: { phone: "", content: "" },
       rules: {
-        Mobile: [
+        phone: [
           { required: true, validator: validatorphone, trigger: "blur" },
         ],
-        ProposeContent: [
+        content: [
           { required: true, message: "请输入建议留言", trigger: "blur" },
         ],
       },

+ 41 - 4
src/layout/index.vue

@@ -1,22 +1,48 @@
 <template>
-  <div class="layoutBox">
+  <div class="layoutBox app-container">
+     <!-- 主要内容区 -->
+    <div class="main-content">
     <Header></Header>
     <keep-alive include="searchKey,home">
       <router-view style="flex: 1"
     /></keep-alive>
     <Footer></Footer>
+    </div>
+    <!-- 底部导航 -->
+    <bottom-nav :active-menu="activeMenu"></bottom-nav>
   </div>
 </template>
 
 <script>
 import Header from "@/components/header/index";
 import Footer from "@/components/footer/index";
+import BottomNav from "@/components/BottomNav/index";
 export default {
-  components: { Header, Footer },
+  components: { Header, Footer,BottomNav },
   data() {
-    return {};
+    return {
+      activeMenu: 'home'
+    };
+  },
+  watch: {
+    // 根据路由变化自动更新activeTab
+    '$route'(to) {
+      // 根据路由变化更新activeMenu
+      this.updateActiveMenu(to.path)
+    }
+  },
+   created() {
+    this.updateActiveMenu(this.$route.path)
+  },
+  methods: {
+     updateActiveMenu(path) {
+      const matchedItem = this.$refs.bottomNav?.navItems.find(item => 
+        item.path === path || path.startsWith(item.path + '/'))
+      if (matchedItem) {
+        this.activeMenu = matchedItem.name
+      }
+    }
   },
-  methods: {},
 };
 </script>
 
@@ -26,4 +52,15 @@ export default {
   display: flex;
   flex-direction: column;
 }
+.app-container {
+  display: flex;
+  flex-direction: column;
+  height: 100vh;
+}
+
+.main-content {
+  flex: 1;
+  overflow-y: auto;
+  padding-bottom: 80px; /* 为底部导航留出空间 */
+}
 </style>

+ 1 - 1
src/router/index.js

@@ -27,7 +27,7 @@ const routes = [
       {
         path: 'menuList',
         component: () => import('@/views/menuList/index'),
-        meta: { title: '广州市建设工程保险风险管理协会', icon: '', affix: true }
+        meta: { title: '广东中正教育科技有限公司', icon: '', affix: true }
       },
       {
         path: 'info',

+ 46 - 28
src/store/index.js

@@ -18,6 +18,8 @@ export default new Vuex.Store({
     TypeList: null,//分类列表
     CompanyType: null,//单位归类
     MemberLevel: null,//会员级别
+    EduBusinessL: null,//课程导航-多级
+    EduBusinessL2:null,//课程导航-单二级
     num: null,//当前第几位阅读人员
     isDesktop: !navigator.userAgent.match(
       /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i
@@ -26,57 +28,73 @@ export default new Vuex.Store({
   getters: {
     CompanyType: (state) => {
       if (!state.CompanyType) {
-        api.XfWebApiGetTypeList({ type: 1 }).then((res) => {
-          state.CompanyType = res.Data || [];
-          console.log("CompanyType", res.Data)
-        });
+        // api.XfWebApiGetTypeList({ type: 1 }).then((res) => {
+        //   state.CompanyType = res.Data || [];
+        //   console.log("CompanyType", res.Data)
+        // });
       }
       return state.CompanyType
     },
     MemberLevel: (state) => {
       if (!state.MemberLevel) {
-        api.XfWebApiGetTypeList({ type: 2 }).then((res) => {
-          state.MemberLevel = res.Data || [];
-          console.log("MemberLevel", res.Data)
-        });
+        // api.XfWebApiGetTypeList({ type: 2 }).then((res) => {
+        //   state.MemberLevel = res.Data || [];
+        //   console.log("MemberLevel", res.Data)
+        // });
       }
       return state.MemberLevel
     },
     roleList: (state) => {
       if (!state.roleList) {
-        api.XfSystemApiGetRoleList({ pageindex: 1, pagesize: 999 })
+     api.XfSystemApiGetRoleList({ pageNum: 1, pageSize: 999 })
           .then((res) => {
-            state.roleList = res.Data.List || [];
+            state.roleList = res.rows || [];
           });
       }
       return state.roleList
     },
     roleList: (state) => {
       if (!state.roleList) {
-        api.XfSystemApiGetRoleList({ pageindex: 1, pagesize: 999 })
+        api.XfSystemApiGetRoleList({ pageNum: 1, pageSize: 999 })
           .then((res) => {
-            state.roleList = res.Data.List || [];
+            state.roleList = res.rows || [];
           });
       }
       return state.roleList
     },
     MenuList: (state) => {
       if (!state.MenuList) {
-        api.XfSysBussinessGetMenuList({ pageindex: 1, pagesize: 999 })
-          .then((res) => {
-            state.MenuList = res.Data || [];
-          });
+         api.XfSysBussinessGetMenuList({pageNum: 1, pageSize: 999 })
+            .then((res) => {
+              state.MenuList2 = res.rows || [];
+            });
       }
       return state.MenuList
     },
     TypeList: (state) => {
       if (!state.TypeList) {
-        api.XfSysBussinessGetTypeList({ type: 3, pageindex: 1, pagesize: 999 })
-          .then((res) => {
-            state.TypeList = res.Data || [];
-          });
+        // api.XfSysBussinessGetTypeList({ type: 3, pageindex: 1, pagesize: 999 })
+        //   .then((res) => {
+        //     state.TypeList = res.Data || [];
+        //   });
       }
       return state.TypeList
+    },
+    EduBusinessL: (state) => {
+      if (!state.EduBusinessL) {
+         api.XfWebApiGetEduBusness().then((res) => {
+        state.EduBusinessL = res.data || [];
+      });
+      }
+      return state.EduBusinessL
+    },
+    EduBusinessL2: (state) => {
+      if (!state.EduBusinessL2) {
+         api.XfWebApiGetEduBusness2().then((res) => {
+        state.EduBusinessL2 = res.data || [];
+      });
+      }
+      return state.EduBusinessL
     }
 
   },
@@ -137,8 +155,8 @@ export default new Vuex.Store({
     // 生成路由
     GenerateRoutes({ commit }) {
       return new Promise((resolve, reject) => {
-        api.XfWebApiGetMenuList({ parentid: -1 }).then((res) => {
-          const asyncRouter = addRouter(res.Data, "MenuId", "ParentId", "ChildList");
+        api.XfWebApiGetMenuList({ }).then((res) => {
+          const asyncRouter = addRouter(res.data, "menuId", "parentId", "childList");
           commit('SET_AsyncRouter', asyncRouter)
           resolve(asyncRouter)
         }).catch(() => {
@@ -171,22 +189,22 @@ function routerJG(data) {
   }
   var array = data.map(item => {
     var e = toLowerCaseFunc(item)
-    if (e.menuType === 1 || e.menuType === 2) {
+    if (e.type === 1 || e.type === 2) {
       e.meta = {
-        title: e.menuname,
+        title: e.name,
         icon: e.icon
       }
-      delete e.menuname
+      delete e.name
       delete e.icon
-      if (e.menuType === 1) {
+      if (e.type === 1) {
         e.component = ParentView
       }
-      if (e.menuType === 2) {
+      if (e.type === 2) {
         e.component = loadView(e.component)
       }
       if (e.children.length > 0) {
         var newChildren = e.children.filter(ix => {
-          return ix.MenuType !== 3
+          return ix.type !== 3
         })
         e.children = routerJG(newChildren)
       }

+ 207 - 58
src/views/home/index.vue

@@ -5,18 +5,55 @@
       <van-swipe-item v-for="(item, index) in BannerList1" :key="index"
         ><div class="swipe_box">
           <img
-            :src="$methods.splitImgHost(item.ImageUrl)"
+            :src="$methods.splitImgHost(item.imageUrl)"
             alt=""
-            @click="jumpUrl(item.JumpUrl)"
+            @click="jumpUrl(item.jumpUrl)"
           />
           <p class="title">
-            <span class="tit">{{ item.Title }}</span
-            ><span class="time">{{ $methods.onlyFormaHao(item.CreateTime, false) }}</span>
+            <span class="tit">{{ item.title }}</span
+            ><span class="time">{{ $methods.onlyForma(item.createTime, false) }}</span>
           </p>
         </div></van-swipe-item
       >
     </van-swipe>
-    <tab />
+    <van-swipe class="my-swipe2" indicator-color="white" :autoplay="10000">
+      <van-swipe-item v-for="(item, index) in smallBoxSwipe" :key="index"
+        ><div class="swipe_boxs">
+           <div class="grid_style">
+        <div
+          class="li"
+          v-for="(item2, index2) in item.childList"
+          :key="index2"
+          @click="jumpUrl(item2.jumpUrl)"
+        >
+          <img :src="item2.remark" alt="" />
+          <span class="title">{{ item2.aliasName+item2.educationName }}</span>
+        </div>
+      </div>
+          </div
+      ></van-swipe-item>
+    </van-swipe>
+   <div style="background:#fff;padding-bottom:55px;">
+                    <div class="course2">
+                        <div class="text_title2">
+                            <div class="mline"></div><span class="mname">热门课程</span>
+                            <div class="mline"></div>
+                        </div>
+                        <div class="note_b">
+                          <template>
+                                <a class="notelist" v-for="(item, index) in hotList" :key="index" @click="jumpUrl(item.jumpUrl)">
+                                    <img class="classimg" :src="$methods.splitImgHost(item.overUrl)">
+                                    <div class="classmoney">
+                                        ¥{{item.standPrice}}
+                                    </div>
+                                    <div class="classname">{{item.goodsName}}</div>
+                                </a>
+                          </template>
+
+                        </div>
+                    </div>
+                </div>
+    <!-- <tab /> -->
     <div class="li_box" v-if="false">
       <h4>最新消息</h4>
       <van-empty description="暂无最新消息" v-if="tableData.length == 0" />
@@ -27,10 +64,10 @@
           :key="index"
           @click="jumpInfo(item)"
         >
-          <h5 class="title">{{ item.Title }}</h5>
+          <h5 class="title">{{ item.title }}</h5>
           <div class="footer">
             <span class="time">
-              {{ $methods.onlyFormaHao(item.CreateTime, false) }}</span
+              {{ $methods.onlyFormaHao(item.createTime, false) }}</span
             >
             <span class="jump">查看详情</span>
           </div>
@@ -41,9 +78,9 @@
           <van-swipe-item v-for="(item, index) in BannerList2" :key="index"
             ><div class="swipe_boxs">
               <img
-                :src="$methods.splitImgHost(item.ImageUrl)"
+                :src="$methods.splitImgHost(item.imageUrl)"
                 alt=""
-                @click="jumpUrl(item.JumpUrl)"
+                @click="jumpUrl(item.jumpUrl)"
               /></div
           ></van-swipe-item>
         </van-swipe>
@@ -65,33 +102,7 @@
         </div>
       </div>
     </div>
-    <div class="li_box" v-if="false">
-      <h4>会员天地</h4>
-      <van-empty description="暂无数据" v-if="list4.length == 0" />
-      <div class="vip_style" v-else>
-        <div class="li" v-for="(item, index) in list4" :key="index">
-          <img
-            :src="$methods.splitImgHost(item.NewsImg)"
-            @click="jumpInfo(item)"
-          />
-        </div>
-      </div>
-    </div>
-    <div class="li_box" v-if="false">
-      <h4>优秀案例</h4>
-      <van-empty description="暂无数据" v-if="list5.length == 0" />
-      <div class="newMsg" v-else>
-        <div
-          class="yxal_li"
-          v-for="(item, index) in list5"
-          :key="index"
-          @click="jumpInfo(item)"
-        >
-          <img :src="$methods.splitImgHost(item.NewsImg)" alt="" />
-          <p>{{ item.Title }}</p>
-        </div>
-      </div>
-    </div>
+   
     <div class="li_box" v-if="false">
       <h4>友情链接</h4>
       <p
@@ -100,7 +111,7 @@
         :key="index"
         @click="jumpWL(item)"
       >
-        {{ item.Title }}
+        {{ item.title }}
       </p>
     </div>
     <membership :dialogVisible.sync="dialogVisibleMembership" />
@@ -108,18 +119,20 @@
 </template>
 
 <script>
+import { mapGetters } from "vuex";
 import membership from "@/components/membership/index.vue";
-import tab from "./tab.vue";
+// import tab from "./tab.vue";
+// import tab from "./tab.vue";
 export default {
   name: "home",
-  components: { tab, membership },
+  components: { membership },
   data() {
     return {
       dialogVisibleMembership: false,
       smallBoxList: [
         {
           img: require("@/assets/images/icon_入会申请@2x.png"),
-          label: "入会申请",
+          label: "入会申请大撒大撒的撒大",
         },
         {
           img: require("@/assets/images/icon_专家智库@2x.png"),
@@ -141,7 +154,17 @@ export default {
           img: require("@/assets/images/icon_行业统计@2x.png"),
           label: "行业统计",
         },
+        {
+          img: require("@/assets/images/icon_hytd@2x.png"),
+          label: "信用管理",
+        },
+        {
+          img: require("@/assets/images/icon_zjzk@2x.png"),
+          label: "行业统计",
+        },
       ],
+      smallBoxListShow:[],
+      smallBoxSwipe:[],
       //--------------------------------
       total4: 0,
       total5: 0,
@@ -159,8 +182,10 @@ export default {
       BannerList1: [], //Banner1列表
       BannerList2: [], //Banner2列表
       tableData: [], //最新3条文章
+hotList:[]
     };
   },
+  computed: { ...mapGetters(["EduBusinessL2"]) },
   created() {
     this.getInit();
   },
@@ -168,8 +193,29 @@ export default {
     getInit() {
       // this.getNewPositionList(); // 首页通告等
       this.getBannerList(); // 获取首页广告轮播Banner列表
+      this.getEduList();
+      this.gethotList();
       // this.getWebFriendlinks(); // 获取友情链接列表
       // this.newList(); //获取最新3条文章
+    },
+     getEduList() {
+      this.$api.XfWebApiGetEduBusness2().then((res) => {
+        var index=-1;
+    for(var i=0;i<res.data.length;i++){
+      res.data[i].remark=this.smallBoxList[i%8].img;
+      if(i%8==0){
+        index++;
+        this.smallBoxSwipe.push({id:index,childList:[]});
+      }
+        this.smallBoxSwipe[index].childList.push(res.data[i]);
+    }
+        // this.EduBusinessL2 = res.data || [];
+      });
+    },
+     gethotList() {
+      this.$api.XfWebApiGetHotCourseListAll().then((res) => {
+        this.hotList = res.data || [];
+      });
     },
     // 首页通告等
     getNewPositionList() {
@@ -211,14 +257,14 @@ export default {
     // 获取首页广告轮播Banner列表
     getBannerList() {
       //type:1首页2新闻3飘窗广告
-      this.$api.XfWebApiGetBannerList({ type: 2 }).then((res) => {
-        this.BannerList1 = res.Data || [];
+      this.$api.XfWebApiGetBannerList({ type: 1 }).then((res) => {
+        this.BannerList1 = res.data || [];
       });
     },
     // 获取友情链接列表
     getWebFriendlinks() {
       this.$api.XfWebApiGetWebFriendlinks().then((res) => {
-        this.lists = res.Data;
+        this.lists = res.data;
       });
     },
     //友情链接跳转
@@ -231,18 +277,18 @@ export default {
       this.$router.push({
         path: "info",
         query: {
-          MenuId: e.MenuId,
-          NewsId: e.NewsId,
+          MenuId: e.menuId,
+          articleId: e.articleId,
         },
       });
     },
     jumpPage(e) {
       this.$api
-        .XfWebApiGetMenuModel({ menuid: 0, label: e.label })
+        .XfWebApiGetMenuModel({ menuId: 0, label: e.label })
         .then((res) => {
           if (res.Data) {
             this.$router.push({
-              path: `menuList?ParentId=${res.Data.ParentId}&MenuId=${res.Data.MenuId}`,
+              path: `menuList?parentId=${res.data.parentId}&menuId=${res.data.menuId}`,
             });
             return;
           } else {
@@ -265,7 +311,7 @@ export default {
 .swipe_box {
   position: relative;
   width: 100%;
-  height: 380px;
+  height: 350px;
   & > img {
     width: 100%;
     height: 100%;
@@ -275,8 +321,8 @@ export default {
     bottom: 0px;
     left: 0px;
     right: 0px;
-    height: 80px;
-    line-height: 80px;
+    height: 60px;
+    line-height: 60px;
     font-size: 28px;
     padding: 0px 20px;
     color: #fff;
@@ -397,7 +443,7 @@ export default {
   }
 }
 .grid_style {
-  padding: 0px 48px;
+  // padding: 0px 48px;
   display: flex;
   flex-wrap: wrap;
   & > .li {
@@ -405,20 +451,24 @@ export default {
     flex-direction: column;
     align-items: center;
     justify-content: center;
-    height: 230px;
-    width: 30%;
-    background-color: #f5f6f8;
+    // height: 230px;
+    width: 25%;
+    // background-color: #f5f6f8;
     border-radius: 16px;
-    margin-right: 3.3%;
-    margin-bottom: 3.3%;
+       padding-right: 3px;
+    padding-bottom: 3px;
+    padding-left: 3px;
     & > img {
       width: 88px;
       height: 88px;
-      margin-bottom: 20px;
     }
     & > .title {
-      font-size: 32px;
+      font-size: 24px;
       color: #222;
+      width: 120px;
+overflow: hidden;
+text-overflow: ellipsis;
+white-space: nowrap;
     }
   }
 }
@@ -441,4 +491,103 @@ export default {
     }
   }
 }
+.my-swipe2 {
+      border-radius: 16px;
+      overflow: hidden;
+margin-top:15px ;
+    .swipe_boxs {
+      width: 100%;
+      height: 250px;
+      & > img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    }
+
+  .course2 {
+            display: block;
+            float: left;
+            width: 100%;
+            background: #fff;
+            /*border-top: 1px #eae6e6 solid;*/
+            margin-top:30px ;
+        }
+
+        .text_title2 {
+            padding: 15px 15% 20px 15%;
+            height: 10px;
+            display: flex;
+            width: 100%;
+            font-size: 25px;
+            font-weight: 600;
+        }
+
+        .mname {
+            width: 33.3%;
+            text-align: center;
+        }
+
+        .mline {
+            width: 33.3%;
+            height: 1px;
+            margin: 10px;
+            padding: 0 2px 0 2px;
+            overflow: hidden;
+            background: #e5e5e5;
+            display: inline-flex;
+        }
+
+        .text_title {
+            background: #fff;
+        }
+
+        .note_b {
+            background-color: #f8f8f8;
+            margin: 0 7px 15px 7px;
+        }
+
+        .notelist {
+            background-color: #fff;
+            width: 50%;
+            padding: 2% 2% 0 2%;
+            float: left;
+            color: #232326;
+        }
+
+        .classimg {
+            height: 180px;
+            width: 100%;
+        }
+
+        .classname {
+            font-size: 22px;
+            padding: 0 2px 0 2px;
+            height: 83px;
+            word-break: break-all; /*允许在单词内换行*/
+            text-align: left;
+            text-overflow: -o-ellipsis-lastline; /*css3中webkit内核提供的一个方法类似ellipsis*/
+            overflow: hidden;
+            text-overflow: ellipsis;
+            display: -webkit-box; /*自适应盒子*/
+            -webkit-line-clamp: 2; /*此处为两行*/
+            -webkit-box-orient: vertical;
+        }
+
+        .classmoney {
+            font-size: 24px;
+            padding: 0px 0 0px 5px;
+            color: #AB1C1D;
+            font-weight: bold;
+            width: 50%;
+            /*float: left;*/
+        }
+
+        .classbuy {
+            float: right;
+            border: 1px red solid;
+            color: red;
+            padding: 0 10px 0px 5px;
+            vertical-align: middle;
+        }
 </style>

+ 31 - 30
src/views/info/index.vue

@@ -1,31 +1,31 @@
 <template>
   <div id="info">
     <div class="headerBox">
-      <h2>{{ infoData.Title }}</h2>
+      <h2>{{ infoData.title }}</h2>
       <div class="time">
-        发布时间:{{ $methods.onlyFormaHao(infoData.CreateTime) }}
+        发布时间:{{ $methods.onlyFormaHao(infoData.createTime) }}
       </div>
       <div class="share">
         <span>分享:</span>
         <share :config="config">分享</share>
       </div>
     </div>
-    <van-empty description="暂无数据" v-if="!infoData.NewContent" />
+    <van-empty description="暂无数据" v-if="!infoData.content" />
     <van-empty :description="msgStatus" v-else-if="msgStatus" />
     <div
       v-else
       class="ql-editor html_content"
       style="white-space: pre-wrap; height: auto;padding-bottom: 30px;"
-      v-html="infoData.NewContent"
+      v-html="infoData.content"
     ></div>
-    <div class="last_next" v-if="last || next">
+    <!-- <div class="last_next" v-if="last || next">
       <p v-if="last" @click="jumpInfo(last)">
-        <span>上一篇</span><span>{{ last.Title }}</span>
+        <span>上一篇</span><span>{{ last.title }}</span>
       </p>
       <p v-if="next" @click="jumpInfo(next)">
-        <span>下一篇</span><span>{{ next.Title }}</span>
+        <span>下一篇</span><span>{{ next.title }}</span>
       </p>
-    </div>
+    </div> -->
   </div>
 </template>
 
@@ -34,6 +34,7 @@ import "quill/dist/quill.core.css";
 import Share from "vue-social-share";
 import "@/assets/css/client.css";
 import { wxShowMenu } from "../../utils/wx";
+import { request } from "../../utils/request.js";
 	
 export default {
   components: { Share },
@@ -52,7 +53,7 @@ export default {
         image: "", // 图片, 默认取网页中第一个img标签
         sites: ["wechat", "qq", "qzone", "weibo"], // 启用的站点
         // disabled: ["google", "facebook", "twitter"], // 禁用的站点
-        wechatQrcodeTitle: "微信扫一扫:分享", // 微信二维码提示文字
+        wechatQrcodetitle: "微信扫一扫:分享", // 微信二维码提示文字
         wechatQrcodeHelper:
           "<p>微信里点“发现”,扫一下</p><p>二维码便可将本文分享至朋友圈。</p>",
       },
@@ -62,8 +63,8 @@ export default {
     $route: {
       handler: function (val, oldVal) {
         this.routerData = {
-          MenuId: val.query.MenuId,
-          NewsId: val.query.NewsId,
+          menuId: val.query.menuId,
+          articleId: val.query.articleId,
         };
         this.init();
       },
@@ -79,23 +80,23 @@ export default {
     }, 
     getInfo() {
       this.$api
-        .XfWebApiGetNewsDetail({ newsid: this.routerData.NewsId })
+        .XfWebApiGetNewsDetail(this.routerData.articleId)
         .then((res) => {
-          this.infoData = res.Data;
-          if (res.Data.AboutList && res.Data.AboutList.length > 0) {
-            this.last =
-              res.Data.AboutList.find((i) => i.SortNumber == 1) || null;
-            this.next =
-              res.Data.AboutList.find((i) => i.SortNumber == 0) || null;
-          }
-          this.setBrowserTitle();
-          if (this.infoData.Status == 0) {
+            this.infoData = res.data;
+          // if (res.Data.AboutList && res.Data.AboutList.length > 0) {
+          //   this.last =
+          //     res.Data.AboutList.find((i) => i.SortNumber == 1) || null;
+          //   this.next =
+          //     res.Data.AboutList.find((i) => i.SortNumber == 0) || null;
+          // }
+          this.setBrowsertitle();
+          if (this.infoData.status == 0) {
             this.msgStatus = "文章已关闭";
           }
-          else if (this.infoData.Status == 2) {
+          else if (this.infoData.status == 2) {
             this.msgStatus = "文章审核不通过";
           }
-          else  if (this.infoData.Status == 3) {
+          else  if (this.infoData.status == 3) {
             this.msgStatus = "文章审核中";
           }
           else{
@@ -107,8 +108,8 @@ export default {
       this.$router.push({
         path: "info",
         query: {
-          MenuId: e.MenuId,
-          NewsId: e.NewsId,
+          menuId: e.menuId,
+          articleId: e.articleId,
         },
       });
       document.documentElement.scrollTop = 0;
@@ -122,19 +123,19 @@ export default {
       }
       var data=this.infoData;
       var vm = this;
-      var imgUrl="https://sj.gzjsfx.com/img2/xh.cdd2de7c.png";
+      var imgUrl=request.BASE_URL+ "/img2/logo.png";
       if(data.ImageUrl){
        // imgUrl= data.ImageUrl;
       }
       var cururl=window.location.href;
-      var textContent = data.NewContent.replace(/<[^>]*>/g, '');
+      var textContent = data.content.replace(/<[^>]*>/g, '');
       textContent = textContent.replace(/[ | ]*\n/g,'\n'); //去除行尾空白
       textContent=textContent.replace(/&nbsp;/ig,'');//去掉&nbsp;
       //console.log(textContent);
       var shareData = {
         imgUrl: this.$methods.splitImgHost(imgUrl), //域名在白名单中
         timeLineLink:cururl,//域名在白名单中
-        tTitle: data.Title,
+        ttitle: data.title,
         tContent: textContent,
         cururl:encodeURIComponent(cururl)
       };
@@ -149,8 +150,8 @@ export default {
         }
       );
     },
-    setBrowserTitle() {
-      document.title = this.infoData.Title; // 设置浏览器标题
+    setBrowsertitle() {
+      document.title = this.infoData.title; // 设置浏览器标题
     },
 
   },

+ 49 - 20
src/views/menuList/index.vue

@@ -1,12 +1,12 @@
 <template>
   <div id="">
-    <h3 class="h3_title">{{ menuData.Name }}</h3>
-    <el-main v-loading="loading" v-if="menuData.ShowType == 1">
+    <h3 class="h3_title">{{ menuData.name }}</h3>
+    <el-main v-loading="loading" v-if="menuData.showType == 1">
       <div
         v-if="listData.length > 0"
         class="ql-editor html_content"
         style="white-space: pre-wrap"
-        v-html="listData[0].NewContent"
+        v-html="listData[0].content"
       ></div>
       <van-empty description="暂无数据" v-else />
     </el-main>
@@ -19,17 +19,17 @@
         @click="jumpInfo(item)"
       >
         <i></i>
-        <div class="title">{{ item.Title }}</div>
+        <div class="title">{{ item.title }}</div>
         <span class="time">{{
-          $methods.onlyFormaHao(item.CreateTime, false)
+          $methods.onlyForma(item.createTime, false)
         }}</span>
       </div>
       <div style="text-align: center" v-if="listData.length > 0">
         <el-pagination
           class="paginations"
           @current-change="handleCurrentChange"
-          :current-page.sync="formData.pageindex"
-          :page-size="formData.pagesize"
+          :current-page.sync="formData.pageNum"
+          :page-size="formData.pageSize"
           layout="total, prev, pager, next"
           :total="total"
         >
@@ -56,11 +56,19 @@ export default {
     $route: {
       handler: function (val, oldVal) {
         this.changeRouterData();
+        if(val.query.menuId){
         this.formData = {
-          pageindex: 1,
-          pagesize: 8,
-          pid: val.query.MenuId,
+          pageNum: 1,
+          pageSize: 8,
+          menuId: val.query.menuId??0,
         };
+      }
+      else{
+         this.formData = {
+          pageNum: 1,
+          pageSize: 8,
+        };
+      }
         this.init();
       },
       // 深度观察监听
@@ -70,27 +78,48 @@ export default {
   },
   methods: {
     handleCurrentChange(e) {
-      this.formData.pageindex = e;
+      this.formData.pageNum = e;
       this.init();
     },
     changeRouterData() {
+      var menuId=parseInt(this.$route.query.menuId??0);
+      var parentId=parseInt(this.$route.query.parentId??0) ;
+      if(menuId>0){
       this.$api
-        .XfWebApiGetMenuModel({ menuid: this.$route.query.MenuId })
+        .XfWebApiGetMenuModel(menuId)
         .then((res) => {
-          this.menuData = res.Data;
-          if (res.Data.WebUrl) {
-            window.open(res.Data.WebUrl, "_blank");
+          this.menuData = res.data;
+          if(parentId==0){
+            this.firseMenu=this.menuData;
+          }
+          if (res.data.webUrl) {
+            window.open(res.data.webUrl, "_blank");
             this.$router.go(-1);
           }
         });
+        this.$api
+        .XfWebApiGetMenuModel(parentId==0?menuId:parentId)
+        .then((res) => {
+          this.firseMenu = res.data;
+        });
+      this.$api
+        .XfWebApiGetMenuList({ parentId:parentId==0?menuId:parentId})
+        .then((res) => {
+          this.routerArray = res.data;
+          // this.$nextTick(() => {
+          //   this.$refs.menuRef.activeIndex = `${this.$route.query.parentId}-${this.$route.query.menuId}`;
+          // });
+        });
+      }
+
     },
     init() {
       this.loading = true;
       this.$api
         .XfWebApiGetNewsList(this.formData)
         .then((res) => {
-          this.listData = res.Data.List || [];
-          this.total = res.Data.TotalCount;
+         this.listData = res.rows || [];
+          this.total = res.total;
         })
         .finally(() => {
           this.loading = false;
@@ -100,9 +129,9 @@ export default {
     jumpInfo(e) {
       this.$router.push({
         path: "info",
-        query: {
-          MenuId: e.MenuId,
-          NewsId: e.NewsId,
+       query: {
+          menuId: e.menuId,
+          articleId: e.articleId,
         },
       });
     },

+ 15 - 15
src/views/searchKey/index.vue

@@ -19,16 +19,16 @@
         @click="jumpInfo(items)"
       >
         <i></i>
-        <div class="title">{{ items.Title }}</div>
-        <span class="time">{{ $methods.onlyFormaHao(items.CreateTime) }}</span>
+        <div class="title">{{ items.title }}</div>
+        <span class="time">{{ $methods.onlyForma(items.createTime) }}</span>
       </div>
       <div style="text-align: center" v-if="notList.length > 0">
         <el-pagination
           :pager-count="3"
           class="paginations"
           @current-change="handleCurrentChange($event)"
-          :current-page.sync="formData.pageindex"
-          :page-size="formData.pagesize"
+          :current-page.sync="formData.pageNum"
+          :page-size="formData.pageSize"
           layout="total, prev, pager, next"
           :total="total"
         >
@@ -47,8 +47,8 @@ export default {
       loading: false,
       total: 0,
       formData: {
-        pagesize: 11, //每页内容条数
-        pageindex: 1, //当前第几页
+        pageSize: 11, //每页内容条数
+        pageNum: 1, //当前第几页
       },
     };
   },
@@ -58,7 +58,7 @@ export default {
   watch: {
     $route: {
       handler: function (val, oldVal) {
-        this.formData.key = val.query.key;
+        this.formData.title = val.query.key;
         this.getSearch();
       },
       // 深度观察监听
@@ -70,28 +70,28 @@ export default {
     clear() {
       this.total = 0;
       this.formData = {
-        pagesize: 11, //每页内容条数
-        pageindex: 1, //当前第几页
+        pageSize: 11, //每页内容条数
+        pageNum: 1, //当前第几页
       };
       this.getSearch();
     },
     getSearch(int) {
       this.loading = true;
       if (int == 1) {
-        this.formData.pageindex = 1;
+        this.formData.pageNum = 1;
       }
       this.$api
         .XfWebApiGetNewsList(this.formData)
         .then((res) => {
-          this.notList = res.Data.List || [];
-          this.total = res.Data.TotalCount;
+          this.notList = res.rows || [];
+          this.total = res.total;
         })
         .finally(() => {
           this.loading = false;
         });
     },
     handleCurrentChange(e) {
-      this.formData.pageindex = e;
+      this.formData.pageNum = e;
       this.getSearch();
     },
     //跳转详情页
@@ -99,8 +99,8 @@ export default {
       this.$router.push({
         path: "info",
         query: {
-          MenuId: e.MenuId,
-          NewsId: e.NewsId,
+           menuId: e.menuId,
+          articleId: e.articleId,
         },
       });
     },

+ 1 - 1
vue.config.js

@@ -14,7 +14,7 @@ module.exports = {
     lintOnSave: false,//禁用代码检测
     productionSourceMap: false,
     configureWebpack: {
-        name: '广州市建设工程保险风险管理协会',
+        name: '广东中正教育科技有限公司',
         // 生产环境,则添加不参与打包的包名和依赖包的名称
         externals: {
             'vue': 'Vue',

部分文件因为文件数量过多而无法显示