瀏覽代碼

ross机构详情,设备认证详情页面修改

yuwenjun1997 2 年之前
父節點
當前提交
050f922b21

+ 4 - 0
apis/index.js

@@ -125,6 +125,9 @@ export default ($axios) => {
       'https://restapi.amap.com/v3/assistant/coordinate/convert' +
         queryStringify(params)
     )
+  // 查询授权商品列表
+  const fetchProductDetails = (params = {}) =>
+    $axios.get('/wx/auth/product/details', { params })
 
   return {
     customLogin,
@@ -165,5 +168,6 @@ export default ($axios) => {
     getClubAuthProductList,
     getProductDetails,
     authProducSave,
+    fetchProductDetails
   }
 }

二進制
assets/theme-images/ross/h5-club-info-bg.png


二進制
assets/theme-images/ross/h5-icon-address.png


二進制
assets/theme-images/ross/h5-icon-auth-ren.png


二進制
assets/theme-images/ross/h5-icon-auth-seal.png


二進制
assets/theme-images/ross/h5-icon-auth.png


二進制
assets/theme-images/ross/h5-icon-avatar-v.png


二進制
assets/theme-images/ross/h5-icon-device-list.png


二進制
assets/theme-images/ross/h5-icon-mobile.png


二進制
assets/theme-images/ross/pc-club-info-bg.png


二進制
assets/theme-images/ross/pc-icon-address.png


二進制
assets/theme-images/ross/pc-icon-auth-ren.png


二進制
assets/theme-images/ross/pc-icon-auth-seal.png


二進制
assets/theme-images/ross/pc-icon-auth.png


二進制
assets/theme-images/ross/pc-icon-avatar-v.png


二進制
assets/theme-images/ross/pc-icon-device-list.png


二進制
assets/theme-images/ross/pc-icon-mobile.png


+ 0 - 21
ca.crt

@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDXjCCAkagAwIBAgIFNjI3MTYwDQYJKoZIhvcNAQELBQAwXjEQMA4GA1UEAxMH
-VGVzdCBDQTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNV
-BAcTDVNhbiBGcmFuY2lzY28xEDAOBgNVBAoTB1Rlc3QgQ0EwHhcNMjIwNzAxMTAy
-ODQ0WhcNMjMwNzAxMTAyODQ0WjBeMRAwDgYDVQQDEwdUZXN0IENBMQswCQYDVQQG
-EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNj
-bzEQMA4GA1UEChMHVGVzdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBANp0acIu4b6wlgsvghCCgKNMjB2u1MVFGrWFjhvZSRgWouy8z6UNhNdyzJJL
-0ZLU3dvmfOE3IQKwjfhoBz1XjKvFHb0zsrlYv7+MREINsAKPjV/JTQPswo/C8Ddb
-4qWKReogGnhC4fn8LYslNojzeUBQ6g9FjQp1/OEx/8MCRPKOKxobVHQrMge+ofPm
-NH35A2Pcq4Q7aXH5JXHxksFPMfHqMDJ9GTf2+Fd28IyTb5tP6wr/uqdPsSdDd5TJ
-HXmT3fpG96g+6tFEa3kJ6ZoxG932M+Z3LQDj8ep9XFYUpeY3BPrlPXWLb3UfaIzO
-zmnB8bnYani2etJD+o3R4uDl2NcCAwEAAaMjMCEwDwYDVR0TAQH/BAUwAwEB/zAO
-BgNVHQ8BAf8EBAMCAgQwDQYJKoZIhvcNAQELBQADggEBAAj6NFUurjtmw4aUKkDH
-B6TPX1VrZnOkcXxZjqb9upCjxQRcv8SokEUTDTnYlE81gHr+ZX8AYYnDq0mWYkz/
-MFmOoIshPxV7PB4zowivR1N0ZwbI0Yz+Fc75Qi5iPkZQ9PpYr/wnNXsZ7gbr6GqV
-5PkZC0N7gYHK7nPx21/1F6S+BFkv7DX8wQdViUQYaVoPOSWhXUVGkfYWEhOoXyqK
-xeJescHyuHy0v9STc+jb1sItg6Bdptde7vnKPoDjBhunneoyG/KU9x9KsawDBrGp
-HtD8z8PwTXJIEQN81vJ2KaWE56QnKdOhce7HZSdxNZgP95900WTEtNdhdP2m5vwF
-wr0=
------END CERTIFICATE-----

+ 0 - 27
ca.key

