Przeglądaj źródła

企业登录邮箱、密码修改

Xiao_123 6 miesięcy temu
rodzic
commit
5b74056261

+ 1 - 0
.env.local

@@ -11,6 +11,7 @@ VITE_BASE_URL='https://www.menduner.com:1443/'
 VITE_UPLOAD_TYPE=server
 # 上传路径
 VITE_UPLOAD_URL='https://www.menduner.com:1443/admin-api/infra/file/upload'
+#VITE_UPLOAD_URL='http://192.168.3.80/admin-api/infra/file/upload'
 
 # 接口地址
 VITE_API_URL=/admin-api

+ 26 - 1
src/api/menduner/system/enterprise/userBind/index.ts

@@ -61,5 +61,30 @@ export const EnterpriseUserBindApi = {
   // 获得企业用户充值订单分页
   getEnterpriseUserRechargeOrderPage: async (params) => {
     return await request.get({ url: `/pay/currency-recharge/page`, params })
-  }
+  },
+
+  // 修改门墩儿-登录邮箱
+  updateEnterpriseEmail: async (data) => {
+    return await request.put({ url: `/menduner/system/enterprise-user-bind/update-email`, data })
+  },
+
+  // 修改门墩儿-登录密码
+  updateEnterprisePassword: async (data) => {
+    return await request.put({ url: `/menduner/system/enterprise-user-bind/update-password`, data })
+  },
+
+  // 获得企业列表
+  getEnterpriseList: async () => {
+    return await request.get({ url: `/menduner/system/enterprise/list-all-simple` })
+  },
+
+  // 禁用账户
+  disabledEnterpriseAccount: async (ids: array) => {
+    return await request.post({ url: `/menduner/system/enterprise-user-bind/disable?ids=${ids}` })
+  },
+
+  // 启用账户
+  enableEnterpriseAccount: async (ids: array) => {
+    return await request.post({ url: `/menduner/system/enterprise-user-bind/enable?ids=${ids}` })
+  },
 }

+ 1 - 0
src/views/menduner/system/analysis/statisticAnalysis/index.vue

@@ -13,6 +13,7 @@
           <el-form-item label="企业" prop="enterpriseId">
             <el-select
               v-model="queryParams.enterpriseId"
+              filterable
               placeholder="请选择企业"
               clearable
               class="!w-240px"

+ 96 - 0
src/views/menduner/system/enterprise/userbind/EditEmail.vue

@@ -0,0 +1,96 @@
+<template>
+  <Dialog title="企业登录邮箱修改" v-model="dialogVisible">
+    <el-form
+      ref="formRef"
+      :model="formData"
+      :rules="formRules"
+      label-width="100px"
+      v-loading="formLoading"
+      @submit.prevent
+    >
+      <el-form-item label="企业邮箱" prop="email">
+        <el-input v-model="formData.email" placeholder="请输入企业邮箱" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button @click="dialogVisible = false">取 消</el-button>
+    </template>
+  </Dialog>
+</template>
+
+<script setup lang="ts">
+import { EnterpriseUserBindApi } from '@/api/menduner/system/enterprise/userBind'
+
+defineOptions({ name: 'EnterpriseUserBindForm' })
+
+const { t } = useI18n() // 国际化
+const message = useMessage() // 消息弹窗
+
+const dialogVisible = ref(false) // 弹窗的是否展示
+const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+const formData = ref({
+  id: undefined,
+  email: undefined
+})
+
+const validateEmail = (rule: any, value: any, callback: any) => {
+  if (!value) {
+    callback(new Error('请输入企业邮箱'))
+  } else {
+    if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
+      callback(new Error('请输入正确的企业邮箱地址'))
+    }
+    callback()
+  }
+}
+
+const formRules = reactive({
+  email: [{ required: true, validator: validateEmail, trigger: 'blur' }]
+})
+const formRef = ref() // 表单 Ref
+
+/** 打开弹窗 */
+const open = async (id: number) => {
+  dialogVisible.value = true
+  resetForm()
+  // 修改时,设置数据
+  if (id) {
+    formLoading.value = true
+    try {
+      const data = await EnterpriseUserBindApi.getEnterpriseUserBind(id)
+      formData.value.id = data.id
+      formData.value.email = data.email
+    } finally {
+      formLoading.value = false
+    }
+  }
+}
+defineExpose({ open }) // 提供 open 方法,用于打开弹窗
+
+/** 提交表单 */
+const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+const submitForm = async () => {
+  // 校验表单
+  await formRef.value.validate()
+  // 提交请求
+  formLoading.value = true
+  try {
+    await EnterpriseUserBindApi.updateEnterpriseEmail(formData.value)
+    message.success(t('common.updateSuccess'))
+    dialogVisible.value = false
+    emit('success')
+  } finally {
+    formLoading.value = false
+  }
+}
+
+/** 重置表单 */
+const resetForm = () => {
+  formData.value = {
+    id: undefined,
+    email: undefined
+  }
+  formRef.value?.resetFields()
+}
+</script>

