From 39899a959b7bc5b8673bc914332c2c68f6a05bfe Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 11 九月 2023 21:55:02 +0800
Subject: [PATCH] Merge branch 'dev1.0' of http://42.193.1.25:9521/r/sccg_ui into dev1.0

---
 src/views/login/SIdentify.vue                      |   98 ++++++++++++++++++++++++
 src/views/operate/disposal/casepool/pool/index.vue |   14 ++
 src/api/operate/basecase.js                        |    7 +
 src/views/login/index.vue                          |   79 ++++++++++++-------
 4 files changed, 162 insertions(+), 36 deletions(-)

diff --git a/src/api/operate/basecase.js b/src/api/operate/basecase.js
index 4ee2e00..7a48cb6 100644
--- a/src/api/operate/basecase.js
+++ b/src/api/operate/basecase.js
@@ -13,7 +13,10 @@
     getBaseCaseDetail: (id) => {
         return http.get('/sccg/base_case/baseCaseDetail/' + id);
     },
-
+    // 涓婃姤 
+    uploadEvent: (id) => {
+        return http.post('/sccg/base_case/upload-event/' + id);
+    },
     // 涓婁紶澶勭疆缁撴灉
     updateDisposeResult: (params) => {
         return http.post('/sccg/dispatch_handle/addition_dispose_result', params);
@@ -57,4 +60,4 @@
         return http.get('/sccg/trendAnalysis/queryPointInfoByTime', params);
     }
 
-}
+}
\ No newline at end of file
diff --git a/src/views/login/SIdentify.vue b/src/views/login/SIdentify.vue
new file mode 100644
index 0000000..66e0ec8
--- /dev/null
+++ b/src/views/login/SIdentify.vue
@@ -0,0 +1,98 @@
+<template>
+    <div
+        class="ValidCode disabled-select"
+        :style="`width:${width}; height:${height}`"
+        @click="refreshCode"
+    >
+      <span
+          v-for="(item, index) in codeList"
+          :key="index"
+          :style="getStyle(item)"
+      >{{ item.code }}</span>
+    </div>
+  </template>
+  
+  <script>
+  // 楠岃瘉鐮佺粍浠�
+  export default {
+    name: 'ValidCode',
+    model: {
+      prop: 'value',
+      event: 'input'
+    },
+    props: {
+      width: {
+        type: String,
+        default: '100px'
+      },
+      height: {
+        type: String,
+        default: '40px'
+      },
+      length: {
+        type: Number,
+        default: 4
+      },
+      refresh: {
+        type: Number
+      }
+    },
+    data () {
+      return {
+        codeList: []
+      }
+    },
+    watch: {
+      refresh () {
+        this.createdCode()
+      }
+    },
+    mounted () {
+      this.createdCode()
+    },
+    methods: {
+      refreshCode () {
+        this.createdCode()
+      },
+      createdCode () {
+        const len = this.length
+        const codeList = []
+        const chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789'
+        const charsLen = chars.length
+        // 鐢熸垚
+        for (let i = 0; i < len; i++) {
+          const rgb = [Math.round(Math.random() * 220), Math.round(Math.random() * 240), Math.round(Math.random() * 200)]
+          codeList.push({
+            code: chars.charAt(Math.floor(Math.random() * charsLen)),
+            color: `rgb(${rgb})`,
+            fontSize: `${10 + (+[Math.floor(Math.random() * 10)] + 6)}px`,
+            padding: `${[Math.floor(Math.random() * 10)]}px`,
+            transform: `rotate(${Math.floor(Math.random() * 90) - Math.floor(Math.random() * 90)}deg)`
+          })
+        }
+        // 鎸囧悜
+        this.codeList = codeList
+        // 灏嗗綋鍓嶆暟鎹淳鍙戝嚭鍘�
+        // console.log(codeList.map(item => item.code).join(''))
+        this.$emit('input', codeList.map(item => item.code).join(''))
+      },
+      getStyle (data) {
+        return `color: ${data.color}; font-size: ${data.fontSize}; padding: ${data.padding}; transform: ${data.transform}`
+      }
+    }
+  }
+  </script>
+  
+  <style scoped>
+  .ValidCode{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    cursor: pointer;
+  }
+  .ValidCode span{
+    display: inline-block;
+  }
+  </style>
+  
+  
\ No newline at end of file
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 85f76a9..ddb8047 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -60,6 +60,13 @@
             </span>
           </el-input>
         </el-form-item>
+        <el-form-item>
+          <el-input
+            v-model="loginForm.validCode"
+            placeholder="楠岃瘉鐮�"
+          ></el-input>
+          <SIdentify @input="createValidCode"></SIdentify>
+        </el-form-item>
         <!-- 琛ㄥ崟鎻愪氦鎸夐挳 -->
         <el-form-item style="margin-bottom: 60px; text-align: center">
           <el-button
@@ -80,12 +87,14 @@
 import { isvalidUsername } from "@/utils/validate";
 import { createNamespacedHelpers } from "vuex";
 import users from "@/api/users";
