added table
This commit is contained in:
@@ -15,29 +15,39 @@
|
||||
:showButton="true"
|
||||
:showCancel="true"
|
||||
:showOk="true"
|
||||
ok-text="ارسال"
|
||||
ok-text="شروع ارسال"
|
||||
cancel-text="انصراف"
|
||||
@ok="ok"
|
||||
@close="closeSmsSheet"
|
||||
@cancel="closeSmsSheet"
|
||||
>
|
||||
<div v-if="isMobile" class="mb-3 text-base font-700">ارسال پیامک</div>
|
||||
<SmsEditorFormBody ref="smsEditorRef" :form="form" :group-items="groupItems" :loading="loading" />
|
||||
<a-alert
|
||||
class="mb-3"
|
||||
type="warning"
|
||||
show-icon
|
||||
message="ارسال ۱۰تایی انجام میشود. تا پایان کار پنل را نبندید و صفحه را رفرش نکنید."
|
||||
/>
|
||||
<div class="sms-editor-scroll">
|
||||
<SmsEditorFormBody ref="smsEditorRef" :form="form" :group-items="groupItems" :loading="loading" />
|
||||
</div>
|
||||
</BasicActionSheet>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
import { ref, watch } from 'vue'
|
||||
import tbl from './components/table.vue'
|
||||
import type { FormInstance } from 'ant-design-vue'
|
||||
import BasicActionSheet from '@/components/BasicActionSheet.vue'
|
||||
import SmsEditorFormBody from './components/SmsEditorFormBody.vue'
|
||||
import { message } from 'ant-design-vue/es'
|
||||
import type { FunctionItem } from '@/model/Item'
|
||||
import { createSMS, getGroupsList } from '@/api/sms'
|
||||
import { getGroupsList } from '@/api/sms'
|
||||
import type { Sms } from '@/model/sms'
|
||||
import { isMobile } from '@core/utils/is'
|
||||
import { groupSmsEnabledSetting, initWalletSettingsFromApi } from '@/utils/config'
|
||||
import { useGroupSmsSendStore } from '@/store/groupSmsSendStore'
|
||||
|
||||
const loading = ref<boolean>(false)
|
||||
const groupItems = ref<FunctionItem[]>()
|
||||
@@ -46,6 +56,7 @@ const smsEditorRef = ref<{
|
||||
validateFields?: () => ReturnType<NonNullable<FormInstance['validateFields']>>
|
||||
resetAll?: () => void
|
||||
}>()
|
||||
const sendStore = useGroupSmsSendStore()
|
||||
|
||||
const form = ref<Sms>({
|
||||
message: '',
|
||||
@@ -55,7 +66,17 @@ const form = ref<Sms>({
|
||||
|
||||
const addSMSVisible = ref<boolean>(false)
|
||||
|
||||
onMounted(() => getGroups())
|
||||
onMounted(() => {
|
||||
void initWalletSettingsFromApi()
|
||||
getGroups()
|
||||
})
|
||||
|
||||
watch(
|
||||
() => sendStore.finished,
|
||||
(finished) => {
|
||||
if (finished) refreshTable()
|
||||
}
|
||||
)
|
||||
|
||||
async function getGroups() {
|
||||
try {
|
||||
@@ -73,10 +94,20 @@ function refreshTable() {
|
||||
}
|
||||
|
||||
function closeSmsSheet() {
|
||||
if (loading.value) return
|
||||
addSMSVisible.value = false
|
||||
}
|
||||
|
||||
async function add() {
|
||||
if (!groupSmsEnabledSetting.value) {
|
||||
message.warning('ارسال پیامک گروهی غیرفعال است')
|
||||
return
|
||||
}
|
||||
if (sendStore.active) {
|
||||
message.info('یک ارسال گروهی در حال انجام است')
|
||||
sendStore.expand()
|
||||
return
|
||||
}
|
||||
addSMSVisible.value = true
|
||||
resetData()
|
||||
}
|
||||
@@ -90,22 +121,39 @@ function resetData() {
|
||||
smsEditorRef.value?.resetAll?.()
|
||||
}
|
||||
|
||||
function uniqueNumbers(list: string[]): string[] {
|
||||
return Array.from(new Set(list.map((n) => String(n).trim()).filter(Boolean)))
|
||||
}
|
||||
|
||||
function ok() {
|
||||
if (sendStore.active) {
|
||||
message.warning('ارسال قبلی هنوز تمام نشده است')
|
||||
return
|
||||
}
|
||||
|
||||
smsEditorRef.value?.validateFields?.().then(async () => {
|
||||
try {
|
||||
loading.value = true
|
||||
if (!form.value.numbers) form.value.numbers = []
|
||||
form.value.numbers.push(...(form.value.single ?? []))
|
||||
await createSMS(form.value)
|
||||
resetData()
|
||||
addSMSVisible.value = false
|
||||
refreshTable()
|
||||
message.success('با موفقیت ارسال شد')
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
} finally {
|
||||
loading.value = false
|
||||
const numbers = uniqueNumbers([...(form.value.numbers ?? []), ...(form.value.single ?? [])])
|
||||
if (!numbers.length) {
|
||||
message.warning('حداقل یک شماره انتخاب کنید')
|
||||
return
|
||||
}
|
||||
if (!form.value.message?.trim()) {
|
||||
message.warning('متن پیامک خالی است')
|
||||
return
|
||||
}
|
||||
|
||||
const text = form.value.message
|
||||
addSMSVisible.value = false
|
||||
resetData()
|
||||
await sendStore.start(numbers, text)
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.sms-editor-scroll {
|
||||
max-height: min(62vh, 560px);
|
||||
overflow-y: auto;
|
||||
padding-inline-end: 4px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user