Parcourir la source

邀请码可以批量根据指定手机号创建

liyanbo il y a 3 semaines
Parent
commit
e6d4dd3193
2 fichiers modifiés avec 31 ajouts et 11 suppressions
  1. 0 2
      src/types/auto-imports.d.ts
  2. 31 9
      src/views/system/invitecode/InviteCodeForm.vue

+ 0 - 2
src/types/auto-imports.d.ts

@@ -7,8 +7,6 @@ export {}
 declare global {
   const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE']
   const EffectScope: typeof import('vue')['EffectScope']
-  const ElMessage: typeof import('element-plus/es')['ElMessage']
-  const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
   const computed: typeof import('vue')['computed']
   const createApp: typeof import('vue')['createApp']
   const customRef: typeof import('vue')['customRef']

+ 31 - 9
src/views/system/invitecode/InviteCodeForm.vue

@@ -11,6 +11,7 @@
         <div class="flex items-center">
           <el-radio v-model="formData.type" label="single" border>单次</el-radio>
           <el-radio v-model="formData.type" label="batch" border class="ml-20px">批量</el-radio>
+          <el-radio v-model="formData.type" label="batchPhone" border class="ml-20px">批量手机号</el-radio>
         </div>
       </el-form-item>
       
@@ -34,7 +35,11 @@
           </el-input-number>
         </div>
       </el-form-item>
-      
+
+      <el-form-item v-else-if="formData.type === 'batchPhone'" label="批量前缀" prop="code">
+        <el-input v-model="formData.code" placeholder="请输入批量前缀" class="flex-1" />
+      </el-form-item>
+
       <el-form-item label="绑定角色" prop="roleIds">
         <el-select v-model="formData.roleIds" multiple placeholder="请选择绑定角色" >
           <el-option
@@ -45,7 +50,7 @@
           />
         </el-select>
       </el-form-item>
-      
+
       <el-form-item label="有效期(天)" prop="validTime">
         <el-input-number v-model="formData.validTime" :min="1" :max="365">
           <template #suffix>
@@ -54,10 +59,14 @@
         </el-input-number>
       </el-form-item>
 
-      <el-form-item label="指定手机号" prop="onlyPhone">
+      <el-form-item v-if="formData.type === 'single'" label="指定手机号" prop="onlyPhone">
         <el-input v-model="formData.onlyPhone" placeholder="请输入指定手机号" />
       </el-form-item>
-      
+
+      <el-form-item v-else-if="formData.type === 'batchPhone'" label="指定手机号" prop="onlyPhoneList">
+        <el-input v-model="formData.onlyPhoneList" type="textarea" placeholder="请输入多个手机号,每行一个" rows="4" />
+      </el-form-item>
+
       <el-form-item label="过期时间" prop="expireTime">
         <el-date-picker
           v-model="formData.expireTime"
@@ -67,7 +76,7 @@
           value-format="x"
         />
       </el-form-item>
-      
+
       <el-form-item label="状态" prop="status" v-if="formType === 'update'">
         <el-select v-model="formData.status" placeholder="请选择状态">
           <el-option
@@ -109,6 +118,7 @@ const formData = ref({
   roleIds: [],
   validTime: undefined,
   onlyPhone: undefined,
+  onlyPhoneList: undefined,
   expireTime: undefined,
   useUserId: undefined,
   useUserTenantId: undefined,
@@ -136,6 +146,9 @@ const formRules = computed(() => ({
     { type: 'number', min: 1, max: 50, message: '批量数量必须在1-50之间', trigger: 'blur' },
     { type: 'number', integer: true, message: '批量数量必须是整数', trigger: 'blur' }
   ],
+  onlyPhoneList: [
+    { required: formData.value.type === 'batchPhone', message: '请输入手机号', trigger: 'blur' }
+  ],
 }))
 const formRef = ref() // 表单 Ref
 const roleList = ref<RoleVO[]>([])
@@ -146,10 +159,10 @@ const open = async (type: string, id?: number) => {
   dialogTitle.value = t('action.' + type)
   formType.value = type
   resetForm()
-  
+
   // 获取角色列表
   await getRoleList()
-  
+
   // 修改时,设置数据
   if (id) {
     formLoading.value = true
@@ -192,15 +205,23 @@ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成
 const submitForm = async () => {
   // 校验表单
   await formRef.value.validate()
-  
+
   // 准备提交数据
   const submitData = { ...formData.value }
-  
+
   // 将角色ID数组转换为逗号分隔的字符串
   if (Array.isArray(submitData.roleIds)) {
     submitData.roleIds = submitData.roleIds.join(',')
   }
 
+  // 处理批量手机号类型
+  if (submitData.type === 'batchPhone') {
+    if (submitData.onlyPhoneList) {
+      // 将textarea中的手机号按换行符分割为数组
+      submitData.onlyPhoneList = submitData.onlyPhoneList.split('\n').filter(phone => phone.trim())
+    }
+  }
+
   // 提交请求
   formLoading.value = true
   try {
@@ -230,6 +251,7 @@ const resetForm = () => {
     roleIds: [],
     validTime: undefined,
     onlyPhone: undefined,
+    onlyPhoneList: undefined,
     expireTime: undefined,
     useUserId: undefined,
     useUserTenantId: undefined,