Pārlūkot izejas kodu

登录页添加重置密码,优化自定义字段(拖动直接保存),

zhuhao 2 gadi atpakaļ
vecāks
revīzija
fa8a03907c

+ 6 - 0
RMS-FrontEnd/src/api/permission.js

@@ -58,5 +58,11 @@ export default{
      getAllTenantList(params) {
       return axios.get('/permission/api/tenant/getTenantList', {params})
   },
+  /**
+   * 登录页重置密码
+   */
+  reSetPasswordBeforeLogin(data) {
+    return axios.post('/permission/api/admin/reSetPasswordBeforeLogin',data)
+  },
 
 }

+ 113 - 0
RMS-FrontEnd/src/views/components/articles/components/patentRecord.vue

@@ -0,0 +1,113 @@
+<template>
+  <div class="content">
+    <div class="item" v-for="item in patentMark" :key="item.id" :style="{'background':item.color?item.color:'yellow'}">
+      <el-popover
+        placement="bottom"
+        width="200"
+        trigger="hover">
+      <div>
+        <p><span style="color: #409EFF;">栏位:</span><span>{{ item.fields }}</span></p>
+        <!-- <p>栏位:{{ item.scratchField }}</p> -->
+        <p><span style="color: #409EFF;">选中文本:</span>{{ item.content }}</p>
+      </div>
+      <div slot="reference" style="height:100%;width:100%" @click.prevent.stop="runTo(item)"></div>
+      </el-popover>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:['patentNo'],
+  data() {
+    return {
+      patentMark:[]
+    }
+  },
+  computed: {
+    contrastList() {
+      return this.$store.state.report.contrastList
+    }
+  },
+  watch: {
+    'contrastList'(val) {
+      this.getPatentMark()
+    },
+    patentNo(val) {
+      this.getPatentMark()
+    },
+  },
+  mounted() {
+    this.getPatentMark()
+  },
+  methods: {
+    getPatentMark() {
+      this.$nextTick(() => {
+        this.patentMark = []
+        var a = ['摘要', '权利要求', '说明书']
+        var b = this.contrastList.filter(item => {
+          return item.patentNo == this.patentNo
+        })
+        /**方案一 */
+        // a.forEach(item => {
+        //   b.forEach((item2, index) => {
+        //     if (item2.scratchField.indexOf(item) != -1) {
+        //       this.patentMark.push(item2)
+        //       // 每次都需要重新遍历全部,优化
+        //     }
+        //   })
+        // })
+        /**方案二 */
+        // var c = []
+        // a.forEach((item,index) => {
+        //   c[index] = []
+        // })
+        // b.forEach((item2) => {
+        //   var index = a.findIndex(item => { return item2.scratchField.indexOf(item) != -1 })
+        //   c[index].push(item2)
+        // })
+        // a.forEach((item,index) => {
+        //   c[index].sort((a, b) => {
+        //     return (a.position + a.text.length) - (b.position + b.text.length)
+        //   })
+        // })
+        // this.patentMark = [].concat(...c)
+        /**方案三 */
+        // this.patentMark=b.sort((x,y)=>{
+        //     return a.findIndex(item=>{return x.scratchField.indexOf(item)!=-1}) - a.findIndex(item=>{return y.scratchField.indexOf(item)!=-1})
+        // })
+        /**方案四 */
+        var c = []
+        a.forEach((item,index) => {
+          c[index] = b.filter(item2 => {
+            return item2.fields.indexOf(item) != -1  
+          })
+          c[index].sort((a, b) => {
+            return a.position - b.position
+          })
+        })
+        this.patentMark = [].concat(...c)
+      })
+    },
+    runTo(val) {
+      this.$emit('duiBi',val)
+    }
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+.item{
+  width: 8px;
+  height: 8px;
+  border: 1px solid black;
+  margin:2px 2px;
+}
+.content{
+  max-width: 300px;
+  max-height: 50px;
+  overflow: auto;
+  display: flex;
+  flex-wrap: wrap;
+}
+</style>

+ 1 - 0
RMS-FrontEnd/src/views/layout/components/field.vue

@@ -317,6 +317,7 @@ export default {
             break
         }
         this.valueChange = true
+        this.submitOption(draggingNode.data)
       },
       // 选项卡管理树形删除
       handleDeleteTreeNode(node, data) {

+ 128 - 0
RMS-FrontEnd/src/views/login/compoments/resePassword.vue

@@ -0,0 +1,128 @@
+<template>
+  <div>
+    <el-dialog
+      title="重置密码"
+      :visible.sync="visible"
+      width="500px"
+      :before-close="close"
+      :close-on-click-modal="false">
+
+      <el-form :model="form" :rules="rules" ref="ruleForm" class="demo-ruleForm">
+        <el-form-item label="账号" prop="personnelUserName">
+          <el-input v-model="form.personnelUserName" placeholder="请输入账号"></el-input>
+        </el-form-item>
+        <el-form-item label="邮箱" prop="personnelEmail">
+          <el-input v-model="form.personnelEmail" placeholder="请输入账号绑定的邮箱"></el-input>
+        </el-form-item>
+      </el-form>
+      
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="close">取 消</el-button>
+        <el-button type="primary" @click="sure">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    const errorPersonnelEmail = (rule, value, callback) => {
+      if (rule.errorMessage) {
+        callback(new Error(rule.errorMessage))
+      } else {
+        if (!value) {
+          callback(new Error('请输入账号绑定的邮箱'))
+        } else {
+          let reg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\.\-])+\.)+([a-zA-Z0-9]{2,4})+$/
+          let re = new RegExp(reg)
+          if (re.test(value)) {
+            callback()
+          } else {
+            callback(new Error('请输入正确的邮箱格式'))
+          }
+        }
+      }
+    }
+    const errorPersonnelUserName = (rule, value, callback) => {
+      if (rule.errorMessage) {
+        callback(new Error(rule.errorMessage))
+      } else {
+        if (!value) {
+          callback(new Error('请输入账号'))
+        } else {
+          callback()
+        }
+      }
+    }
+    return {
+      form: {},
+      visible: false,
+      rules: {
+        personnelUserName: [{ required: true,  validator:errorPersonnelUserName, trigger: 'blur' },],
+        // personnelEmail: [
+        //   { required: true, message: "请输入账号绑定的邮箱", trigger: "blur" },
+        //   {
+        //     pattern:
+        //       /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\.\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
+        //     message: "请输入正确的邮箱格式",
+        //     trigger: "blur",
+        //   },
+        // ],
+        personnelEmail: [
+          { required: true, validator:errorPersonnelEmail, trigger: "blur" },
+        ]
+      },
+      personne:''
+    }
+  },
+  mounted() {
+
+  },
+  methods: {
+    
+    open() {
+      this.visible = true
+    },
+    sure() {
+      this.$refs.ruleForm.validate((valid) => {
+        if (valid) {
+          this.$api.reSetPasswordBeforeLogin(this.form).then(res => {
+            if (res.code == 200) {
+              this.$message.success('密码重置成功,请您到邮箱中查看新密码')
+              this.close()
+            }
+          }).catch(error => {
+            if (error.message.indexOf('账号') != -1) {
+              var personne = 'personnelUserName'
+              // var personneMessage='请输入账号'
+            }else if (error.message.indexOf('邮箱')!=-1) {
+              var personne = 'personnelEmail'
+              // var personneMessage='请输入账号绑定的邮箱'
+            }
+            this.rules[personne][0].errorMessage = error.message
+            // console.log(this.rules[personne],personne);
+            // this.rules[personne][0].message = error.message
+            // var a = this.form[personne]
+            // this.form[personne] = ''
+            this.$refs.ruleForm.validateField(personne)
+            this.rules[personne][0].errorMessage = ''
+            // this.form[personne] = a
+            // this.rules[personne][0].message = personneMessage
+          })
+        } else {
+          return false;
+        }
+      });
+    },
+    close() {
+      this.visible = false
+      this.$refs.ruleForm.resetFields()
+    },
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 18 - 5
RMS-FrontEnd/src/views/login/index.vue

@@ -81,13 +81,16 @@
               </el-button>
             </el-form-item>
           </el-form>
-          <div class="login-menu"></div>
+          <div class="login-menu">
+            <el-link type="primary" @click="resePassword">重置密码</el-link>
+          </div>
         </div>
       </div>
     </div>
     <div class="vue-particles">
       <vue-particles color="#dedede" shapeType="star" linesColor="#dedede" hoverMode="grab" clickMode="push" style="height: 100%"></vue-particles>
     </div>
+    <resePassword ref="resePassword"></resePassword>
   </div>
 </template>
 
@@ -95,7 +98,13 @@
 import Storage from '@/utils/storage';
 import { formatDate, formatAxis } from '@/utils/formatTime';
 import Cookies from "js-cookie";
+
+import resePassword from './compoments/resePassword.vue'
+
 export default {
+  components: {
+    resePassword
+  },
   data() {
     return {
       quotationsList: [
@@ -207,6 +216,10 @@ export default {
     }
   },
   methods: {
+    // 重置密码
+    resePassword() {
+      this.$refs.resePassword.open()
+    },
     // 随机语录
     initRandomQuotations() {
       this.quotations = this.quotationsList[Math.floor(Math.random() * this.quotationsList.length)];
@@ -426,11 +439,11 @@ export default {
           }
         }
         .login-menu {
-          margin-top: 30px;
+          // margin-top: 30px;
           width: 100%;
-          text-align: left;
-          a {
-            color: #999;
+          text-align: right;
+          el-link {
+            color: #1976d2;
             font-size: 12px;
             margin: 0 8px;
             text-decoration: none;