+ 95 - 0
src/views/menduner/system/enterprise/userbind/EditPassword.vue

@@ -0,0 +1,95 @@
+<template>
+  <Dialog title="企业登录密码修改" v-model="dialogVisible">
+    <el-form
+      ref="formRef"
+      :model="formData"
+      :rules="formRules"
+      label-width="100px"
+      v-loading="formLoading"
+      @submit.prevent
+    >
+      <el-form-item label="登录密码" prop="password">
+        <el-input v-model="formData.password" placeholder="请输入登录密码" type="password" show-password />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button @click="dialogVisible = false">取 消</el-button>
+    </template>
+  </Dialog>
+</template>
+
+<script setup lang="ts">
+import { EnterpriseUserBindApi } from '@/api/menduner/system/enterprise/userBind'
+
+defineOptions({ name: 'EnterpriseUserBindForm' })
+
+const { t } = useI18n() // 国际化
+const message = useMessage() // 消息弹窗
+
+const dialogVisible = ref(false) // 弹窗的是否展示
+const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+const formData = ref({
+  id: undefined,
+  password: undefined
+})
+
+const validatePassword = (rule: any, value: any, callback: any) => {
+  if (!value) {
+    callback(new Error('请输入登录密码'))
+  } else {
+    if (!/^.{8,}$/.test(value)) {
+      callback(new Error('请输入至少8位数的密码'))
+    }
+    callback()
+  }
+}
+
+const formRules = reactive({
+  password: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+const formRef = ref() // 表单 Ref
+
+/** 打开弹窗 */
+const open = async (id: number) => {
+  dialogVisible.value = true
+  resetForm()
+  // 修改时,设置数据
+  if (id) {
+    formLoading.value = true
+    try {
+      const data = await EnterpriseUserBindApi.getEnterpriseUserBind(id)
+      formData.value.id = data.id
+    } finally {
+      formLoading.value = false
+    }
+  }
+}
+defineExpose({ open }) // 提供 open 方法,用于打开弹窗
+
+/** 提交表单 */
+const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+const submitForm = async () => {
+  // 校验表单
+  await formRef.value.validate()
+  // 提交请求
+  formLoading.value = true
+  try {
+    await EnterpriseUserBindApi.updateEnterprisePassword(formData.value)
+    message.success(t('common.updateSuccess'))
+    dialogVisible.value = false
+    emit('success')
+  } finally {
+    formLoading.value = false
+  }
+}
+
+/** 重置表单 */
+const resetForm = () => {
+  formData.value = {
+    id: undefined,
+    password: undefined
+  }
+  formRef.value?.resetFields()
+}
+</script>

+ 89 - 45
src/views/menduner/system/enterprise/userbind/index.vue

@@ -6,9 +6,31 @@
       :model="queryParams"
       ref="queryFormRef"
       :inline="true"
-      label-width="68px"
+      label-width="90px"
     >
-      <el-form-item label="帐号状态" prop="status" v-hasPermi="['menduner:system:enterprise-user-bind:query']">
+      <el-form-item label="企业名称" prop="enterpriseId" v-hasPermi="['menduner:system:enterprise-user-bind:query']">
+        <el-select v-model="queryParams.enterpriseId" filterable clearable placeholder="请输入企业名称进行查找" class="!w-240px">
+          <el-option
+            v-for="item in enterpriseList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="姓名" prop="name" v-hasPermi="['menduner:system:enterprise-user-bind:query']">
+        <el-input v-model="queryParams.name" clearable placeholder="请输入姓名" class="!w-240px" />
+      </el-form-item>
+      <el-form-item label="联系电话" prop="phone" v-hasPermi="['menduner:system:enterprise-user-bind:query']">
+        <el-input v-model="queryParams.phone" clearable class="!w-240px" placeholder="请输入联系电话" />
+      </el-form-item>
+      <el-form-item label="邮箱" prop="email" v-hasPermi="['menduner:system:enterprise-user-bind:query']">
+        <el-input v-model="queryParams.email" clearable class="!w-240px" placeholder="请输入邮箱" />
+      </el-form-item>
+      <el-form-item label="最后登录IP" prop="loginIp" v-hasPermi="['menduner:system:enterprise-user-bind:query']">
+        <el-input v-model="queryParams.loginIp" clearable class="!w-240px" placeholder="请输入最后登录IP" />
+      </el-form-item>
+      <el-form-item label="帐号状态" prop="status" clearable v-hasPermi="['menduner:system:enterprise-user-bind:query']">
         <el-select
           v-model="queryParams.status"
           placeholder="请选择帐号状态"
@@ -37,14 +59,6 @@
       <el-form-item>
         <el-button v-hasPermi="['menduner:system:enterprise-user-bind:query']" @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
         <el-button v-hasPermi="['menduner:system:enterprise-user-bind:query']" @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
-        <el-button
-          type="primary"
-          plain
-          @click="openForm('create')"
-          v-hasPermi="['menduner:system:enterprise-user-bind:create']"
-        >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
-        </el-button>
         <el-button
           type="success"
           plain
@@ -68,12 +82,6 @@
           <el-image v-if="scope.row.avatar" style="width: 60px; height: 60px" :src="scope.row.avatar" fit="contain" />
         </template>
       </el-table-column>
-      <el-table-column label="性别" align="center" prop="sex">
-        <template #default="scope">
-          <dict-tag v-if="scope.row.sex !== '0'" :type="DICT_TYPE.MENDUNER_SEX" :value="scope.row.sex" />
-          <span v-else></span>
-        </template>
-      </el-table-column>
       <el-table-column label="联系电话" align="center" prop="phone" />
       <el-table-column label="邮箱" align="center" prop="email" />
       <el-table-column label="帐号状态" align="center" prop="status">
@@ -96,29 +104,43 @@
       />
       <el-table-column label="操作" align="center">
         <template #default="scope">
-          <!-- <el-button
+          <el-button
             link
             type="primary"
-            @click="openForm('update', scope.row.id)"
-            v-hasPermi="['menduner:system:enterprise-user-bind:update']"
+            @click="openDetail(scope.row.id, scope.row.enterpriseId, scope.row.userId)"
           >
-            编辑
+            详情
           </el-button>
           <el-button
             link
-            type="danger"
-            @click="handleDelete(scope.row.id)"
-            v-hasPermi="['menduner:system:enterprise-user-bind:delete']"
+            type="primary"
+            @click="openEditEmail(scope.row.id)"
           >
-            删除
-          </el-button> -->
+            修改登录邮箱
+          </el-button>
           <el-button
             link
             type="primary"
-            @click="openDetail(scope.row.id, scope.row.enterpriseId, scope.row.userId)"
+            @click="openEditPassword(scope.row.id)"
           >
-            详情
+            修改登录密码
+          </el-button>
+          <!-- <el-button
+            v-if="scope.row.status === '0'"
+            link
+            type="danger"
+            @click="handleActions(scope.row.id, 'disabled')"
+          >
+            禁用
           </el-button>
+          <el-button
+            v-if="scope.row.status === '1'"
+            link
+            type="success"
+            @click="handleActions(scope.row.id, 'enable')"
+          >
+            启用
+          </el-button> -->
         </template>
       </el-table-column>
     </el-table>
@@ -131,8 +153,11 @@
     />
   </ContentWrap>
 
-  <!-- 表单弹窗:添加/修改 -->
-  <EnterpriseUserBindForm ref="formRef" @success="getList" />
+  <!-- 修改用户登录邮箱 -->
+  <EditEmail ref="editEmailRef" @success="getList" />
+
+  <!-- 修改用户登录密码 -->
+  <EditPassword ref="editPasswordRef" @success="getList" />
 </template>
 
 <script setup lang="ts">
@@ -140,13 +165,15 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
 import { dateFormatter } from '@/utils/formatTime'
 import download from '@/utils/download'
 import { EnterpriseUserBindApi, EnterpriseUserBindVO } from '@/api/menduner/system/enterprise/userBind'
-import EnterpriseUserBindForm from './EnterpriseUserBindForm.vue'
+import EditEmail from './EditEmail.vue'
+import EditPassword from './EditPassword.vue'
 
 /** 门墩儿-企业登录用户 列表 */
 defineOptions({ name: 'EnterpriseUserBind' })
 
 const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
+const enterpriseList = ref([])
 
 const loading = ref(true) // 列表的加载中
 const list = ref<EnterpriseUserBindVO[]>([]) // 列表的数据
@@ -155,6 +182,11 @@ const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   status: undefined,
+  loginIp: undefined,
+  name: undefined,
+  phone: undefined,
+  email: undefined,
+  enterpriseId: undefined,
   createTime: ''
 })
 const queryFormRef = ref() // 搜索的表单
