From ccee429d379e0108b7445f72ade8d97c110a6fb3 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期二, 09 十一月 2021 18:01:59 +0800
Subject: [PATCH] 问题修复

---
 src/pages/desktop/index/components/Tools.vue |  352 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 287 insertions(+), 65 deletions(-)

diff --git a/src/pages/desktop/index/components/Tools.vue b/src/pages/desktop/index/components/Tools.vue
index 385e1d2..b0facd3 100644
--- a/src/pages/desktop/index/components/Tools.vue
+++ b/src/pages/desktop/index/components/Tools.vue
@@ -1,99 +1,268 @@
 <template>
   <div class="tools">
-    <div class="center">
-      <div class="tools-left">
-        <div
-          :class="['tools-icon', {clicked:this.$store.state.desktop.preferenceVisiable}]"
-          @click="togglePreference()"
-        >
-          <img class="system" :src="`${publicPath}images/header-icon/system.png`" />
-          <!-- <span class="fa fa-apple"></span> -->
-        </div>
-        <div class="tools-icon" @click="openSafari()">
-          <!-- <span class="fa fa-safari"></span> -->
-          <img class="smart-ai" :src="`${publicPath}images/header-icon/SmartAI.png`" alt="">
-        </div>
+    <div class="tools-left">
+      <div
+        :class="['tools-icon','tools-show-desktop', {clicked:this.$store.state.desktop.preferenceVisiable}]"
+        @click="togglePreference()"
+      >
+        <img class="system" :src="`${publicPath}images/desktop/header-icon/system.png`" />
       </div>
-      <div class="tools-middle"></div>
-      <div class="tools-right">
-        <div class="tools-icon">
-          <!-- <span class="fa fa-battery-full"></span> -->
-          <img :src="`${publicPath}images/header-icon/search.png`" alt="">
-        </div>
-        <div class="tools-icon">
-          <!-- <span class="fa fa-battery-full"></span> -->
-          <img :src="`${publicPath}images/header-icon/help.png`" alt="">
-        </div>
-        <div class="tools-icon">
-          <!-- <span class="fa fa-battery-full"></span> -->
-          <img :src="`${publicPath}images/header-icon/notice.png`" alt="">
-        </div>
-        <div class="tools-icon">
-          <!-- <span class="fa fa-battery-full"></span> -->
-          <img :src="`${publicPath}images/header-icon/user.png`" alt="">
-        </div>
-        <!-- <timer></timer> -->
-        <div class="tools-icon tools-notification-center" @click="notificationCenterClick()">
-          <span
-            :class="['fa', {'fa-list-ul':notificationCenterNoMessage()}, {'fa-comment-o on-new-msg':!notificationCenterNoMessage()},{'fa-commenting-o':notificationCenterMessageFlicker()}]"
-          ></span>
-        </div>
-        <div class="tools-icon tools-show-desktop">
-          <span>&nbsp;</span>
-        </div>
+      <div class="tools-icon no-hover-style">
+        <img class="smart-ai" :src="`${publicPath}images/desktop/header-icon/SmartAI-鏂�.png`" alt />
       </div>
     </div>