@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEA2nRpwi7hvrCWCy+CEIKAo0yMHa7UxUUatYWOG9lJGBai7LzP
-pQ2E13LMkkvRktTd2+Z84TchArCN+GgHPVeMq8UdvTOyuVi/v4xEQg2wAo+NX8lN
-A+zCj8LwN1vipYpF6iAaeELh+fwtiyU2iPN5QFDqD0WNCnX84TH/wwJE8o4rGhtU
-dCsyB76h8+Y0ffkDY9yrhDtpcfklcfGSwU8x8eowMn0ZN/b4V3bwjJNvm0/rCv+6
-p0+xJ0N3lMkdeZPd+kb3qD7q0URreQnpmjEb3fYz5nctAOPx6n1cVhSl5jcE+uU9
-dYtvdR9ojM7OacHxudhqeLZ60kP6jdHi4OXY1wIDAQABAoIBABZMv+cEpiKzH/3w
-UZSh3cPNspftGucwULOq+IC7Q4zj8qm79G5i3OapX1ynxLL6a9NgyeqrmAEQSM3M
-wMBwSXnXW1vPBTWKa7h/9w/PGeKJCON4RxZZetr2CVN9W7uOS+jEci9IlIzSQ0vq
-9pAwWnZITDxW2zjwJmpOkk8z0hn4XPB5eYvzb7CzVK54bBfaZq5GGxOm+8Yc2nhS
-cyDV+a3U1K/EGZYnoaEkAO0yw7etQhlhXt6J0O2eKPpZDTmEEJg3s+hPo85eQJ2X
-N1Vda48HtanimOc3mfi5BlU1weWtZZomutLVQpn/wBgpdAQU+ZS377l6ZoQ5erNx
-28of9uECgYEA+XBS76yjd59UHg60orTD5z0YgmwjM1UhvVBRyXPtX+0A1rt21xeU
-aQSYqMLXGtPZRwpvff+ZlnMPNGArx2X4DcJIMfxmmBM2UmCu8ZotduOWqbppv0/U
-c1lBToQ7+9L22YRWMfMbGKUVSRX3/bYS0yvPeTBLVdd8XEnOVTn0ih8CgYEA4DNy
-wN6a85J4PPUliEkS4TIjso4a1d6sX5dfNtjbo80ZnxYayy+Re3jrNjdXbUCnK6tT
-sMIDHbXYoXlDRjZ1PKdqJFdLWLYrhncvYvhBcnMXpkZemVJyjtsz+kuHa+BOqXPK
-eR7KcGcZu10Qqq7msdB7uUiksmMX3XIkL3ESykkCgYEA0zXmNCXloNPbwTvIfoE7
-5KCaEU2JnNy4HfpV1pP/6prfe/PulADWXPpUXYnl5ESAFaRjdbgpj/hLZpkMWOIh
-4VyiDxleseSKucQ+PjvDxYi+uWcsRZ9OEIICR3623+vps5NX/SGRzxNx65nbjAxQ
-8liFbGOVVtGI7whb21SgmRcCgYAkB6CVZjC4m/0+rpbNhBDIp+ocs8GURSimZAkl
-I0yI0lkfu8mqhYZ3tUL3f4VJRW6YEfxtF4CwsZySto4dJntIuA7SsESniP8NqPGw
-kfzSi7RtQDnLofhPBOMhginNKEr76GPNeylFTwxPk/EtvNXOFZcMe6QcFtiq+cDe
-7uj6IQKBgQDcFgKwGJi4AsTgq5h+GBANbAyL1YVHHyiscNQ2ogAfJXSE39SzSY0g
-NsHujQlFGImnm5PvbbFb/5Fr31wSA+GyHjJh5P7muYoXJc+aVTCsIim6brLjCvog
-GUNWG9Fh9XGPcbCEScC2v9eBnoVI4UX1SMphhYV3aot37pQIQk5z5w==
------END RSA PRIVATE KEY-----

+ 8 - 3
components/SimpleSwiper/index.vue

@@ -21,6 +21,10 @@ export default {
       type: Array,
       default: () => [],
     },
+    autoplay: {
+      type: Boolean,
+      default: true,
+    },
   },
   data() {
     return {
@@ -29,7 +33,8 @@ export default {
           el: '.swiper-pagination',
           clickable: true,
         },
-        autoplay: true,
+        autoplay: this.autoplay,
+        loop: true,
       },
     }
   },
