added table of co-worker
This commit is contained in:
@@ -179,16 +179,10 @@ export const SYSTEM_SETTING_GROUPS: SettingGroupDef[] = [
|
||||
title: 'دسترسی مشتری به قابلیتها',
|
||||
icon: 'vuesax-linear:people',
|
||||
match: (k) =>
|
||||
/^(enable_conditional_order|enable_product_funds|has_page_price_trigger|has_page_notification|has_page_gift_card|enable_customer_level_profit|banner_enabled|jibit_enabled|customer_direct_sms|has_page_earn_money|tracking_systems_enabled|permision__enabled|show_to_users_chat)$/.test(
|
||||
/^(enable_conditional_order|enable_product_funds|has_page_price_trigger|has_page_notification|has_page_gift_card|enable_customer_level_profit|banner_enabled|jibit_enabled|customer_direct_sms|has_page_earn_money|group_sms|tracking_systems_enabled|permision__enabled|show_to_users_chat)$/.test(
|
||||
k
|
||||
)
|
||||
},
|
||||
{
|
||||
id: 'limits',
|
||||
title: 'محدودیتها',
|
||||
icon: 'vuesax-linear:lock',
|
||||
match: (k) => k === 'group_sms'
|
||||
},
|
||||
{
|
||||
id: 'support_chat',
|
||||
title: 'چت پشتیبانی',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<a-form :model="form" ref="formRef" autocomplete="off">
|
||||
<div class="space-y-3 md:grid md:grid-cols-4 md:gap-2 md:space-y-0">
|
||||
<a-form-item label="انتخاب گروه">
|
||||
<a-form-item label="انتخاب گروه" class="md:col-span-4">
|
||||
<BasicSelect
|
||||
v-model:value="selectedGroup"
|
||||
:items="groupItems"
|
||||
@@ -12,23 +12,6 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="شماره های تکی" name="numbers" class="md:col-span-3">
|
||||
<BasicSelect
|
||||
v-model:value="form.single"
|
||||
mode="tags"
|
||||
valueName="name"
|
||||
keyName="mobile"
|
||||
type="tel"
|
||||
noData="لطفا شماره موبایل را وارد کنید و سپس روی کیبورد خود کلید تایید را بزنید"
|
||||
class="w-full sms-selector"
|
||||
>
|
||||
<template #notFoundContent>
|
||||
<a-spin v-if="loading" size="small" />
|
||||
<div v-else class="w-full text-center font-bold">لطفا شماره را وارد کنید</div>
|
||||
</template>
|
||||
</BasicSelect>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="انتخاب کاربر" class="md:col-span-4 mb-0">
|
||||
<BasicInput
|
||||
place-holder="جستجو"
|
||||
@@ -42,13 +25,13 @@
|
||||
rowKey="mobile"
|
||||
:row-selection="{ selectedRowKeys: form.numbers, onChange: onSelectChange }"
|
||||
:columns="columns"
|
||||
:scroll="{ y: 280, x: 500 }"
|
||||
:scroll="{ y: '20vh', x: 500 }"
|
||||
:pagination="false"
|
||||
:data-source="groupNumbers"
|
||||
/>
|
||||
|
||||
<div
|
||||
class="md:hidden max-h-64 overflow-y-auto rounded-xl border border-gray-200 bg-gray-50 p-2 space-y-1"
|
||||
class="md:hidden max-h-48 overflow-y-auto rounded-xl border border-gray-200 bg-gray-50 p-2 space-y-1"
|
||||
>
|
||||
<div v-if="customersLoading" class="flex justify-center py-6">
|
||||
<a-spin size="small" />
|
||||
@@ -131,6 +114,7 @@ async function loadGroupNumbers(val: string[]) {
|
||||
if (!val.length) {
|
||||
groupNumbers.value = []
|
||||
baseGroupNumbers = []
|
||||
props.form.numbers = []
|
||||
return
|
||||
}
|
||||
|
||||
@@ -139,6 +123,9 @@ async function loadGroupNumbers(val: string[]) {
|
||||
const { customers } = await getCustomerList(val)
|
||||
groupNumbers.value = customers
|
||||
baseGroupNumbers = customers
|
||||
// فقط شمارههای همین لیست مشتری بمانند
|
||||
const allowed = new Set(customers.map((c) => c.mobile).filter(Boolean) as string[])
|
||||
props.form.numbers = (props.form.numbers ?? []).filter((n) => allowed.has(n))
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
} finally {
|
||||
@@ -147,7 +134,8 @@ async function loadGroupNumbers(val: string[]) {
|
||||
}
|
||||
|
||||
function onSelectChange(changableRowKeys: string[]) {
|
||||
props.form.numbers = changableRowKeys
|
||||
const allowed = new Set(baseGroupNumbers.map((c) => c.mobile).filter(Boolean) as string[])
|
||||
props.form.numbers = changableRowKeys.filter((n) => allowed.has(n))
|
||||
}
|
||||
|
||||
function isSelected(mobile?: string) {
|
||||
@@ -157,6 +145,7 @@ function isSelected(mobile?: string) {
|
||||
|
||||
function toggleCustomer(mobile: string | undefined, checked: boolean) {
|
||||
if (!mobile) return
|
||||
if (!baseGroupNumbers.some((c) => c.mobile === mobile)) return
|
||||
const numbers = new Set(props.form.numbers ?? [])
|
||||
if (checked) numbers.add(mobile)
|
||||
else numbers.delete(mobile)
|
||||
@@ -172,6 +161,7 @@ function resetAll() {
|
||||
selectedGroup.value = []
|
||||
groupNumbers.value = []
|
||||
baseGroupNumbers = []
|
||||
props.form.numbers = []
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
@@ -179,16 +169,3 @@ defineExpose({
|
||||
resetAll
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.sms-selector :deep(.ant-select-selector) {
|
||||
max-height: 5vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.sms-selector :deep(.ant-select-selector) {
|
||||
max-height: 12vh;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -28,9 +28,7 @@
|
||||
show-icon
|
||||
message="ارسال ۱۰تایی انجام میشود. تا پایان کار پنل را نبندید و صفحه را رفرش نکنید."
|
||||
/>
|
||||
<div class="sms-editor-scroll">
|
||||
<SmsEditorFormBody ref="smsEditorRef" :form="form" :group-items="groupItems" :loading="loading" />
|
||||
</div>
|
||||
<SmsEditorFormBody ref="smsEditorRef" :form="form" :group-items="groupItems" :loading="loading" />
|
||||
</BasicActionSheet>
|
||||
</div>
|
||||
</template>
|
||||
@@ -60,8 +58,7 @@ const sendStore = useGroupSmsSendStore()
|
||||
|
||||
const form = ref<Sms>({
|
||||
message: '',
|
||||
numbers: [],
|
||||
single: []
|
||||
numbers: []
|
||||
})
|
||||
|
||||
const addSMSVisible = ref<boolean>(false)
|
||||
@@ -115,8 +112,7 @@ async function add() {
|
||||
function resetData() {
|
||||
form.value = {
|
||||
message: '',
|
||||
numbers: [],
|
||||
single: []
|
||||
numbers: []
|
||||
}
|
||||
smsEditorRef.value?.resetAll?.()
|
||||
}
|
||||
@@ -132,9 +128,9 @@ function ok() {
|
||||
}
|
||||
|
||||
smsEditorRef.value?.validateFields?.().then(async () => {
|
||||
const numbers = uniqueNumbers([...(form.value.numbers ?? []), ...(form.value.single ?? [])])
|
||||
const numbers = uniqueNumbers([...(form.value.numbers ?? [])])
|
||||
if (!numbers.length) {
|
||||
message.warning('حداقل یک شماره انتخاب کنید')
|
||||
message.warning('حداقل یک مشتری از لیست انتخاب کنید')
|
||||
return
|
||||
}
|
||||
if (!form.value.message?.trim()) {
|
||||
@@ -149,11 +145,3 @@ function ok() {
|
||||
})
|
||||
}
|
||||
</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