21/8/1404

This commit is contained in:
2025-11-12 14:43:00 +03:30
parent 9f6b026852
commit 6d4c962a44
2 changed files with 143 additions and 139 deletions
+137 -137
View File
@@ -28,20 +28,20 @@ export function inputLenRules(len: number, title?: string) {
return temp
})*/
import {computed, ref} from 'vue'
import type {Rule} from 'ant-design-vue/es/form'
import {useWalletStore} from "@/store/walletStore";
import { computed, ref } from 'vue'
import type { Rule } from 'ant-design-vue/es/form'
import { useWalletStore } from '@/store/walletStore'
export const mobileValidation = (title?: string) => {
return {len: 11, message: `شماره همراه باید 11 رقم باشد`}
return { len: 11, message: `شماره همراه باید 11 رقم باشد` }
}
export const required = (title?: string) => {
if (title) {
return {required: true, message: `پر کردن ${title} الزامی است`}
} else {
return {required: true, message: `پر کردن مورد بالا الزامی است`}
}
if (title) {
return { required: true, message: `پر کردن ${title} الزامی است` }
} else {
return { required: true, message: `پر کردن مورد بالا الزامی است` }
}
}
// function checkCodeMeli(code)
// {
@@ -59,187 +59,187 @@ export const required = (title?: string) => {
//
// }
export const cardNumberValidation = (title?: string) => {
return { len: 16, message: `شماره کارت باید 16 رقم باشد` }
return { len: 16, message: `شماره کارت باید 16 رقم باشد` }
}
const isValidNationalCode = (code) => {
if (code.length !== 10 || /(\d)(\1){9}/.test(code)) return false
if (code.length !== 10 || /(\d)(\1){9}/.test(code)) return false
let sum = 0,
chars = code.split(''),
lastDigit,
remainder
let sum = 0,
chars = code.split(''),
lastDigit,
remainder
for (let i = 0; i < 9; i++) sum += +chars[i] * (10 - i)
for (let i = 0; i < 9; i++) sum += +chars[i] * (10 - i)
remainder = sum % 11
lastDigit = remainder < 2 ? remainder : 11 - remainder
remainder = sum % 11
lastDigit = remainder < 2 ? remainder : 11 - remainder
return +chars[9] === lastDigit
return +chars[9] === lastDigit
}
export const requireNationalCode = (code?: string) => {
return {required: true, validator: validateNCode, trigger: 'change'}
return { required: true, validator: validateNCode, trigger: 'change' }
}
async function validateNCode(rule: Rule, value: any) {
if (!value) {
return Promise.reject('وارد کردن کد ملی الزامیست')
}
if (isValidNationalCode(value)) return Promise.resolve()
else return Promise.reject('کد ملی وارد شده نامعتبر است')
if (!value) {
return Promise.reject('وارد کردن کد ملی الزامیست')
}
if (isValidNationalCode(value)) return Promise.resolve()
else return Promise.reject('کد ملی وارد شده نامعتبر است')
}
export function inputLenRules(len: number, title?: string) {
if (title) {
return [
{required: true, message: `پر کردن ${title} الزامی است`},
{len: len, message: `تعداد کاراکتر باید ${len} عدد باشد`}
]
} else {
return [
{required: true, message: 'پر کردن مورد بالا الزامی است'},
{len: len, message: `تعداد کاراکتر باید ${len} عدد باشد`}
]
}
if (title) {
return [
{ required: true, message: `پر کردن ${title} الزامی است` },
{ len: len, message: `تعداد کاراکتر باید ${len} عدد باشد` }
]
} else {
return [
{ required: true, message: 'پر کردن مورد بالا الزامی است' },
{ len: len, message: `تعداد کاراکتر باید ${len} عدد باشد` }
]
}
}
export const persianValidation = computed(() => {
return {
pattern: /^[A-Za-z]*$/,
message: 'فقط حروف انگلیسی مجاز است'
}
return {
pattern: /^[A-Za-z]*$/,
message: 'فقط حروف انگلیسی مجاز است'
}
})
export const isValidPersian = () => {
return {
pattern: /^[\u0600-\u06FF\s]+$/,
message: 'فقط حروف فارسی مجاز است'
}
};
return {
pattern: /^[\u0600-\u06FF\s]+$/,
message: 'فقط حروف فارسی مجاز است'
}
}
export const lengthValidation = (len: number) => {
return {len: len, message: `تعداد کاراکتر باید ${len} عدد باشد`}
return { len: len, message: `تعداد کاراکتر باید ${len} عدد باشد` }
}
export const justNumber = () => {
return {
required: true,
type: 'regexp',
pattern: /\d+/g,
message: 'لطفا اطلاعات را به صورت عدد و نقطه وارد کنید'
}
return {
required: true,
type: 'regexp',
pattern: /\d+/g,
message: 'لطفا اطلاعات را به صورت عدد و نقطه وارد کنید'
}
}
const walletCash = useWalletStore()
let priceP = 0
let methodP = 'cash'
let amountP =0
let isBuyP=true
let NumP=0
let amountP = 0
let isBuyP = true
let NumP = 0
const checkNumber = async (_rule: Rule, value: number) => {
if (!value) {
return Promise.reject('تعداد محصول را مشخص کنید');
if (!value) {
return Promise.reject('تعداد محصول را مشخص کنید')
}
if (value % 1 !== 0) {
return Promise.reject('استفاده از اعداد اعشاری مجاز نمی باشد')
}
if (isBuyP) {
if (!walletCash?.walletInfo?.cash && methodP == 'cash') {
return Promise.reject('موجودی کیف پول ناکافی است')
}
if (value % 1 !== 0) {
return Promise.reject('استفاده از اعداد اعشاری مجاز نمی باشد')
}
if (isBuyP){
if (!walletCash?.walletInfo?.cash && methodP == 'cash'){
return Promise.reject('موجودی کیف پول ناکافی است')
}
if (!walletCash?.walletInfo?.gold && methodP == 'gold'){
return Promise.reject('موجودی کیف طلا ناکافی است')
if (!walletCash?.walletInfo?.gold && methodP == 'gold') {
return Promise.reject('موجودی کیف طلا ناکافی است')
}
if (priceP * value > walletCash?.walletInfo?.cash && methodP == 'cash')
return Promise.reject('موجودی کیف پول ناکافی است')
return Promise.reject('موجودی کیف پول ناکافی است')
if (amountP * value > walletCash?.walletInfo?.gold && methodP == 'gold')
return Promise.reject('موجودی کیف طلا ناکافی است')
return Promise.reject('موجودی کیف طلا ناکافی است')
else
return Promise.resolve();
}else {
return Promise.resolve()
} else {
if (value > NumP)
return Promise.reject('موجودی محصول ناکافی است')
return Promise.reject('موجودی محصول ناکافی است')
else
return Promise.resolve();
}
return Promise.resolve()
}
}
export const justNumber2 = (price: number, method?: string , amount?:number ,isBuy?:boolean) => {
priceP = price
methodP = method
amountP=amount
isBuyP=isBuy
return {
required: true,
validator: checkNumber,
trigger: 'change'
}
export const justNumber2 = (price: number, method?: string, amount?: number, isBuy?: boolean) => {
priceP = price
methodP = method
amountP = amount
isBuyP = isBuy
return {
required: true,
validator: checkNumber,
trigger: 'change'
}
}
export const justNumber3 = (price: number, Num?:number ,isBuy?:boolean) => {
priceP = price
NumP=Num
isBuyP=isBuy
return {
required: true,
validator: checkNumber,
trigger: 'change'
}
export const justNumber3 = (price: number, Num?: number, isBuy?: boolean) => {
priceP = price
NumP = Num
isBuyP = isBuy
return {
required: true,
validator: checkNumber,
trigger: 'change'
}
}
export const ruleNumber = () => {
console.log('445455')
return {
required: true,
message: 'لطفا نحوه خرید',
trigger: 'change'
}
console.log('445455')
return {
required: true,
message: 'لطفا نحوه خرید',
trigger: 'change'
}
}
export const guideTypePassword = ref<{}>({
text: '',
color: ''
text: '',
color: ''
})
export const passwordRules = () => {
return [
{
validator: (rule: Rule, value: any) => {
if (value.length < 6) {
return Promise.reject('رمز عبور حداقل 6 رقم')
}
const lengthCriteria = value.length >= 8
const letterCriteria = /[A-Za-z]/.test(value)
const numberCriteria = /\d/.test(value)
const specialCharacterCriteria = /[@$!%*#?&]/.test(value)
const criteriaMet = [
lengthCriteria,
letterCriteria,
numberCriteria,
specialCharacterCriteria
].filter(Boolean).length
if (criteriaMet === 4) {
guideTypePassword.value = {
text: 'سطح : قوی',
color: 'text-green'
}
return Promise.resolve();
} else if (criteriaMet === 3) {
guideTypePassword.value = {
text: 'سطح : متوسط',
color: 'midLevel'
}
return Promise.resolve();
} else {
guideTypePassword.value = {
text: 'سطح : ضعیف',
color: 'week'
}
return Promise.resolve();
}
}
return [
{
validator: (rule: Rule, value: any) => {
if (value.length < 6) {
return Promise.reject('رمز عبور حداقل 6 رقم')
}
]
const lengthCriteria = value.length >= 8
const letterCriteria = /[A-Za-z]/.test(value)
const numberCriteria = /\d/.test(value)
const specialCharacterCriteria = /[@$!%*#?&]/.test(value)
const criteriaMet = [
lengthCriteria,
letterCriteria,
numberCriteria,
specialCharacterCriteria
].filter(Boolean).length
if (criteriaMet === 4) {
guideTypePassword.value = {
text: 'سطح : قوی',
color: 'text-green'
}
return Promise.resolve()
} else if (criteriaMet === 3) {
guideTypePassword.value = {
text: 'سطح : متوسط',
color: 'midLevel'
}
return Promise.resolve()
} else {
guideTypePassword.value = {
text: 'سطح : ضعیف',
color: 'week'
}
return Promise.resolve()
}
}
}
]
}
@@ -70,6 +70,7 @@
place-holder="تعداد"
size="large" type="number" inputmode="number" @onchange="calculateCash" />
</a-form-item>
<a-form-item v-else name="goldValue"
:rules="[justNumber3(props?.ProductItem?.sellPrice, productNum ,false)]">
<BasicInput v-model:value="form.goldValue" addon-before="تعداد" addon-bg-color="#521620"
@@ -444,7 +445,7 @@ const form = ref<Gold>({
goldCash: undefined,
goldValue: undefined,
percentWallet: undefined,
method: 'cash',
method: 'gold',
goldVazn:undefined
})
const allowedAsciiCodeFloat = [46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57]
@@ -660,7 +661,7 @@ async function ok() {
goldValue: undefined,
goldCash: undefined,
percentWallet: undefined,
method: 'cash'
method: 'gold'
}
// refreshTable()
await fundStore.getMyFund()
@@ -674,6 +675,9 @@ async function ok() {
}
}
watch(form.value.goldValue, () => {
console.log('form.goldValue & ', startValue.value);
});
</script>
<style lang="less">