瀏覽代碼

Merge branch 'dev'

@dongkboy 1 周之前
父節點
當前提交
02089df530

+ 1 - 3
src/api/modules/user.ts

@@ -301,9 +301,7 @@ const userApi = (axiosInstance: ApiInstance) => ({
   }),
 
   // 修改密码
-  passwordEdit: (data: PasswordEditData) => axiosInstance.post('user/password/edit', data, {
-    baseURL: '/mock/',
-  }),
+  passwordEdit: (data: PasswordEditData) => axiosInstance.post('auth/modifyPass', data,),
 
   //成员列表分页
   memberList: (data: Page) => axiosInstance.post('/userInfo/getUserInfoList', data, { }),

+ 2 - 11
src/components/ruleConditionContainer/index.vue

@@ -71,14 +71,14 @@
           <template v-if="item.attrType == 'select'">
             <el-select v-model="item.minArray" placeholder="选择值" clearable filterable multiple :disabled="disabled"
               @change="change($event, index, item)" @visible-change="item.checkAll = false" @blur="item.checkAll = false"
-              :filter-method="(query) => filterMethod(query, item)">
+              >
               <template #header>
                 <el-checkbox v-model="item.checkAll" :indeterminate="item.indeterminate" :disabled="disabled"
                   @change="(val) => handleCheckAll(item, index, val)">
                   全选
                 </el-checkbox>
               </template>
-              <el-option v-for="dictLabalitem in showDictLabal(item)" :key="dictLabalitem.id"
+              <el-option v-for="dictLabalitem in item.dictLabal" :key="dictLabalitem.id"
                 :label="dictLabalitem.name" :value="dictLabalitem.code" />
             </el-select>
           </template>
@@ -193,15 +193,6 @@ const licenseNoSelect = (e, item) => {
   }
 }
 
