Explorar el Código

文件合并完成

wangtao hace 1 año
padre
commit
625fddc2dc

+ 1 - 0
index.html

@@ -7,6 +7,7 @@
     <title>永天官网</title>
     <meta name="keywords" content="">
     <meta name="description" content="">
+    <link rel="icon" href="assets/img/favicon.ico">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
     <!--preload-links-->
 </head>

+ 28 - 1
server.js

@@ -7,6 +7,33 @@ import { createServer as createViteServer } from 'vite'
 import ssrManifest from './dist/client/.vite/ssr-manifest.json' assert { type: "json" }
 import *  as PRODserver from './dist/server/entry-server.js'
 const isProd = process.env.NODE_ENV  === 'production'
+// if(isProd){
+    // import ssrManifest from './dist/client/.vite/ssr-manifest.json' assert { type: "json" }
+    // import *  as PRODserver from './dist/server/entry-server.js'
+    // const manifest =  ssrManifest
+// }
+
+// function importBasedOnCondition(condition) {
+//     console.log(condition)
+//     if (condition) {
+//         const PRODserver = async(moduleName) =>{
+//             const A = await  import  `./dist/server/${moduleName}`
+//             return A
+//         }
+//         const ssrManifest = async(moduleName) =>{
+//             const B = await  import  `./dist/client/.vite/${ssr-manifest}` assert { type: "json" }
+//             return B
+//         }
+//         return { PRODserver("entry-server.js"), ssrManifest("ssr-manifest.json")}
+//     //   return { import ssrManifest from './dist/client/.vite/ssr-manifest.json' assert { type: "json" }, import *  as PRODserver from './dist/server/entry-server.js'}
+//     }
+//   }
+   
+  // 使用函数
+//   importBasedOnCondition(isProd); // 根据条件动态导入moduleA
+
+
+
 // const isProd = true
 const __dirname = path.dirname(fileURLToPath(import.meta.url))
 async function createServer() {
@@ -69,7 +96,6 @@ async function createServer() {
             // 4. 渲染应用的 HTML。这假设 entry-server.js 导出的 `render`
             //    函数调用了适当的 SSR 框架 API。
             //    例如 ReactDOMServer.renderToString()
-            const manifest =  ssrManifest
             if(!isProd){
                 const { appHtml, state } = await render(url)
                 // 5. 注入渲染后的应用程序 HTML 到模板中。
@@ -77,6 +103,7 @@ async function createServer() {
                 .replace(`<!--ssr-outlet-->`, appHtml)
                 .replace('\'<!--vuex-state-->\'', JSON.stringify(state))
             }else{
+                const manifest =  ssrManifest
                 const { appHtml, state,preloadLinks } = await render(url,manifest)
                 html = template
                 .replace(`<!--preload-links-->`, preloadLinks)

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 5
src/assets/js/bootstrap.min.js


+ 58 - 0
src/assets/js/common.js

@@ -0,0 +1,58 @@
+import { ref } from "vue";
+import { useStore  } from 'vuex'
+import { useRoute } from "vue-router"
+const store = useStore()
+const route = useRoute()
+console.log(111,useStore())
+//返回顶部
+function scrollToTop(data,type) {
+  console.log(3434)
+  globalThis.scrollTo({
+      top: data,
+      behavior: type
+  })
+}
+
+function getPageData(){
+    // const route = useRoute()
+    // const data = ref([])
+    // data.value = store.state.menuList
+    //   console.log(data.value)
+      // const data = store.state.menuList
+      // const paramsData = {}//页面主题内容请求参数
+      // let str 
+      // if(route.path.indexOf("_")){
+      //     str = route.path.split("_")[0]
+      // }
+      // for(let i=0;i<data.length;i++){
+      //     if(route.path == data[i].path || str == data[i].path){
+      //         //模板 主页
+      //         if(!data[i].sname && !route.query?.categoryid){
+      //             paramsData = {
+      //                 params:{
+      //                     categoryid: data[i].id,
+      //                     pageNum:1,
+      //                     pageSize:100,
+      //                     order:"sortindex",
+      //                 },
+      //                 index:route.path,
+      //                 sub:i
+      //             }
+      //             if(data[i].path == "/cases"){
+      //                 paramsData.params.categoryid = data[i].children[0].id
+      //             }
+      //         }
+      //     }
+      // }
+      // if(route.path.indexOf("_") < 0){
+      //   store.dispatch('getPageData',paramsData)
+      // }
+ 
+}
+
+
+
+export {
+  scrollToTop,
+  getPageData
+}

+ 0 - 354
src/assets/js/commonVue copy.js

@@ -1,354 +0,0 @@
-import footerCom from '/assets/js/component/footerCom.js'
- import feedFix from '/assets/js/component/feedFix.js'
- import dialogCom from '/assets/js/component/dialogCom.js'
- import loadingCom from '/assets/js/component/loadingCom.js'
- import headerCom from '/assets/js/component/headerCom.js'
- 
- 
- app = new Vue({
-  el: '#app',
-  components: {
-    footerCom,
-    feedFix,
-    dialogCom,
-    loadingCom,
-    headerCom
-
-  },
-  data: {
-
-    //公共
-    id: null,
-    columnList: [],
-    requestParams: { //内容接口请求参数
-      categoryid: 0, //栏目id
-      pageNum: 1,
-      pageSize: 9,
-      order: 'sortindex',
-      articleid: 0,  //访问量统计
-      id: 0, //内容详情id
-    },
-    currentPath: '',
-    articalArray: [], //详情数组
-    articalArrayRelated: [], //相关推荐
-    columnTypes: [], //栏目类型
-    colL: 0,
-    modelType: 1,
-    columnImage: '', //栏目图片
-    footerBoolean:false, //底部延时加载(解决页面闪烁)
-
-    // 公共弹框
-    centerDialogVisible: false,
-    dialogDataArray: [],
-    ruleForm: {
-      platName: '智慧安防',
-      consultName: '',
-      consultPhone: '',
-      mail: '',
-      company: '',
-      consultContent: "",
-    },
-    rules: {
-      platName: [{
-        required: true,
-        message: '请选择类型',
-        trigger: 'change'
-      }, ],
-      consultName: [{
-        required: true,
-        message: '请输入姓名',
-        trigger: 'blur'
-      }, ],
-      consultPhone: [{
-        required: true,
-        message: '请输入正确的电话号码',
-        pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-        trigger: 'change'
-      }],
-      mail: [{
-        required: false,
-        type: "email",
-        message: "请输入正确的邮箱地址",
-        trigger: 'blur'
-      }],
-    },
-
-
-    //首页
-    homeList: [],
-    status: false,
-
-    // 新闻
-    goPage: 1,
-    totalPageNum: 1,
-    totalPageSzie: 1,
-    loading: true,
-    categoryid: 0,
-  },
-
-  computed: {
-
-  },
-  created: function () {
-    this.requestParams.categoryid = this.getQuery('categoryid') ? this.getQuery('categoryid') : ''
-    this.requestParams.id = this.getQuery('id') ? this.getQuery('id') : ''
-    this.requestParams.articleid = this.getQuery('id') ? this.getQuery('id') : ''
-  },
-  mounted: function () {
-
-    this.getColumnData()
-  },
-  methods: {
-
-    //获取栏目数据
-    getColumnData() {
-      var _this = this;
-      if (!localStorage.getItem('storeColumnList') || window.location.pathname == '/') {
-        $.ajax({
-          type: 'get',
-          dataType: 'json',
-          url: window.FQDN2 + 'siteCategory/siteCategoryList',
-        }).done(function (res) {
-          _this.columnList = res.data;
-          let expires = Date.now() + 1000 * 60 * 30; //半小时过期时间
-          localStorage.setItem('storeColumnList', JSON.stringify({
-            data: _this.columnList,
-            expires
-          }));
-          _this.loading = false
-          _this.currentPath = window.location.pathname;
-          _this.handleColumnData()
-        })
-      } else {
-        this.loading = false;
-        this.handleColumnData()
-      }
-      setTimeout(function(){
-        _this.footerBoolean=true
-      },1000)
-    },
-
-
-    handleColumnData() {
-      this.currentPath = window.location.pathname;
-      this.columnList = JSON.parse(localStorage.getItem('storeColumnList')).data;
-
-      // 读取并检查是否过期
-      if (JSON.parse(localStorage.getItem('storeColumnList')).expires < Date.now()) {
-        localStorage.removeItem('storeColumnList');
-      } else {
-      }
-
-
-      var _this = this;
-
-      for (let i = 0; i < _this.columnList.length; i++) {
-
-        //栏目处理  
-
-        //进入首页
-        if (_this.columnList[i].sname == '/index.html' && (window.location.pathname == '/'||window.location.pathname == '')) {
-          getSeoCommon()
-
-          this.requestParams.categoryid = this.columnList[0].id
-          _this.modelType = _this.columnList[0].modelType;
-          _this.columnImage = _this.columnList[0].imagePath;
-          setTimeout(() => {
-            if (_this.modelType == 2) {
-              document.getElementById("videoPlay").src = _this.columnImage; //url为你需要播放的视频地址
-              document.getElementById("videoPlay").setAttribute('poster', '/assets/img/banner/111.png');
-            }
-          }, 100)
-          _this.getArticalData(_this.requestParams)
-        }
-
-        //进入其他栏目页
-        if ((_this.columnList[i].sname == window.location.pathname)) {
-          getSeoCommon()
-
-          _this.columnTypes = _this.columnList[i].children
-          _this.colL = _this.columnTypes.childten;
-          if (_this.columnList[i].children.length > 0) {
-            _this.requestParams.categoryid = (_this.getQuery('isUrlId') == 1) ? _this.getQuery('categoryid') : _this.columnTypes[0].id;
-          } else {
-                        var objData = _this.columnList.filter(obj => obj.sname == window.location.pathname);
-            _this.requestParams.categoryid = objData[0].id
-
-          }
-          _this.getArticalData(_this.requestParams)
-          _this.modelType = _this.columnList[i].modelType;
-          _this.columnImage = _this.columnList[i].imagePath;
-          setTimeout(() => {
-            if (_this.modelType == 2) {
-              document.getElementById("videoPlay").src = _this.columnImage; //url为你需要播放的视频地址
-              document.getElementById("videoPlay").setAttribute('poster', '/assets/img/banner/111.png');
-            }
-          }, 100)
-
-
-
-        } else {
-
-
-
-          // 进入详情页
-          if (_this.columnList[i].sname == '/product/' && window.location.pathname == '/product/read.html') {
-
-            getDetailCommon()
-            getSeoCommon()
-          }
-          if (_this.columnList[i].sname == '/solution/' && window.location.pathname == '/solution/read.html') {
-            getDetailCommon()
-            getSeoCommon()
-          }
-          if (_this.columnList[i].sname == '/news/' && window.location.pathname == '/news/read.html') {
-            getDetailCommon()
-            getSeoCommon()
-          }
-
-          function getDetailCommon() {
-            //获取内容详情
-            _this.getArticalData(_this.requestParams)
-            //获取详情相关数据
-            setTimeout(() => {
-              _this.requestParams.id = ''
-              _this.requestParams.articleid = ''
-              _this.getArticalData(_this.requestParams, 1)
-            }, 100)
-            _this.currentPath = _this.columnList[i].sname //产品详情时栏目高亮
-            _this.modelType = _this.columnList[i].modelType; //栏目图片获取
-            _this.columnImage = _this.columnList[i].imagePath; //栏目图片获取
-            setTimeout(() => {
-              if (_this.modelType == 2) {
-                document.getElementById("videoPlay").src = _this.columnImage; //url为你需要播放的视频地址
-                document.getElementById("videoPlay").setAttribute('poster', '/assets/img/banner/111.png');
-              }
-            }, 100)
-          }
-        }
-
-        function getSeoCommon() {
-          $('title').text(_this.columnList[i].categoryName);
-          $('meta[name="description"]').attr('content', _this.columnList[i].metadescription);
-          $('meta[name="keywords"]').attr('content', _this.columnList[i].metakeywords);
-        }
-
-
-
-        // 获取反馈弹框类型数据
-        if (_this.columnList[i].sname == '/solution/') {
-          _this.dialogDataArray = (_this.columnList[i].children)
-          _this.ruleForm.platName = _this.dialogDataArray[0].categoryName;
-        }
-      }
-    },
-
-    //获取内容
-    getArticalData(requestParams, type) {
-      var _this = this
-      if (window.location.pathname == '/news/') {
-        _this.requestParams.order = ''
-      }
-
-      $.ajax({
-        type: 'GET',
-        dataType: 'json',
-        url: window.FQDN2 + 'siteArticle/siteArticleList',
-        data: requestParams
-      }).done(function (res) {
-        var aa
-        var bb
-
-        if (type == 1) {
-          bb = res.data.records
-        } else {
-          aa = res.data.records;
-          _this.articalArray = aa;
-        }
-        if (bb) {
-          _this.articalArrayRelated = bb.filter(obj => obj.title != _this.articalArray[0].title);
-          // _this.articalArrayRelated = bb
-        }
-        // _this.loading = false;
-        _this.totalPageSzie = res.data.total
-        _this.totalPageNum = Math.ceil(res.data.total / res.data.size);
-      }).fail(function (err) {});
-    },
-
-    //类型点击
-    facilityClick(e, item) {
-      this.requestParams.categoryid = item.id
-      this.requestParams.pageNum = 1
-      this.getArticalData(this.requestParams)
-    },
-
-    //  分页
-    oneInnerBox: function (param) {
-      
-      window.location = "./read.html?categoryid=" + param.categoryid + "&id=" + param.id + "&isUrlId=1";
-    },
-    enterPage: function (res) {
-      if (this.goPage >= 1 && this.goPage <= this.totalPageNum) {
-        this.requestParams.pageNum = this.goPage
-        this.getArticalData(this.requestParams)
-      } else {
-        this.goPage = 1
-        alert('输入页数有误!')
-      }
-    },
-    currentChange: function (res) {
-      this.requestParams.pageNum = res
-      this.getArticalData(this.requestParams)
-    },
-
-    //申请试用
-    goApply: function () {
-      this.centerDialogVisible = true
-
-    },
-
-    //弹框显示隐藏(子组件向父组件传值)
-    handleChildEvent: function (value) {
-      this.centerDialogVisible = value; // 处理从子组件接收到的数据
-    },
-
-
-
-
-    // 排序
-    compare(property) {
-      return function (a, b) {
-        var value1 = a[property];
-        var value2 = b[property];
-        return value1 - value2;
-      }
-    },
-
-    // 获取路由参数
-    getQuery(name) {
-      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
-      var r = window.location.search.substr(1).match(reg);
-      if (r != null) return decodeURI(r[2]);
-      return null;
-    },
-
-    //获得年月日时分秒  //传入日期//例:2020-10-27T14:36:23
-    timeFormatSeconds(time) {
-      var d = time ? new Date(time) : new Date();
-      var year = d.getFullYear();
-      var month = d.getMonth() + 1;
-      var day = d.getDate();
-      var hours = d.getHours();
-      var min = d.getMinutes();
-      var seconds = d.getSeconds();
-
-      if (month < 10) month = '0' + month;
-      if (day < 10) day = '0' + day;
-      if (hours < 0) hours = '0' + hours;
-      if (min < 10) min = '0' + min;
-      if (seconds < 10) seconds = '0' + seconds;
-
-      return (year + '-' + month + '-' + day + ' ' + hours + ':' + min + ':' + seconds);
-    }
-  }
-});

+ 0 - 410
src/assets/js/commonVue.js

@@ -1,410 +0,0 @@
-import footerCom from '/assets/js/component/footerCom.js'
-import feedFix from '/assets/js/component/feedFix.js'
-import dialogCom from '/assets/js/component/dialogCom.js'
-import loadingCom from '/assets/js/component/loadingCom.js'
-import headerCom from '/assets/js/component/headerCom.js'
-
-const App = {
-
-  components: {
-    footerCom,
-    feedFix,
-    dialogCom,
-    loadingCom,
-    headerCom
-  },
-  data() {
-    return {
-      title: 'Hello Vue',
-      count: 0,
-      articalArray: [], //详情数组
-      //公共
-      id: null,
-      columnList: [],
-      requestParams: { //内容接口请求参数
-        categoryid: 0, //栏目id
-        pageNum: 1,
-        pageSize: 9,
-        order: 'sortindex',
-        articleid: 0, //访问量统计
-        id: 0, //内容详情id
-      },
-      dup: '',
-      currentPath: '',
-      articalArray: [], //详情数组
-      articalArrayRelated: [], //相关推荐
-      columnTypes: [], //栏目类型
-      colL: 0,
-      modelType: 1,
-      columnImage: '', //栏目图片
-      footerBoolean: false, //底部延时加载(解决页面闪烁)
-      contentBoolean: false, //中间延时加载(优化banner图片加载慢的问题)
-
-      // 公共弹框
-      centerDialogVisible: false,
-      dialogDataArray: [],
-      ruleForm: {
-        platName: '智慧安防',
-        consultName: '',
-        consultPhone: '',
-        mail: '',
-        company: '',
-        consultContent: "",
-      },
-      rules: {
-        platName: [{
-          required: true,
-          message: '请选择类型',
-          trigger: 'change'
-        }, ],
-        consultName: [{
-          required: true,
-          message: '请输入姓名',
-          trigger: 'blur'
-        }, ],
-        consultPhone: [{
-          required: true,
-          message: '请输入正确的电话号码',
-          pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-          trigger: 'change'
-        }],
-        mail: [{
-          required: false,
-          type: "email",
-          message: "请输入正确的邮箱地址",
-          trigger: 'blur'
-        }],
-      },
-
-      //首页
-      homeList: [],
-      status: false,
-
-      // 新闻
-      goPage: 1,
-      totalPageNum: 1,
-      totalPageSzie: 1,
-      loading: true,
-      categoryid: 0,
-    }
-  },
-
-  computed: {
-  },
-  created: function () {
-    this.dup = this.getQuery('dup')
-    this.requestParams.categoryid = this.getQuery('categoryid') ? this.getQuery('categoryid') : ''
-    this.requestParams.id = this.getQuery('id') ? this.getQuery('id') : ''
-    this.requestParams.articleid = this.getQuery('id') ? this.getQuery('id') : ''
-  },
-  mounted: function () {
-    this.getColumnData()
-  },
-  methods: {
-
-    //获取栏目数据
-    getColumnData() {
-      var _this = this;
-      if (!localStorage.getItem('storeColumnList') || (window.location.pathname == '/' && !this.dup) || window.location.pathname == '/index.html') {
-        $.ajax({
-          type: 'get',
-          dataType: 'json',
-          url: window.FQDN2 + 'siteCategory/siteCategoryList',
-        }).done(function (res) {
-          _this.lazyFunc()
-          _this.columnList = res.data;
-          let expires = Date.now() + 1000 * 60 * 30; //半小时过期时间
-          localStorage.setItem('storeColumnList', JSON.stringify({
-            data: _this.columnList,
-            expires
-          }));
-          _this.loading = false
-          _this.handleColumnData()
-        })
-      } else {
-        this.loading = false;
-        this.handleColumnData()
-      }
-      setTimeout(function () {
-        _this.contentBoolean = true
-      }, 900)
-      setTimeout(function () {
-        _this.footerBoolean = true
-      }, 1000)
-    },
-
-
-    handleColumnData() {
-      if (window.location.pathname == '/' && !this.dup) { //if 首页模板
-        this.currentPath = '/template1/'
-      } else if (window.location.pathname == '/' && this.dup) { //if 首页复用模板
-        this.currentPath = '/template1/?dup=' + this.dup
-      } else if (window.location.href.indexOf("dup") > 0) { // if 非首页模板
-        this.currentPath = `${window.location.pathname}?dup=` + this.getQuery('dup')
-      } else { //非首页复用模板
-        this.currentPath = window.location.pathname;
-      }
-      this.columnList = JSON.parse(localStorage.getItem('storeColumnList')).data;
-      // 读取并检查是否过期
-      if (JSON.parse(localStorage.getItem('storeColumnList')).expires < Date.now()) {
-        localStorage.removeItem('storeColumnList');
-      } 
-
-      var _this = this;
-      for (let i = 0; i < _this.columnList.length; i++) {
-        // 获取反馈弹框类型数据
-        if (_this.columnList[i].categoryStyle == '2' && _this.columnList[i].sname == '') {
-          _this.dialogDataArray = (_this.columnList[i].children)
-          _this.ruleForm.platName = _this.dialogDataArray[0].categoryName;
-        }
-
-        //栏目处理  
-
-        //进入首页
-        if (_this.columnList[i].categoryStyle == '1' && (window.location.pathname == '/' || window.location.pathname == '' || window.location.pathname == '/index.html')) {
-          if ('/?dup=' + _this.columnList[i].sname == `${window.location.pathname}?dup=` + this.getQuery('dup')) {
-            console.log('首页复用模板')
-            getSeoCommon()
-            var objData = _this.columnList.filter(obj => obj.categoryStyle == 1 ? '/?dup=' + obj.sname == `${window.location.pathname}?dup=` + _this.getQuery('dup') : '');
-            _this.requestParams.categoryid = objData[0].id
-            _this.getArticalData(_this.requestParams)
-            _this.columnImage = _this.columnList[i].imagePath;
-            getBannerCommon()
-          }
-          if (window.location.href.indexOf("dup") == -1 && !_this.columnList[i].sname) {
-            console.log('首页模板')
-            getSeoCommon()
-            this.requestParams.categoryid = this.columnList[0].id
-            _this.getArticalData(_this.requestParams)
-            _this.columnImage = _this.columnList[0].imagePath;
-            getBannerCommon()
-          }
-        }
-
-        //进入其他栏目页
-        if (('/template' + _this.columnList[i].categoryStyle + '/' == window.location.pathname) || (_this.columnList[i].categoryStyle == window.location.pathname.replace('index.html', ''))) {
-          if (window.location.href.indexOf("dup") && ('/template' + _this.columnList[i].categoryStyle + '/?dup=' + _this.columnList[i].sname == `${window.location.pathname}?dup=` + this.getQuery('dup'))) {
-            if (_this.columnList[i].children.length > 0) {
-              _this.columnTypes = _this.columnList[i].children
-              _this.requestParams.categoryid = (_this.getQuery('isUrlId') == 1) ? _this.getQuery('categoryid') : _this.columnTypes[0].id;
-              _this.getArticalData(_this.requestParams)
-              _this.columnImage = _this.columnList[i].imagePath;
-            } else {
-              var objData = _this.columnList.filter(obj => '/template' + obj.categoryStyle + '/?dup=' + obj.sname == `${window.location.pathname}?dup=` + _this.getQuery('dup'));
-              _this.requestParams.categoryid = objData[0].id
-              _this.getArticalData(_this.requestParams)
-              _this.columnImage = _this.columnList[i].imagePath;
-            }
-            getSeoCommon()
-            getBannerCommon()
-          }
-          if (window.location.href.indexOf("dup") == -1 && !_this.columnList[i].sname && ('/template' + _this.columnList[i].categoryStyle + '/' == window.location.pathname)) {
-            if (_this.columnList[i].children.length > 0) {
-              _this.columnTypes = _this.columnList[i].children
-              _this.requestParams.categoryid = (_this.getQuery('isUrlId') == 1) ? _this.getQuery('categoryid') : _this.columnTypes[0].id;
-              _this.getArticalData(_this.requestParams)
-              _this.columnImage = _this.columnList[i].imagePath;
-            } else {
-              var objData = _this.columnList.filter(obj => '/template' + obj.categoryStyle + '/' == window.location.pathname.replace('index.html', ''));
-              _this.requestParams.categoryid = objData[0].id
-              _this.getArticalData(_this.requestParams)
-              _this.columnImage = _this.columnList[i].imagePath;
-            }
-           getSeoCommon()
-           getBannerCommon()
-          }
-        } else {
-          // 进入详情页
-          if ('/template' + _this.columnList[i].categoryStyle + '/read.html' == window.location.pathname) {
-            getDetailCommon()
-          }
-
-          function getDetailCommon() {
-            //获取内容详情
-            _this.getArticalData(_this.requestParams)
-            //获取详情相关数据
-            setTimeout(() => {
-              _this.requestParams.id = ''
-              _this.requestParams.articleid = ''
-              _this.getArticalData(_this.requestParams, 1)
-            }, 100)
-
-            //产品详情时栏目高亮
-            if (window.location.href.indexOf("dup") && ('/template' + _this.columnList[i].categoryStyle + '/read.html' + '?dup=' + _this.columnList[i].sname == `${window.location.pathname}?dup=` + _this.getQuery('dup'))) {
-              _this.currentPath = `/template${ _this.columnList[i].categoryStyle}/?dup=` + _this.getQuery('dup')
-              _this.columnImage = _this.columnList[i].imagePath; //栏目图片获取
-              getSeoCommon()
-              getBannerCommon()
-            }
-
-            if (window.location.href.indexOf("dup") == -1 && !_this.columnList[i].sname && ('/template' + _this.columnList[i].categoryStyle + '/read.html' == window.location.pathname)) {
-              _this.currentPath = `/template${ _this.columnList[i].categoryStyle}/`
-              _this.columnImage = _this.columnList[i].imagePath; //栏目图片获取
-              getSeoCommon()
-              getBannerCommon()
-            }
-          }
-        }
-
-        function getBannerCommon(){
-          _this.modelType = _this.columnList[i].modelType; //栏目图片获取
-          setTimeout(() => {
-            if (_this.modelType == 2) {
-              document.getElementById("videoPlay").src = _this.columnImage; //url为你需要播放的视频地址
-              if(!document.getElementById("videoPlay").getAttribute('poster')){
-                document.getElementById("videoPlay").setAttribute('poster', '/assets/img/banner/poster.jpg');
-              }
-            }
-          }, 100)
-        }
-
-        function getSeoCommon() {
-          $('title').text(_this.columnList[i].categoryName);
-          $('meta[name="description"]').attr('content', _this.columnList[i].metadescription);
-          $('meta[name="keywords"]').attr('content', _this.columnList[i].metakeywords);
-        }
-      }
-    },
-
-    //获取内容
-    getArticalData(requestParams, type) {
-      var _this = this
-      if (window.location.pathname == '/template4/') {
-        _this.requestParams.order = ''
-      }
-
-      $.ajax({
-        type: 'GET',
-        dataType: 'json',
-        url: window.FQDN2 + 'siteArticle/siteArticleList',
-        data: requestParams
-      }).done(function (res) {
-        _this.lazyFunc()
-        var aa
-        var bb
-
-        if (type == 1) {
-          bb = res.data.records
-        } else {
-          aa = res.data.records;
-          _this.articalArray = aa;
-        }
-        if (bb) {
-          _this.articalArrayRelated = bb.filter(obj => obj.title != _this.articalArray[0].title);
-        }
-        _this.totalPageSzie = res.data.total
-        _this.totalPageNum = Math.ceil(res.data.total / res.data.size);
-      }).fail(function (err) {});
-    },
-
-    //类型点击
-    facilityClick(e, item) {
-      this.requestParams.categoryid = item.id
-      this.requestParams.pageNum = 1
-      this.getArticalData(this.requestParams)
-    },
-
-    //  分页
-    oneInnerBox: function (param) {
-      var aa = this.getQuery('dup')
-      if (this.getQuery('dup')) {
-        window.location = "./read.html?dup=" + aa + "&categoryid=" + param.categoryid + "&id=" + param.id + "&isUrlId=1";
-      } else {
-        window.location = "./read.html?categoryid=" + param.categoryid + "&id=" + param.id + "&isUrlId=1";
-      }
-    },
-    enterPage: function (res) {
-      if (this.goPage >= 1 && this.goPage <= this.totalPageNum) {
-        this.requestParams.pageNum = this.goPage
-        this.getArticalData(this.requestParams)
-      } else {
-        this.goPage = 1
-        alert('输入页数有误!')
-      }
-    },
-    currentChange: function (res) {
-      this.requestParams.pageNum = res
-      this.getArticalData(this.requestParams)
-    },
-
-    //申请试用
-    goApply: function () {
-      this.centerDialogVisible = true
-    },
-
-    lazyFunc: function () {
-      setTimeout(function () {
-        // 1 获取全部图片的DOM节点
-        // 注意:querySelectorAll 值为伪数组利用扩展运算符转为真数组
-        const images = $('.lazyContainer img')
-        // 2 监听页面滚动事件
-        window.addEventListener('scroll', lazyLoad)
-        // 3 定义页面滚动的处理函数
-        function lazyLoad() {
-          for (let i = 0; i < images.length; i++) {
-            // isVisible是否该图片位于可视区域 返回true 或false
-            if (isVisible(images[i])) {
-              // 将元素的自定义属性 data-src 赋值给元素的 src 属性 
-              // dataset.src 此为元素的自定义属性 data-src
-              if (images[i].dataset.src) {
-                images[i].src = images[i].dataset.src // 等价于:img.setAttribute('src', img.getAttribute('data-src'))
-              }
-              // 防止重复被遍历 加载完之后 删除元素不再加载
-              images.splice(i, 1)
-              i--
-            }
-          }
-        }
-        lazyLoad()
-        // 4 可视区域判断函数
-        function isVisible(img) {
-          // 判断是否在可视区域
-          const imgRect = img.getBoundingClientRect() // getBoundingClientRect 获取图片的动态信息
-          return imgRect.bottom > 0 && imgRect.top < window.innerHeight && imgRect.right > 0 && imgRect.left < window.innerWidth
-        }
-      }, 100)
-    },
-
-    //弹框显示隐藏(子组件向父组件传值)
-    handleChildEvent: function (value) {
-      this.centerDialogVisible = value; // 处理从子组件接收到的数据
-    },
-
-    // 排序
-    compare(property) {
-      return function (a, b) {
-        var value1 = a[property];
-        var value2 = b[property];
-        return value1 - value2;
-      }
-    },
-
-    // 获取路由参数
-    getQuery(name) {
-      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
-      var r = window.location.search.substr(1).match(reg);
-      if (r != null) return decodeURI(r[2]);
-      return null;
-    },
-
-    //获得年月日时分秒  //传入日期//例:2020-10-27T14:36:23
-    timeFormatSeconds(time) {
-      var d = time ? new Date(time) : new Date();
-      var year = d.getFullYear();
-      var month = d.getMonth() + 1;
-      var day = d.getDate();
-      var hours = d.getHours();
-      var min = d.getMinutes();
-      var seconds = d.getSeconds();
-
-      if (month < 10) month = '0' + month;
-      if (day < 10) day = '0' + day;
-      if (hours < 0) hours = '0' + hours;
-      if (min < 10) min = '0' + min;
-      if (seconds < 10) seconds = '0' + seconds;
-
-      return (year + '-' + month + '-' + day + ' ' + hours + ':' + min + ':' + seconds);
-    }
-  }
-}
-Vue.createApp(App).use(ElementPlus).mount("#app");

+ 0 - 100
src/assets/js/component/dialogCom.js

@@ -1,100 +0,0 @@
-export default {
-  props: {
-    fatherdialogv: Boolean,
-    ruleform:Object,
-    fatherrules:Object,
-    fatherdialoga:Object,
-  },
-  template: `
-            <el-dialog title="项目咨询"   @close="closeDialog('ruleform')"
-                 v-model="fatherdialogv" width="700px" center class="feedBackDialog" :lock-scroll="false">
-                <el-form :model="ruleform" :rules="fatherrules" ref="ruleform" label-width="80px" class="demo-ruleform">
-                    <el-form-item label="" prop="platName" style="" class="dialogTypeLabel">
-                        <el-radio-group v-model="ruleform.platName">
-                            <el-radio-button :label="item.categoryName" v-for="item in fatherdialoga" :key="item.id">
-                            </el-radio-button>
-                        </el-radio-group>
-                    </el-form-item>
-                    <el-row :gutter="20">
-                        <el-col :span="12">
-                            <el-form-item label="姓名" prop="consultName">
-                                <el-input v-model="ruleform.consultName"></el-input>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item label="联系电话" prop="consultPhone">
-                                <el-input v-model="ruleform.consultPhone"></el-input>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item label="邮箱" prop="mail">
-                                <el-input v-model="ruleform.mail"></el-input>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="12">
-                            <el-form-item label="公司" prop="company">
-                                <el-input v-model="ruleform.company"></el-input>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                    <el-form-item label="需求描述" prop="consultContent">
-                        <el-input type="textarea" v-model="ruleform.consultContent"></el-input>
-                    </el-form-item>
-                </el-form>
-
-                <!-- <span>需要注意的是内容是默认不居中的</span> -->
-                <span slot="footer" class="dialog-footer" style="width:100%;text-align:center">
-                    <el-button @click="resetForm('ruleform')">取 消</el-button>
-                    <el-button type="primary" @click="submitForm('ruleform')">提 交</el-button>
-                </span>
-            </el-dialog>
-  `,
-  mounted: function () {
-
-  },
-  methods:{
-
-    
-
-     //公共弹框
-     submitForm(formName) {
-      var _this = this
-      this.$refs[formName].validate((valid) => {
-        if (valid) {
-          let param = JSON.stringify(_this.ruleform)
-          jQuery.ajax({
-            type: 'POST',
-            // dataType: 'json',
-            contentType: 'application/json;charset=UTF-8',
-            url: window.FQDN2 + 'siteReview',
-            data: param
-          }).done(function (res) {
-            if (res.status === "SUCCESS") {
-              _this.$message({
-                message: '提交成功',
-                type: 'success'
-              });
-              _this.$emit('data-event', false); 
-              _this.$refs[formName].resetFields(); //重置from校验
-            }
-          }).fail(function (err) {});
-        } else {
-          console.log('error submit!!');
-          return false;
-        }
-      });
-    },
-
-    /** 关闭弹窗 */
-    closeDialog(formName) {
-      this.$emit('data-event', false); 
-      this.$refs[formName].resetFields();
-    },
-
-    // 重置表单
-    resetForm(formName) {
-      this.$refs[formName].resetFields();
-      this.$emit('data-event', false); 
-    },
-  }
-}

+ 0 - 52
src/assets/js/component/feedFix.js

@@ -1,52 +0,0 @@
-export default {
-  props: {
-    todo: Object
-  },
-  template: `
-  <div class="feedBackBox">
-              <div class="contactOne">
-                  <img src="/assets/img/home/f_phone.png" alt="">
-                  <ul class="contactInner">
-                      <li style="font-size:25px;margin-bottom:5px">合作共赢</li>
-                      <li>
-                          <span>智&nbsp;  慧&nbsp;  消&nbsp;&nbsp;  防:</span>
-                          <span>李先生 18621761642</span>
-                      </li>
-                      <li>
-                          <span>人脸识别系统:</span>
-                          <span>李先生 18621761642</span>
-                      </li>
-                      <li>
-                          <span>弱 电 智 能 化:</span>
-                          <span>李先生 13918571231</span>
-                      </li>
-                      <li>
-                          <span>质量 监督投诉:</span>
-                          <span>孙先生 17721169552</span>
-                      </li>
-                      <li style="margin-top:10px">其他智慧城市相关应用合作: 021-65376655</li>
-                  </ul>
-              </div>
-              <div class="contactQr">
-                  <!-- 二维码 -->
-                  <img src="/assets/img/home/f_code.png" alt="">
-                  <div class="">
-                      <img src="/assets/img/qr_codeF1.png" alt="">
-                  </div>
-              </div>
-              <div @click="scrollToTop" id="scroll-up" style="opacity:0">
-                  <img src="/assets/img/home/f_top.png" alt="">
-              </div>
-          </div>
-  `,
-  methods:{
-    //返回顶部
-    scrollToTop() {
-    
-        window.scrollTo({
-          top: 0,
-          behavior: "smooth"
-        });
-      },
-    }
-}

+ 0 - 57
src/assets/js/component/footerCom.js

@@ -1,57 +0,0 @@
-export default {
-    props: {
-      todo: Object
-    },
-    template: `
-    <footer>
-              <!-- widgets -->
-              <div class="footer-widget-area">
-                  <div class="container">
-                      <div class="row footerOne">
-                          <div class="col-lg-2 col-md-6 col-sm-6 footerWidth">
-                              <div class="copyrigt-or-code d-flex flex-column align-items-center ">
-                                  <img width="130 " height="130 " src="https://aiot.usky.cn/uskyq/assets/img/qr_code.png">
-                                  <span style="text-align: left;color:#fff;margin-top:10px ">微信公众号</span>
-                              </div>
-                          </div>
-                          <div class="footerNone" :style="{'width':(.8/todo.length*100)+'%' }"  v-for="item in todo" :key="item.id">
-                              <div class="widget nav-widget d-flex justify-content-center ">
-                                  <div>
-                                      <h5 class="widget-title">
-                                        <a  v-if="item.sname" :href="item.categoryStyle==1?'/?dup='+item.sname:'/template'+item.categoryStyle+'/?dup='+item.sname">{{item.categoryName}}</a>
-                                        <a  v-else :href="item.categoryStyle==1?'/':'/template'+item.categoryStyle+'/'">{{item.categoryName}}</a>
-                                      </h5>
-                                      <ul>
-                                          <li v-if="item.children" v-for="r in item.children" :key="r.id">
-                                              <a :href="item.sname?'/template'+item.categoryStyle+'/?dup='+item.sname+'&categoryid='+r.id+'&isUrlId=1'  : '/template'+item.categoryStyle+'/?categoryid='+r.id+'&isUrlId=1'"> <span
-                                              > {{r.categoryName}}</a>
-                                          </li>
-                                      </ul>
-                                  </div>
-                              </div>
-                          </div>
-                      </div>
-                  </div>
-              </div>
-              <!-- copyright -->
-              <div class="copy-right-area ">
-                  <div class="container ">
-                      <div class="row copyrigt-text ">
-                          <div class="col-lg-12 ">
-                              <p>Copyright © 2001- 2024 Usky. All Rights Reserved. 永天股份 版权所有</p>
-                              <p>增值电信业务经营许可证(IDC、ISP)编号B2-20080010</p>
-                              <p style="margin-top:10px">
-                                <a target="_blank" href="https://wap.scjgj.sh.gov.cn/businessCheck/verifKey.do?showType=extShow&serial=9031000020180517151815000002552816-SAIC_SHOW_310000-C5DE2EFE9AD14E94923F7AC487AA7077105&signData=MEYCIQDqmcH8RWjPwf4id/UFCbng+HLdnF21HDjoUikAjkdiKQIhAOrQRYz74d3T5P03DL6OW10HBRktOYPenEbcmn1gCweV">
-                                    <img src="/assets/img/spc.png" alt="1" width="20"></img>
-                                    沪公网安备 31010802001185号
-                                </a>
-                              </p>
-                          </div>
-                      </div>
-                  </div>
-              </div>
-          </footer>
-    `,
-   
-  }
-  

+ 0 - 51
src/assets/js/component/headerCom.js

@@ -1,51 +0,0 @@
-export default {
-  props: {
-    todo: Object,
-    currentone: String
-  },
-  template: `
-  <header class="header-absolute sticky-header">
-            <div class="custom-container-one">
-                <div class="mainmenu-area  d-flex align-items-center justify-content-center">
-                    <div class="logo">
-                        <a href="/"><img src="../assets/img/logo-white.png" alt="uskylogo"></a>
-                    </div>
-                    <div class="d-flex align-items-center ">
-                        <nav class="main-menu">
-
-                            <div class="menu-items">
-                                <ul v-if="todo">
-                                    <li v-for="item in todo" :key="item.id" 
-                                    :class="!item.sname ? currentone=='/template'+item.categoryStyle+'/' ? 'active' : '' :currentone == '/template'+item.categoryStyle+'/?dup=' + item.sname ? 'active' : ''" 
-                                    
-                                    >
-                                        <a  v-if="item.sname" :href="item.categoryStyle==1?'/?dup='+item.sname:'/template'+item.categoryStyle+'/?dup='+item.sname">{{item.categoryName}}</a>
-                                        <a  v-else :href="item.categoryStyle==1?'/':'/template'+item.categoryStyle+'/'">{{item.categoryName}}</a>
-                                        <ul class="submenu">
-                                            <li v-if="item.children" v-for="aa in item.children" :key="aa.id"><a
-                                                    :href="item.sname?'/template'+item.categoryStyle+'/?dup='+item.sname+'&categoryid='+aa.id+'&isUrlId=1'  : '/template'+item.categoryStyle+'/?categoryid='+aa.id+'&isUrlId=1'"> <span
-                                                        style="font-weight:bold;margin-right:10px">·</span>
-                                                    {{aa.categoryName}}</a></li>
-                                        </ul>
-                                    </li>
-
-                                </ul>
-                            </div>
-                        </nav>
-                        <div class="apply-expre" v-if="todo.length>0" @click="gogo()">申请体验
-                        </div>
-                    </div>
-                </div>
-                <div>
-                    <div class="mobile-menu"></div>
-                </div>
-            </div>
-        </header>
-  `,
-  methods:{
-    gogo(){
-      this.$emit('data-event'); 
-    }
-  }
- 
-}

+ 0 - 15
src/assets/js/component/loadingCom.js

@@ -1,15 +0,0 @@
-export default {
-  props: {
-    loadingfather: Object
-  },
-  template: `
-                <div class="loadEffect">
-                    <span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span>
-                </div>
-          
-  `,
-  mounted: function () {
-
-  },
- 
-}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 9525
src/assets/js/element/index.js


+ 0 - 236
src/assets/js/jquery.meanmenu.min.js

@@ -1,236 +0,0 @@
-(function($) {
-    'use strict';
-   
-        $.fn.meanmenu = function(e) {
-            
-            var n = {
-                meanMenuTarget: jQuery(this),
-                meanMenuContainer: 'body',
-                meanMenuClose: '<span /><span /><span />',
-                meanMenuCloseSize: '18px',
-                meanMenuOpen: '<span /><span /><span />',
-                meanRevealPosition: 'right',
-                meanRevealPositionDistance: '0',
-                meanRevealColour: '',
-                meanScreenWidth: '480',
-                meanNavPush: '',
-                meanShowChildren: !0,
-                meanExpandableChildren: !0,
-                meanExpand: '+',
-                meanContract: '-',
-                meanRemoveAttrs: !1,
-                onePage: !1,
-                meanDisplay: 'block',
-                removeElements: '',
-            };
-            e = $.extend(n, e);
-            var a = window.innerWidth || document.documentElement.clientWidth;
-            return this.each(function() {
-                var n = e.meanMenuTarget,
-                    t = e.meanMenuContainer,
-                    r = e.meanMenuClose,
-                    i = e.meanMenuCloseSize,
-                    s = e.meanMenuOpen,
-                    u = e.meanRevealPosition,
-                    m = e.meanRevealPositionDistance,
-                    l = e.meanRevealColour,
-                    o = e.meanScreenWidth,
-                    c = e.meanNavPush,
-                    v = '.meanmenu-reveal',
-                    h = e.meanShowChildren,
-                    d = e.meanExpandableChildren,
-                    y = e.meanExpand,
-                    j = e.meanContract,
-                    Q = e.meanRemoveAttrs,
-                    f = e.onePage,
-                    g = e.meanDisplay,
-                    p = e.removeElements,
-                    C = !1;
-                (navigator.userAgent.match(/iPhone/i) ||
-                    navigator.userAgent.match(/iPod/i) ||
-                    navigator.userAgent.match(/iPad/i) ||
-                    navigator.userAgent.match(/Android/i) ||
-                    navigator.userAgent.match(/Blackberry/i) ||
-                    navigator.userAgent.match(/Windows Phone/i)) &&
-                (C = !0),
-                (navigator.userAgent.match(/MSIE 8/i) ||
-                    navigator.userAgent.match(/MSIE 7/i)) &&
-                jQuery('html').css('overflow-y', 'scroll');
-                var w = '',
-                    x = function() {
-                        if ('center' === u) {
-                            var e =
-                                window.innerWidth ||
-                                document.documentElement.clientWidth,
-                                n = e / 2 - 22 + 'px';
-                            (w = 'left:' + n + ';right:auto;'),
-                            C
-                                ?
-                                jQuery('.meanmenu-reveal').animate({
-                                    left: n,
-                                }) :
-                                jQuery('.meanmenu-reveal').css('left', n);
-                        }
-                    },
-                    A = !1,
-                    E = !1;
-                'right' === u && (w = 'right:' + m + ';left:auto;'),
-                    'left' === u && (w = 'left:' + m + ';right:auto;'),
-                    x();
-                var M = '',
-                    W = function() {
-                        jQuery('.mean-bar,.mean-push').remove(),
-                            jQuery(t).removeClass('mean-container'),
-                            jQuery(n).css('display', g),
-                            (A = !1),
-                            (E = !1),
-                            jQuery(p).removeClass('mean-remove');
-                    },
-                    b = function() {
-                     
-                            var e = 'background:' + l + ';color:' + l + ';' + w;
-                        if (o >= a) {
-                            jQuery(p).addClass('mean-remove'),
-                                (E = !0),
-                                jQuery(t).addClass('mean-container'),
-                                jQuery('.mean-container').prepend(
-                                    '<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="' +
-                                    e +
-                                    '">Show Navigation</a><nav class="mean-nav"></nav></div>'
-                                );
-jQuery(v).html(s),
-
-                                setTimeout(function(){
-                            var r = jQuery(n).html();
-                            jQuery('.mean-nav').html(r),
-                                Q &&
-                                jQuery(
-                                    'nav.mean-nav ul, nav.mean-nav ul *'
-                                ).each(function() {
-                                    jQuery(this).is('.mean-remove') ?
-                                        jQuery(this).attr(
-                                            'class',
-                                            'mean-remove'
-                                        ) :
-                                        jQuery(this).removeAttr('class'),
-                                        jQuery(this).removeAttr('id');
-                                }),
-                                jQuery(n).before('<div class="mean-push" />'),
-                                jQuery('.mean-push').css('margin-top', c),
-                                jQuery(n).hide(),
-                                jQuery('.meanmenu-reveal').show(),
-                                
-                                (M = jQuery(v)),
-                                jQuery('.mean-nav ul').hide(),
-                                h ?
-                                d ?
-                                (jQuery('.mean-nav ul ul').each(
-                                        function() {
-                                            jQuery(this).children()
-                                                .length &&
-                                                jQuery(this, 'li:first')
-                                                .parent()
-                                                .append(
-                                                    '<a class="mean-expand" href="#" style="font-size: ' +
-                                                    i +
-                                                    '">' +
-                                                    y +
-                                                    '</a>'
-                                                );
-                                        }
-                                    ),
-                                    jQuery('.mean-expand').on(
-                                        'click',
-                                        function(e) {
-                                            e.preventDefault(),
-                                                jQuery(this).hasClass(
-                                                    'mean-clicked'
-                                                ) ?
-                                                (jQuery(this).text(y),
-                                                    jQuery(this)
-                                                    .prev('ul')
-                                                    .slideUp(
-                                                        300,
-                                                        function() {}
-                                                    )) :
-                                                (jQuery(this).text(j),
-                                                    jQuery(this)
-                                                    .prev('ul')
-                                                    .slideDown(
-                                                        300,
-                                                        function() {}
-                                                    )),
-                                                jQuery(this).toggleClass(
-                                                    'mean-clicked'
-                                                );
-                                        }
-                                    )) :
-                                jQuery('.mean-nav ul ul').show() :
-                                jQuery('.mean-nav ul ul').hide(),
-                                jQuery('.mean-nav ul li')
-                                .last()
-                                .addClass('mean-last'),
-                                M.removeClass('meanclose'),
-                                jQuery(M).on('click',function(e) {
-                                    e.preventDefault(),
-                                        A === !1 ?
-                                        (M.css('text-align', 'center'),
-                                            M.css('text-indent', '0'),
-                                            M.css('font-size', i),
-                                            jQuery(
-                                                '.mean-nav ul:first'
-                                            ).slideDown(),
-                                            (A = !0)) :
-                                        (jQuery(
-                                                '.mean-nav ul:first'
-                                            ).slideUp(),
-                                            (A = !1)),
-                                        M.toggleClass('meanclose'),
-                                        jQuery(p).addClass('mean-remove');
-                                }),
-                                f &&
-                                jQuery('.mean-nav ul > li > a:first-child').on(
-                                    'click',
-                                    function() {
-                                        jQuery('.mean-nav ul:first').slideUp(),
-                                            (A = !1),
-                                            jQuery(M)
-                                            .toggleClass('meanclose')
-                                            .html(s);
-                                    }
-                                );
-
-
-                                },300)
-                            
-                            
-                        } else W();
-    
-                       
-                        
-                    };
-                C ||
-                    jQuery(window).resize(function() {
-                        (a =
-                            window.innerWidth ||
-                            document.documentElement.clientWidth),
-                        a > o,
-                            W(),
-                            o >= a ? (b(), x()) : W();
-                    }),
-                    jQuery(window).resize(function() {
-                        (a =
-                            window.innerWidth ||
-                            document.documentElement.clientWidth),
-                        C
-                            ?
-                            (x(), o >= a ? E === !1 && b() : W()) :
-                            (W(), o >= a && (b(), x()));
-                    }),
-                    b();
-            });
-                };
-
-   
-    
-})(jQuery);

+ 0 - 511
src/assets/js/jquery.media.js

@@ -1,511 +0,0 @@
-/*
- * jQuery Media Plugin for converting elements into rich media content.
- *
- * Examples and documentation at: http://malsup.com/jquery/media/
- * Copyright (c) 2007-2010 M. Alsup
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- * @author: M. Alsup
- * @version: 0.99 (05-JUN-2013)
- * @requires jQuery v1.1.2 or later
- * $Id: jquery.media.js 2460 2007-07-23 02:53:15Z malsup $
- *
- * Supported Media Players:
- *	- Flash
- *	- Quicktime
- *	- Real Player
- *	- Silverlight
- *	- Windows Media Player
- *	- iframe
- *
- * Supported Media Formats:
- *	 Any types supported by the above players, such as:
- *	 Video: asf, avi, flv, mov, mpg, mpeg, mp4, qt, smil, swf, wmv, 3g2, 3gp
- *	 Audio: aif, aac, au, gsm, mid, midi, mov, mp3, m4a, snd, rm, wav, wma
- *	 Other: bmp, html, pdf, psd, qif, qtif, qti, tif, tiff, xaml
- *
- * Thanks to Mark Hicken and Brent Pedersen for helping me debug this on the Mac!
- * Thanks to Dan Rossi for numerous bug reports and code bits!
- * Thanks to Skye Giordano for several great suggestions!
- * Thanks to Richard Connamacher for excellent improvements to the non-IE behavior!
- */
-/*global SWFObject alert Sys */
-/*jshint forin:false */
-;(function($) {
-"use strict";	
-
-var mode = document.documentMode || 0;
-var msie = /MSIE/.test(navigator.userAgent);
-var lameIE = msie && (/MSIE (6|7|8)\.0/.test(navigator.userAgent) || mode < 9);
-
-/**
- * Chainable method for converting elements into rich media.
- *
- * @param options
- * @param callback fn invoked for each matched element before conversion
- * @param callback fn invoked for each matched element after conversion
- */
-$.fn.media = function(options, f1, f2) {
-	if (options == 'undo') {
-		return this.each(function() {
-			var $this = $(this);
-			var html = $this.data('media.origHTML');
-			if (html)
-				$this.replaceWith(html);
-		});
-	}
-	
-	return this.each(function() {
-		if (typeof options == 'function') {
-			f2 = f1;
-			f1 = options;
-			options = {};
-		}
-		var o = getSettings(this, options);
-		// pre-conversion callback, passes original element and fully populated options
-		if (typeof f1 == 'function') f1(this, o);
-
-		var r = getTypesRegExp();
-		var m = r.exec(o.src.toLowerCase()) || [''];
-		var fn;
-
-		if (o.type)
-			m[0] = o.type;
-		else
-			m.shift();
-
-		for (var i=0; i < m.length; i++) {
-			fn = m[i].toLowerCase();
-			if (isDigit(fn[0])) fn = 'fn' + fn; // fns can't begin with numbers
-			if (!$.fn.media[fn])
-				continue;  // unrecognized media type
-			// normalize autoplay settings
-			var player = $.fn.media[fn+'_player'];
-			if (!o.params) o.params = {};
-			if (player) {
-				var num = player.autoplayAttr == 'autostart';
-				o.params[player.autoplayAttr || 'autoplay'] = num ? (o.autoplay ? 1 : 0) : o.autoplay ? true : false;
-			}
-			var $div = $.fn.media[fn](this, o);
-
-			$div.css('backgroundColor', o.bgColor).width(o.width);
-			
-			if (o.canUndo) {
-				var $temp = $('<div></div>').append(this);
-				$div.data('media.origHTML', $temp.html()); // store original markup
-			}
-			
-			// post-conversion callback, passes original element, new div element and fully populated options
-			if (typeof f2 == 'function') f2(this, $div[0], o, player.name);
-			break;
-		}
-	});
-};
-
-/**
- * Non-chainable method for adding or changing file format / player mapping
- * @name mapFormat
- * @param String format File format extension (ie: mov, wav, mp3)
- * @param String player Player name to use for the format (one of: flash, quicktime, realplayer, winmedia, silverlight or iframe
- */
-$.fn.media.mapFormat = function(format, player) {
-	if (!format || !player || !$.fn.media.defaults.players[player]) return; // invalid
-	format = format.toLowerCase();
-	if (isDigit(format[0])) format = 'fn' + format;
-	$.fn.media[format] = $.fn.media[player];
-	$.fn.media[format+'_player'] = $.fn.media.defaults.players[player];
-};
-
-// global defautls; override as needed
-$.fn.media.defaults = {
-	standards:  true,       // use object tags only (no embeds for non-IE browsers)
-	canUndo:    true,       // tells plugin to store the original markup so it can be reverted via: $(sel).mediaUndo()
-	width:		400,
-	height:		400,
-	autoplay:	0,			// normalized cross-player setting
-	bgColor:	'#ffffff',	// background color
-	params:		{ wmode: 'transparent'},	// added to object element as param elements; added to embed element as attrs
-	attrs:		{},			// added to object and embed elements as attrs
-	flvKeyName: 'file',		// key used for object src param (thanks to Andrea Ercolino)
-	flashvars:	{},			// added to flash content as flashvars param/attr
-	flashVersion:	'7',	// required flash version
-	expressInstaller: null,	// src for express installer
-
-	// default flash video and mp3 player (@see: http://jeroenwijering.com/?item=Flash_Media_Player)
-	flvPlayer:	 'mediaplayer.swf',
-	mp3Player:	 'mediaplayer.swf',
-
-	// @see http://msdn2.microsoft.com/en-us/library/bb412401.aspx
-	silverlight: {
-		inplaceInstallPrompt: 'true', // display in-place install prompt?
-		isWindowless:		  'true', // windowless mode (false for wrapping markup)
-		framerate:			  '24',	  // maximum framerate
-		version:			  '0.9',  // Silverlight version
-		onError:			  null,	  // onError callback
-		onLoad:			      null,   // onLoad callback
-		initParams:			  null,	  // object init params
-		userContext:		  null	  // callback arg passed to the load callback
-	}
-};
-
-// Media Players; think twice before overriding
-$.fn.media.defaults.players = {
-	flash: {
-		name:		 'flash',
-		title:		 'Flash',
-		types:		 'flv,mp3,swf',
-		mimetype:	 'application/x-shockwave-flash',
-		pluginspage: 'http://www.adobe.com/go/getflashplayer',
-		ieAttrs: {
-			classid:  'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
-			type:	  'application/x-oleobject',
-			codebase: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + $.fn.media.defaults.flashVersion
-		}
-	},
-	quicktime: {
-		name:		 'quicktime',
-		title:		 'QuickTime',
-		mimetype:	 'video/quicktime',
-		pluginspage: 'http://www.apple.com/quicktime/download/',
-		types:		 'aif,aiff,aac,au,bmp,gsm,mov,mid,midi,mpg,mpeg,mp4,m4a,psd,qt,qtif,qif,qti,snd,tif,tiff,wav,3g2,3gp',
-		ieAttrs: {
-			classid:  'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
-			codebase: 'http://www.apple.com/qtactivex/qtplugin.cab'
-		}
-	},
-	realplayer: {
-		name:		  'real',
-		title:		  'RealPlayer',
-		types:		  'ra,ram,rm,rpm,rv,smi,smil',
-		mimetype:	  'audio/x-pn-realaudio-plugin',
-		pluginspage:  'http://www.real.com/player/',
-		autoplayAttr: 'autostart',
-		ieAttrs: {
-			classid: 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'
-		}
-	},
-	winmedia: {
-		name:		  'winmedia',
-		title:		  'Windows Media',
-		types:		  'asx,asf,avi,wma,wmv',
-		mimetype:	  isFirefoxWMPPluginInstalled() ? 'application/x-ms-wmp' : 'application/x-mplayer2',
-		pluginspage:  'http://www.microsoft.com/Windows/MediaPlayer/',
-		autoplayAttr: 'autostart',
-		oUrl:		  'url',
-		ieAttrs: {
-			classid:  'clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6',
-			type:	  'application/x-oleobject'
-		}
-	},
-	// special cases
-	img: {
-		name:  'img',
-		title: 'Image',
-		types: 'gif,png,jpg'
-	},
-	iframe: {
-		name:  'iframe',
-		types: 'html,pdf'
-	},
-	silverlight: {
-		name:  'silverlight',
-		types: 'xaml'
-	}
-};
-
-//
-//	everything below here is private
-//
-
-
-// detection script for FF WMP plugin (http://www.therossman.org/experiments/wmp_play.html)
-// (hat tip to Mark Ross for this script)
-function isFirefoxWMPPluginInstalled() {
-	var plugs = navigator.plugins || [];
-	for (var i = 0; i < plugs.length; i++) {
-		var plugin = plugs[i];
-		if (plugin['filename'] == 'np-mswmp.dll')
-			return true;
-	}
-	return false;
-}
-
-var counter = 1;
-
-for (var player in $.fn.media.defaults.players) {
-	var types = $.fn.media.defaults.players[player].types;
-	$.each(types.split(','), function(i,o) {
-		if (isDigit(o[0])) o = 'fn' + o;
-		$.fn.media[o] = $.fn.media[player] = getGenerator(player);
-		$.fn.media[o+'_player'] = $.fn.media.defaults.players[player];
-	});
-}
-
-function getTypesRegExp() {
-	var types = '';
-	for (var player in $.fn.media.defaults.players) {
-		if (types.length) types += ',';
-		types += $.fn.media.defaults.players[player].types;
-	}
-	return new RegExp('\\.(' + types.replace(/,/ig,'|') + ')\\b');
-}
-
-function getGenerator(player) {
-	return function(el, options) {
-		return generate(el, options, player);
-	};
-}
-
-function isDigit(c) {
-	return '0123456789'.indexOf(c) > -1;
-}
-
-// flatten all possible options: global defaults, meta, option obj
-function getSettings(el, options) {
-	options = options || {};
-	var a, n;
-	var $el = $(el);
-	var cls = el.className || '';
-	// support metadata plugin (v1.0 and v2.0)
-	var meta = $.metadata ? $el.metadata() : $.meta ? $el.data() : {};
-	meta = meta || {};
-	var w = meta.width  || parseInt(((cls.match(/\bw:(\d+)/)||[])[1]||0),10) || parseInt(((cls.match(/\bwidth:(\d+)/)||[])[1]||0),10);
-	var h = meta.height || parseInt(((cls.match(/\bh:(\d+)/)||[])[1]||0),10) || parseInt(((cls.match(/\bheight:(\d+)/)||[])[1]||0),10);
-
-	if (w) meta.width = w;
-	if (h) meta.height = h;
-	if (cls) meta.cls = cls;
-	
-	// crank html5 style data attributes
-	var dataName = 'data-';
-    for (var i=0; i < el.attributes.length; i++) {
-        a = el.attributes[i], n = $.trim(a.name);
-        var index = n.indexOf(dataName);
-        if (index === 0) {
-			n = n.substring(dataName.length);
-			meta[n] = a.value;
-        }
-    }
-
-	a = $.fn.media.defaults;
-	var b = options;
-	var c = meta;
-
-	var p = { params: { bgColor: options.bgColor || $.fn.media.defaults.bgColor } };
-	var opts = $.extend({}, a, b, c);
-	$.each(['attrs','params','flashvars','silverlight'], function(i,o) {
-		opts[o] = $.extend({}, p[o] || {}, a[o] || {}, b[o] || {}, c[o] || {});
-	});
-
-	if (typeof opts.caption == 'undefined') opts.caption = $el.text();
-
-	// make sure we have a source!
-	opts.src = opts.src || $el.attr('href') || $el.attr('src') || 'unknown';
-	return opts;
-}
-
-//
-//	Flash Player
-//
-
-// generate flash using SWFObject library if possible
-$.fn.media.swf = function(el, opts) {
-	var f, p;
-	if (!window.SWFObject && !window.swfobject) {
-		// roll our own
-		if (opts.flashvars) {
-			var a = [];
-			for (f in opts.flashvars)
-				a.push(f + '=' + opts.flashvars[f]);
-			if (!opts.params) opts.params = {};
-			opts.params.flashvars = a.join('&');
-		}
-		return generate(el, opts, 'flash');
-	}
-
-	var id = el.id ? (' id="'+el.id+'"') : '';
-	var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
-	var $div = $('<div' + id + cls + '>');
-
-	// swfobject v2+
-	if (window.swfobject) {
-		$(el).after($div).appendTo($div);
-		if (!el.id) el.id = 'movie_player_' + counter++;
-
-		// replace el with swfobject content
-		window.swfobject.embedSWF(opts.src, el.id, opts.width, opts.height, opts.flashVersion,
-			opts.expressInstaller, opts.flashvars, opts.params, opts.attrs);
-	}
-	// swfobject < v2
-	else {
-		$(el).after($div).remove();
-		var so = new SWFObject(opts.src, 'movie_player_' + counter++, opts.width, opts.height, opts.flashVersion, opts.bgColor);
-		if (opts.expressInstaller) so.useExpressInstall(opts.expressInstaller);
-
-		for (p in opts.params)
-			if (p != 'bgColor') so.addParam(p, opts.params[p]);
-		for (f in opts.flashvars)
-			so.addVariable(f, opts.flashvars[f]);
-		so.write($div[0]);
-	}
-
-	if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
-	return $div;
-};
-
-// map flv and mp3 files to the swf player by default
-$.fn.media.flv = $.fn.media.mp3 = function(el, opts) {
-	var src = opts.src;
-	var player = /\.mp3\b/i.test(src) ? opts.mp3Player : opts.flvPlayer;
-	var key = opts.flvKeyName;
-	src = encodeURIComponent(src);
-	opts.src = player;
-	opts.src = opts.src + '?'+key+'=' + (src);
-	var srcObj = {};
-	srcObj[key] = src;
-	opts.flashvars = $.extend({}, srcObj, opts.flashvars );
-	return $.fn.media.swf(el, opts);
-};
-
-//
-//	Silverlight
-//
-$.fn.media.xaml = function(el, opts) {
-	if (!window.Sys || !window.Sys.Silverlight) {
-		if ($.fn.media.xaml.warning) return;
-		$.fn.media.xaml.warning = 1;
-		alert('You must include the Silverlight.js script.');
-		return;
-	}
-
-	var props = {
-		width: opts.width,
-		height: opts.height,
-		background: opts.bgColor,
-		inplaceInstallPrompt: opts.silverlight.inplaceInstallPrompt,
-		isWindowless: opts.silverlight.isWindowless,
-		framerate: opts.silverlight.framerate,
-		version: opts.silverlight.version
-	};
-	var events = {
-		onError: opts.silverlight.onError,
-		onLoad: opts.silverlight.onLoad
-	};
-
-	var id1 = el.id ? (' id="'+el.id+'"') : '';
-	var id2 = opts.id || 'AG' + counter++;
-	// convert element to div
-	var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
-	var $div = $('<div' + id1 + cls + '>');
-	$(el).after($div).remove();
-
-	Sys.Silverlight.createObjectEx({
-		source: opts.src,
-		initParams: opts.silverlight.initParams,
-		userContext: opts.silverlight.userContext,
-		id: id2,
-		parentElement: $div[0],
-		properties: props,
-		events: events
-	});
-
-	if (opts.caption) $('<div>').appendTo($div).html(opts.caption);
-	return $div;
-};
-
-//
-// generate object/embed markup
-//
-function generate(el, opts, player) {
-	var $el = $(el);
-	var o = $.fn.media.defaults.players[player];
-	var a, key, v;
-
-	if (player == 'iframe') {
-		o = $('<iframe' + ' width="' + opts.width + '" height="' + opts.height + '" >');
-		o.attr('src', opts.src);
-		o.css('backgroundColor', o.bgColor);
-	}
-	else if (player == 'img') {
-		o = $('<img>');
-		o.attr('src', opts.src);
-		if (opts.width)
-			o.attr('width', opts.width);
-		if (opts.height)
-			o.attr('height', opts.height);
-		o.css('backgroundColor', o.bgColor);
-	}
-	else if (lameIE) {
-		a = ['<object width="' + opts.width + '" height="' + opts.height + '" '];
-		for (key in opts.attrs)
-			a.push(key + '="'+opts.attrs[key]+'" ');
-		for (key in o.ieAttrs || {}) {
-			v = o.ieAttrs[key];
-			if (key == 'codebase' && window.location.protocol == 'https:')
-				v = v.replace('http','https');
-			a.push(key + '="'+v+'" ');
-		}
-		a.push('></ob'+'ject'+'>');
-		var p = ['<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">'];
-		for (key in opts.params)
-			p.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
-		o = document.createElement(a.join(''));
-		for (var i=0; i < p.length; i++)
-			o.appendChild(document.createElement(p[i]));
-	}
-	else if (opts.standards) {
-		// Rewritten to be standards compliant by Richard Connamacher
-		a = ['<object type="' + o.mimetype +'" width="' + opts.width + '" height="' + opts.height +'"'];
-		if (opts.src) a.push(' data="' + opts.src + '" ');
-		if (msie) {
-			for (key in o.ieAttrs || {}) {
-				v = o.ieAttrs[key];
-				if (key == 'codebase' && window.location.protocol == 'https:')
-					v = v.replace('http','https');
-				a.push(key + '="'+v+'" ');
-			}
-		}
-		a.push('>');
-		a.push('<param name="' + (o.oUrl || 'src') +'" value="' + opts.src + '">');
-		for (key in opts.params) {
-			if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode
-				continue;
-			a.push('<param name="'+ key +'" value="' + opts.params[key] + '">');
-		}
-		// Alternate HTML
-		a.push('<div><p><strong>'+o.title+' Required</strong></p><p>'+o.title+' is required to view this media. <a href="'+o.pluginspage+'">Download Here</a>.</p></div>');
-		a.push('</ob'+'ject'+'>');
-	}
-	 else {
-	        a = ['<embed width="' + opts.width + '" height="' + opts.height + '" style="display:block"'];
-	        if (opts.src) a.push(' src="' + opts.src + '" ');
-	        for (key in opts.attrs)
-	            a.push(key + '="'+opts.attrs[key]+'" ');
-	        for (key in o.eAttrs || {})
-	            a.push(key + '="'+o.eAttrs[key]+'" ');
-	        for (key in opts.params) {
-	            if (key == 'wmode' && player != 'flash') // FF3/Quicktime borks on wmode
-					continue;
-	            a.push(key + '="'+opts.params[key]+'" ');
-	        }
-	        a.push('></em'+'bed'+'>');
-	    }	
-	// convert element to div
-	var id = el.id ? (' id="'+el.id+'"') : '';
-	var cls = opts.cls ? (' class="' + opts.cls + '"') : '';
-	var $div = $('<div' + id + cls + '>');
-	$el.after($div).remove();
-	if (lameIE || player == 'iframe' || player == 'img')
-		$div.append(o);
-	else
-		$div.html(a.join(''));
-	
-	if (opts.caption) 
-		$('<div>').appendTo($div).html(opts.caption);
-	return $div;
-}
-
-
-})(jQuery);

+ 0 - 93
src/assets/js/main.js

@@ -1,93 +0,0 @@
-var onitirDoc;
-
-(function($) {
-    'use strict';
-    onitirDoc = {
-        init: function() {
-            this.mobileMenu();
-            this.productGird();
-        },
-
-        // Mobile Menu
-        mobileMenu: function() {
-            $('.mainmenu-area .main-menu .menu-items').meanmenu({
-                meanMenuContainer: '.mobile-menu',
-                meanScreenWidth: '991',
-                meanRevealPosition: 'right',
-            });
-        },
-
-        // Porduct Grid
-        productGird: function() {
-            var grid = jQuery('.grid-isotope');
-            if (!grid.length) {
-                return;
-            }
-
-            grid.isotope();
-
-            jQuery('.grid-filter ul').on('click', 'li', function() {
-                var filterValue = jQuery(this).attr('data-filter');
-                grid.isotope({ filter: filterValue });
-            });
-
-            jQuery('.grid-filter ul li').on('click', function(event) {
-                jQuery(this).siblings('.active').removeClass('active');
-                jQuery(this).addClass('active');
-                event.preventDefault();
-            });
-        }
-    };
-
-    // Document Ready
-    $(document).ready(function() {
-        onitirDoc.init();
-
-        //首页下箭头点击事件
-        var $wh = $(window).height();
-        $('.go_down').click(function (e) {
-            $('html,body').animate({
-                scrollTop: $(window).height()
-            }, 700);
-        });
-    });
-
-    
-    $(window).on('scroll', function() {
-
-        // Sticky Header
-        var scroll = $(window).scrollTop();
-        if (scroll < 110) {
-            $('header.sticky-header').removeClass('sticky');
-        } else {
-            $('header.sticky-header').addClass('sticky');
-        }
-
-        //返回顶部按钮的显示与隐藏
-        if (scroll > 700){
-            $('#scroll-up').css({'visibility': 'visible','opacity':'1'});
-        }else{
-            $('#scroll-up').css({'visibility': 'hidden','opacity':'0'});
-        }
-    })
-
-
-    //百度统计
-    var _hmt = _hmt || [];
-    (function() {
-    var hm = document.createElement("script");
-    hm.src = "https://hm.baidu.com/hm.js?082d841c5adb911dd14595d0885a7c69";
-    var s = document.getElementsByTagName("script")[0]; 
-    s.parentNode.insertBefore(hm, s);
-    })();
-
-
-
-})(jQuery)
-
-
-
-
-
-
-

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 3
src/assets/js/popper.min.js


+ 0 - 9
src/assets/js/settinginfo.js

@@ -1,9 +0,0 @@
-window.FQDN = 'http://aiot.usky.cn:8089/USKYOW/index.php/index/';
-
-//请求域名写活
-window.FQDN2 = (window.location.host.indexOf('172.16.120.165')>-1||window.location.host.indexOf('127.0.0.1')>-1)?'http://172.16.120.165:13200/prod-api/service-website/':'http://gateway.usky.cn/prod-api/service-website/';  
-
-//本地调试域名
-// window.FQDN2 = 'http://172.16.120.165:13200/prod-api/service-website/';  
-  
-

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 1
src/assets/js/vendor/jquery-1.12.4.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 2
src/assets/js/vendor/modernizr-3.6.0.min.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
src/assets/js/vue.min.js


+ 4 - 2
src/components/layout/banner.vue

@@ -9,8 +9,10 @@ const posterImg = ref(poster)//视频封面图
 watch(
     () => store.state.menuList,
     () => {
-        modelType.value = store.state.menuList[store.state.sub]?.modelType //图片或视频类型
-        columnImage.value =store.state.menuList[store.state.sub]?.imagePath//图片或视频地址
+        setTimeout(()=>{
+            modelType.value = store.state.menuList[store.state.sub]?.modelType //图片或视频类型
+            columnImage.value =store.state.menuList[store.state.sub]?.imagePath//图片或视频地址
+        },300)
     },
     { deep: true, immediate: true }
 );

+ 2 - 54
src/components/layout/header.vue

@@ -9,60 +9,8 @@ const pathTemplateQuery = ref()//页面模版复用参数
 if(route.query && route.query.dup){
     pathTemplateQuery.value = route.query.dup
 }
-console.log(11111)
-//获取菜单列表及当前页面内容
-store.dispatch('getMenuList').then(()=>{
-    const data = ref(store.state.menuList)
-    const paramsData = ref({}) //页面主题内容请求参数
-    console.log(3333)
-    let str 
-    if(currentPagePath.value.indexOf("_")){
-        console.log(currentPagePath.value)
-        str = currentPagePath.value.split("_")[0]
-    }
-    for(let i=0;i<data.value.length;i++){
-        if(currentPagePath.value == data.value[i].path || str == data.value[i].path){
-            console.log(5,data.value[i].path)
-            //模板 主页
-            if(!data.value[i].sname && !route.query?.categoryid){
-                console.log(1)
-                paramsData.value = {
-                    params:{
-                        categoryid: data.value[i].id,
-                        pageNum:1,
-                        pageSize:100,
-                        order:"sortindex",
-                    },
-                    index:currentPagePath.value,
-                    sub:i
-                }
-                if(data.value[i].path == "/cases"){
-                    paramsData.value.params.categoryid = data.value[i].children[0].id
-                }
-            }
-             //详情页(添加details识别参数)
-            //  console.log(route.query?.categoryid  && !route.query.dup)
-             if(route.query?.categoryid  && !route.query.dup){
-                paramsData.value = {
-                    params:{
-                        categoryid: route.query?.categoryid,
-                        pageNum:1,
-                        pageSize:1,
-                        order:"sortindex",
-                        articleid: route.query?.id,
-                        id: route.query?.id,
-                        details:true
-                    },
-                    index:currentPagePath.value,
-                    sub:i
-                }
-             }
-            //复用模板页
-           
-        }
-    }
-    store.dispatch('getPageData',paramsData.value)
-})
+//获取菜单列表
+store.dispatch('getMenuList')
 </script>
 <template>
         <header class="header-absolute sticky-header">

+ 44 - 0
src/components/layout/pagination.vue

@@ -0,0 +1,44 @@
+<script setup lang="ts">
+import { ref } from 'vue'
+const emit:any = defineEmits([]);
+const props = defineProps({
+  data: Object,
+});
+const data = ref({})
+data.value = props.data
+function handleCurrentChange(val:number) {
+    emit("pagination", val);
+    data.value.count = val
+}
+</script>
+<template>
+       <div class="news-content-section pt-60" v-if="data.total">
+            <div class="container">
+                <div class="row newBox">
+                    <div class="col-lg-12 col-md-12 content" >
+                        <div  class="page mt-30 mb-30">
+                            <div class="d-flex justify-content-center align-items-end cannot_selected" style="position:relative">
+                                <div class="page-des align-items-start cannot_selected">共<span> {{ Math.ceil(data.total / data.size)}}</span>页,共<span> {{data.total}}</span>条信息</div>
+                                <el-pagination 
+                                    prev-text="上一页" 
+                                    next-text='下一页' 
+                                    :page-size="data.size" 
+                                    :current-page="data.count" 
+                                    background layout="prev, pager, next"
+                                    :total="data.total" 
+                                    @current-change="handleCurrentChange"
+                                    >
+                                </el-pagination>
+                                <div class="page-des2 align-items-end cannot_selected pc">前往第
+                                    <input v-model="data.count" class="previous" @change="currentChange" /> 页
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+</template>
+<style lang="scss" scoped>
+
+</style>

+ 23 - 0
src/components/layout/recomMendation.vue

@@ -0,0 +1,23 @@
+<script setup lang="ts">
+import { useRoute } from "vue-router";
+const route = useRoute()
+const emit:any = defineEmits([]);
+const props = defineProps({
+  data: Object,
+});
+const data = props.data
+</script>
+<template>
+       <div>
+            <div class="title-tag2 text-left">相关推荐</div>
+            <div class="relNewBox container text-left ">
+                <a class="ustify-content-between d-flex relNewsList" :href="`${route.path}?categoryid=${item.categoryid}&id=${item.id}&isUrlId=1`" v-for="item in data" :key="item.id">
+                    <div><img width="18" height="18" src="@/assets/img/news/arrowT.svg"> {{item.title}} </div>
+                    <div>{{ item.createdate }}</div>
+                </a>
+            </div>
+        </div>
+</template>
+<style lang="scss" scoped>
+
+</style>

+ 3 - 1
src/main.ts

@@ -5,12 +5,14 @@ import { createSSRRouter } from './router'
 import ElementPlus from 'element-plus'
 import 'element-plus/dist/index.css'
 import { store } from './store'
+// import { scrollToTop } from './assets/js/common.js'
 // import { sync } from 'vuex-router-sync'
 const router = createSSRRouter()
-
+// 全局方法挂载
 
 export function createApp() {
     const app = createSSRApp(App)
+    // app.config.globalProperties.$scrollToTop = scrollToTop
     // sync(store,router)
     app.use(router)
     app.use(store)

+ 32 - 0
src/router/index.ts

@@ -2,20 +2,33 @@ const index = () => import('@/views/index/index.vue')
 const cases = () => import('@/views/cases/index.vue')
 const cases_Read = () => import('@/views/cases/read.vue')
 const services = () => import('@/views/services/index.vue')
+const services_Read = () => import('@/views/services/read.vue')
 const news = () => import('@/views/news/index.vue')
+const news_Read = () => import('@/views/news/read.vue')
 const about = () => import('@/views/about/index.vue')
 import { createRouter, createMemoryHistory, createWebHistory } from 'vue-router'
 
 const routes = [
+    
     {
         path: "/index",
         name: "首页",
         component: index,
+        redirect:"/",
         meta: {
             title: "",
             keepAlive: false
         }
     },
+    // {
+    //     path: "",
+    //     name: "首页",
+    //     component: index,
+    //     meta: {
+    //         title: "",
+    //         keepAlive: false
+    //     }
+    // },
     {
         path: "/cases",
         name: "客户案例",
@@ -45,6 +58,16 @@ const routes = [
             keepAlive: false
         }
     },
+    {
+        path: "/services_Read",
+        name: "产品详情页",
+        component: services_Read,
+        meta: {
+            title: "",
+            keepAlive: false
+        }
+    },
+
     {
         path: "/news",
         name: "新闻动态",
@@ -54,6 +77,15 @@ const routes = [
             keepAlive: false
         }
     },
+    {
+        path: "/news_Read",
+        name: "新闻详情",
+        component: news_Read,
+        meta: {
+            title: "",
+            keepAlive: false
+        }
+    },
     {
         path: "/about",
         name: "关于永天",

+ 28 - 15
src/store/index.ts

@@ -12,8 +12,14 @@ export const store = createStore({
         pageContent:[],//页面主体内容(不包含banner)
         recomMendation:[],//推荐内容
         currentPagePath:'',//当前页名称
-        casesAcitveId:"",//客户案例类型切换活动id
-        sub:"",//当前页下标
+        acitveId:0,//客户案例类型切换活动id
+        sub:0,//当前页下标
+        //分页数据
+        pagination:{
+            total:0,
+            size:10,
+            count:1
+        },
         // 公共弹框
         centerDialogVisible: false,
         dialogDataArray: [],
@@ -51,33 +57,39 @@ export const store = createStore({
         },
     },
     mutations:{
+        //菜单列表
         setMenuList(state:any,data:any){
             state.menuList = data
             return state.menuList
         },
-        setPageData(state:any,data:object){
-            state.pageContent = data
-            return state.pageContent
+        //页面主体内容
+        setPageData(state:any,data:any){
+            state.pageContent = data.records
+            state.pagination.total = data.total
+            return state.pageContent,state.pagination
         },
-        setCurrentPagePathOrSub(state:any,data:object){
+        //
+        setCurrentPagePathOrSub(state:any,data:any){
             state.currentPagePath = data.index
             state.sub = data.sub
             return  state.index,state.sub 
         },
-        setCasesAcitveId(state:any,data:object){
-            state.casesAcitveId = data
-            return  state.casesAcitveId
+        //子页面活动状态
+        setAcitveId(state:any,data:object){
+            state.acitveId = data
+            return  state.acitveId
         },
+        //推荐内容
         setRecomMendation(state:any,data:object){
             state.recomMendation = data
             return  state.recomMendation
-        }
+        },
 
         
     },
     actions:{
 
-        getMenuList({ commit }){
+        getMenuList({ commit } :any){
             return new Promise(resolve=>{
                 getMenu().then((res:any)=>{
                     let data = []
@@ -118,15 +130,16 @@ export const store = createStore({
                     commit('setCurrentPagePathOrSub',{index:data.index,sub:data.sub})
                 }
                 //cases页类型活动id
-                if(data.params?.categoryid && data.index == "/cases" ){
-                    commit('setCasesAcitveId',data.params.categoryid)
+                if(data.params?.categoryid && (data.index == "/cases"  || data.index == "/services") || data.index == "/news"){
+                    commit('setAcitveId',data.params.categoryid)
                 }
                 getPageContent(data.params).then((res:any)=>{
-                    commit('setPageData',res.data.records)
+                    //当页主体数据
+                    commit('setPageData',res.data) 
                     resolve(true)
                 })
                 //推荐列表查询
-                if(data.params.details){
+                if(data.params?.details){
                     let params =  JSON.parse(JSON.stringify(data.params))
                     delete params.articleid
                     params.pageSize = 100

+ 136 - 10
src/views/about/index.vue

@@ -1,16 +1,142 @@
-<script lang="ts">
-import { defineComponent, ref } from 'vue'
-export default defineComponent({
-    setup(){
-    },
-    asyncData({store, route}:any){
-        return store.dispatch('getMenuList') 
+<script setup lang="ts">
+import { ref, onMounted } from 'vue'
+import { useStore  } from 'vuex'
+import { useRouter, useRoute } from "vue-router";
+import banner from '@/components/layout/banner.vue'
+import pagination from '@/components/layout/pagination.vue'
+
+    const store = useStore()
+    const router = useRouter()
+    const route = useRoute()
+    const columnTypes = ref([]) //类型
+    const requestParams = ref({})//active类型
+    const articalArray = ref([])
+    setTimeout(()=>{
+        columnTypes.value = store.state.menuList[store.state.sub].children
+    },500)
+    const paramsData = ref({})
+    let oldCategoryId= ref()
+    //类型切换
+    function facilityClick(item:Object){
+        //防抖
+        if(item.id != oldCategoryId.value){
+            requestParams.value = item
+            paramsData.value = {
+                params:{
+                    categoryid: item.id,
+                    pageNum:1,
+                    pageSize:10,
+                    order:"sortindex",
+                },
+                index:store.state.currentPagePath,
+                sub:store.state.sub
+            }
+            oldCategoryId.value = item.id
+            store.dispatch('getPageData',paramsData.value).then(()=>{
+                articalArray.value = store.state.pageContent
+            })
+        }
+    }
+    //详情页
+    function details(item:Object){
+        router.push(
+            { 
+                path: `services_Read` , 
+                query: { 
+                    categoryid: item.categoryid,
+                    id:item.id,
+                    isUrlId:1
+                } 
+            }
+        )
+
     }
-})
+    //数据初始化
+    function init(){
+      const data = store.state.menuList
+      const paramsData = ref({})//页面主题内容请求参数
+      for(let i=0;i<data.length;i++){
+              //模板 主页
+              if(!data[i].sname && route.path == data[i].path){
+                  paramsData.value = {
+                      params:{
+                          categoryid: data[i].id,
+                          pageNum:1,
+                          pageSize:100,
+                          order:"sortindex",
+                      },
+                      index:route.path,
+                      sub:i
+                  }
+                  if(!route.query?.categoryid){
+                    paramsData.value.params.categoryid = data[i].id
+                  }else{
+                    paramsData.value.params.categoryid = route.query.categoryid
+                  }
+                  store.dispatch('getPageData',paramsData.value).then(()=>{
+                    articalArray.value = store.state.pageContent
+                  })
+              }
+      }
+    }
+    //分页
+    function handleCurrentChange(val:number){
+        paramsData.value.params.pageNum = val
+        store.dispatch('getPageData',paramsData.value).then(()=>{
+            articalArray.value = store.state.pageContent
+            globalThis.scrollTo({
+                top: 0,
+                behavior: "smooth"
+            })
+        })
+    }
+    onMounted(() => {
+        setTimeout(()=>{
+            init()
+        },300)
+    });
 </script>
 <template>
-       
+    <div class="pageContain">
+        <div class="common-bradcrumb-section">
+            <banner />
+        </div>
+        <section class="about-introduce-section course-section pt-40 pb-60 about-sec"
+                    v-for="(arr,index) in articalArray" :style="{background:(index % 2 == 1?'#F4F8FD':'#fff')}">
+                    <div :id="arr.id" class="pointOffset">0</div>
+                    <div class="container">
+                        <div class="row">
+                            <div class="col-md-2 col-sm-12 text-center">
+                                <ul class="aboutTyes" v-if="index==0">
+                                    <li v-for="item in articalArray" :key="item.id"><a
+                                            :href="`#${item.id}`">{{item.title}}</a></li>
+                                </ul>
+                            </div>
+                            <div class="col-md-10 col-sm-12">
+                                <div class="section-title text-center both-border pb-20">
+                                    <span class="title-tag">{{arr.title}}</span>
+                                </div>
+                                <!-- 图文混排 -->
+                                <div class="row aboutOnlyText text-left" v-if="arr.image" 
+                                    :style="{padding:(index % 2 == 1?'40px 25px':' 40px 25px')}"
+                                    style="background-color: #ffff;    box-shadow: 0px 10px 20px 10px rgb(179 202 216 / 20%)">
+                                    <div class="col-md-7  pr-40 aboutImg ">
+                                        <img :src="arr.image" alt="" >
+                                    </div>
+                                    <div class="col-md-5  " v-html="arr.content">
+                                    </div>
+                                </div>
+                                <!-- 只有富文本 -->
+                                <div class="aboutOnlyText row text-left" v-else :style="{padding:(index % 2 == 1?'40px':'0 ')}"
+                                    style="background-color: #ffff;">
+                                    <div class=" about-text-image" v-html="arr.content">
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+    </div>
 </template>
 <style lang="scss" scoped>
-
 </style>

+ 36 - 3
src/views/cases/index.vue

@@ -1,10 +1,11 @@
 <script setup lang="ts">
-import { ref } from 'vue'
+import { ref, onMounted } from 'vue'
 import { useStore  } from 'vuex'
-import { useRouter } from "vue-router";
+import { useRouter, useRoute } from "vue-router";
 import banner from '@/components/layout/banner.vue'
     const store = useStore()
     const router = useRouter()
+    const route = useRoute()
     const columnTypes = ref([]) //类型
     const requestParams = ref({})//active类型
     setTimeout(()=>{
@@ -43,7 +44,39 @@ import banner from '@/components/layout/banner.vue'
                 } 
             }
         )
+        globalThis.scrollTo(0,0)
     }
+    //数据初始化
+    function init(){
+      const data = store.state.menuList
+      const paramsData = ref({})//页面主题内容请求参数
+      for(let i=0;i<data.length;i++){
+              //模板 主页
+              if(!data[i].sname && route.path == data[i].path){
+                  paramsData.value = {
+                      params:{
+                          categoryid: data[i].id,
+                          pageNum:1,
+                          pageSize:100,
+                          order:"sortindex",
+                      },
+                      index:route.path,
+                      sub:i
+                  }
+                  if(!route.query?.categoryid){
+                    paramsData.value.params.categoryid = data[i].children[0].id
+                  }else{
+                    paramsData.value.params.categoryid = route.query.categoryid
+                  }
+                  store.dispatch('getPageData',paramsData.value)
+              }
+      }
+    }
+    onMounted(() => {
+        setTimeout(()=>{
+            init()
+        },300)
+    });
 </script>
 <template>
     <div class="pageContain">
@@ -52,7 +85,7 @@ import banner from '@/components/layout/banner.vue'
             </section>
             <section style="background:#F4F8FD" class="solutionType">
                 <div class="container pc" style="text-align:center">
-                    <div class="solutionTypeOne" v-for="(item,i) in columnTypes" :class="item.id == store.state.casesAcitveId ? 'active' : ''" @mouseover="facilityClick(item)"  :style="{'width':(1/columnTypes.length*100)+'%' }">
+                    <div class="solutionTypeOne" v-for="(item,i) in columnTypes" :class="item.id == store.state.acitveId ? 'active' : ''" @mouseover="facilityClick(item)"  :style="{'width':(1/columnTypes.length*100)+'%' }">
                         <div style="width:40px;height:40px;;overflow:hidden;margin:0 auto" >
                             <img class="img" :src="item.imagePath" alt=""  >
                         </div>

+ 51 - 37
src/views/cases/read.vue

@@ -1,38 +1,61 @@
 <script setup lang="ts">
-    import { ref } from 'vue'
+    import { ref, onMounted } from 'vue'
     import { useStore  } from 'vuex'
+    import { useRoute } from "vue-router"
     import banner from '@/components/layout/banner.vue'
-        const store = useStore()
-        const columnTypes = ref([]) //类型
-        const requestParams = ref({})//active类型
-        setTimeout(()=>{
-            columnTypes.value = store.state.menuList[store.state.sub].children
-        },500)
+    import recomMendation from '@/components/layout/recomMendation.vue'
+    const store = useStore()
+    const route = useRoute()
+    const recomMendationList = ref([]) //推荐内容
+    setTimeout(()=>{
+        recomMendationList.value = recomMendationFilter(store.state.recomMendation)
+    },1000)
+    //推荐内容过滤
+    function recomMendationFilter(data:any){
+        let array = []
+        for(let i =0;i<data.length;i++){
+            if(data[i].id != route.query?.id){
+                array.push(data[i])
+            }
+        }
+        return array
+    }
+    //页面内容初始化
+    function init(){
+        const data = ref(store.state.menuList)
+        let str =ref("")
+        let sub = ref()
         const paramsData = ref({})
-        let oldCategoryId= ref()
-        //类型切换
-        function facilityClick(item:Object){
-            //防抖
-            if(item.id != oldCategoryId.value){
-                requestParams.value = item
-                paramsData.value = {
-                    params:{
-                        categoryid: item.id,
-                        pageNum:1,
-                        pageSize:100,
-                        order:"sortindex",
-                    },
-                    index:store.state.currentPagePath,
-                    sub:store.state.sub
+        if(route.path.indexOf("_")){
+            str.value = route.path.split("_")[0]
+        }
+        for(let i=0;i<data.value.length;i++){
+            if( route.path == data.value[i].path || str == data.value[i].path){
+                if(route.query?.categoryid  && !route.query.dup){
+                    sub.value = i
                 }
-                oldCategoryId.value = item.id
-                store.dispatch('getPageData',paramsData.value)
             }
         }
-        //详情页
-        function oneInnerBox(item){
-    
+        if(route.query?.categoryid  && !route.query.dup){
+            paramsData.value = {
+                params:{
+                    categoryid: route.query?.categoryid,
+                    pageNum:1,
+                    pageSize:1,
+                    order:"sortindex",
+                    articleid: route.query?.id,
+                    id: route.query?.id,
+                    details:true
+                },
+                index:route.path,
+                sub:sub
+            }
         }
+        store.dispatch('getPageData',paramsData.value)
+    }
+    onMounted(() => {
+        init()
+    });
     </script>
     <template>
             <div class="pageContain">
@@ -54,16 +77,7 @@
                                         </div>
                                     </div>
                                 </div>
-                                <div v-if="store.state.recomMendation.length>0">
-                                    <div class="title-tag2">相关推荐</div>
-                                    <div class="relNewBox container text-left ">
-                                        <a class="ustify-content-between d-flex relNewsList" :href="dup?'./read.html?dup='+dup+'&categoryid='+item.categoryid+'&id='+item.id+'&isUrlId=1':'./read.html?categoryid='+item.categoryid+'&id='+item.id+'&isUrlId=1'" v-for="item in store.state.recomMendation" :key="item.id">
-                                            <div><img width="18" height="18" src="@/assets/img/news/arrowT.svg"> {{item.title}} </div>
-                                            <div>{{ item.createdate }}</div>
-                                        </a>
-                                    </div>
-                                </div>
-        
+                                <recomMendation :data="recomMendationList"  v-if="recomMendationList.length>0"/>
                             </div>
                         </div>
                     </div>

+ 43 - 0
src/views/index/index.vue

@@ -1,8 +1,11 @@
 
 <script setup lang="ts">
+import { ref, onMounted } from 'vue'
 import { useStore  } from 'vuex'
+import { useRoute } from "vue-router";
 import banner from '@/components/layout/banner.vue'
 const store = useStore()
+const route = useRoute()
 // 首页箭头下拉
 function go_down(){
     globalThis.scrollTo({
@@ -10,6 +13,46 @@ function go_down(){
         behavior: "smooth"
     })
 }
+ //数据初始化
+ function init(){
+      const data = store.state.menuList
+      const paramsData = ref({
+        params:{
+            categoryid: 0,
+            pageNum:1,
+            pageSize:100,
+            order:"sortindex",
+        },
+        index:"",
+        sub:0
+      })//页面主题内容请求参数
+      for(let i=0;i<data.length;i++){
+        //主页
+        console.log(data[i].sname , data[i].path)
+        if(!data[i].sname && route.path == data[i].path || !data[i].sname && data[i].path =="/index"){
+            paramsData.value = {
+                params:{
+                    categoryid: data[i].id,
+                    pageNum:1,
+                    pageSize:100,
+                    order:"sortindex",
+                },
+                index:route.path,
+                sub:i
+            }
+            console.log(data[i])
+            if(route.path == "/index" || route.path == "/"){
+            paramsData.value.params.categoryid = data[i].id
+            }
+            store.dispatch('getPageData',paramsData.value)
+        }
+      }
+    }
+    onMounted(() => {
+        setTimeout(()=>{
+            init()
+        },300)
+    });
 </script>
 <template>
     <div class="pageContain">

+ 134 - 9
src/views/news/index.vue

@@ -1,15 +1,140 @@
-<script lang="ts">
-import { defineComponent, ref } from 'vue'
-export default defineComponent({
-    setup(){
-    },
-    asyncData({store, route}:any){
-        return store.dispatch('getMenuList') 
+<script setup lang="ts">
+import { ref, onMounted } from 'vue'
+import { useStore  } from 'vuex'
+import { useRouter, useRoute } from "vue-router";
+import banner from '@/components/layout/banner.vue'
+import pagination from '@/components/layout/pagination.vue'
+
+    const store = useStore()
+    const router = useRouter()
+    const route = useRoute()
+    const columnTypes = ref([]) //类型
+    const requestParams = ref({})//active类型
+    const articalArray = ref([])
+    setTimeout(()=>{
+        columnTypes.value = store.state.menuList[store.state.sub].children
+    },1000)
+    const paramsData = ref({})
+    let oldCategoryId= ref()
+    //类型切换
+    function facilityClick(item:any){
+        //防抖
+        if(item.id != oldCategoryId.value){
+            requestParams.value = item
+            paramsData.value = {
+                params:{
+                    categoryid: item.id,
+                    pageNum:1,
+                    pageSize:10,
+                    order:"sortindex",
+                },
+                index:store.state.currentPagePath,
+                sub:store.state.sub
+            }
+            oldCategoryId.value = item.id
+            store.dispatch('getPageData',paramsData.value).then(()=>{
+                articalArray.value = store.state.pageContent
+            })
+        }
+    }
+    //详情页
+    function details(item:any){
+        router.push(
+            { 
+                path: `news_Read` , 
+                query: { 
+                    categoryid: item.categoryid,
+                    id:item.id,
+                    isUrlId:1
+                } 
+            }
+        )
+
+    }
+    //数据初始化
+    function init(){
+      const data = store.state.menuList
+      const paramsData = ref({})//页面主题内容请求参数
+      for(let i=0;i<data.length;i++){
+              //模板 主页
+              if(!data[i].sname && route.path == data[i].path){
+                  paramsData.value = {
+                      params:{
+                          categoryid: data[i].id,
+                          pageNum:1,
+                          pageSize:100,
+                        //   order:"sortindex",
+                      },
+                      index:route.path,
+                      sub:i
+                  }
+                  if(!route.query?.categoryid){
+                    paramsData.value.params.categoryid = data[i].children[0].id
+                  }else{
+                    paramsData.value.params.categoryid = route.query.categoryid
+                  }
+                  store.dispatch('getPageData',paramsData.value).then(()=>{
+                    articalArray.value = store.state.pageContent
+                  })
+              }
+      }
+    }
+    //分页
+    function handleCurrentChange(val:number){
+        paramsData.value.params.pageNum = val
+        store.dispatch('getPageData',paramsData.value).then(()=>{
+            articalArray.value = store.state.pageContent
+            globalThis.scrollTo({
+                top: 0,
+                behavior: "smooth"
+            })
+        })
     }
-})
+    onMounted(() => {
+        setTimeout(()=>{
+            init()
+        },300)
+    });
 </script>
 <template>
-       
+    <div class="pageContain">
+        <section class="common-bradcrumb-section">
+            <banner />
+        </section>
+        <section style=" background:#F7F7F7">
+            <div class="container">
+                <div class="row newTypeBox">
+                    <div class="col-lg-6 col-md-6"  v-for="(item,i) in columnTypes">
+                        <div class="titleOne" :class="item.id == (store.state.acitveId ? store.state.acitveId : columnTypes[0].id) ? 'active' : ''" v-on:mouseover="facilityClick(item)">{{item.categoryName}} </div>
+                    </div>
+                </div>
+            </div>
+        </section>
+        <section class="news-content-section pt-70">
+                <div class="container">
+                    <div class="row">
+                        <div class="col-lg-12 col-md-12 content">
+                            <ul>
+                                <!-- 新闻列表主题start -->
+                                <div class="row">
+                                    <div class="col-md-4 newItemOne lazyContainer" v-for="(item,index) in articalArray" :key="index" >
+                                        <div class="oneInnerBox" @click="details(item)">
+                                            <div class="img" style="overflow:hidden">
+                                                    <el-image  :src="item.image" alt="" :data-src="item.image" fit="contain"  style="display:block"  />   
+                                            </div>
+                                            <a class="line-two">{{item.title}}</a>
+                                            <span>{{ item.createdate }}</span>
+                                        </div>
+                                    </div>
+                                </div>
+                            </ul>
+                            <pagination :data="store.state.pagination" @pagination="handleCurrentChange" />
+                        </div>
+                    </div>
+                </div>
+            </section>
+    </div>
+            
 </template>
 <style lang="scss" scoped>
 

+ 91 - 0
src/views/news/read.vue

@@ -0,0 +1,91 @@
+<script setup lang="ts">
+    import { ref, onMounted } from 'vue'
+    import { useStore  } from 'vuex'
+    import { useRoute } from "vue-router"
+    import banner from '@/components/layout/banner.vue'
+    import recomMendation from '@/components/layout/recomMendation.vue'
+    
+    const store = useStore()
+    const route = useRoute()
+    const recomMendationList = ref([]) //推荐内容
+    setTimeout(()=>{
+        recomMendationList.value = recomMendationFilter(store.state.recomMendation)
+    },30)
+    //推荐内容过滤
+    function recomMendationFilter(data:any){
+        let array = []
+        for(let i =0;i<data.length;i++){
+            if(data[i].id != route.query?.id){
+                array.push(data[i])
+            }
+        }
+        return array
+    }
+    //页面内容初始化
+    function init(){
+        const data = ref(store.state.menuList)
+        let str =ref("")
+        let sub = ref()
+        const paramsData = ref({})
+        if(route.path.indexOf("_")){
+            str.value = route.path.split("_")[0]
+        }
+        for(let i=0;i<data.value.length;i++){
+            if( route.path == data.value[i].path || str == data.value[i].path){
+                if(route.query?.categoryid  && !route.query.dup){
+                    sub.value = i
+                }
+            }
+        }
+        if(route.query?.categoryid  && !route.query.dup){
+            paramsData.value = {
+                params:{
+                    categoryid: route.query?.categoryid,
+                    pageNum:1,
+                    pageSize:1,
+                    order:"sortindex",
+                    articleid: route.query?.id,
+                    id: route.query?.id,
+                    details:true
+                },
+                index:route.path,
+                sub:sub
+            }
+        }
+        store.dispatch('getPageData',paramsData.value)
+    }
+    onMounted(() => {
+        init()
+    });
+    </script>
+    <template>
+            <div class="pageContain">
+                <section class="common-bradcrumb-section" >
+                    <banner />
+                </section>
+                <section class="product-content-section pt-60">
+                    <div class="container" v-if="store.state.pageContent.length>0">
+                        <div class="row">
+                            <div class="col-lg-12 col-md-12 content">
+                                <div  class="read_content mb-60">
+                                    <div class="section-title text-left both-border mb-60 d-flex justify-content-between">
+                                        <div >
+                                            <span class="title-tag2">{{store.state.pageContent[0].title}}</span>
+                                            <div class="new-read-title2">
+                                                    <span >{{ store.state.pageContent[0].createdate }}</span>
+                                                    <!-- <span >作者:{{articalArray[0].author}}</span> -->
+                                                    <span >点击量:{{store.state.pageContent[0].hits}}</span>
+                                            </div>
+                                        </div>
+                                        <a href="javascript:history.back(-1)"><img src="@/assets/img/product/close.png" alt=""></a>
+                                    </div>                            
+                                    <div v-html="store.state.pageContent[0].content" class="new-read-body">
+                                    </div>
+                                </div>
+                                <recomMendation :data="recomMendationList"  v-if="recomMendationList.length>0"/>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+            </div>
+</template>

+ 122 - 9
src/views/services/index.vue

@@ -1,15 +1,128 @@
-<script lang="ts">
-import { defineComponent, ref } from 'vue'
-export default defineComponent({
-    setup(){
-    },
-    asyncData({store, route}:any){
-        return store.dispatch('getMenuList') 
+<script setup lang="ts">
+import { ref, onMounted } from 'vue'
+import { useStore  } from 'vuex'
+import { useRouter, useRoute } from "vue-router";
+import banner from '@/components/layout/banner.vue'
+import pagination from '@/components/layout/pagination.vue'
+
+    const store = useStore()
+    const router = useRouter()
+    const route = useRoute()
+    const columnTypes = ref([]) //类型
+    const requestParams = ref({})//active类型
+    const articalArray = ref([])
+    setTimeout(()=>{
+        columnTypes.value = store.state.menuList[store.state.sub].children
+    },500)
+    const paramsData = ref({})
+    let oldCategoryId= ref()
+    //类型切换
+    function facilityClick(item:Object){
+        //防抖
+        if(item.id != oldCategoryId.value){
+            requestParams.value = item
+            paramsData.value = {
+                params:{
+                    categoryid: item.id,
+                    pageNum:1,
+                    pageSize:10,
+                    order:"sortindex",
+                },
+                index:store.state.currentPagePath,
+                sub:store.state.sub
+            }
+            oldCategoryId.value = item.id
+            store.dispatch('getPageData',paramsData.value).then(()=>{
+                articalArray.value = store.state.pageContent
+            })
+        }
+    }
+    //详情页
+    function details(item:Object){
+        router.push(
+            { 
+                path: `services_Read` , 
+                query: { 
+                    categoryid: item.categoryid,
+                    id:item.id,
+                    isUrlId:1
+                } 
+            }
+        )
+
+    }
+    //数据初始化
+    function init(){
+      const data = store.state.menuList
+      const paramsData = ref({})//页面主题内容请求参数
+      for(let i=0;i<data.length;i++){
+              //模板 主页
+              if(!data[i].sname && route.path == data[i].path){
+                  paramsData.value = {
+                      params:{
+                          categoryid: data[i].id,
+                          pageNum:1,
+                          pageSize:100,
+                          order:"sortindex",
+                      },
+                      index:route.path,
+                      sub:i
+                  }
+                  if(!route.query?.categoryid){
+                    paramsData.value.params.categoryid = data[i].children[0].id
+                  }else{
+                    paramsData.value.params.categoryid = route.query.categoryid
+                  }
+                  store.dispatch('getPageData',paramsData.value).then(()=>{
+                    articalArray.value = store.state.pageContent
+                  })
+              }
+      }
+    }
+    //分页
+    function handleCurrentChange(val:number){
+        paramsData.value.params.pageNum = val
+        store.dispatch('getPageData',paramsData.value).then(()=>{
+            articalArray.value = store.state.pageContent
+            globalThis.scrollTo({
+                top: 0,
+                behavior: "smooth"
+            })
+        })
     }
-})
+    onMounted(() => {
+        setTimeout(()=>{
+            init()
+        },300)
+    });
 </script>
 <template>
-       
+    <div class="pageContain">
+        <section class="common-bradcrumb-section">
+                <banner />
+                <section class="product-grid-section " style="text-align: center;position:absolute;bottom:0"    :style="{'width': '100%'}" >
+                    <ul class="cannot_selected tabs_selected" >
+                        <a v-for="(item,i) in columnTypes"  :class="item.id == store.state.acitveId ? 'active' : ''"
+                        v-on:mouseover="facilityClick(item)" :style="{'width':(1/columnTypes.length*100)+'%' }">{{item.categoryName}}</a>
+                    </ul>
+                </section>
+            </section>
+            <section class="product-grid-section  container pt-20 pb-60 lazyContainer" >
+                    <div class="row pt-80 content"  >
+                        <div class="col-md-4 newItemOne "  v-for="item in articalArray" :key="item.id">
+                            <div class="oneInnerBox" @click="details(item)">
+                                <div class="img">
+                                    <img :src="item.image" alt="" :data-src="item.image">
+                                </div>
+                                <a class="line-two">{{item.title}}</a>
+                                <span class="line-two">{{item.zhaiyao}}</span>
+                            </div>
+                        </div>
+                    </div>
+                    <pagination :data="store.state.pagination" @pagination="handleCurrentChange" />
+            </section>
+    </div>
+            
 </template>
 <style lang="scss" scoped>
 

+ 90 - 0
src/views/services/read.vue

@@ -0,0 +1,90 @@
+<script setup lang="ts">
+    import { ref, onMounted } from 'vue'
+    import { useStore  } from 'vuex'
+    import { useRoute } from "vue-router"
+    import banner from '@/components/layout/banner.vue'
+    import recomMendation from '@/components/layout/recomMendation.vue'
+    
+    const store = useStore()
+    const route = useRoute()
+    const recomMendationList = ref([]) //推荐内容
+    setTimeout(()=>{
+        recomMendationList.value = recomMendationFilter(store.state.recomMendation)
+    },30)
+    //推荐内容过滤
+    function recomMendationFilter(data:any){
+        let array = []
+        for(let i =0;i<data.length;i++){
+            if(data[i].id != route.query?.id){
+                array.push(data[i])
+            }
+        }
+        return array
+    }
+    //页面内容初始化
+    function init(){
+        const data = ref(store.state.menuList)
+        let str =ref("")
+        let sub = ref()
+        const paramsData = ref({})
+        if(route.path.indexOf("_")){
+            str.value = route.path.split("_")[0]
+        }
+        for(let i=0;i<data.value.length;i++){
+            if( route.path == data.value[i].path || str == data.value[i].path){
+                if(route.query?.categoryid  && !route.query.dup){
+                    sub.value = i
+                }
+            }
+        }
+        if(route.query?.categoryid  && !route.query.dup){
+            paramsData.value = {
+                params:{
+                    categoryid: route.query?.categoryid,
+                    pageNum:1,
+                    pageSize:1,
+                    order:"sortindex",
+                    articleid: route.query?.id,
+                    id: route.query?.id,
+                    details:true
+                },
+                index:route.path,
+                sub:sub
+            }
+        }
+        store.dispatch('getPageData',paramsData.value)
+    }
+    onMounted(() => {
+        init()
+    });
+    </script>
+    <template>
+            <div class="pageContain">
+                <section class="common-bradcrumb-section" >
+                    <banner />
+                </section>
+                <section class="product-content-section pt-60">
+                    <div class="container" v-if="store.state.pageContent.length>0">
+                        <div class="row">
+                            <div class="col-lg-12 col-md-12 content">
+                                <div  class="read_content mb-60">
+                                    <div class="section-title text-left both-border mb-60 d-flex justify-content-between">
+                                        <span class="title-tag2" >{{store.state.pageContent[0].title}}</span>
+                                        <a href="javascript:history.back(-1)"><img src="@/assets/img/product/close.png" alt=""></a>
+                                    </div>
+                                    <div class="row">
+                                        <div class="col-lg-5 col-md-6 ">
+                                            <img :src="store.state.pageContent[0].image" alt="" style="width:90%">
+                                        </div>
+                                        <div class=" col-lg-7 col-md-6 " >
+                                            <div  v-html="store.state.pageContent[0].content"></div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <recomMendation :data="recomMendationList"  v-if="recomMendationList.length>0"/>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+            </div>
+</template>

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio