Browse Source

我的页面

gaoxiong 1 year ago
parent
commit
b5e6fb96fa

BIN
src/assets/img/my/Pdf.png


BIN
src/assets/img/my/WORD.png


BIN
src/assets/img/my/header.png


BIN
src/assets/img/my/my_header.png


BIN
src/assets/img/my/operta.png


BIN
src/assets/img/my/org.png


BIN
src/assets/img/my/role.png


BIN
src/assets/img/my/server.png


+ 65 - 7
src/components/TopBar.vue

@@ -2,20 +2,54 @@
   <div class="top-bar-box">
     <div class="top-bar">
       <div class="top-box">
-        <span>移动安全保卫管理平台</span>
+<!--        <span>移动安全保卫管理平台</span>-->
         <van-icon name="setting-o" size="26" @click="clickOutLogin" />
       </div>
       <div class="bottom-box">
-        <div>
+<!--        <div>
           <p class="user-name">{{ userName }}</p>
           <p class="org-info">
             <span>{{ orgName }}</span>
             <van-icon name="arrow" size="20" />
           </p>
-          <p class="van-multi-ellipsis--l2 introduce-info ">
+          <p class="van-multi-ellipsis&#45;&#45;l2 introduce-info ">
             <span v-for="item in roleList" :key="item.roleId">{{ item.roleName }}</span>
           </p>
-        </div>
+        </div>-->
+      </div>
+    </div>
+    <div class="top-card">
+      <div class="top-card-line">
+        <van-image
+          round
+          width="1.3rem"
+          height="1.3rem"
+          style="float: left"
+          :src="require('@/assets/img/my/header.png')"
+        />
+        <p class="user-name">{{ userName }}</p>
+      </div>
+      <div class="top-card-line">
+        <van-image
+          width="0.6rem"
+          height="0.6rem"
+          style="margin-left: 10px;float: left"
+          :src="require('@/assets/img/my/org.png')"
+        />
+        <p style="line-height: 28px;">
+          <span class="top_text_content">{{ orgName }}</span>
+        </p>
+      </div>
+      <div class="top-card-line">
+        <van-image
+          width="0.65rem"
+          height="0.6rem"
+          style="margin-left: 10px;float: left"
+          :src="require('@/assets/img/my/role.png')"
+        />
+        <p class="van-multi-ellipsis&#45;&#45;l2 introduce-info " style="line-height: 28px;">
+          <span class="top_text_content" v-for="item in roleList" :key="item.roleId">{{ item.roleName }}</span>
+        </p>
       </div>
     </div>
 
@@ -46,15 +80,39 @@ export default {
 <style scoped lang="scss">
 .top-bar-box{
   position: relative;
+  height: 750px;
+}
+.top-card{
+  height: 45.333333vw;
+  background-color: #FFFFFF;
+  margin-top: -23vw;
+  margin-left: 6%;
+  margin-right: 6%;
+  border-radius: 10px;
+  .top-card-line{
+    padding-top: 2vw;
+    padding-left: 4vw;
+  }
+}
+.user-name{
+  padding-left: 15vw;
+  font-size: 6.333333vw;
+  line-height: 14vw;
+}
+
+.top_text_content{
+  margin-left: 2vw;
+  font-size: 3.8vw;
+  color: #797979;
 }
 .top-bar {
-  height: 300px;
+  height: 550px;
   width: 100%;
-  background: url('../assets/img/banner.png') no-repeat center rgba(255,255,255,.1);
+  background: url('../assets/img/my/my_header.png') no-repeat center rgba(255,255,255,.1);
   background-size: 100% 100%;
   padding: 40px 40px 20px 40px;
   text-shadow: 0 1px 3px #666;
-  box-shadow: 0 1px 10px #5ebaee;
+  box-shadow: 0 1px 10px #ffffff;
   color: #fff;
   > div {
     width: 100%;

+ 2 - 2
src/config/env.development.js

@@ -1,8 +1,8 @@
 /** 本地开发环境*/
 module.exports = {
   title: 'soc-app-dev',
-  baseUrl: 'http://10.87.21.107:8080', // 本地图片地址
-  baseApi: '/dev', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
+  baseUrl: 'http://10.87.10.55:8080', // 本地图片地址
+  baseApi: '/gaoxiong', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
   APPID: 'xxx',
   APPSECRET: 'xxx',
   $cdn: 'https://www.sunniejs.cn/static'  //静态资源

+ 6 - 2
src/router/router.config.js

@@ -84,8 +84,6 @@ export let routers = [
     component: () => import('@/views/menu/rehearsalTask/components/rehearsalTaskSign.vue'),
     meta: { title: '演练详情', keepAlive: false }
   },
-  
-
   {
     path: '/home',
     component: () => import('@/components/layouts/index'),
@@ -305,6 +303,12 @@ export let routers = [
         component: () => import('@/views/menu/visitRecord/add.vue'),
         meta: { title: '人员登记', keepAlive: false ,hideTabBar:true,deep: 2}
       },
+      {
+        path: '/operate',
+        name: 'operate',
+        component: () => import('@/views/menu/operate/index.vue'),
+        meta: { title: '操作手册', keepAlive: false ,hideTabBar:true,deep: 2}
+      },
 
     ],
   },

+ 10 - 0
src/views/home/api.js

@@ -0,0 +1,10 @@
+import request from "@/utils/request";
+
+export function getServer(data) {
+  return request({
+    url: "/system/config/findFirstByCode",
+    method: "get",
+    params: data,
+  });
+}
+

+ 35 - 6
src/views/home/isMy.vue

@@ -2,20 +2,34 @@
   <div v-if="!showServer" class="about-container">
     <top-bar></top-bar>
     <div  class="item-list">
+
+
       <van-cell is-link @click="clickServe">
         <!-- 使用 title 插槽来自定义标题 -->
         <template #title>
           <p class="item-title">
-            <van-icon size=".5rem" name="smile-comment-o" color="#008cd6"/>
-            <span class="custom-title">运维服务</span>
+<!--            <van-icon size=".5rem" name="smile-comment-o" color="#008cd6"/>-->
+            <van-image
+              width="0.6rem"
+              height="0.6rem"
+              style="margin-left: 10px;float: left"
+              :src="require('@/assets/img/my/server.png')"
+            />
+            <span class="custom-title">客服服务</span>
           </p>
         </template>
       </van-cell>
-      <van-cell is-link>
+      <van-cell is-link @click="checkOperate">
         <!-- 使用 title 插槽来自定义标题 -->
         <template #title>
           <p class="item-title">
-            <van-icon size=".5rem" name="info-o" color="#008cd6"/>
+<!--            <van-icon size=".5rem" name="info-o" color="#008cd6"/>-->
+            <van-image
+              width="0.6rem"
+              height="0.6rem"
+              style="margin-left: 10px;float: left"
+              :src="require('@/assets/img/my/operta.png')"
+            />
             <span class="custom-title">操作手册</span>
           </p>
         </template>
@@ -25,7 +39,7 @@
   <!-- 消息详情 -->
   <div v-else class="serve-detail">
     <van-nav-bar
-      title="运维信息"
+      title="客服服务"
       left-arrow
       @click-left="onClickLeft"
     />
@@ -41,6 +55,8 @@
 
 <script>
 import TopBar from '@/components/TopBar'
+import {getServer} from '@/views/home/api'
+import { getOperatings } from '@/views/menu/operate/api'
 export default {
   name: 'isMy',
   components: { TopBar },
@@ -55,9 +71,20 @@ export default {
     }
   },
   mounted() {
-
+    this.initData();
   },
   methods: {
+    initData(){
+      getServer({code:'CUSTOMER_SERVICE'}).then(res => {
+        let data = res.data;
+        if(data){
+          this.dataInfo.content = data.configValue;
+        }
+      });
+    },
+    checkOperate(){
+      this.$router.push({path:"/operate"})
+    },
     clickServe(){
       this.showServer = true;
     },
@@ -81,6 +108,8 @@ export default {
   }
   .custom-title{
     margin-left: 10px;
+    font-size: 4vw;
+    color: #797979;
   }
 }
 

+ 10 - 0
src/views/menu/operate/api.js

@@ -0,0 +1,10 @@
+import request from "@/utils/request";
+
+export function getOperatings(data) {
+  return request({
+    url: "/system/operating/operatingData",
+    method: "get",
+    data,
+  });
+}
+

+ 160 - 0
src/views/menu/operate/index.vue

@@ -0,0 +1,160 @@
+<template>
+  <div class="index-container">
+    <NavBar  :go="{ type: 'push', path: '/isMy' }"/>
+    <van-row>
+      <van-col span="5" class="side_list">
+        <van-sidebar v-model="activeKey" @change="onChange">
+          <van-sidebar-item :title="item.sourceName" v-for="item in sources" />
+        </van-sidebar>
+      </van-col>
+      <van-col span="19">
+        <div class="sidebar-content">
+          <div class="operator-card" v-for="item in list" :key="item" :title="item.fileName"  @click="showFile(item)">
+            <van-image
+              width="1rem"
+              height="1rem"
+              style="margin-left: 10px;float: left"
+              :src="getFileType(item.fileType)"
+            />
+            <span class="sid-content-title">{{item.fileName}}</span>
+          </div>
+
+        </div>
+      </van-col>
+    </van-row>
+
+
+  </div>
+</template>
+
+<script>
+import NavBar from '@/components/NavBar'
+import { Sidebar, SidebarItem,Notify  } from 'vant';
+import {getOperatings} from '@/views/menu/operate/api'
+import { imgUrl } from '@/utils'
+export default {
+  name: 'operate',
+  components: {
+    NavBar,
+    Sidebar,
+    SidebarItem,
+    Notify
+  },
+  data() {
+    return {
+      activeKey: 0,
+      sources:[],
+      list: [],
+    }
+  },
+  created() {
+  },
+  mounted() {
+    this.initData();
+  },
+  methods: {
+    getFileType(type){
+      if(type === 'pdf'){
+        return require('@/assets/img/my/Pdf.png');
+      }
+      if(type === 'doc' || type === 'docx'){
+        return require('@/assets/img/my/WORD.png')
+      }
+    },
+    initData(){
+      getOperatings().then(res => {
+        this.sources = res.data;
+        this.onChange(0);
+      });
+    },
+    onChange(index) {
+      let data = this.sources[index];
+      this.list = data.list;
+    },
+    showFile(item){
+      let url = item.fileUrl;
+      let system = this.isAndroidOrIos();
+      const parms = {
+        url: url.indexOf('http') > -1 ?   url : imgUrl(url),
+        name: item.fileName
+      }
+      if(system === 1){
+        //android
+        // 判断当前环境是是否存在 js桥 'sap'
+        const hasSap = window.hasOwnProperty('sap');
+        if (hasSap) {
+          // 判断是否存在方法 ?preview
+          const fun = sap.hasOwnProperty('preview');
+          if (fun) {
+            sap.preview(JSON.stringify(parms));
+          }
+        }
+      }
+
+      if(system === 2){
+        //ios
+        // 判断 ios是否存在方法 preview
+        const fun = window.webkit.messageHandlers.hasOwnProperty('preview')
+        if (fun) {
+          window.webkit.messageHandlers.preview.postMessage(JSON.stringify(parms))
+        }
+      }
+    },
+    isAndroidOrIos(){
+      const urls = navigator.userAgent;
+      let isAndroid = urls.indexOf('Android') > -1 || urls.indexOf('Linux') > -1;
+      let isIos = !!urls.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
+      if(isAndroid){
+        return 1;
+      }
+      if(isIos){
+        return 2;
+      }
+      return 3;
+    },
+  }
+}
+</script>
+<style lang="scss" scoped>
+.sid-content-title{
+  font-size: 3.2vw;
+  line-height: 12vw;
+  margin-left: 3vw;
+}
+.index-container {
+  .van-sidebar-item--select::before {
+    background-color: #008cd6;
+    width: 1.066667vw;
+    height: 15.266667vw;
+  }
+  .van-sidebar-item {
+    background-color:#ffffff
+  }
+  .van-sidebar-item--select{
+    background-color: #f7f7f7;
+    color: #008cd6;
+  }
+
+}
+.sidebar-content{
+  margin-left: 2px;
+}
+.index-container{
+    height: 100vh;
+    background-color: #f7f8fa;
+  }
+.side_list{
+  background-color: #FFFFFF;
+  height: 100vh;
+}
+.operator-card{
+  height: 6vh;
+  margin-left: 2%;
+  margin-right: 2%;
+  margin-top: 2%;
+  background-color: #fff;
+  border-radius: 12px;
+  box-shadow: 0 8px 12px #ebedf0;
+
+}
+</style>