@@ -42,11 +47,11 @@ export default {
 
   ::v-deep {
     .swiper-pagination-bullet-active {
-      background: #535353 !important;
+      background: #535353;
     }
   }
 
-  .slide{
+  .slide {
     display: block;
     width: 100%;
     object-fit: cover;

+ 1 - 0
nuxt.config.js

@@ -34,6 +34,7 @@ export default {
     'vant/lib/index.css',
     'element-ui/lib/theme-chalk/index.css',
     'swiper/css/swiper.css',
+    'animate.css/animate.min.css',
     '~/assets/css/global.css',
   ],
 

+ 5 - 0
package-lock.json

@@ -2992,6 +2992,11 @@
       "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
       "dev": true
     },
+    "animate.css": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmmirror.com/animate.css/-/animate.css-4.1.1.tgz",
+      "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ=="
+    },
     "ansi-align": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz",

+ 1 - 0
package.json

@@ -16,6 +16,7 @@
   "dependencies": {
     "@nuxtjs/axios": "^5.13.6",
     "@vant/touch-emulator": "^1.3.2",
+    "animate.css": "^4.1.1",
     "clipboard": "^2.0.10",
     "core-js": "^3.19.3",
     "element-ui": "^2.15.9",

+ 115 - 52
pages/_template/ross/approve/club/detail.vue

@@ -49,7 +49,11 @@
       ></SimpleEmpty>
     </div>
 
-    <SimpleMapNav ref="mapNav" @click="navigation" color="#f3920d"></SimpleMapNav>
+    <SimpleMapNav
+      ref="mapNav"
+      @click="navigation"
+      color="#f3920d"
+    ></SimpleMapNav>
   </div>
 </template>
 
@@ -77,7 +81,9 @@ export default {
   computed: {
     ...mapGetters(['routePrefix']),
     address() {
-      let resultAddress = this.clubInfo.area ? this.clubInfo.area + this.clubInfo.address : this.clubInfo.address
+      let resultAddress = this.clubInfo.area
+        ? this.clubInfo.area + this.clubInfo.address
+        : this.clubInfo.address
       return resultAddress || '暂无'
     },
     isEmpty() {
@@ -95,7 +101,10 @@ export default {
   methods: {
     // 设备详情
     toDetail(item) {
-      window.location.href = `${process.env.CIMEI_LOCAL}/product/auth/product-${item.productId}.html`
+      // window.location.href = `${process.env.CIMEI_LOCAL}/product/auth/product-${item.productId}.html`
+      this.$router.push(
+        `${this.routePrefix}/approve/device/detail?id=${item.productId}`
+      )
     },
     // 初始化
     initData() {
@@ -169,6 +178,7 @@ export default {
   }
 
   .page-top {
+    margin-right: 24px;
     .swiper {
       width: 580px;
       height: 580px;
@@ -185,39 +195,54 @@ export default {
   .page-content {
     width: 580px;
     overflow-y: auto;
+
+    &::-webkit-scrollbar {
+      width: 8px;
+      // background-color: #eeeeee;
+    }
+
+    &::-webkit-scrollbar-thumb {
+      border-radius: 4px;
+      background-color: #eeeeee;
+    }
+
     .club-info {
       padding: 32px 24px;
-      @include themify($themes) {
-        background: themed('cover-color');
-      }
+      width: 564px;
+      min-height: 264px;
+      background: url(~assets/theme-images/ross/pc-club-info-bg.png) center
+        no-repeat;
+      background-size: cover;
+      box-sizing: border-box;
 
       .info {
-        width: 320px;
+        width: 360px;
         .name {
           font-size: 24px;
-          color: #101010;
+          color: #fff;
           font-weight: bold;
           margin-bottom: 34px;
         }
         .mobile,
         .address {
           position: relative;
-          padding-left: 24px;
+          padding-left: 28px;
           margin-top: 16px;
           line-height: 24px;
           font-size: 16px;
-          color: #404040;
+          color: #fff;
 
           &::after {
             content: '';
             display: block;
-            width: 16px;
-            height: 16px;
+            width: 24px;
+            height: 24px;
             position: absolute;
             left: 0;
-            top: 4px;
-            background-size: 16px;
+            top: 0;
+            background-size: 20px;
             background-repeat: no-repeat;
+            background-position: center;
           }
         }
         .mobile {
@@ -242,6 +267,7 @@ export default {
         height: 114px;
         border-radius: 50% 50% 0 50%;
         overflow: hidden;
+        background: #fff;
 
         &::after {
           position: absolute;
@@ -251,7 +277,7 @@ export default {
           display: block;
           width: 23px;
           height: 23px;
-          background: url(~assets/theme-images/common/pc-icon-avatar-v.png)
+          background: url(~assets/theme-images/ross/pc-icon-avatar-v.png)
             no-repeat center;
           background-size: 23px;
         }
@@ -265,11 +291,9 @@ export default {
         border-radius: 4px;
 
         font-size: 16px;
-        @include themify($themes) {
-          color: themed('color');
-          border: 1px solid themed('color');
-          background-color: themed('sub-color');
-        }
+        color: #f3920d;
+        border: 1px solid #fff;
+        background-color: #fff;
         cursor: pointer;
 
         &::after {
@@ -286,17 +310,32 @@ export default {
       }
       .distance {
         font-size: 14px;
-        color: #404040;
+        color: #fff;
       }
     }
 
     .device-list {
       .title {
-        padding: 16px;
+        position: relative;
         font-size: 20px;
         font-weight: bold;
-        color: #404040;
-        background-color: #f3f5f6;
+        color: #282828;
+        line-height: 30px;
+        padding-left: 32px;
+        margin-top: 46px;
+        margin-bottom: 24px;
+
+        &::before {
+          content: '';
+          display: block;
+          width: 30px;
+          height: 30px;
+          background: url(~assets/theme-images/ross/pc-icon-device-list.png)
+            no-repeat center;
+          position: absolute;
+          left: 0;
+          top: 0;
+        }
       }
 
       .list {
@@ -304,15 +343,23 @@ export default {
       }
 
       .device {
-        padding: 16px 0;
-        border-bottom: 1px solid #d8d8d8;
+        padding: 20px 16px;
+        box-sizing: border-box;
+        background: #f3f5f6;
+        margin-top: 16px;
+
+        &:first-child {
+          margin-top: 0;
+        }
+
         .info {
+          width: 80%;
           .name {
             font-size: 18px;
-            color: #101010;
+            color: #282828;
           }
           .code {
-            margin-top: 16px;
+            margin-top: 12px;
             font-size: 14px;
             color: #666;
           }
@@ -326,6 +373,7 @@ export default {
           border-radius: 4px;
           font-size: 14px;
           color: #ffffff;
+          cursor: pointer;
           @include themify($themes) {
             background: themed('color');
           }
@@ -355,21 +403,20 @@ export default {
   }
 
   .page-content {
-    .divider {
-      height: 3.2vw;
-      background-color: #f7f7f7;
-    }
     .club-info {
       padding: 4vw;
-      @include themify($themes) {
-        background: themed('cover-color');
-      }
+      width: 100vw;
+      min-height: 43.4vw;
+      background: url(~assets/theme-images/ross/h5-club-info-bg.png) center
+        no-repeat;
+      background-size: cover;
+      box-sizing: border-box;
 
       .info {
         width: 67vw;
         .name {
           font-size: 4.8vw;
-          color: #101010;
+          color: #fff;
           font-weight: bold;
           margin-bottom: 4vw;
         }
@@ -380,18 +427,19 @@ export default {
           margin-top: 1.6vw;
           line-height: 5vw;
           font-size: 3.2vw;
-          color: #404040;
+          color: #fff;
 
           &::after {
             content: '';
             display: block;
             width: 4vw;
-            height: 4vw;
+            height: 5vw;
             position: absolute;
             left: 0;
-            top: 0.5vw;
+            top: 0;
             background-size: 4vw 4vw;
             background-repeat: no-repeat;
+            background-position: center;
           }
         }
         .mobile {
@@ -416,6 +464,7 @@ export default {
         height: 18vw;
         border-radius: 9vw 9vw 0 9vw;
         overflow: hidden;
+        background: #fff;
 
         &::after {
           position: absolute;
@@ -425,7 +474,7 @@ export default {
           display: block;
           width: 3.6vw;
           height: 3.6vw;
-          background: url(~assets/theme-images/common/h5-icon-avatar-v.png)
+          background: url(~assets/theme-images/ross/h5-icon-avatar-v.png)
             no-repeat center;
           background-size: 3.6vw;
         }
@@ -438,11 +487,9 @@ export default {
         height: 6.4vw;
         border-radius: 0.4vw;
         font-size: 3.2vw;
-        @include themify($themes) {
-          color: themed('color');
-          border: 1px solid themed('color');
-          background-color: themed('sub-color');
-        }
+        color: #f3920d;
+        border: 1px solid #fff;
+        background-color: #fff;
 
         &::after {
           content: '';
@@ -458,26 +505,42 @@ export default {
       }
       .distance {
         font-size: 3vw;
-        color: #404040;
+        color: #fff;
       }
     }
 
     .device-list {
+      padding: 0 4vw;
       .title {
-        padding: 4vw;
-        padding-bottom: 0;
+        position: relative;
+        padding-left: 6.8vw;
+        margin-top: 9.6vw;
+        margin-bottom: 4vw;
         font-size: 4vw;
         font-weight: bold;
         color: #101010;
+
+        &::before {
+          content: '';
+          display: block;
+          width: 4.4vw;
+          height: 4.4vw;
+          background: url(~assets/theme-images/ross/h5-icon-device-list.png)
+            no-repeat center;
+          position: absolute;
+          left: 0;
+          top: 0;
+        }
       }
       .device {
-        padding: 4vw 0;
-        margin: 0 4vw;
-        border-bottom: 0.4vw solid #d8d8d8;
+        padding: 4.4vw 3.2vw;
+        background: #f3f5f6;
+        margin-bottom: 3.2vw;
         .info {
+          width: 74%;
           .name {
             font-size: 3.6vw;
-            color: #101010;
+            color: #282828;
           }
           .code {
             margin-top: 3.2vw;

+ 708 - 0
pages/_template/ross/approve/device/detail.vue

@@ -0,0 +1,708 @@
+<template>
+  <div class="device-detail" v-if="productInfo">
+    <div class="detail-title">设备认证</div>
+    <div class="page-top">
+      <div class="swiper">
+        <!-- <SimpleSwiper :imageList="bannerList"></SimpleSwiper> -->
+        <img :src="productInfo.pcImage" class="device-image" />
+        <div class="auth-seal"></div>
+        <img
+          class="auth-card"
+          :src="authCardImage"
+          @click="onShowAuthCard"
+          v-if="!showAuthCard"
+        />
+        <!-- <img class="auth-logo" :src="authLogoImage" /> -->
+      </div>
+      <div class="device-info">
+        <div class="logo">
+          <img :src="authLogoImage" alt="logo" />
+        </div>
+        <div class="section">
+          <div class="name" v-text="productInfo.productName"></div>
+          <div class="sncode mobile">
+            SN码:<span>{{ productInfo.snCode }}</span>
+          </div>
+          <div class="row">
+            <span>{{ productInfo.brandName }}</span>
+            <i></i>
+            <span>{{ productInfo.productionPlace }}</span>
+          </div>
+          <div class="sncode pc">
+            SN码:<span>{{ productInfo.snCode | snCodeRender }}</span>
+          </div>
+          <div class="maker" v-if="productInfo.manufacturer">
+            制造商:{{ productInfo.manufacturer }}
+          </div>
+          <div class="supplier">代理商:{{ productInfo.shopName }}</div>
+        </div>
+        <div class="auth">
+          <div class="auth-icon"></div>
+          <div class="auth-info">
+            <span class="font-bold">ROS'S</span>
+            <span>授予</span>
+            <span>{{ productInfo.authParty }}</span>
+            <span>正品拥有</span>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="page-content">
+      <div class="device-params">
+        <div class="title">产品参数</div>
+        <div class="line"></div>
+        <div class="params">
+          <div class="row" v-for="(row, index) in paramListRender" :key="index">
+            <template v-for="(col, index) in row">
+              <div class="col" :key="'name' + index">
+                {{ col.paramName }}{{ isPc ? ':' : '' }}
+              </div>
+              <div class="col" :key="'content' + index">
+                {{ col.paramContent }}
+              </div>
+            </template>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 授权牌弹窗 -->
+    <div class="mask" v-if="showAuthCard" @click="onHideAuthCard"></div>
+    <transition
+      enter-active-class="animate__zoomIn"
+      leave-active-class="animate__zoomOut"
+    >
+      <div class="auth-card-content animate__animated" v-if="showAuthCard">
+        <div class="auth-card-popup">
+          <span class="el-icon-circle-close" @click="onHideAuthCard"></span>
+          <img :src="authCardImage" />
+        </div>
+      </div>
+    </transition>
+  </div>
+</template>
+<script>
+import { mapGetters } from 'vuex'
+import { chunk } from 'lodash'
+export default {
+  layout: 'app-ross',
+  filters: {
+    snCodeRender: function (code) {
+      return code.replace(/^(\w{2})\w+(\w{4})$/, '$1******$2')
+    },
+  },
+  data() {
+    return {
+      showAuthCard: false,
+      bannerList: [],
+      productInfo: null,
+    }
+  },
+  watch: {
+    isPc() {
+      this.$nextTick(() => {
+        window.location.reload()
+      })
+    },
+  },
+  computed: {
+    ...mapGetters(['isPc']),
+    // 参数列表
+    paramListRender() {
+      if (!this.productInfo) return []
+      return this.isPc
+        ? chunk(this.productInfo.paramList, 2)
+        : chunk(this.productInfo.paramList, 1)
+    },
+    // 机构logo
+    authLogoImage() {
+      if (!this.productInfo) return ''
+      return this.productInfo.authLogo
+    },
+    // 授权牌
+    authCardImage() {
+      if (!this.productInfo) return ''
+      return this.productInfo.appletsCertificateImage
+    },
+  },
+  created() {
+    this.fetchProductDetails()
+  },
+  methods: {
+    onShowAuthCard() {
+      this.showAuthCard = true
+    },
+    onHideAuthCard() {
+      this.showAuthCard = false
+    },
+    async fetchProductDetails() {
+      const productId = this.$route.query.id
+      try {
+        const { data } = await this.$http.api.fetchProductDetails({
+          productId: productId,
+        })
+        this.productInfo = data
+      } catch (error) {
+        console.log(error)
+      }
+    },
+  },
+}
+</script>
+<style lang="scss" scoped>
+::v-deep {
+  .swiper-pagination-bullet {
+    background: #f3920d !important;
+  }
+
+  .simple-swiper {
+    .swiper-pagination-bullet-active {
+      background: #f3920d;
+    }
+  }
+}
+
+.mask {
+  width: 100vw;
+  height: 100vh;
+  position: fixed;
+  left: 0;
+  top: 0;
+  z-index: 8;
+  background: rgba(0, 0, 0, 0.5);
+}
+
+// pc 端
+@media screen and (min-width: 768px) {
+  .device-detail {
+    margin-bottom: 48px;
+
+    .auth-card-content {
+      width: 100vw;
+      height: 100vh;
+      position: fixed;
+      left: 0;
+      top: 0;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      z-index: 9;
+      .auth-card-popup {
+        position: relative;
+        width: 622px;
+
+        img {
+          display: block;
+          width: 100%;
+          height: auto;
+        }
+
+        .el-icon-circle-close {
+          position: absolute;
+          top: -50px;
+          right: 0;
+          font-size: 32px;
+          color: #fff;
+          cursor: pointer;
+        }
+      }
+    }
+
+    .detail-title {
+      font-size: 24px;
+      color: #282828;
+      margin: 32px auto 24px;
+      width: 1200px;
+    }
+
+    .page-top,
+    .page-content {
+      width: 1200px;
+      margin: 0 auto;
+      background: #fff;
+    }
+    .page-top {
+      display: flex;
+      justify-content: space-between;
+      align-items: flex-start;
+      padding: 24px;
+      padding-right: 40px;
+      .swiper {
+        position: relative;
+        width: 540px;
+        height: 540px;
+        background: #f7f7f7;
+        .device-image {
+          width: 100%;
+          height: 100%;
+        }
+        ::v-deep {
+          img {
+            width: 540px;
+            height: 540px;
+          }
+        }
+
+        .auth-seal {
+          position: absolute;
+          width: 70px;
+          height: 70px;
+          background: url(~assets/theme-images/ross/pc-icon-auth-seal.png)
+            no-repeat center;
+          background-size: 70px;
+          right: 24px;
+          bottom: 24px;
+          z-index: 2;
+        }
+
+        .auth-card {
+          position: absolute;
+          width: auto;
+          height: 110px;
+          display: block;
+          bottom: 24px;
+          left: 24px;
+          z-index: 2;
+          cursor: pointer;
+        }
+
+        .auth-logo {
+          position: absolute;
+          max-width: 120px;
+          max-height: 120px;
+          top: 24px;
+          left: 24px;
+          z-index: 2;
+        }
+      }
+      .device-info {
+        width: 572px;
+        position: relative;
+
+        .section {
+          width: 360px;
+          word-break: break-all;
+        }
+
+        .logo {
+          width: 114px;
+          height: 114px;
+          border-radius: 50%;
+          // background: #d8d8d8;
+          border: 1px solid #d8d8d8;
+          box-sizing: border-box;
+          position: absolute;
+          right: 0;
+          top: 0;
+
+          &::after {
+            content: '';
+            position: absolute;
+            right: 6px;
+            bottom: 0;
+            display: block;
+            width: 24px;
+            height: 24px;
+            background: url(~assets/theme-images/ross/pc-icon-auth-ren.png)
+              no-repeat center;
+            background-size: 23px;
+          }
+
+          img {
+            display: block;
+            width: 100%;
+            height: 100%;
+            // background: pink;
+            border-radius: 50%;
+          }
+        }
+
+        .name {
+          font-size: 24px;
+          color: #282828;
+          line-height: 1.6;
+          margin-bottom: 24px;
+          font-weight: bold;
+        }
+
+        .row,
+        .sncode,
+        .maker {
+          margin-bottom: 16px;
+        }
+        .row {
+          line-height: 24px;
+          i {
+            position: relative;
+            margin: 0 16px;
+            &::after {
+              content: '';
+              display: block;
+              width: 1px;
+              height: 16px;
+              background: #999999;
+              position: absolute;
+              top: 0;
+              left: 0;
+            }
+          }
+
+          span {
+            font-size: 18px;
+            color: #999999;
+          }
+        }
+
+        .sncode.mobile {
+          display: none;
+        }
+
+        .sncode.pc {
+          font-size: 18px;
+          color: #282828;
+        }
+        .supplier,
+        .maker {
+          font-size: 20px;
+          color: #282828;
+        }
+
+        .auth {
+          width: 100%;
+          min-height: 114px;
+          background: #f3920d;
+          margin-top: 56px;
+          box-sizing: border-box;
+          padding: 24px;
+
+          .auth-icon {
+            height: 28px;
+            background: url(~assets/theme-images/ross/pc-icon-auth.png)
+              no-repeat left center;
+            background-size: auto 28px;
+          }
+
+          .auth-info {
+            font-size: 0;
+            margin-top: 10px;
+            span {
+              font-size: 20px;
+              color: #fff;
+            }
+          }
+        }
+      }
+    }
+    .page-content {
+      margin-top: 16px;
+      box-sizing: border-box;
+      padding: 24px;
+      .device-params {
+        .title {
+          font-size: 28px;
+          color: #282828;
+          font-weight: bold;
+        }
+        .line {
+          height: 1px;
+          background: #ececec;
+          position: relative;
+          margin-top: 10px;
+          margin-bottom: 20px;
+          &::after {
+            content: '';
+            position: absolute;
+            width: 73px;
+            height: 2px;
+            background: #f3920d;
+            left: 0;
+            bottom: 0;
+          }
+        }
+        .params {
+          width: 100%;
+          .row {
+            display: table-row;
+            width: 100%;
+          }
+
+          .col {
+            display: table-cell;
+            font-size: 16px;
+            padding: 12px 0;
+
+            &:nth-child(2n-1) {
+              color: #999999;
+            }
+
+            &:nth-child(2n) {
+              color: #282828;
+              padding-left: 12px;
+            }
+
+            &:nth-child(3) {
+              padding-left: 100px;
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+// 移动端
+@media screen and (max-width: 768px) {
+  .device-detail {
+    .detail-title {
+      display: none;
+    }
+
+    .auth-card-content {
+      width: 100vw;
+      height: 100vh;
+      position: fixed;
+      left: 0;
+      top: 0;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      z-index: 9;
+      .auth-card-popup {
+        position: relative;
+        width: 86vw;
+
+        img {
+          display: block;
+          width: 100%;
+          height: auto;
+        }
+
+        .el-icon-circle-close {
+          position: absolute;
+          top: -8vw;
+          right: 0;
+          font-size: 7vw;
+          color: #fff;
+          cursor: pointer;
+        }
+      }
+    }
+
+    .page-top,
+    .page-content {
+      margin: 0 auto;
+      background: #fff;
+    }
+    .page-top {
+      .swiper {
+        position: relative;
+        width: 100vw;
+        height: 100vw;
+        background: #f7f7f7;
+
+        .device-image {
+          width: 100%;
+          height: 100%;
+        }
+
+        ::v-deep {
+          img {
+            width: 100vw;
+            height: 100vw;
+          }
+        }
+
+        .auth-seal {
+          position: absolute;
+          width: 13.8vw;
+          height: 13.8vw;
+          background: url(~assets/theme-images/ross/h5-icon-auth-seal.png)
+            no-repeat center;
+          background-size: 13.8vw;
+          right: 4vw;
+          bottom: 4vw;
+          z-index: 2;
+        }
+
+        .auth-card {
+          position: absolute;
+          width: auto;
+          height: 20.6vw;
+          display: block;
+          bottom: 4vw;
+          left: 4vw;
+          z-index: 2;
+        }
+
+        .auth-logo {
+          position: absolute;
+          max-width: 18vw;
+          max-height: 18vw;
+          top: 4vw;
+          left: 4vw;
+          z-index: 2;
+        }
+      }
+      .device-info {
+        position: relative;
+
+        .section {
+          word-break: break-all;
+          padding: 4vw 4vw 0;
+        }
+
+        .logo {
+          width: 18vw;
+          height: 18vw;
+          border-radius: 50%;
+          // background: #d8d8d8;
+          border: 0.1vw solid #d8d8d8;
+          box-sizing: border-box;
+          position: absolute;
+          right: 4vw;
+          top: 15.3vw;
+
+          &::after {
+            content: '';
+            position: absolute;
+            right: 0.7vw;
+            bottom: 0;
+            display: block;
+            width: 3.6vw;
+            height: 3.6vw;
+            background: url(~assets/theme-images/ross/h5-icon-auth-ren.png)
+              no-repeat center;
+            background-size: 3.6vw;
+          }
+
+          img {
+            display: block;
+            width: 100%;
+            height: 100%;
+            // background: pink;
+            border-radius: 50%;
+          }
+        }
+
+        .name {
+          font-size: 5.4vw;
+          color: #282828;
+          line-height: 7.4vw;
+          margin-bottom: 2.4vw;
+        }
+
+        .sncode.pc {
+          display: none;
+        }
+        .sncode.mobile {
+          margin: 2.4vw 0 5.6vw;
+          color: #282828;
+          font-size: 4vw;
+        }
+
+        .row {
+          line-height: 4.7vw;
+          i {
+            position: relative;
+            margin: 0 4vw;
+            &::after {
+              content: '';
+              display: block;
+              width: 0.3vw;
+              height: 3vw;
+              background: #999999;
+              position: absolute;
+              top: 1vw;
+              left: 0;
+            }
+          }
+
+          span {
+            font-size: 3.6vw;
+            color: #999999;
+          }
+        }
+
+        .row,
+        .maker {
+          margin-bottom: 2.4vw;
+        }
+
+        .supplier,
+        .maker {
+          font-size: 3.6vw;
+          color: #282828;
+        }
+
+        .auth {
+          width: 100%;
+          min-height: 20vw;
+          background: #f3920d;
+          margin-top: 6.4vw;
+          box-sizing: border-box;
+          padding: 5.2vw 4vw;
+
+          .auth-icon {
+            height: 4.9vw;
+            background: url(~assets/theme-images/ross/h5-icon-auth.png)
+              no-repeat left center;
+            background-size: auto 4.9vw;
+          }
+
+          .auth-info {
+            font-size: 0;
+            margin-top: 10px;
+            span {
+              font-size: 3.6vw;
+              line-height: 6.4vw;
+              color: #fff;
+            }
+          }
+        }
+      }
+    }
+    .page-content {
+      .device-params {
+        padding: 11.2vw 4vw;
+        box-sizing: border-box;
+        .title {
+          font-size: 4vw;
+          color: #282828;
+          font-weight: bold;
+        }
+        .line {
+          height: 0.2vw;
+          background: #ececec;
+          position: relative;
+          margin-top: 4.7vw;
+          margin-bottom: 1.2vw;
+        }
+        .params {
+          width: 100%;
+          word-break: break-all;
+          text-align: justify;
+          .row {
+            display: table-row;
+            width: 100%;
+          }
+
+          .col {
+            display: table-cell;
+            font-size: 3.6vw;
+            padding: 2.8vw 0;
+
+            &:nth-child(2n-1) {
+              color: #999999;
+              padding-right: 3.2vw;
+              white-space: nowrap;
+            }
+
+            &:nth-child(2n) {
+              color: #282828;
+            }
+          }
+        }
+      }
+    }
+  }
+}
+</style>

+ 4 - 1
pages/_template/ross/approve/device/list.vue

@@ -117,7 +117,10 @@ export default {
     },
     // 设备详情
     toDetail(item) {
-      window.location.href = `${process.env.CIMEI_LOCAL}/product/auth/product-${item.productId}.html`
+      // window.location.href = `${process.env.CIMEI_LOCAL}/product/auth/product-${item.productId}.html`
+      this.$router.push(
+        `${this.routePrefix}/approve/device/detail?id=${item.productId}`
+      )
     },
     // 机构详情
     toClubDetail(item) {