-import {Decrypt,Encrypt} from '@/utils/cryptojs'
-import leafletMapVue from '../systemSetting/device/grid/components/components/leafletMap.vue';
-
+import { Decrypt, Encrypt } from "@/utils/cryptojs";
+import leafletMapVue from "../systemSetting/device/grid/components/components/leafletMap.vue";
+// 寮曞叆鐧诲綍楠岃瘉缁勪欢
+import SIdentify from "./SIdentify";
 const { mapActions } = createNamespacedHelpers("users");
 export default {
   name: "login",
+  components: { SIdentify },
   data() {
     const validateUsername = (rule, value, callback) => {
       if (!isvalidUsername(value)) {
@@ -103,10 +112,10 @@
     };
     return {
       loginForm: {
-        username:"",
-        password:"",
+        username: "",
+        password: "",
       },
-      imgUrl:'',
+      imgUrl: "",
       loginRules: {
         username: [
           { required: true, trigger: "blur", validator: validateUsername },
@@ -120,28 +129,34 @@
     };
   },
   created() {
-    const pic = JSON.parse(sessionStorage.getItem('pic'));
-    if(pic){
-      this.imgUrl = pic.loginPageIconUrl
-    }else{
+    const pic = JSON.parse(sessionStorage.getItem("pic"));
+    if (pic) {
+      this.imgUrl = pic.loginPageIconUrl;
+    } else {
       this.$axios({
-          method: 'get',
-          url: 'sccg/system/portal/logo/search',
-        }).then(res => {
-          this.imgUrl = res.data.loginPageIconUrl
-        })
+        method: "get",
+        url: "sccg/system/portal/logo/search",
+      }).then((res) => {
+        this.imgUrl = res.data.loginPageIconUrl;
+      });
     }
-   },
+  },
   methods: {
     showPwd() {
       this.pwdType = !this.pwdType;
     },
     ...mapActions(["login"]),
     handleLogin() {
+      debugger;
+      // 鐧诲綍鍑芥暟涓獙璇侀獙璇佺爜鏄惁姝g‘锛氱粺涓�杞崲涓哄皬鍐�
+      if (this.loginForm.validCode.toLowerCase() !== this.validCode.toLowerCase()) {
+        this.$message.error("楠岃瘉鐮侀敊璇�");
+        return;
+      }
       let { username, password } = this.loginForm;
       const that = this;
-      
-      password = Encrypt(password)
+
+      password = Encrypt(password);
       this.$axios
         .post("sccg/admin/login", {
           password,
@@ -151,27 +166,29 @@
           if (response.code === 200) {
             // 璁剧疆toke鏃堕棿
             // 淇濆瓨token
-            sessionStorage.setItem('token',response.data.token);
+            sessionStorage.setItem("token", response.data.token);
             // 淇濆瓨token
-            sessionStorage.setItem('tokenHead',response.data.tokenHead);
+            sessionStorage.setItem("tokenHead", response.data.tokenHead);
             // 淇濆瓨鐢ㄦ埛鐧诲綍鍚�
-            sessionStorage.setItem('name',username);
+            sessionStorage.setItem("name", username);
             // 璺宠浆鍒伴椤�
             that.$router.push("/home");
-          }else{
-            that.$refs.loginForm.validate((valid)=>{
-              if(valid){
+          } else {
+            that.$refs.loginForm.validate((valid) => {
+              if (valid) {
                 that.$message({
-                  type:'warning',
-                  message:response.message
-                })
+                  type: "warning",
+                  message: response.message,
+                });
               }
-            })
+            });
           }
         })
-        .catch(function (error) {
-        });
-    }
+        .catch(function (error) {});
+    },
+    createValidCode(data) {
+      this.validCode = data;
+    },
   },
 };
 </script>
diff --git a/src/views/operate/disposal/casepool/pool/index.vue b/src/views/operate/disposal/casepool/pool/index.vue
index 6f05f22..36b86f6 100644
--- a/src/views/operate/disposal/casepool/pool/index.vue
+++ b/src/views/operate/disposal/casepool/pool/index.vue
@@ -120,7 +120,7 @@
           <el-table-column prop="operation" label="鎿嶄綔" min-width="20">
             <template slot-scope="scope">
               <div class="operation" v-if="statusArr[0] === 0">
-                <span @click="handleFind(scope.row)">涓婃姤</span>
+                <span @click="handleUpload(scope.row)">涓婃姤</span>
                 <span class="line">|</span>
                 <span @click="handleDispatch(scope.row)">璋冨害</span>
                 <span class="line">|</span>
@@ -498,8 +498,16 @@
         return "success-row";
       }
     },
-    // 鏌ョ湅鐢ㄦ埛淇℃伅(涓嶅彲淇敼)
-    handleFind(rowData) {},
+
+    handleUpload(rowData) {
+      debugger;
+      basecase
+        .uploadEvent(rowData.id)
+        .then((res) => {
+          debugger;
+        })
+        .catch((err) => this.$message.error(err));
+    },
     // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠�
     changeCurrentPage(page) {
       this.currentPage = page;

--
Gitblit v1.8.0