|
|
@@ -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,
|