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

二级菜单重做,市场监督管理模块新增

Liuteng 1 місяць тому
батько
коміт
6e3f3e8cc7

+ 6 - 1
src/router/index.js

@@ -23,10 +23,15 @@ const routes = [
     component: () => import('@/views/HVversion/index')
   },
   // 首页二级菜单
+  // {
+  //   path: '/menu',
+  //   name: 'menu',
+  //   component: () => import('@/views/HVversion/index/menu')
+  // },
   {
     path: '/menu',
     name: 'menu',
-    component: () => import('@/views/HVversion/index/menu')
+    component: () => import('@/views/HVversion/menu')
   },
   /* -----税务服务----- */
   // 契税缴纳

+ 29 - 1
src/views/HVversion/login/phone.vue

@@ -408,12 +408,19 @@ export default {
             this.yhkhLogin();
           } else {
             let gjj = path.slice(0, 4);
-            if (gjj == "/gjj" || gjj == "/zf/" || gjj == "/gab" || gjj == "/zw/") {
+            if (
+              gjj == "/gjj" ||
+              gjj == "/zf/" ||
+              gjj == "/gab" ||
+              gjj == "/zw/"
+            ) {
               console.log("进入公积金");
               this.akzwfwLogin();
             } else if (gjj == "/sbf") {
               console.log("进入社保打印");
               this.sbfdyLogin();
+            } else if (gjj == "/scj") {
+              this.scjdglLogin();
             } else {
               this.rszwfwLogin();
             }
@@ -466,6 +473,7 @@ export default {
     },
     // 易企办登录
     yqbLogin() {
+      console.log("工商开户");
       this.$loading.show("登陆中...");
       var data = {};
       data.cookie = JSON.stringify(this.resultData.cookie);
@@ -485,6 +493,26 @@ export default {
         window.location.href = path;
       }, 2000);
     },
+    // 市场监督管理登录
+    scjdglLogin() {
+      console.log("市场监督管理");
+      this.$loading.show("登陆中...");
+      var data = {};
+      data.cookie = JSON.stringify(this.resultData.cookie);
+      data.token = this.userInfo.token;
+      localStorage.setItem("parameter", JSON.stringify(data));
+      let cookie = JSON.stringify(data);
+      let city = sessionStorage.getItem("JQWZ");
+      let menu = sessionStorage.getItem("gn");
+      let path =
+        "https://sfrz.shaanxi.gov.cn/#/login?client_name=null&response_type=code&client_id=000000012&redirect_uri=http%3A%2F%2Fqysb.sxfda.gov.cn%2FauthorizeLogin%2FgetTokne%3Fclient_id%3D000000012";
+      callbackObjAsync.doScjdgl(cookie, city, menu);
+      setTimeout(() => {
+        this.$loading.hide();
+        callbackObjAsync.showBack();
+        window.location.href = path;
+      }, 2000);
+    },
     // 银行开户登录
     yhkhLogin() {
       let phone = this.form.phone;

+ 90 - 0
src/views/HVversion/menu/components/bmfw.vue

@@ -0,0 +1,90 @@
+<template>
+  <menus
+    :tree-data="treeData"
+    :hot-data="hotData"
+    vertex-id="便民服务"
+    @hotEvent="hotEvent"
+    @menuEvent="menuEvent"
+  ></menus>
+</template>
+
+<script>
+import menus from "../menus.vue";
+import { getbmService, gethomeHot } from "@/api/index";
+export default {
+  name: "NewsmzcMenuBmfw",
+
+  components: {
+    menus,
+  },
+
+  data() {
+    return {
+      treeData: {},
+      hotData: {},
+
+      backName: "",
+    };
+  },
+
+  mounted() {
+    this.getData();
+  },
+
+  methods: {
+    getData() {
+      let form = {
+        name: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+      };
+      getbmService(form).then((res) => {
+        if (res.code === 200) {
+          this.treeData = res.tree.rootNodes[0];
+          this.gethot("便民服务");
+        }
+      });
+    },
+    gethot(e) {
+      this.$loading.show("正在查询...");
+      let form = {
+        vertexName: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+        smzcTerminalId: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+        vertexId: e,
+        hotType: "apple",
+        yhName: this.backName,
+      };
+      gethomeHot(form).then((res) => {
+        this.$loading.hide();
+        this.hotData = res.list;
+      });
+    },
+
+    hotEvent(e) {
+      let data = {
+        dname: e.vertexName,
+        id: e.code,
+        qname: e.county,
+        url: "",
+        url2: e.afUrl,
+      };
+      sessionStorage.setItem("PUBLIC_INFO", JSON.stringify(data));
+      this.$loading.show("正在加载中...");
+      window.location.href = e.preUrl;
+      var a = callbackObjAsync.showBackExit();
+      setTimeout(() => {
+        this.$loading.hide();
+      }, 5000);
+    },
+
+    menuEvent(e) {
+      if (e.path[0] == "/") {
+        this.$router.push(e.path);
+      } else {
+        window.location.href = e.path;
+        var a = callbackObjAsync.showBackExit();
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 82 - 0
src/views/HVversion/menu/components/fzb.vue

@@ -0,0 +1,82 @@
+<template>
+  <menus
+    :tree-data="treeData"
+    :hot-data="hotData"
+    vertex-id="府周(州)办"
+    @hotEvent="hotEvent"
+    @menuEvent="menuEvent"
+  ></menus>
+</template>
+
+<script>
+import menus from "../menus.vue";
+import { fzbService, gethomeHot } from "@/api/index";
+export default {
+  name: "NewsmzcMenuFzb",
+
+  components: {
+    menus,
+  },
+
+  data() {
+    return {
+      treeData: {},
+      hotData: {},
+
+      backName: "",
+    };
+  },
+
+  mounted() {
+    this.getData();
+  },
+
+  methods: {
+    getData() {
+      let form = {
+        jqbh: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+      };
+      fzbService(form).then((res) => {
+        if (res.code === 200) {
+          this.treeData = res.tree.rootNodes[0];
+          this.gethot("府周(州)办");
+        }
+      });
+    },
+    gethot(e) {
+      this.$loading.show("正在查询...");
+      let form = {
+        vertexName: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+        smzcTerminalId: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+        vertexId: e,
+        hotType: "apple",
+        yhName: this.backName,
+      };
+      gethomeHot(form).then((res) => {
+        this.$loading.hide();
+        this.hotData = res.list;
+      });
+    },
+
+    hotEvent(e) {
+      if (e.preUrl[0] == "/") {
+        this.$router.push(e.preUrl);
+      } else {
+        window.location.href = e.preUrl;
+        var a = callbackObjAsync.showBackExit();
+      }
+    },
+
+    menuEvent(e) {
+      if (e.path[0] == "/") {
+        this.$router.push(e.path);
+      } else {
+        window.location.href = e.path;
+        var a = callbackObjAsync.showBackExit();
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 153 - 0
src/views/HVversion/menu/components/ggfw.vue

@@ -0,0 +1,153 @@
+<template>
+  <menus
+    :tree-data="treeData"
+    :hot-data="hotData"
+    :vertex-id="vertexId"
+    @hotEvent="hotEvent"
+    @menuEvent="menuEvent"
+  ></menus>
+</template>
+
+<script>
+import menus from "../menus.vue";
+import { getggList } from "@/api/index";
+export default {
+  name: "NewsmzcMenuGgfw",
+
+  components: {
+    menus,
+  },
+
+  data() {
+    return {
+      vertexId: "",
+
+      treeData: {},
+      hotData: {},
+
+      backName: "",
+    };
+  },
+
+  mounted() {
+    this.getData();
+  },
+
+  methods: {
+    getData() {
+      this.$loading.show("正在查询...");
+      let form = sessionStorage.getItem("JQWZ");
+      getggList(form).then((res) => {
+        this.$loading.hide();
+        if (res.code === 200) {
+          this.hotData = res.data;
+          let type = res.data.reduce((accumulator, currentItem) => {
+            const type = currentItem.type;
+            if (!accumulator.has(type)) {
+              accumulator.set(type, []);
+            }
+            accumulator.get(type).push(currentItem);
+            return accumulator;
+          }, new Map());
+          let result = Array.from(type).map(([type, items]) => ({
+            name: type,
+            imgon: items[0]?.imageDown,
+            imgdown: items[0]?.imageOn,
+            children: items,
+          }));
+          this.treeData = {
+            name: "公共服务",
+            children: result,
+          };
+        }
+      });
+    },
+
+    hotEvent(e) {
+      this.vertexId = e.vertexId
+      const logins = JSON.parse(e.smzcLoginModeId);
+      let FUNCTIONAL = {
+        path: e.preUrl,
+        login: logins,
+      };
+      if (logins.length == 1) {
+        if (logins[0] == 0) {
+          // 0 代表免登录
+          if (e.preUrl[0] == "/") {
+            this.$router.push(e.preUrl);
+          } else {
+            console.log("跳转4");
+            this.$loading.show("正在加载中...");
+            window.location.href = e.preUrl;
+            var a = callbackObjAsync.showBackExit();
+            setTimeout(() => {
+              this.$loading.hide();
+            }, 5000);
+          }
+        } else if (logins[0] == 1) {
+          // 1 手机验证码登录
+          this.$router.push("/phoneLogin");
+        } else if (logins[0] == 2) {
+          // 2 刷代表身份证登录
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 3) {
+          // 3 代表身份证+人脸验证登录
+          FUNCTIONAL.selectLogin = 3;
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 4) {
+          // 4 代表输入身份证号登陆
+          this.$router.push("/idCardLogin");
+        }
+      } else {
+        this.$router.push("/loginType");
+      }
+      sessionStorage.setItem("FUNCTIONAL", JSON.stringify(FUNCTIONAL));
+      sessionStorage.setItem("gn", e.menuName || e.name);
+    },
+
+    menuEvent(e) {
+      this.vertexId = e.vertexId
+      const logins = JSON.parse(e.smzcLoginModeId);
+      let FUNCTIONAL = {
+        path: e.preUrl,
+        login: logins,
+      };
+      if (logins.length == 1) {
+        if (logins[0] == 0) {
+          // 0 代表免登录
+          if (e.preUrl[0] == "/") {
+            this.$router.push(e.preUrl);
+          } else {
+            console.log("跳转4");
+            this.$loading.show("正在加载中...");
+            window.location.href = e.preUrl;
+            var a = callbackObjAsync.showBackExit();
+            setTimeout(() => {
+              this.$loading.hide();
+            }, 5000);
+          }
+        } else if (logins[0] == 1) {
+          // 1 手机验证码登录
+          this.$router.push("/phoneLogin");
+        } else if (logins[0] == 2) {
+          // 2 刷代表身份证登录
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 3) {
+          // 3 代表身份证+人脸验证登录
+          FUNCTIONAL.selectLogin = 3;
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 4) {
+          // 4 代表输入身份证号登陆
+          this.$router.push("/idCardLogin");
+        }
+      } else {
+        this.$router.push("/loginType");
+      }
+      sessionStorage.setItem("FUNCTIONAL", JSON.stringify(FUNCTIONAL));
+      sessionStorage.setItem("gn", e.menuName || e.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 182 - 0
src/views/HVversion/menu/components/jrcp.vue

@@ -0,0 +1,182 @@
+<template>
+  <section style="width: 100%; height: 100%">
+    <menus
+      v-if="type === 1"
+      :tree-data="treeData"
+      :hot-data="hotData"
+      vertex-id="金融产品"
+      @hotEvent="hotEvent"
+      @menuEvent="menuEvent"
+    ></menus>
+    <div v-else class="special">
+      <div class="title">银行业务</div>
+      <div class="top">
+        <div class="menus">
+          <div
+            class="menu btnActive"
+            v-for="(item, index) in tree"
+            :key="index"
+            @click="treeEvent(item)"
+          >
+            <img :src="item.menuImg || item.img" />
+          </div>
+        </div>
+      </div>
+    </div>
+  </section>
+</template>
+
+<script>
+import menus from "../menus.vue";
+import { getjrService, gethomeHot } from "@/api/index";
+export default {
+  name: "NewsmzcMenuJrcp",
+
+  components: {
+    menus,
+  },
+
+  data() {
+    return {
+      type: 1,
+
+      treeData: {},
+      hotData: {},
+      tree: [],
+
+      backName: "",
+    };
+  },
+
+  mounted() {
+    this.getData();
+  },
+
+  methods: {
+    getData() {
+      let form = {
+        jqbh: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+      };
+      getjrService(form).then((res) => {
+        if (res.code === 200) {
+          if (res.tree.rootNodes.length == 1) {
+            this.treeData = res.tree.rootNodes[0];
+            this.gethot("金融产品");
+          } else {
+            this.type = 2;
+            this.tree = res.tree.rootNodes;
+          }
+        }
+      });
+    },
+    gethot(e) {
+      this.$loading.show("正在查询...");
+      let form = {
+        vertexName: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+        smzcTerminalId: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+        vertexId: e,
+        hotType: "apple",
+        yhName: this.backName,
+      };
+      gethomeHot(form).then((res) => {
+        this.$loading.hide();
+        this.hotData = res.list;
+      });
+    },
+
+    treeEvent(item) {
+      this.type = 1;
+      this.treeData = item;
+      this.gethot("金融产品");
+    },
+
+    hotEvent(e) {
+      let data = {
+        dname: e.vertexName,
+        id: e.code,
+        qname: e.county,
+        url: "",
+        url2: e.afUrl,
+      };
+      sessionStorage.setItem("PUBLIC_INFO", JSON.stringify(data));
+      this.$loading.show("正在加载中...");
+      window.location.href = e.preUrl;
+      var a = callbackObjAsync.showBackExit();
+      setTimeout(() => {
+        this.$loading.hide();
+      }, 5000);
+    },
+
+    menuEvent(e) {
+      if (e.path[0] == "/") {
+        this.$router.push(e.path);
+      } else {
+        window.location.href = e.path;
+        var a = callbackObjAsync.showBackExit();
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.special {
+  width: 100%;
+  height: 100%;
+  .title {
+    padding-top: 60px;
+    width: fit-content;
+    font-family: "苹方简R";
+    color: #000000;
+    letter-spacing: 8.4px;
+    display: flex;
+  }
+
+  @media (min-width: 1800px) {
+    .title {
+      font-size: 44px;
+    }
+  }
+
+  @media (max-width: 1800px) {
+    .title {
+      font-size: 34px;
+    }
+  }
+
+  .top {
+    padding-top: 28px;
+    width: 100%;
+    height: auto;
+    display: flex;
+    flex-direction: column;
+
+    .menus {
+      width: 100%;
+      height: 0;
+      flex: 1;
+      display: flex;
+      flex-wrap: wrap;
+      align-items: flex-start;
+      justify-content: flex-start;
+
+      .menu {
+        margin-left: 21px;
+        width: calc((100% / 3) - 21px);
+        height: calc(50% - 21px);
+        line-height: 0;
+
+        img {
+          width: 100%;
+          height: 100%;
+          object-fit: fill;
+        }
+      }
+
+      .menu:nth-child(3n-2) {
+        margin-left: 0;
+      }
+    }
+  }
+}
+</style>

+ 22 - 0
src/views/HVversion/menu/components/qwy.vue

@@ -0,0 +1,22 @@
+<template>
+    <div>
+      <!-- -->
+    </div>
+  </template>
+  
+  <script>
+  export default {
+    name: "NewsmzcMenuQwy",
+  
+    data() {
+      return {};
+    },
+  
+    mounted() {},
+  
+    methods: {},
+  };
+  </script>
+  
+  <style lang="less" scoped></style>
+  

+ 127 - 0
src/views/HVversion/menu/components/swfw.vue

@@ -0,0 +1,127 @@
+<template>
+  <menus
+    :tree-data="treeData"
+    :hot-data="hotData"
+    vertex-id="税务服务"
+    @hotEvent="hotEvent"
+    @menuEvent="menuEvent"
+  ></menus>
+</template>
+
+<script>
+import menus from "../menus.vue";
+import {
+  getTax,
+  gethomeHot,
+} from "@/api/index";
+export default {
+  name: "NewsmzcMenuSwfw",
+
+  components: {
+    menus,
+  },
+
+  data() {
+    return {
+      treeData: {},
+      hotData: {},
+
+      backName: "",
+    };
+  },
+
+  mounted() {
+    this.getData();
+  },
+
+  methods: {
+    getData() {
+      let form = JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id;
+      getTax(form).then((res) => {
+        if (res.code === 200) {
+          this.treeData = res.tree.rootNodes[0];
+          this.gethot(this.treeData.name);
+        }
+      });
+    },
+    gethot(e) {
+      this.$loading.show("正在查询...");
+      let form = {
+        vertexName: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+        smzcTerminalId: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+        vertexId: e,
+        hotType: "apple",
+        yhName: this.backName,
+      };
+      gethomeHot(form).then((res) => {
+        this.$loading.hide();
+        this.hotData = res.list;
+      });
+    },
+
+    hotEvent(e) {
+      const logins = JSON.parse(e.smzcLoginModeId);
+      let FUNCTIONAL = {
+        path: e.preUrl,
+        login: logins,
+      };
+      if (logins.length == 1) {
+        if (logins[0] == 0) {
+          // 0 代表免登录
+          this.$router.push(e.preUrl);
+        } else if (logins[0] == 1) {
+          // 1 手机验证码登录
+          this.$router.push("/phoneLogin");
+        } else if (logins[0] == 2) {
+          // 2 刷代表身份证登录
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 3) {
+          // 3 代表身份证+人脸验证登录
+          FUNCTIONAL.selectLogin = 3;
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 4) {
+          // 4 代表输入身份证号登陆
+          this.$router.push("/idCardLogin");
+        }
+      } else {
+        this.$router.push("/loginType");
+      }
+      sessionStorage.setItem("FUNCTIONAL", JSON.stringify(FUNCTIONAL));
+      sessionStorage.setItem("gn", e.menuName || e.name);
+    },
+
+    menuEvent(e) {
+      const logins = JSON.parse(e.smzcLoginModeId);
+      let FUNCTIONAL = {
+        path: e.path,
+        login: logins,
+      };
+      if (logins.length == 1) {
+        if (logins[0] == 0) {
+          // 0 代表免登录
+          this.$router.push(e.path);
+        } else if (logins[0] == 1) {
+          // 1 手机验证码登录
+          this.$router.push("/phoneLogin");
+        } else if (logins[0] == 2) {
+          // 2 刷代表身份证登录
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 3) {
+          // 3 代表身份证+人脸验证登录
+          FUNCTIONAL.selectLogin = 3;
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 4) {
+          // 4 代表输入身份证号登陆
+          this.$router.push("/idCardLogin");
+        }
+      } else {
+        this.$router.push("/loginType");
+      }
+      sessionStorage.setItem("FUNCTIONAL", JSON.stringify(FUNCTIONAL));
+      sessionStorage.setItem("gn", e.menuName || e.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 156 - 0
src/views/HVversion/menu/components/yqb.vue

@@ -0,0 +1,156 @@
+<template>
+  <menus
+    :tree-data="treeData"
+    :hot-data="hotData"
+    vertex-id="易企办"
+    @hotEvent="hotEvent"
+    @menuEvent="menuEvent"
+  ></menus>
+</template>
+
+<script>
+import menus from "../menus.vue";
+import { yqbTree, gethomeHot } from "@/api/index";
+export default {
+  name: "NewsmzcMenuYqb",
+
+  components: {
+    menus,
+  },
+
+  data() {
+    return {
+      treeData: {},
+      hotData: {},
+
+      backName: "",
+    };
+  },
+
+  mounted() {
+    this.getData();
+  },
+
+  methods: {
+    getData() {
+      let form = {
+        name: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+        jqbh: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+      };
+      yqbTree(form).then((res) => {
+        if (res.code === 200) {
+          this.treeData = res.tree.rootNodes[0];
+          this.gethot(this.treeData.name);
+        }
+      });
+    },
+    gethot(e) {
+      this.$loading.show("正在查询...");
+      let form = {
+        vertexName: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+        smzcTerminalId: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+        vertexId: e,
+        hotType: "apple",
+        yhName: this.backName,
+      };
+      gethomeHot(form).then((res) => {
+        this.$loading.hide();
+        this.hotData = res.list;
+      });
+    },
+
+    hotEvent(e) {
+      let FUNCTIONAL = {
+        path: e.preUrl,
+      };
+      switch (e.menuName) {
+        default:
+          if (e.preUrl[0] == "/") {
+            this.$router.push(e.preUrl);
+          } else {
+            window.location.href = e.preUrl;
+            var a = callbackObjAsync.showBackExit();
+          }
+          break;
+        case "企业开办一件事":
+          window.location.href = e.preUrl;
+          callbackObjAsync.showBack();
+          break;
+        case "企业开办":
+        case "个体户开办":
+        case "分公司开办":
+        case "个体户(无字号)开办":
+        case "我要企业注销":
+        case "我要变更备案":
+          FUNCTIONAL.login = [1];
+          FUNCTIONAL.type = "YQB";
+          this.$router.push("/phoneLogin");
+          break;
+        case "企业营业执照打印":
+        case "企业营业执照打印1":
+          FUNCTIONAL.login = [3];
+          FUNCTIONAL.type = "DYYYZZ";
+          FUNCTIONAL.selectLogin = 3;
+          this.$router.push("/brushCard");
+          break;
+        case "工商开户":
+        case "建行开户":
+          FUNCTIONAL.login = [1];
+          FUNCTIONAL.type = "GSKH";
+          this.$router.push("/phoneLogin");
+          break;
+      }
+      sessionStorage.setItem("FUNCTIONAL", JSON.stringify(FUNCTIONAL));
+      sessionStorage.setItem("gn", e.menuName || e.name);
+    },
+
+    menuEvent(e) {
+      console.log(e)
+      let FUNCTIONAL = {
+        path: e.path,
+      };
+      switch (e.name) {
+        default:
+          if (e.path[0] == "/") {
+            this.$router.push(e.path);
+          } else {
+            window.location.href = e.path;
+            var a = callbackObjAsync.showBackExit();
+          }
+          break;
+        case "企业开办一件事":
+          window.location.href = e.path;
+          callbackObjAsync.showBack();
+          break;
+        case "企业开办":
+        case "个体户开办":
+        case "分公司开办":
+        case "个体户(无字号)开办":
+        case "我要企业注销":
+        case "我要变更备案":
+          FUNCTIONAL.login = [1];
+          FUNCTIONAL.type = "YQB";
+          this.$router.push("/phoneLogin");
+          break;
+        case "企业营业执照打印":
+        case "企业营业执照打印1":
+          FUNCTIONAL.login = [3];
+          FUNCTIONAL.type = "DYYYZZ";
+          FUNCTIONAL.selectLogin = 3;
+          this.$router.push("/brushCard");
+          break;
+        case "工商开户":
+        case "建行开户":
+          FUNCTIONAL.login = [1];
+          FUNCTIONAL.type = "GSKH";
+          this.$router.push("/phoneLogin");
+          break;
+      }
+      sessionStorage.setItem("FUNCTIONAL", JSON.stringify(FUNCTIONAL));
+      sessionStorage.setItem("gn", e.name || e.menuName);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 123 - 0
src/views/HVversion/menu/components/zxbg.vue

@@ -0,0 +1,123 @@
+<template>
+  <menus
+    :tree-data="treeData"
+    :hot-data="hotData"
+    vertex-id="征信报告"
+    @hotEvent="hotEvent"
+    @menuEvent="menuEvent"
+  ></menus>
+</template>
+
+<script>
+import menus from "../menus.vue";
+import { getcreditMenuTree, gethomeHot } from "@/api/index";
+export default {
+  name: "NewsmzcMenuZxbg",
+
+  components: {
+    menus,
+  },
+
+  data() {
+    return {
+      treeData: {},
+      hotData: {},
+
+      backName: "",
+    };
+  },
+
+  mounted() {
+    this.getData();
+  },
+
+  methods: {
+    getData() {
+      getcreditMenuTree().then((res) => {
+        if (res.code === 200) {
+          this.treeData = res.tree.rootNodes[0];
+          this.gethot(this.treeData.name);
+        }
+      });
+    },
+    gethot(e) {
+      this.$loading.show("正在查询...");
+      let form = {
+        vertexName: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+        smzcTerminalId: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+        vertexId: e,
+        hotType: "apple",
+        yhName: this.backName,
+      };
+      gethomeHot(form).then((res) => {
+        this.$loading.hide();
+        this.hotData = res.list;
+      });
+    },
+
+    hotEvent(e) {
+      const logins = JSON.parse(e.smzcLoginModeId);
+      let FUNCTIONAL = {
+        path: e.preUrl,
+        login: logins,
+      };
+      if (logins.length == 1) {
+        if (logins[0] == 0) {
+          // 0 代表免登录
+          this.$router.push(e.preUrl);
+        } else if (logins[0] == 1) {
+          // 1 手机验证码登录
+          this.$router.push("/phoneLogin");
+        } else if (logins[0] == 2) {
+          // 2 刷代表身份证登录
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 3) {
+          // 3 代表身份证+人脸验证登录
+          FUNCTIONAL.selectLogin = 3;
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 4) {
+          // 4 代表输入身份证号登陆
+          this.$router.push("/idCardLogin");
+        }
+      } else {
+        this.$router.push("/loginType");
+      }
+      sessionStorage.setItem("FUNCTIONAL", JSON.stringify(FUNCTIONAL));
+      sessionStorage.setItem("gn", e.menuName || e.name);
+    },
+
+    menuEvent(e) {
+      const logins = JSON.parse(e.smzcLoginModeId);
+      let FUNCTIONAL = {
+        path: e.path,
+        login: logins,
+      };
+      if (logins.length == 1) {
+        if (logins[0] == 0) {
+          // 0 代表免登录
+          this.$router.push(e.path);
+        } else if (logins[0] == 1) {
+          // 1 手机验证码登录
+          this.$router.push("/phoneLogin");
+        } else if (logins[0] == 2) {
+          // 2 刷代表身份证登录
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 3) {
+          // 3 代表身份证+人脸验证登录
+          FUNCTIONAL.selectLogin = 3;
+          this.$router.push("/brushCard");
+        } else if (logins[0] == 4) {
+          // 4 代表输入身份证号登陆
+          this.$router.push("/idCardLogin");
+        }
+      } else {
+        this.$router.push("/loginType");
+      }
+      sessionStorage.setItem("FUNCTIONAL", JSON.stringify(FUNCTIONAL));
+      sessionStorage.setItem("gn", e.menuName || e.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 253 - 0
src/views/HVversion/menu/index.vue

@@ -0,0 +1,253 @@
+<template>
+  <div class="menuIndexContainer">
+    <div class="top-info">
+      <div class="left">
+        <div class="logo"><img :src="info.topLogo" /></div>
+        <div class="title">政务服务之窗</div>
+      </div>
+      <div class="right">
+        <div class="time btnActive" @click="goBack">上一级</div>
+        <div class="address">
+          <div class="icon">
+            <img src="@/assets/topInfo/address.png" />
+          </div>
+          <div class="city">{{ city }}</div>
+        </div>
+      </div>
+    </div>
+    <div class="center-info">
+      <div class="left">
+        <img :src="leftImg" />
+      </div>
+      <div class="right">
+        <div class="bottom">
+          <component :is="component" />
+        </div>
+      </div>
+    </div>
+
+    <bottom-info></bottom-info>
+  </div>
+</template>
+
+<script>
+import swfw from "./components/swfw.vue";
+import zxbg from "./components/zxbg.vue";
+import bmfw from "./components/bmfw.vue";
+import qwy from "./components/qwy.vue";
+import jrcp from "./components/jrcp.vue";
+import ggfw from "./components/ggfw.vue";
+import yqb from "./components/yqb.vue";
+import fzb from "./components/fzb.vue";
+export default {
+  name: "NewsmzcMenuIndex",
+
+  components: {
+    swfw,
+    zxbg,
+    bmfw,
+    qwy,
+    jrcp,
+    ggfw,
+    yqb,
+    fzb,
+  },
+
+  data() {
+    return {
+      info: {},
+      city: "",
+
+      leftImg: "",
+      component: "",
+    };
+  },
+
+  created() {
+    this.info = JSON.parse(sessionStorage.getItem("MACHINE_INFO")) || {
+      topLogo: "",
+    };
+    this.city = JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname || "";
+
+    this.init();
+  },
+
+  mounted() {},
+
+  methods: {
+    goBack() {
+      this.$router.push({ path: "/", name: "index" });
+    },
+
+    init() {
+      var type = this.$route.query.type;
+      this.component = type;
+      if (type == "swfw") {
+        this.leftImg = require("@/assets/menu/leftsw.png");
+        this.component = "swfw";
+      } else if (type == "zxbg") {
+        this.leftImg = require("@/assets/menu/leftzx.png");
+        this.component = "zxbg";
+      } else if (type == "bmfw") {
+        this.leftImg = require("@/assets/menu/leftbmfw.png");
+        this.component = "bmfw";
+      } else if (type == "qwy") {
+        this.leftImg = require("@/assets/menu/leftgg.png");
+        this.component = "qwy";
+      } else if (type == "jrcp") {
+        this.leftImg = require("@/assets/menu/leftjr.png");
+        this.component = "jrcp";
+      } else if (type == "ggfw") {
+        this.leftImg = require("@/assets/menu/leftgg.png");
+        this.component = "ggfw";
+      } else if (type == "yqb") {
+        this.leftImg = require("@/assets/menu/leftgg.png");
+        this.component = "yqb";
+      } else if (type == "fzb") {
+        this.leftImg = require("@/assets/menu/leftgg.png");
+        this.component = "fzb";
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.menuIndexContainer {
+  width: 100%;
+  height: 100vh;
+  display: flex;
+  flex-direction: column;
+
+  .top-info {
+    width: 100%;
+    height: 130px;
+    background: #578cff;
+    background-size: 100% 100%;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    user-select: none;
+
+    .left {
+      padding-left: 40px;
+      height: 100%;
+      display: flex;
+      justify-content: flex-start;
+      align-items: center;
+
+      .logo {
+        height: 70px;
+
+        img {
+          height: 100%;
+        }
+      }
+
+      .title {
+        padding-left: 50px;
+        height: 80px;
+        line-height: 80px;
+        font-size: 40px;
+        color: #ffffff;
+        letter-spacing: 15px;
+      }
+    }
+
+    .right {
+      padding-right: 40px;
+      display: flex;
+      justify-content: flex-end;
+      align-items: center;
+
+      .time {
+        margin-right: 50px;
+        width: 140px;
+        height: 55px;
+        font-size: 30px;
+        color: #578cff;
+        text-align: center;
+        line-height: 55px;
+        border-radius: 26px;
+        background: #ffffff;
+        cursor: pointer;
+        user-select: none;
+      }
+
+      .address {
+        width: 180px;
+        height: 55px;
+        background: rgba(44, 88, 203, 0.7);
+        border-radius: 5px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+
+        .icon {
+          height: 24px;
+
+          img {
+            height: 100%;
+          }
+        }
+
+        .city {
+          padding-left: 20px;
+          height: 30px;
+          line-height: 30px;
+          font-size: 24px;
+          color: #ffffff;
+        }
+      }
+    }
+  }
+
+  @media (min-width: 1800px) {
+    .top-info {
+      background-image: url("@/assets/topInfo/bg.png");
+    }
+  }
+
+  @media (max-width: 1800px) {
+    .top-info {
+      background-image: url("@/assets/topInfo/bg-short.png");
+    }
+  }
+
+  .center-info {
+    width: 100%;
+    height: 0;
+    flex: 1;
+    display: flex;
+
+    .left {
+      padding: 65px 0 0 60px;
+      width: auto;
+      height: 100%;
+      box-sizing: border-box;
+
+      img {
+        width: auto;
+        height: 100%;
+        object-fit: cover;
+      }
+    }
+
+    .right {
+      padding: 0 60px;
+      width: 0;
+      flex: 1;
+      height: 100%;
+      display: flex;
+      flex-direction: column;
+      box-sizing: border-box;
+
+      .bottom {
+        width: 100%;
+        height: 0;
+        flex: 1;
+      }
+    }
+  }
+}
+</style>

+ 631 - 0
src/views/HVversion/menu/menus.vue

@@ -0,0 +1,631 @@
+<template>
+  <div class="menusContainer">
+    <div class="top-search">
+      <div class="title">
+        <section v-if="typeIndex == null">
+          <span>热门服务</span>
+        </section>
+        <section v-else>
+          <div class="tabs">
+            <div class="tab" @click="changeHot">热门服务</div>
+            <div class="tab tab1">{{ trees[typeIndex].name }}</div>
+          </div>
+        </section>
+      </div>
+      <div class="search">
+        <div class="input">
+          <input
+            type="text"
+            placeholder="请输入要办理的业务名"
+            @focus="focus"
+            @blur="blur"
+          />
+        </div>
+        <div class="searchBtn btnActive">
+          <img src="@/assets/menu/sou.png" />
+        </div>
+      </div>
+    </div>
+    <div class="top">
+      <div class="menus">
+        <div
+          class="menu btnActive"
+          v-for="(item, index) in formatMap"
+          :key="index"
+          @click="menuEvent(item)"
+        >
+          <img :src="item.menuImg || item.img" />
+        </div>
+      </div>
+      <div class="pager" v-if="maxPage > 0">
+        <div
+          class="last btnActive"
+          :class="pageNum === 1 ? 'pager-disable' : ''"
+          @click="pageNum > 1 ? pageNum-- : ''"
+        >
+          &lt;
+        </div>
+        <div class="pages">
+          <div
+            class="doc"
+            :class="index + 1 === pageNum ? 'doc-active' : ''"
+            v-for="(item, index) in maxPage"
+            :key="index"
+          ></div>
+        </div>
+        <div
+          class="next btnActive"
+          :class="pageNum === maxPage ? 'pager-disable' : ''"
+          @click="pageNum < maxPage ? pageNum++ : ''"
+        >
+          &gt;
+        </div>
+      </div>
+    </div>
+    <div class="bottom">
+      <div class="tip">业务列表 {{ tree }}{{ hot }}</div>
+      <div class="menu-type">
+        <div
+          class="type btnActive"
+          v-for="(item, index) in trees"
+          :key="index"
+          @click="typeEvent(item, index)"
+        >
+          <div class="type-icon">
+            <img :src="index === typeIndex ? item.selectIcon : item.icon" />
+          </div>
+          <div class="type-text">{{ item.name }}</div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { debug } from "@/api/zxbg";
+import { saveLog } from "@/api/index";
+export default {
+  name: "NewsmzcMenuTemplate",
+
+  props: ["treeData", "hotData", "vertexId"],
+
+  computed: {
+    tree() {
+      let treeData = this.treeData;
+      this.treeInit(treeData);
+      return "";
+    },
+
+    hot() {
+      let hotData = this.hotData;
+      this.hotInit(hotData);
+      return "";
+    },
+
+    formatMap() {
+      let nowMenus = this.nowMenus;
+      if (nowMenus && nowMenus.size) {
+        return nowMenus.get(this.pageNum) || [];
+      } else {
+        return [];
+      }
+    },
+
+    maxPage() {
+      let nowMenus = this.nowMenus;
+      if (nowMenus && nowMenus.size) {
+        return nowMenus.size;
+      } else {
+        return 0;
+      }
+    },
+  },
+
+  data() {
+    return {
+      pageNum: 1,
+
+      nowMenus: [],
+      hotMenus: [],
+      trees: [],
+
+      typeIndex: null,
+    };
+  },
+
+  mounted() {},
+
+  methods: {
+    treeInit(treeData) {
+      if (treeData && treeData.children) {
+        let data = [];
+        for (let i = 0; i < treeData.children.length; i++) {
+          const item = treeData.children[i];
+          const dataObj = {
+            name: item.name,
+            icon: item.imgon,
+            selectIcon: item.imgdown,
+            menus: this.customPager(item.children),
+          };
+          data.push(dataObj);
+        }
+        this.trees = data;
+      }
+    },
+
+    hotInit(hotData) {
+      if (hotData && hotData.length > 0) {
+        this.nowMenus = this.hotMenus = this.customPager(hotData);
+      }
+    },
+
+    customPager(array) {
+      const map = new Map();
+      for (let i = 0; i < array.length; i += 6) {
+        map.set(map.size + 1, array.slice(i, i + 6));
+      }
+      return map;
+    },
+
+    typeEvent(e, i) {
+      this.typeIndex = i;
+      this.nowMenus = e.menus;
+      this.pageReset();
+    },
+
+    changeHot() {
+      this.typeIndex = null;
+      this.nowMenus = this.hotMenus;
+      this.pageReset();
+    },
+
+    pageReset() {
+      this.pageNum = 1;
+    },
+
+    getLoginType(str) {
+      let loginPath = "";
+      let logins = JSON.parse(str);
+      if (logins.length == 1) {
+        if (logins[0] == 0) {
+          // 0 代表免登录
+        } else if (logins[0] == 1) {
+          loginPath = "/phoneLogin";
+        } else if (logins[0] == 2) {
+          loginPath = "/brushCard";
+        } else if (logins[0] == 3) {
+          loginPath = "/brushCard";
+        }
+      } else {
+        loginPath = "/loginType";
+      }
+      return loginPath;
+    },
+
+    menuEvent(e) {
+      sessionStorage.setItem("yw_info", JSON.stringify(e));
+      if (e.status) {
+        if (e.status == "0") {
+          this.$emit("menuEvent", e);
+          this.saveHotLog(e);
+        } else {
+          this.$msgbox({
+            title: "提示",
+            content: "当前功能不可用!",
+            type: "warning",
+            showCansole: true,
+          })
+            .then(() => {})
+            .catch(() => {});
+        }
+      } else {
+        this.$emit("hotEvent", e);
+        setTimeout(() => {
+          this.saveHotLog(e);
+        }, 1000);
+      }
+    },
+
+    saveHotLog(e) {
+      var form = {
+        // 市
+        vertexName: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).dname,
+        vertexId: this.vertexId,
+        /**
+         * 功能菜单id自己
+         */
+        menuId: e.id,
+        /**
+         * 功能名称自己
+         */
+        menuName: e.name,
+        /**
+         * 终端id
+         */
+        smzcTerminalId: JSON.parse(sessionStorage.getItem("MACHINE_INFO")).id,
+        /**
+         * 热门图片
+         */
+        menuImg: JSON.parse(sessionStorage.getItem("hotImg")),
+        /**
+         * 部门名称
+         */
+        departmentName: "",
+        /**
+         * 前端链接
+         */
+        preUrl: e.path,
+        /**
+         * 接口code
+         */
+        code: "",
+        /**
+         * 后端链接
+         */
+        afUrl: "",
+        /**
+         * 区名
+         */
+        county: JSON.parse(sessionStorage.getItem("PUBLIC_INFO")).qname,
+      };
+      saveLog(form).then((res) => {});
+    },
+
+    focus() {
+      var data = {
+        funcId: "openDwInput",
+        data: {
+          dwFilePath: "D:\\DWIme",
+          defLayout: "Kamfu_hw26",
+        },
+      };
+      this.bringUpKeyboard(data);
+    },
+
+    blur() {
+      var data = {
+        funcId: "closeExe",
+        data: {
+          exeName: "dwime",
+        },
+      };
+      this.bringUpKeyboard(data);
+    },
+
+    bringUpKeyboard(e) {
+      let from = {};
+      from.namespace = "ServiceApp.service";
+      from.serviceId = "SystemService";
+      from.funcId = e.funcId;
+      from.xlh = "";
+      from.data = e.data;
+      from.data = e.data;
+      debug(JSON.stringify(from)).then((response) => {});
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.menusContainer {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+
+  .top-search {
+    width: 100%;
+    height: 122px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+
+    .title {
+      margin-top: 60px;
+      width: fit-content;
+      font-family: "苹方简R";
+      color: #000000;
+      letter-spacing: 8.4px;
+      display: flex;
+
+      .tabs {
+        width: auto;
+        height: 100%;
+        display: flex;
+        align-items: center;
+
+        .tab {
+          position: relative;
+          padding: 0 22px 0 44px;
+          width: fit-content;
+          height: 44px;
+          line-height: 44px;
+          font-size: 24px;
+          font-family: "苹方简R";
+          color: #ffffff;
+          background: #4d58f3;
+        }
+
+        .tab::before {
+          content: "";
+          position: absolute;
+          left: 0;
+          top: 0;
+          z-index: 1;
+          width: 0;
+          height: 0;
+          border-width: 22px;
+          border-style: solid;
+          border-color: transparent transparent transparent #ffffff;
+        }
+
+        .tab::after {
+          content: "";
+          position: absolute;
+          right: -44px;
+          top: 0;
+          z-index: 9;
+          width: 0;
+          height: 0;
+          border-width: 22px;
+          border-style: solid;
+          border-color: transparent transparent transparent #4d58f3;
+        }
+
+        .tab1 {
+          margin-left: 11px;
+        }
+      }
+    }
+
+    @media (min-width: 1800px) {
+      .title {
+        font-size: 44px;
+      }
+    }
+
+    @media (max-width: 1800px) {
+      .title {
+        font-size: 34px;
+      }
+    }
+
+    .search {
+      margin-left: 44px;
+      width: 0;
+      flex: 1;
+      max-width: 500px;
+      background: rgba(0, 0, 0, 0);
+      border: 2px solid #578cff;
+      border-radius: 36px;
+      box-sizing: border-box;
+      display: flex;
+
+      .input {
+        width: 0;
+        flex: 1;
+        height: 100%;
+
+        input {
+          width: 100%;
+          height: 100%;
+          font-family: "苹方简R";
+          outline: none;
+          border: none;
+          background: transparent;
+          box-sizing: border-box;
+        }
+      }
+
+      .searchBtn {
+        width: auto;
+        height: 100%;
+
+        img {
+          width: auto;
+          height: 100%;
+          object-fit: cover;
+        }
+      }
+    }
+
+    @media (min-width: 1800px) {
+      .search {
+        height: 68px;
+
+        .input {
+          input {
+            padding-left: 60px;
+            padding-right: 60px;
+            font-size: 30px;
+          }
+        }
+      }
+    }
+
+    @media (max-width: 1800px) {
+      .search {
+        height: 45px;
+
+        .input {
+          input {
+            padding-left: 25px;
+            padding-right: 25px;
+            font-size: 24px;
+          }
+        }
+      }
+    }
+  }
+
+  .top {
+    padding-top: 28px;
+    width: 100%;
+    height: 0;
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+
+    .menus {
+      width: 100%;
+      height: 0;
+      flex: 1;
+      display: flex;
+      flex-wrap: wrap;
+      align-items: flex-start;
+      justify-content: flex-start;
+
+      .menu {
+        margin-left: 21px;
+        width: calc((100% / 3) - 21px);
+        height: calc(50% - 21px);
+        line-height: 0;
+
+        img {
+          width: 100%;
+          height: 100%;
+          object-fit: fill;
+        }
+      }
+
+      .menu:nth-child(3n-2) {
+        margin-left: 0;
+      }
+    }
+
+    .pager {
+      width: 100%;
+      height: 50px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+
+      .last,
+      .next {
+        width: 83px;
+        height: 45px;
+        line-height: 45px;
+        font-size: 34px;
+        text-align: center;
+        border-radius: 10px;
+        background: rgb(220, 220, 220);
+      }
+
+      .pager-disable {
+        background: #eeeeee;
+      }
+
+      .pages {
+        margin: 0 60px;
+        width: fit-content;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+
+        .doc {
+          margin: 0 7px;
+          width: 17px;
+          height: 17px;
+          background: #ffffff;
+          border: 1px solid #cdcdcd;
+          border-radius: 50%;
+          transition: background 0.2s;
+        }
+
+        .doc-active {
+          background: #cdcdcd;
+        }
+      }
+    }
+  }
+
+  .bottom {
+    width: 100%;
+    height: 260px;
+
+    .tip {
+      width: 100%;
+      height: 60px;
+      line-height: 60px;
+      font-family: "苹方简R";
+      color: #000000;
+      letter-spacing: 8.4px;
+    }
+
+    @media (min-width: 1800px) {
+      .tip {
+        font-size: 44px;
+      }
+    }
+
+    @media (max-width: 1800px) {
+      .tip {
+        font-size: 34px;
+      }
+    }
+
+    .menu-type {
+      width: 100%;
+      height: 200px;
+      display: flex;
+      justify-content: flex-start;
+      overflow-x: auto;
+      overflow-y: auto;
+
+      .type {
+        width: 200px;
+        min-width: 200px;
+        height: 100%;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: space-between;
+
+        .type-icon {
+          width: auto;
+          height: 145px;
+
+          img {
+            width: auto;
+            height: 100%;
+            object-fit: cover;
+          }
+        }
+
+        .type-text {
+          width: 100%;
+          text-align: center;
+          font-size: 26px;
+          font-family: "苹方简R";
+          color: #000000;
+          line-height: 46px;
+          white-space: nowrap;
+          overflow: hidden;
+          text-overflow: ellipsis;
+        }
+      }
+    }
+
+    .menu-type::-webkit-scrollbar-thumb {
+      width: 0;
+      height: 0;
+      background: #b9cefc;
+      border-radius: 2px;
+    }
+
+    .menu-type::-webkit-scrollbar-track {
+      background-color: #f5f6f7;
+      height: 0;
+      width: 0;
+      border-radius: 2px;
+    }
+
+    .menu-type::-webkit-scrollbar {
+      height: 0;
+      width: 0;
+    }
+  }
+}
+</style>