@@ -172,6 +204,15 @@ const getList = async () => {
   }
 }
 
+// 企业列表
+const getEnterpriseListData = async () => {
+  try {
+    const data = await EnterpriseUserBindApi.getEnterpriseList()
+    enterpriseList.value = data
+  } catch (err) {}
+}
+getEnterpriseListData()
+
 /** 搜索按钮操作 */
 const handleQuery = () => {
   queryParams.pageNo = 1
@@ -190,23 +231,16 @@ const resetQuery = () => {
   handleQuery()
 }
 
-/** 添加/修改操作 */
-const formRef = ref()
-const openForm = (type: string, id?: number) => {
-  formRef.value.open(type, id)
+/* 修改用户邮箱 */
+const editEmailRef = ref()
+const openEditEmail = (id: number) => {
+  editEmailRef.value.open(id)
 }
 
-/** 删除按钮操作 */
-const handleDelete = async (id: number) => {
-  try {
-    // 删除的二次确认
-    await message.delConfirm()
-    // 发起删除
-    await EnterpriseUserBindApi.deleteEnterpriseUserBind(id)
-    message.success(t('common.delSuccess'))
-    // 刷新列表
-    await getList()
-  } catch {}
+/* 修改用户登录密码 */
+const editPasswordRef = ref()
+const openEditPassword = (id: number) => {
+  editPasswordRef.value.open(id)
 }
 
 /** 导出按钮操作 */
@@ -224,6 +258,16 @@ const handleExport = async () => {
   }
 }
 
+// 禁用、启用账户
+// const handleActions = async (id: number, type: string) => {
+//   try {
+//     type === 'disabled' ? await EnterpriseUserBindApi.disabledEnterpriseAccount([id]) : await EnterpriseUserBindApi.enableEnterpriseAccount([id])
+//     message.success('操作成功')
+//     // 刷新列表
+//     await getList()
+//   } catch {}
+// }
+
 /** 初始化 **/
 onMounted(() => {
   getList()