-const showDictLabal = (item) => {
-  if (item.dictLabalFilter) return item.dictLabalFilter
-  return item.dictLabal
-}
-
-const filterMethod = (query, item) => {
-  item.dictLabalFilter = item.dictLabal.filter(v => v.name.includes(query))
-}
-
 const handleCheckAll = (item, index: number, val: boolean) => {
 
   item.indeterminate = false

+ 3 - 0
src/layouts/components/Topbar/Toolbar/rightSide.vue

@@ -44,6 +44,9 @@ watch(() => userStore.avatar, () => {
       [
         { label: '快捷键介绍', handle: () => eventBus.emit('global-hotkeys-intro-toggle'), hide: settingsStore.mode !== 'pc' },
       ],
+      [
+        { label: '修改密码', handle: () => eventBus.emit('forgot-password-dialog-toggle'), hide: settingsStore.mode !== 'pc' },
+      ],
       [
         { label: '退出登录', handle: () => userStore.logout(settingsStore.settings.home.fullPath) },
       ],

+ 110 - 0
src/layouts/components/forgotPassword/index.vue

@@ -0,0 +1,110 @@
+<script setup lang="ts">
+import { reactive, ref } from 'vue'
+import eventBus from '@/utils/eventBus'
+import { FormInstance, FormRules, ElMessage } from 'element-plus'
+import api from '@/api'
+import useUserStore from '@/store/modules/user'
+const userStore = useUserStore()
+
+defineOptions({
+  name: 'HotkeysIntro',
+})
+
+interface RuleForm {
+  oldPassWord: string,
+  newPassWord: string,
+}
+const formLabelAlign = reactive({
+  oldPassWord: '',//旧密码
+  newPassWord: '',//新密码
+})
+const ruleFormRef = ref<FormInstance>()
+const newPassWords = ref();
+const isShow = ref(false)
+const formrules = reactive<FormRules<RuleForm>>({
+  oldPassWord: [
+    { required: true, message: '旧密码不能为空', trigger: 'blur' },
+  ],
+  newPassWord: [
+    { required: true, message: '新密码不能为空', trigger: 'blur' },
+    { min: 8, max: 20, message: '8-20位字符,包含字母和数字', trigger: 'blur' },
+  ],
+})
+onMounted(() => {
+  eventBus.on('forgot-password-dialog-toggle', () => {
+    isShow.value = !isShow.value
+  })
+})
+const submitForm = async (formEl: FormInstance | undefined) => {
+  if (!formEl) return
+  await formEl.validate((valid): any => {
+    if (valid) {
+      if (formLabelAlign.oldPassWord == formLabelAlign.newPassWord) {
+        return ElMessage({
+          message: '输入的旧密码和新密码一致',
+          type: 'warning',
+          plain: true,
+        })
+      }
+      if (newPassWords.value !== formLabelAlign.newPassWord) {
+        return ElMessage({
+          message: '两次输入的新密码不一致',
+          type: 'warning',
+          plain: true,
+        })
+      }
+      api.userApi.passwordEdit(formLabelAlign).then((res: any) => {
+        if (res.code == 200) {
+          isShow.value=false;
+          ElMessage({
+            message: res.msg,
+            type: 'success',
+            plain: true,
+          })
+          setTimeout(() => {
+            userStore.logout();
+          }, 1000)
+        }
+      })
+    }
+  })
+}
+</script>
+
+<template>
+
+  <HDialog v-model="isShow" title="修改密码">
+    <div style="padding: 0 20px;" class="">
+      <el-form label-position="top" label-width="auto" :rules="formrules" size="large" ref="ruleFormRef"
+        :model="formLabelAlign">
+        <el-form-item label="请输入旧密码" prop="oldPassWord">
+          <el-input v-model="formLabelAlign.oldPassWord" type="password" show-password />
+        </el-form-item>
+        <el-form-item label="输入新密码" prop="newPassWord">
+          <el-input v-model="formLabelAlign.newPassWord" type="password" show-password />
+        </el-form-item>
+        <el-form-item label="再次输入新密码">
+          <el-input v-model="newPassWords" type="password" show-password />
+        </el-form-item>
+      </el-form>
+      <h6 style="color: #666;">8-20位字符,包含字母和数字,建议字母包含大小写组合。</h6>
+      <div class="dialog-footer flex a-c j-s">
+        <el-button @click="isShow = false" size="large">取消</el-button>
+        <el-button type="primary" style="background: linear-gradient(91deg, #4fcaff 0%, #2b62ff 100%);border: none;"
+          @click="submitForm(ruleFormRef)" size="large">
+          确认修改
+        </el-button>
+      </div>
+    </div>
+
+  </HDialog>
+</template>
+<style lang="scss" scoped>
+.dialog-footer {
+  width: 100%;
+
+  .el-button {
+    width: 45%;
+  }
+}
+</style>

+ 2 - 0
src/layouts/index.vue

@@ -9,6 +9,7 @@ import BackTop from './components/BackTop/index.vue'
 import Copyright from './components/Copyright/index.vue'
 import Header from './components/Header/index.vue'
 import HotkeysIntro from './components/HotkeysIntro/index.vue'
+import forgotPassword from './components/forgotPassword/index.vue'
 import MainSidebar from './components/MainSidebar/index.vue'
 import Search from './components/Search/index.vue'
 import SubSidebar from './components/SubSidebar/index.vue'
@@ -125,6 +126,7 @@ const enableAppSetting = import.meta.env.VITE_APP_SETTING === 'true'
     </div>
     <Search />
     <HotkeysIntro />
+    <forgotPassword />
     <template v-if="enableAppSetting">
       <div class="app-setting" @click="eventBus.emit('global-app-setting-toggle')">
         <SvgIcon name="i-uiw:setting-o" class="icon" />

+ 1 - 1
src/views/quoteConfig/agreement/agreementIndex.vue

@@ -226,7 +226,7 @@ const columns = [
   },
   { prop: "agreementAbbreviation", label: "协议简称", width: '120', },
   {
-    prop: "deptName", label: "归属", width: '120',
+    prop: "partnerCompanyName", label: "归属", width: '160',
   },
   {
     prop: "agreementType", label: "协议类型", width: '200', formatter: (row: any) => {