+    <div class="tools-middle">
+      <div
+        v-for="dock in $store.state.desktop.minDocks"
+        :key="dock.id"
+        class="dock-item-wrap"
+        :class="{'actived':dock.highlight}"
+      >
+        <a @click="dockClick(dock)">
+          <img class="dock-item" :src="dock.src" :alt="dock.alt" />
+          <img class="dock-shot" :src="dock.screenshot" v-if="dock.screenshot" />
+          <!-- <iframe class="dock-shot" :src="dock.url"  ></iframe> -->
+        </a>
+      </div>
+    </div>
+    <div class="tools-right">
+      <div class="tools-icon">
+        <img :src="`${publicPath}images/desktop/header-icon/search.png`" alt />
+      </div>
+      <div class="tools-icon">
+        <img :src="`${publicPath}images/desktop/header-icon/help.png`" alt />
+      </div>
+      <div class="tools-icon" @click="notificationCenterClick()">
+        <img :src="`${publicPath}images/desktop/header-icon/notice.png`" alt />
+      </div>
+      <div class="tools-icon">
+        <el-dropdown size="small" placement="bottom">
+          <span class="el-dropdown-link">
+            <img :src="`${publicPath}images/desktop/header-icon/user.png`" alt />
+            <!-- <i class="el-icon-arrow-down el-icon--right"></i> -->
+          </span>
+          <el-dropdown-menu slot="dropdown" style="top: 44px;">
+            <el-dropdown-item style="text-align:left">
+              <b>Hi {{userInfo.username}}</b>
+            </el-dropdown-item>
+            <el-dropdown-item @click.native="showPasswdForm = true">淇敼瀵嗙爜</el-dropdown-item>
+            <el-dropdown-item @click.native="toLogout">閫�鍑虹櫥褰�</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+      </div>
+    </div>
+    <el-dialog title="淇敼瀵嗙爜" :visible.sync="showPasswdForm" :append-to-body="true" width="500px">
+      <el-form :model="passwdForm" ref="ruleForm" :rules="rules" label-width="90px">
+        <el-form-item label="鏃у瘑鐮�" prop="oldPwd">
+          <el-input show-password v-model="passwdForm.oldPwd" autocomplete="off" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="鏂板瘑鐮�" prop="newPwd">
+          <el-input show-password v-model="passwdForm.newPwd" autocomplete="off" size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="纭瀵嗙爜" prop="checkPwd">
+          <el-input show-password v-model="passwdForm.checkPwd" autocomplete="off" size="small"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="info" @click="showPasswdForm = false" size="small">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitForm('ruleForm')" size="small">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import Timer from "./Timer";
-
+import html2canvas from 'html2canvas';
+import { logout, updatePwd } from "@/api/login";
 export default {
   name: "Tools",
-  components: {
-    Timer
-  },
   data() {
+    var validatePass = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('璇疯緭鍏ュ瘑鐮�'));
+      } else {
+        if (this.passwdForm.checkPwd !== '') {
+          this.$refs.ruleForm.validateField('checkPwd');
+        }
+        callback();
+      }
+    };
+    var validatePass2 = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('璇峰啀娆¤緭鍏ュ瘑鐮�'));
+      } else if (value !== this.passwdForm.newPwd) {
+        callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+      } else {
+        callback();
+      }
+    };
     return {
       publicPath: process.env.BASE_URL,
       notificationCenterVisible: false,
-      notificationCenterMessageCount: 0
+      notificationCenterMessageCount: 0,
+      maxOrder: 0,
+      maxOrderOne: '',
+      userInfo: {},
+      showPasswdForm: false,
+      rules: {
+        oldPwd: [
+          { required: true, message: '璇疯緭鍏ユ棫瀵嗙爜', trigger: 'blur' }
+        ],
+        newPwd: [
+          { required: true, validator: validatePass, trigger: 'blur' }
+        ],
+        checkPwd: [
+          { required: true, validator: validatePass2, trigger: 'blur' }
+        ]
+      },
+      passwdForm: {
+        oldPwd: "",
+        newPwd: "",
+        checkPwd: ""
+      },
+
     };
   },
   created() {
     let _that = this;
+    this.userInfo = sessionStorage.getItem("userInfo") && JSON.parse(sessionStorage.getItem("userInfo"));
+    console.log(this.userInfo)
     if (window.toolIntervalArr) {
       window.toolIntervalArr.forEach(item => clearInterval(item));
     }
+
     window.toolIntervalArr = [
-      setInterval(function() {
+      setInterval(function () {
         _that.notificationCenterMessageCount += 1;
       }, 600)
     ];
   },
+  // watch:{
+  //   '$store.state.desktop.frames':{
+  //     handler(n,o){
+  //       if(n){
+  //         ;
+  //         n.forEach((item,index) => {
+  //           if(item.order >= this.maxOrder){
+  //             this.maxOrderOne = item.id;
+  //           }
+  //         });
+  //       }
+  //     },
+  //     deep: true
+  //   }
+  // },
+
+
   methods: {
-    notificationCenterClick: function() {
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          let json = {
+            oldPwd: this.passwdForm.oldPwd,
+            newPwd: this.passwdForm.checkPwd
+          }
+          updatePwd(json).then(res => {
+            console.log(res, '淇敼瀵嗙爜')
+            this.$notify({
+              type: res.success ? 'success' : 'error',
+              message: res.msg
+            })
+            if (res.success) {
+              this.showPasswdForm = false
+              // this.$nextTick(_=>{
+              //   this.toLogout('淇敼瀵嗙爜鎴愬姛锛岃閲嶆柊鐧诲綍锛�')
+              // })
+            }
+          })
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    notificationCenterClick: function () {
       this.notificationCenterVisible = !this.notificationCenterVisible;
       this.$store.commit(
         "desktop/changeNotificationCenterVisible",
         this.notificationCenterVisible
       );
     },
-    notificationCenterNoMessage: function() {
+    notificationCenterNoMessage: function () {
       return this.$store.state.desktop.messageNotices.length === 0;
     },
-    notificationCenterMessageFlicker: function() {
+    notificationCenterMessageFlicker: function () {
       return (
         this.notificationCenterMessageCount % 2 === 0 &&
         !this.notificationCenterNoMessage()
       );
     },
-    openSafari: function() {
-      this.$store.commit("desktop/openSafari");
+
+    togglePreference() {
+      //this.$store.commit("desktop/togglePreference");
+      //鏄剧ず妗岄潰,鏈�灏忓寲宸叉墦寮�鐨勫簲鐢�
+      ;
+      this.$store.state.desktop.frames.forEach(frame => {
+        this.$store.commit('desktop/addMinDock', {
+          id: frame.id,
+          src: frame.icon,
+          alt: frame.title,
+          type: "3",
+          screenshot: ''
+        });
+      })
     },
-    togglePreference: function() {
-      this.$store.commit("desktop/togglePreference");
+    dockClick(dock) {
+
+      if (dock.type === "1") {
+        window.open(dock.url);
+      } else if (dock.type === "2") {
+        this.$store.dispatch("desktop/addFrame", {
+          id: dock.id,
+          icon: dock.src,
+          title: dock.name,
+          url: dock.url
+        });
+      } else if (dock.type === "3") {
+        this.$store.commit("desktop/resetMinFrame", dock.id);
+        //鐐瑰嚮鐨刬frame缃《骞堕珮浜�
+        this.$store.commit("desktop/refreshFrame", dock);
+      }
+    },
+    toolHover(dock) {
+      //this.$parent.screenShot(dock)
+    },
+
+    toLogout() {
+      let _this = this;
+      this.$confirm("鎻愮ず锛氱‘瀹氶��鍑哄悧锛�", {
+        center: true,
+        cancelButtonClass: "comfirm-class-cancle",
+        confirmButtonClass: "comfirm-class-sure"
+      }).then(_ => {
+        logout().then(res => {
+          if (res === "閫�鍑烘垚鍔�") {
+            sessionStorage.removeItem("userInfo");
+            // 鎵嬪姩閫�鍑�, 鍙栨秷鑷姩鐧诲綍
+            sessionStorage.removeItem("autoLogin");
+            _this.userInfo = {};
+            location.assign('/view/index');
+            this.$notify({
+              title: "鎻愮ず",
+              type: "success",
+              message: "閫�鍑烘垚鍔燂紒"
+            });
+          } else {
+            this.$notify({
+              title: "鎻愮ず",
+              type: "success",
+              message: "閫�鍑哄け璐�!"
+            });
+          }
+        });
+      }).catch(_ => {
+        console.log("閫�鍑哄け璐�");
+      });
     }
   }
 };
@@ -117,24 +286,75 @@
   margin: auto;
 }
 .tools .tools-left {
-  width: 200px;
+  width: 275px;
   height: 100%;
   float: left;
-  margin-left: 8px;
-
+  margin-left: 14px;
+}
+.tools .tools-middle {
+  float: left;
+  position: relative;
 }
 
+.tools .tools-middle::before {
+  width: 1px;
+  height: 20px;
+  content: "";
+  position: absolute;
+  top: 10px;
+  left: 0;
+  background: rgba(0, 0, 0, 0.2);
+}
+.tools .tools-middle .dock-item-wrap {
+  display: inline-block;
+  padding: 0 10px;
+  height: 38px;
+  line-height: 54px;
+  margin-right: 1px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+}
+.tools .tools-middle .dock-item-wrap:hover {
+  color: white;
+  background-color: #98aabe;
+}
+.tools-middle .dock-item-wrap.actived {
+  border-color: #40c3ff;
+  background-color: #98aabe;
+}
+.dock-item-wrap a {
+  height: 100%;
+}
+.dock-item-wrap img {
+  width: auto;
+  height: 70%;
+}
+.dock-item-wrap .dock-shot {
+  visibility: hidden;
+  /* transform: scale(0.5); */
+  width: 100px;
+  height: 46px;
+  position: absolute;
+  top: 44px;
+  left: -50%;
+}
+.tools .tools-middle .dock-item-wrap:hover .dock-shot,
+.tools .tools-middle .dock-item-wrap.clicked .dock-shot {
+  visibility: visible;
+}
 .tools-icon {
   text-align: center;
   height: 100%;
   display: inline-block;
   vertical-align: top;
   line-height: 56px;
-  margin-right: 28px;
+  padding: 0 15px;
 }
-
-.tools .tools-icon:hover,
-.tools .tools-icon.clicked {
+.tools-icon img {
+  -webkit-user-drag: none;
+}
+.tools .tools-icon:not(.no-hover-style):hover,
+.tools .tools-icon:not(.no-hover-style).clicked {
   color: white;
   background-color: #98aabe;
   cursor: pointer;
@@ -143,11 +363,13 @@
 .tools .tools-right {
   float: right;
   height: 100%;
+  margin-right: 14px;
+}
+.el-dropdown-menu {
+  top: 40px !important;
 }
 
-.tools .tools-right .tools-show-desktop {
-  border-left: grey 1px solid;
-  width: 5px;
-  margin-left: 3px;
+.smart-ai {
+  height: 65%;
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0