Files
asco_admin/src/views/register/Register.vue
T

1149 lines
62 KiB
Vue
Raw Normal View History

2021-01-30 22:35:05 +03:30
<template>
<div class="mx-5">
<div class="flex justify-center">
<img src="@/assets/images/logo.svg" width="150px" class="mt-10"/>
</div>
<vx-card class="mx-auto mt-10">
2021-03-14 09:40:47 +03:30
<a-steps :current="current" >
2021-01-30 22:35:05 +03:30
<a-step title="مرحله اول" />
<a-step title="مرحله دوم" />
2021-03-14 09:40:47 +03:30
<a-step title="مرحله سوم" />
2021-01-30 22:35:05 +03:30
</a-steps>
<div v-show="current == 0">
<p class="mt-6">
متقاضی گرامی ضمن سپاس از علاقه مندی شما برای همکاری با مجموعه آسکو بین الملل، لطفا اطلاعات شخصی و شغل مورد نظر خود را به دقت تکمیل فرمایید.
</p>
<p>
درخواستها مورد بررسی قرار گرفته و در صورت هماهنگی با فرصتهای شغلی شرکت، با شما تماس گرفته خواهد شد.
</p>
<p>
با تشکر و آرزوی موفقیت
</p>
</div>
<a-divider/>
<div class="steps-content">
<ASpin :spinning="loading">
2021-02-19 15:46:05 +03:30
<a-form :form="formFirst">
2021-03-14 09:40:47 +03:30
<!-- <a-form-item label="نام و نام خانوادگی">
&lt;!&ndash;<a-input autocomplete="off" v-decorator="['name2',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />&ndash;&gt;
&lt;!&ndash; <a-input v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" class="ant-input" placeholder="Basic usage" />&ndash;&gt;
&lt;!&ndash;<input type="text" v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" class="ant-input" >&ndash;&gt;
&lt;!&ndash; <vs-input v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />&ndash;&gt;
</a-form-item>-->
<div v-show="current==0" class="mt-4" >
<a-button type="primary" @click="addCity()">
2021-01-30 22:35:05 +03:30
افزودن ردیف
</a-button>
2021-03-14 09:40:47 +03:30
<a-card :bordered="true" class="mt-3" v-for="(item,index) in jobsList">
2021-01-30 22:35:05 +03:30
<div class="grid sm:grid-cols-1 md:grid-cols-2 md:gap-3 lg:grid-cols-2 lg:gap-3">
<div>
<a-form-item label="انتخاب شهر">
<a-select
2021-03-14 09:40:47 +03:30
:filter-option="filterOption"
show-search
v-decorator="[`jobs[${index}].city`,{rules: [{ required: true, message: 'انتخاب شهر الزامی است.' }]}]"
2021-01-30 22:35:05 +03:30
autocomplete="off"
2021-03-14 09:40:47 +03:30
@select="getJob(index)"
notFoundContent="اطلاعاتی یافت نشد"
placeholder="لطفا شهر را انتخاب کنید." >
2021-01-30 22:35:05 +03:30
<a-select-option v-for="item in city" :value="item.id">
{{ item.title }}
</a-select-option>
</a-select>
</a-form-item>
</div>
<a-form-item label="انتخاب شغل">
2021-03-14 09:40:47 +03:30
<a-select
:filter-option="filterOption"
show-search
notFoundContent="اطلاعاتی یافت نشد"
autocomplete="off" aria-placeholder="لطفا شغل خود را انتخاب کنید." v-decorator="[`jobs[${index}].job`,{rules: [{ required: true, message: 'انتخاب شغل الزامی است.' }]}]">
<a-select-option v-for="item in jobsList[index].jobs" :value="item.id">
2021-01-30 22:35:05 +03:30
{{ item.title }}
</a-select-option>
</a-select>
</a-form-item>
</div>
2021-03-14 09:40:47 +03:30
<a-button type="danger" @click="deleteCity(index)" v-if="index >0" >
حذف
</a-button>
2021-01-30 22:35:05 +03:30
</a-card>
</div>
</a-form>
<a-form :form="from">
<div v-show="current==1">
<a-alert message="توجه داشته باشید پس از ثبت اطلاعات، بازگشت عملیات امکان پذیر نخواهد بود." type="warning" />
<div class="grid sm:grid-cols-1 md:grid-cols-4 lg:grid-cols-4 gap-4 mt-5">
<a-form-item label="نام و نام خانوادگی">
2021-03-14 09:40:47 +03:30
<!-- <a-input autocomplete="off" v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />-->
<input autocomplete="off" type="text" v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'نام و نام خانوادگی را وارد نمایید' }]}]" class="ant-input" >
2021-01-30 22:35:05 +03:30
</a-form-item>
<a-form-item label="نام پدر">
2021-03-14 09:40:47 +03:30
<!--<a-input autocomplete="off" v-decorator="['father_name',{initialValue: null,rules: [{ required: true, message: 'نام پدر را وارد نمایید' }]}]" />-->
<input autocomplete="off" type="text" class="ant-input" v-decorator="['father_name',{initialValue: null,rules: [{ required: true, message: 'نام پدر را وارد نمایید' }]}]">
2021-01-30 22:35:05 +03:30
</a-form-item>
<div>
2021-03-14 09:40:47 +03:30
<a-form-item label="تاریخ تولد" :required="birth_day ? false:true" :validateStatus=" birth_day ? '' : 'error'" :help=" birth_day ? '':'تاریخ تولد را وارد نمایید'" >
2021-01-30 22:35:05 +03:30
<!-- birth_date-->
2021-03-14 09:40:47 +03:30
<input
class="ant-input"
readonly="true"
v-model="birth_day"
id="birth_day"
autocomplete="off"
2021-01-30 22:35:05 +03:30
/>
2021-03-14 09:40:47 +03:30
<!-- v-decorator="['birthdate',{initialValue: null,rules: [{ required: true, message: 'تاریخ تولد را وارد نمایید' }]}]"-->
2021-01-30 22:35:05 +03:30
</a-form-item>
<date-picker
:auto-submit="true"
2021-03-14 09:40:47 +03:30
color="#1da57a"
2021-01-30 22:35:05 +03:30
v-model="birth_day"
element="birth_day"
/>
</div>
<a-form-item label="کد ملی">
2021-03-14 09:40:47 +03:30
<!--<a-input autocomplete="off" v-decorator="['ncode',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />-->
<input autocomplete="off" type="text" v-decorator="['ncode',{initialValue: null,rules: [{ required: true, message: 'کد ملی را وارد نمایید' },{ min : 10, message: 'کد ملی 10 رقمی می باشد' },{ max : 10, message: 'کد ملی 10 رقمی می باشد' }]}]" class="ant-input" >
2021-01-30 22:35:05 +03:30
</a-form-item>
</div>
<div class="grid lg:grid-cols-4 md:grid-cols-4 sm:grid-cols-1 gap-4">
2021-01-30 22:35:05 +03:30
<a-form-item label="جنسیت">
<a-radio-group style="direction: ltr" v-decorator="['gender',{ initialValue: '1' }]" button-style="solid">
<a-radio-button value="2">
زن
</a-radio-button>
<a-radio-button value="1">
مرد
</a-radio-button>
</a-radio-group>
</a-form-item>
<a-form-item label="وضعیت تاهل">
<a-radio-group style="direction: ltr" v-decorator="['married',{initialValue: '1'}]" button-style="solid">
<a-radio-button value="1">
مجرد
</a-radio-button>
<a-radio-button value="2">
متاهل
</a-radio-button>
</a-radio-group>
</a-form-item>
<a-form-item label="شماره حساب بانک پاسارگاد">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['pasargad_bank_number',{initialValue: null}]" />
</a-form-item>
<a-form-item label="حقوق درخواستی">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['requested_salary',{initialValue: null,rules: [{ required: true, message: 'حقوق درخواستی را وارد نمایید' }]}]" />
</a-form-item>
2021-12-30 16:13:42 +03:30
<a-form-item label="تعداد فرزند">
<input class="ant-input" v-decorator="['count_child',{rules: [{ required: true, message: 'لطفا مقدار را وارد کنید' },{ pattern: /^[0-9]+$/,type: 'string', message: 'فقط عدد مجاز است' }] }]"/>
</a-form-item>
<a-form-item label="وضعیت نظام وظیفه">
<a-select style="width: 100%" v-decorator="['military_sts',{rules: [{ required: true, message: 'لطفا مقدار را وارد کنید' }] }]">
<a-select-option v-for="(item,index) in {1:'معاف',2:'مشمول',3:'پایان خدمت',}" :value="index">
{{ item }}
</a-select-option>
</a-select>
</a-form-item>
2021-01-30 22:35:05 +03:30
</div>
<a-card :bordered="true" >
<a-alert message="توضیحات سریال شناسنامه" type="info" />
<div class="grid sm:grid-cols-1 md:grid-cols-4 lg:grid-cols-4 gap-4">
<a-form-item label="شماره شناسنامه">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['iden_code',{initialValue: null,rules: [{ required: true, message: 'شماره شناسنامه را وارد نمایید' }]}]" />
2021-01-30 22:35:05 +03:30
</a-form-item>
<a-form-item label="سریال شناسنامه">
<a-input-group compact style="direction: ltr">
<a-select style="width: 23%" v-decorator="['iden_no_left',{initialValue: null}]">
2021-01-30 22:35:05 +03:30
<a-select-option style="width: 100% !important;" v-for="item in alphabet" :value="item">
{{ item }}
</a-select-option>
</a-select>
2021-03-14 09:40:47 +03:30
<input class="ant-input" v-decorator="['iden_no_right',{initialValue: null}]" autocomplete="off" style="width: 77%;direction: rtl" />
2021-01-30 22:35:05 +03:30
</a-input-group>
</a-form-item>
<!-- <a-input-group compact>
<a-select default-value="Option1">
<a-select-option value="Option1">
Option1
</a-select-option>
<a-select-option value="Option2">
Option2
</a-select-option>
</a-select>
<a-input style="width: 50%" default-value="input content" />
</a-input-group>-->
2021-01-30 22:35:05 +03:30
<a-form-item label="محل صدور">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['iden_where',{initialValue: null,rules: [{ required: true, message: 'محل صدور را وارد نمایید' }]}]" />
2021-01-30 22:35:05 +03:30
</a-form-item>
<a-form-item label="محل تولد">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['birth_where',{initialValue: null,rules: [{ required: true, message: 'محل تولد را وارد نمایید' }]}]" />
2021-01-30 22:35:05 +03:30
</a-form-item>
</div>
</a-card>
<br/>
<a-card title="اطلاعات سکونت" :bordered="true" >
<a-form-item label="وضعیت مسکن">
2021-03-14 09:40:47 +03:30
<a-radio-group style="direction: ltr" v-decorator="['house_sts',{initialValue: '1'}]" button-style="solid">
2021-01-30 22:35:05 +03:30
<a-radio-button value="2">
مستاجر
</a-radio-button>
<a-radio-button value="1">
مالک
</a-radio-button>
</a-radio-group>
</a-form-item>
<a-form-item label="آدرس">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['address',{initialValue: null,rules: [{ required: true, message: 'آدرس را وارد نمایید' }]}]" />
2021-01-30 22:35:05 +03:30
</a-form-item>
<div class="md:flex">
<div class="md:w-1/4 md:pl-4">
<a-row >
<a-form-item label="ایمیل">
2021-03-14 09:40:47 +03:30
<input class="ant-input" style="direction: rtl !important;" v-decorator="['email',{initialValue: null,rules: [{ required: true, message: 'ایمیل را وارد نمایید' }]}]">
2021-01-30 22:35:05 +03:30
<!-- <feather-icon style="direction: ltr !important;" icon="MailIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
2021-03-14 09:40:47 +03:30
<!-- </a-input>-->
2021-01-30 22:35:05 +03:30
</a-form-item>
</a-row>
</div>
<div class="md:w-1/4 md:pl-4">
<a-row >
<a-form-item label="موبایل">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['mobile',{initialValue: null,rules: [{ required: true, message: 'شماره موبایل را وارد نمایید' }]}]" >
2021-01-30 22:35:05 +03:30
<!--<feather-icon style="direction: ltr !important;" icon="SmartPhoneIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
2021-03-14 09:40:47 +03:30
<!-- </a-input>-->
2021-01-30 22:35:05 +03:30
</a-form-item>
</a-row>
</div>
<div class="md:w-1/4 md:pl-4">
<a-row >
<a-form-item label="تلفن ثابت">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['phone',{initialValue: null,rules: [{ required: true, message: 'تلفن ثابت را وارد نمایید' }]}]" >
2021-01-30 22:35:05 +03:30
<!--<feather-icon style="direction: ltr !important;" icon="PhoneIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
2021-03-14 09:40:47 +03:30
<!-- </a-input>-->
2021-01-30 22:35:05 +03:30
</a-form-item>
</a-row>
</div>
</div>
<a-divider/>
<div class="md:flex">
<div class="md:w-1/4 md:pl-4">
<a-row >
<a-form-item label="تلفن ضروری">
2021-03-14 09:40:47 +03:30
<input class="ant-input" style="direction: rtl !important;" v-decorator="['phone_emergency',{initialValue: null,rules: [{ required: true, message: 'تلفن ضروری را وارد نمایید' }]}]">
2021-01-30 22:35:05 +03:30
<!-- <feather-icon style="direction: ltr !important;" icon="MailIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
2021-03-14 09:40:47 +03:30
<!-- </a-input>-->
2021-01-30 22:35:05 +03:30
</a-form-item>
</a-row>
</div>
<div class="md:w-1/4 md:pl-4">
<a-row >
2021-02-19 15:46:05 +03:30
<a-form-item label="نام فرد">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['phone_emergency_name',{initialValue: null}]" >
2021-01-30 22:35:05 +03:30
<!--<feather-icon style="direction: ltr !important;" icon="SmartPhoneIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
2021-03-14 09:40:47 +03:30
<!-- </a-input>-->
2021-01-30 22:35:05 +03:30
</a-form-item>
</a-row>
</div>
<div class="md:w-1/4 md:pl-4">
<a-row >
<a-form-item label="نسبت">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['phone_emergency_related',{initialValue: null}]" >
2021-01-30 22:35:05 +03:30
<!--<feather-icon style="direction: ltr !important;" icon="PhoneIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
2021-03-14 09:40:47 +03:30
<!-- </a-input>-->
2021-01-30 22:35:05 +03:30
</a-form-item>
</a-row>
</div>
</div>
</a-card>
<a-divider>دیگر اطلاعات</a-divider>
<a-card title="سابقه بیمه" :bordered="true" >
<a-form-item label="سابقه بیمه">
2021-03-14 09:40:47 +03:30
<a-radio-group style="direction: ltr" v-decorator="['has_insurance',{initialValue:-1}]" button-style="solid" @change="number_insurance">
<a-radio-button :value="1">
2021-01-30 22:35:05 +03:30
دارم
</a-radio-button>
2021-03-14 09:40:47 +03:30
<a-radio-button :value="-1">
2021-01-30 22:35:05 +03:30
ندارم
</a-radio-button>
</a-radio-group>
</a-form-item>
2021-03-14 09:40:47 +03:30
<a-form-item label="شماره بیمه" v-if="has_instructor == 1 ">
<input class="ant-input" autocomplete="off" style="width: 40%" v-decorator="['insurance_no',{initialValue: null,rules: [{ required: false, message: 'شماره بیمه را وارد نمایید' }]}]" />
2021-01-30 22:35:05 +03:30
</a-form-item>
</a-card>
<br/>
2021-02-19 15:46:05 +03:30
<a-card title="اطلاعات خانوادگی" :bordered="true" >
2021-03-14 09:40:47 +03:30
<a-list class="mb-5" v-if="family.length > 0" :locale="{emptyText:'اطلاعاتی برای نمایش وجود ندارد.'}" bordered item-layout="horizontal" >
2021-02-19 15:46:05 +03:30
<a-list-item class="grid grid-cols-4" v-for="(item,index) in family" :key="index" >
<div>
<div style="direction: ltr" > نام :{{ item.name }}</div>
<div style="direction: rtl">نسبت : {{ item.relation }}</div>
</div>
<div>
<div style="direction: ltr" v-if="item.edu"> مقطع :{{ item.edu.title }}</div>
<div style="direction: rtl">رشته تحصیلی : {{ item.edu_title }}</div>
</div>
<div>
<div style="direction: rtl">شغل : {{ item.job }}</div>
</div>
<div>
<a-popconfirm
placement="right"
title="آیا می خواهید حذف کنید؟"
ok-text="بله"
cancel-text="خیر"
@confirm="removeFamily(item)"
>
<a-button type="danger" class="mr-3">حذف</a-button>
</a-popconfirm>
<a-button class="mr-3" @click="openModalFamilyModeEDit(item)">
مشاهده و ویرایش
</a-button>
</div>
</a-list-item>
</a-list>
<a-button type="dashed" icon="plus" @click="openModalFamily">
افزودن اطلاعات خانوادگی
</a-button>
</a-card>
<br/>
2021-01-30 22:35:05 +03:30
<a-card title="سوابق تحصیلی" :bordered="true" >
2021-03-14 09:40:47 +03:30
<a-list class="mb-5" v-if="edu.length > 0" :locale="{emptyText:'اطلاعاتی برای نمایش وجود ندارد.'}" bordered item-layout="horizontal" >
2021-01-30 22:35:05 +03:30
<a-list-item class="grid grid-cols-4" v-for="(item,index) in edu" :key="index" >
<div>
<div style="direction: ltr" v-if="item.grade"> مقطع :{{ item.grade.title }}</div>
<div style="direction: rtl">دانشگاه : {{ item.university }}</div>
</div>
<div>
<div style="direction: rtl">سال شروع : {{ item.start }}</div>
<div style="direction: rtl">سال خاتمه : {{ item.end }}</div>
</div>
<div>
<div style="direction: rtl">رشته تحصیلی : {{ item.major }}</div>
<div style="direction: rtl">گرایش تحصیلی : {{ item.orientation }}</div>
</div>
<div>
<a-popconfirm
placement="right"
title="آیا می خواهید حذف کنید؟"
ok-text="بله"
cancel-text="خیر"
@confirm="removeEdu(item)"
>
<a-button type="danger" class="mr-3">حذف</a-button>
</a-popconfirm>
<a-button class="mr-3" @click="openModalEduModeEDit(item)">
مشاهده و ویرایش
</a-button>
</div>
</a-list-item>
</a-list>
<a-button type="dashed" icon="plus" @click="openModalEdu">
افزودن سابقه تحصیلی
</a-button>
</a-card>
<br/>
<a-card title="سوابق آموزشی" :bordered="true" >
2021-03-14 09:40:47 +03:30
<a-list class="mb-5" v-if="educational.length > 0" :locale="{emptyText:'اطلاعاتی برای نمایش وجود ندارد.'}" bordered item-layout="horizontal" >
2021-01-30 22:35:05 +03:30
<a-list-item class="grid grid-cols-3" v-for="(item,index) in educational" :key="index" >
<div>
<div style="direction: rtl"> مرکز برگزار کننده : {{ item.university }}</div>
<div style="direction: rtl">عنوان دوره : {{ item.major }}</div>
</div>
<div>
<div style="direction: rtl">سال : {{ item.start }}</div>
<div style="direction: rtl">
امکان ارائه گواهینامه دارم:
2021-03-14 09:40:47 +03:30
<feather-icon icon="CheckIcon" v-if="item.has_certificate" svgClasses="w-5 h-5 text-success"/>
2021-01-30 22:35:05 +03:30
<feather-icon icon="XIcon" v-else svgClasses="w-5 h-5 text-danger"/>
</div>
</div>
<div>
<a-popconfirm
placement="right"
title="آیا می خواهید حذف کنید؟"
ok-text="بله"
cancel-text="خیر"
@confirm="removeEducational(item)"
>
<a-button type="danger" class="mr-3">حذف</a-button>
</a-popconfirm>
<a-button class="mr-3" @click="openModalEducationalEDit(item)">
مشاهده و ویرایش
</a-button>
</div>
</a-list-item>
</a-list>
<a-button type="dashed" icon="plus" @click="openModalEducational">
افزودن سابقه آموزشی
</a-button>
</a-card>
<br/>
<a-card title="سوابق کاری" :bordered="true" >
2021-03-14 09:40:47 +03:30
<a-list class="mb-5" v-if="work.length > 0" :locale="{emptyText:'اطلاعاتی برای نمایش وجود ندارد.'}" bordered item-layout="horizontal" >
2021-01-30 22:35:05 +03:30
<a-list-item class="grid grid-cols-4" v-for="(item,index) in work" :key="index" >
<div>
<div style="direction: rtl"> نام سازمان : {{ item.university }}</div>
<div style="direction: rtl">عنوان شغل : {{ item.major }}</div>
</div>
<div>
<div style="direction: rtl">سال شروع : {{ item.start }}</div>
<div style="direction: rtl">سال خاتمه : {{ item.end }}</div>
</div>
<div>
<div style="direction: rtl">دلیل خاتمه : {{ item.note }}</div>
<div style="direction: rtl">
تاکنون:
<feather-icon icon="CheckIcon" v-if="item.end_now" svgClasses="w-5 h-5 text-success"/>
<feather-icon icon="XIcon" v-else svgClasses="w-5 h-5 text-danger"/>
</div>
</div>
<div>
<a-popconfirm
placement="right"
title="آیا می خواهید حذف کنید؟"
ok-text="بله"
cancel-text="خیر"
@confirm="removeWork(item)"
>
<a-button type="danger" class="mr-3">حذف</a-button>
</a-popconfirm>
<a-button class="mr-3" @click="openModalWorkEDit(item)">
مشاهده و ویرایش
</a-button>
</div>
</a-list-item>
</a-list>
<a-button type="dashed" icon="plus" @click="openModalWork">
افزودن سابقه کاری
</a-button>
2021-12-30 16:13:42 +03:30
</a-card>
<br/>
<a-card title="سوابق شخصی" :bordered="true" >
<div class="dropbox">
<a-upload-dragger
:multiple="false"
action="http://hr.asco-intl.com:2020/back/public/api/register/upload"
:file-list="fileList"
:default-file-list="fileList"
@change="changeDocumentUpload"
:remove="handleRemoveDocument"
>
<p class="ant-upload-drag-icon">
<a-icon type="inbox" />
</p>
<p class="ant-upload-text">
فایل را درگ کنید یا اینکه کاوش کنید.
</p>
<p class="ant-upload-hint">
فایلی که بارگذاری می کنید باید زیر ۵ مگابایت باشد.
</p>
</a-upload-dragger>
</div>
2021-01-30 22:35:05 +03:30
</a-card>
<br/>
<a-form-item>
2021-03-14 09:40:47 +03:30
<a-checkbox v-decorator="['commitment',{valuePropName: 'checked',initialValue: true,rules: [{ required: true, message: 'نام را وارد نمایید' }]}]">
2021-01-30 22:35:05 +03:30
با آگاهی از قوانین و مقررات و صحت اطلاعات تایید میکنم.
</a-checkbox>
</a-form-item>
<a-alert type="warning">
<div slot="message">
<a-button @click="openAccept" class="font-bold" type="link" style="color: #0091ae">
مشاهده قوانین و مقررات
</a-button>
</div>
</a-alert>
</div>
<div v-show="current==2">
<a-result
status="success"
title="اطلاعات با موفقیت ثبت شد"
2021-03-14 09:40:47 +03:30
sub-title="">
2021-01-30 22:35:05 +03:30
<template #extra>
2021-02-16 15:43:07 +03:30
<a-button @click="LoginUser">
2021-01-30 22:35:05 +03:30
اتمام
</a-button>
</template>
</a-result>
</div>
</a-form>
</ASpin>
</div>
2021-02-19 15:46:05 +03:30
<a-modal :visible="visibleFamily" title="اطلاعات خانوادگی" @ok="createFamily" @cancel="cancelFamily" ok-text="ایجاد" cancel-text="انصراف">
<a-form :form="formFamily">
<a-form-item label="نام">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['name',{rules: [{ required: true, message: 'نام را وارد نمایید' }]}]"/>
2021-02-19 15:46:05 +03:30
</a-form-item>
<a-form-item label="نسبت">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['relation',{rules: [{ required: true, message: 'نسب را وارد نمایید' }]}]"/>
2021-02-19 15:46:05 +03:30
</a-form-item>
<a-form-item label="مقطع">
<a-select
class="mt-3"
style="width: 100%;direction: rtl !important;"
2021-03-14 09:40:47 +03:30
v-decorator="['level',{rules: [{ required: false, message: 'مقطع را وارد نمایید' }]}]"
2021-02-19 15:46:05 +03:30
@change="changeGrade"
allowClear
>
<a-select-option v-for="item in grade" :value="item.level">
{{ item.title }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="رشته تحصیلی">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['edu_title',{rules: [{ required: false, message: 'رشته تحصیلی را وارد نمایید' }]}]"/>
2021-02-19 15:46:05 +03:30
</a-form-item>
<a-form-item label="شغل">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['job',{rules: [{ required: false, message: 'شغل را وارد نمایید' }]}]"/>
2021-02-19 15:46:05 +03:30
</a-form-item>
<!-- <a-form-item label="مقطع">
<a-select
class="mt-3"
style="width: 100%;direction: rtl !important;"
v-decorator="['level',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"
@change="changeGrade"
allowClear
>
<a-select-option v-for="item in grade" :value="item.level">
{{ item.title }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="دانشگاه">
<a-input autocomplete="off" v-decorator="['university',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
</a-form-item>
<a-form-item label="رشته تحصیلی">
<a-input autocomplete="off" v-decorator="['major',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
</a-form-item>
<a-form-item label="گرایش تحصیلی">
<a-input autocomplete="off" v-decorator="['orientation',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
</a-form-item>
<div class="md:flex">
<div class="md:w-1/2">
<a-form-item label="سال شروع">
<a-input-number autocomplete="off" :min="1350" :max="1401" v-decorator="['start',{rules: [{ required: true, message: 'لطفا مقدار سال شروع را به درستی بین 1350 تا 1401 وارد کنید.' }]}]"/>
</a-form-item>
</div>
<div class="md:w-1/2">
<a-form-item label="سال خاتمه">
<a-input-number id="end" ref="end" autocomplete="off" :disabled="is_check" :min="1350" :max="1401" v-decorator="['end',{rules: [{ required: is_check ? false : true, message: 'لطفا مقدار سال خاتمه را به درستی بین 1350 تا 1401 وارد کنید.' }]}]"/>
</a-form-item>
</div>
<div class="md:w-1/3">
<a-form-item label="تاکنون">
<a-checkbox v-decorator="['end_now',{initialValue:false,valuePropName: 'checked'}]" @change="isChecked"/>
</a-form-item>
</div>
</div>-->
</a-form>
</a-modal>
2021-03-14 09:40:47 +03:30
<a-modal :forceRender="true" :visible="visibleEdu" title="افزودن سابقه تحصیلی" @ok="createEdu" @cancel="cancelEdu" ok-text="ایجاد" cancel-text="انصراف">
2021-01-30 22:35:05 +03:30
<a-form :form="formEdu">
<a-form-item label="مقطع">
<a-select
class="mt-3"
style="width: 100%;direction: rtl !important;"
2021-03-14 09:40:47 +03:30
v-decorator="['level',{rules: [{ required: true, message: 'مقطع را وارد نمایید ' }]}]"
2021-01-30 22:35:05 +03:30
@change="changeGrade"
allowClear
>
<a-select-option v-for="item in grade" :value="item.level">
{{ item.title }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item label="دانشگاه">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['university',{rules: [{ required: true, message: 'دانشگاه را وارد نمایید' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
<a-form-item label="رشته تحصیلی">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['major',{rules: [{ required: true, message: 'رشته تحصیلی را وارد نمایید' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
<a-form-item label="گرایش تحصیلی">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['orientation',{rules: [{ required: false, message: 'گرایش تحصیلی را وارد نمایید' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
<div class="md:flex">
<div class="md:w-1/2">
<a-form-item label="سال شروع">
<a-input-number autocomplete="off" :min="1350" :max="1401" v-decorator="['start',{rules: [{ required: true, message: 'لطفا مقدار سال شروع را به درستی بین 1350 تا 1401 وارد کنید.' }]}]"/>
2021-03-14 09:40:47 +03:30
<!--<a-input-number v-decorator="['result_1.score',{initialValue: 0}]" :min="0" :max="20" />-->
2021-01-30 22:35:05 +03:30
</a-form-item>
</div>
<div class="md:w-1/2">
<a-form-item label="سال خاتمه">
2021-03-14 09:40:47 +03:30
<a-input-number type="number" class="ant-input-number" id="end" ref="end" autocomplete="off" :disabled="is_check" :min="1350" :max="1401" v-decorator="['end',{rules: [{ required: is_check ? false : true, message: 'لطفا مقدار سال خاتمه را به درستی بین 1350 تا 1401 وارد کنید.' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
</div>
<div class="md:w-1/3">
<a-form-item label="تاکنون">
<a-checkbox v-decorator="['end_now',{initialValue:false,valuePropName: 'checked'}]" @change="isChecked"/>
</a-form-item>
</div>
</div>
</a-form>
</a-modal>
2021-02-19 15:46:05 +03:30
2021-01-30 22:35:05 +03:30
<a-modal :visible="visibleEducational" title="افزودن سابقه آموزشی" @ok="createEducational" @cancel="cancelEducational" ok-text="ایجاد" cancel-text="انصراف">
<a-form :form="formEducational">
<a-form-item label="مرکز برگزار کننده">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['university',{rules: [{ required: true, message: 'مرکز برگزار کننده را وارد نمایید' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
<a-form-item label="عنوان دوره">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['major',{rules: [{ required: true, message: 'عنوان دوره را وارد نمایید' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
<div class="md:flex">
<div class="md:w-1/2">
<a-form-item label="سال">
<a-input-number autocomplete="off" :min="1350" :max="1401" v-decorator="['start',{rules: [{ required: true, message: 'لطفا مقدار سال شروع را به درستی بین 1350 تا 1401 وارد کنید.' }]}]"/>
</a-form-item>
</div>
<div class="md:w-1/3">
<a-form-item label="امکان ارائه گواهینامه دارم">
2021-03-14 09:40:47 +03:30
<a-checkbox v-decorator="['has_certificate',{initialValue:false,valuePropName: 'checked'}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
</div>
</div>
</a-form>
</a-modal>
<a-modal :visible="visibleWork" title="افزودن سابقه کاری" @ok="createWork" @cancel="cancelWork" ok-text="ایجاد" cancel-text="انصراف">
<a-form :form="formWork">
<a-form-item label="نام سازمان">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['university',{rules: [{ required: true, message: 'نام سازمان را وارد نمایید ' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
<a-form-item label="عنوان شغل">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['major',{rules: [{ required: true, message: 'عنوان شغل را وارد نمایید' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
<a-form-item label="دلیل خاتمه">
2021-03-14 09:40:47 +03:30
<input class="ant-input" autocomplete="off" v-decorator="['note',{rules: [{ required:is_work_check ? false : true, message: 'دلیل خاتمه را وارد نمایید' }]}]"/>
2021-01-30 22:35:05 +03:30
</a-form-item>
<div class="md:flex">
<div class="md:w-1/2">
<a-form-item label="سال شروع">
<a-input-number autocomplete="off" :min="1350" :max="1401" v-decorator="['start',{rules: [{ required: true, message: 'لطفا مقدار سال شروع را به درستی بین 1350 تا 1401 وارد کنید.' }]}]"/>
</a-form-item>
</div>
<div class="md:w-1/2">
<a-form-item label="سال خاتمه">
<a-input-number :disabled="is_work_check" autocomplete="off" :min="1350" :max="1401" v-decorator="['end',{rules: [{ required: is_work_check ? false : true, message: 'لطفا مقدار سال خاتمه را به درستی بین 1350 تا 1401 وارد کنید.' }]}]"/>
</a-form-item>
</div>
<div class="md:w-1/3">
<a-form-item label="تاکنون">
<a-checkbox v-decorator="['end_now',{initialValue:false,valuePropName: 'checked'}]" @change="isCheckedWork"/>
</a-form-item>
</div>
</div>
</a-form>
</a-modal>
2021-03-14 09:40:47 +03:30
<a-modal :visible="visibleAccept" title="شرایط و مقررات" @ok="visibleAccept = false" @cancel="visibleAccept = false" ok-text="تایید" cancel-text="انصراف">
2021-02-16 15:43:07 +03:30
اینجانب {{ fullName }} در تاریخ {{ date }} فرم بالا را تکمیل نموده و صحت کلیه اطلاعات تکمیل شده را تأیید می نمایم.
2021-01-30 22:35:05 +03:30
</a-modal>
<div class="mt-5">
<a-button v-if="current < 2" type="primary" @click="handleSubmit">
مرحله بعدی
</a-button>
</div>
</vx-card>
</div>
</template>
<script>
import axios from '@/axios'
import VuePersianDatetimePicker from 'vue-persian-datetime-picker';
export default {
name: "Register",
components:{
datePicker: VuePersianDatetimePicker
},
data(){
return{
2021-12-30 16:13:42 +03:30
fileList: [],
file_id:undefined,
2021-01-30 22:35:05 +03:30
current: 0,
from: this.$form.createForm(this, {name: 'coordinated'}),
formEdu: this.$form.createForm(this, {name: 'coordinated'}),
2021-02-19 15:46:05 +03:30
formFamily: this.$form.createForm(this, {name: 'coordinated'}),
2021-01-30 22:35:05 +03:30
formEducational: this.$form.createForm(this, {name: 'coordinated'}),
formWork: this.$form.createForm(this, {name: 'coordinated'}),
formFirst: this.$form.createForm(this, {name: 'coordinated'}),
city:[],
job:[],
edu:[],
2021-02-19 15:46:05 +03:30
family:[],
2021-01-30 22:35:05 +03:30
work:[],
2021-03-14 09:40:47 +03:30
jobsList:[{jobs:[]}],
//jobs:[{city:null,job:null}],
2021-01-30 22:35:05 +03:30
//model:[],
educational:[],
birth_day:'',
has_instructor: '-1',
visibleEdu: false,
2021-02-19 15:46:05 +03:30
visibleFamily: false,
2021-01-30 22:35:05 +03:30
visibleEducational: false,
visibleWork: false,
visibleAccept: false,
is_check:false,
is_work_check:false,
find_grade:null,
grade:[
{ level: 1, title:'کاردانی' },
{ level: 2, title:'کارشناسی' },
{ level: 3, title:'کارشناسی ارشد' },
{ level: 4, title:'دکتری' }
],
alphabet:['الف','ب','پ','ت','ث','ج','چ','ح','خ','د','ذ','ر','ز','ژ','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ک','گ','ل','م','ن','و','ه','ی'],
loading:false,
editMode:false,
id:0,
2021-02-16 15:43:07 +03:30
tempRow:{},
fullName:'',
date:null
2021-01-30 22:35:05 +03:30
}
},
methods:{
2021-12-30 16:13:42 +03:30
changeDocumentUpload({fileList, event, file}){
if (file.response && file.response.id) {
this.file_id = file.response.id;
}
this.fileList = fileList;
},
handleRemoveDocument(){
this.file_id = null
},
2021-03-14 09:40:47 +03:30
deleteCity(index){
this.jobsList.splice(index,1);
//console.log(index);
},
filterOption(input, option) {
return (
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
);
},
/* Agrement(rule, value, callback){
},*/
2021-01-30 22:35:05 +03:30
addCity()
{
2021-03-14 09:40:47 +03:30
this.jobsList.push({jobs:[]});
2021-01-30 22:35:05 +03:30
},
number_insurance(e){
this.has_instructor = e.target.value
},
handleSubmit(e) {
e.preventDefault();
if(this.current ==0)
{
this.formFirst.validateFields(async(err, values) => {
if (!err) {
2021-03-14 09:40:47 +03:30
this.current++;
2021-02-19 15:46:05 +03:30
2021-03-14 09:40:47 +03:30
// console.log(values,'first')
2021-01-30 22:35:05 +03:30
}
});
}
else
{
this.from.validateFields(async(err, values) => {
if (!err) {
try{
this.loading = true
console.log(values,'values')
values.model = this.formFirst.getFieldsValue();
2021-02-19 15:46:05 +03:30
values.birth_date = this.birth_day;
values.work = this.work;
2021-12-30 16:13:42 +03:30
values.file_id = this.file_id;
2021-02-19 15:46:05 +03:30
values.training = this.educational;
values.academic = this.edu;
values.family= this.family;
2021-01-30 22:35:05 +03:30
await axios.post('register/save', values)
2021-02-19 15:46:05 +03:30
this.$ntSet();
2021-02-16 15:43:07 +03:30
// this.from.resetFields()
2021-01-30 22:35:05 +03:30
this.current++
}catch (e) {
this.$ntSetError()
throw e
}finally {
this.loading = false
}
}
});
}
},
2021-03-14 09:40:47 +03:30
getCity(){
2021-01-30 22:35:05 +03:30
try{
2021-03-14 09:40:47 +03:30
//const {data} = await axios.get('/register/cities')
axios.get('/register/cities').then((res)=>{
this.city = res.data;
}).catch((error)=>{
this.$ntSetError()
});
2021-01-30 22:35:05 +03:30
}catch (e) {
this.$ntSetError()
}
},
2021-03-14 09:40:47 +03:30
getDate(){
2021-02-16 15:43:07 +03:30
try{
2021-03-14 09:40:47 +03:30
//const {data} = await axios.get('/register/date')
axios.get('/register/date').then((res)=>{
this.date = res.data;
}).catch((error)=>{
this.$ntSetError()
});;
2021-02-16 15:43:07 +03:30
}catch (e) {
this.$ntSetError()
}
},
2021-03-14 09:40:47 +03:30
getJob(index){
if(index!=undefined)
{
try{
this.formFirst.resetFields(`jobs[${index}].job`);
axios.post('/register/jobs',{city:""+this.formFirst.getFieldValue(`jobs[${index}].city`)+""}).then((res)=>{
//this.formFirst.setFieldsValue(`jobs[${index}].city`)
this.jobsList[index].jobs=res.data;
console.log(this.jobsList[index].jobs);
//console.log(this.jobsList[0].map((item)=> item.title))
});
//this.job = data
}catch (e) {
2021-01-30 22:35:05 +03:30
this.$ntSetError()
2021-03-14 09:40:47 +03:30
}
2021-01-30 22:35:05 +03:30
}
},
openModalEdu(){
this.visibleEdu = true
this.editMode = false
this.formEdu.resetFields()
},
2021-02-19 15:46:05 +03:30
openModalFamily(){
this.visibleFamily = true
this.editMode = false
this.formFamily.resetFields();
},
2021-01-30 22:35:05 +03:30
openModalEducational(){
this.visibleEducational = true
2021-02-16 15:43:07 +03:30
this.editMode = false
2021-01-30 22:35:05 +03:30
this.formEducational.resetFields()
},
openModalWork(){
this.visibleWork = true
2021-02-16 15:43:07 +03:30
this.editMode = false
2021-01-30 22:35:05 +03:30
this.formWork.resetFields()
},
2021-02-19 15:46:05 +03:30
openModalFamilyModeEDit(item){
//console.log(item,'item')
this.visibleFamily = true
this.editMode = true
this.tempRow = item
this.formFamily.setFieldsValue(item)
},
2021-01-30 22:35:05 +03:30
openModalEduModeEDit(item){
console.log(item,'item')
this.visibleEdu = true
this.editMode = true
this.tempRow = item
this.formEdu.setFieldsValue(item)
},
openModalEducationalEDit(item){
this.visibleEducational = true
2021-02-16 15:43:07 +03:30
this.editMode = true
this.tempRow = item
2021-01-30 22:35:05 +03:30
this.formEducational.setFieldsValue(item)
},
openModalWorkEDit(item){
this.visibleWork = true
2021-02-16 15:43:07 +03:30
this.editMode = true
this.tempRow = item
2021-01-30 22:35:05 +03:30
this.formWork.setFieldsValue(item)
},
cancelEdu(){
this.visibleEdu = false
},
2021-02-19 15:46:05 +03:30
cancelFamily(){
this.visibleFamily = false
},
2021-01-30 22:35:05 +03:30
cancelEducational(){
this.visibleEducational = false
},
cancelWork(){
this.visibleWork = false
},
2021-02-19 15:46:05 +03:30
createFamily(e){
e.preventDefault();
this.formFamily.validateFields(async(err, values) => {
if (!err) {
try{
if(this.find_grade)
{
values.edu = this.find_grade;
values.edu_level=this.find_grade.level;
}
if(this.editMode){
const find = this.family.findIndex(item=> item.id == this.tempRow.id)
Object.assign(this.family[find],values);
this.visibleFamily = false;
}else{
values.id = this.id
this.family.push(values)
this.id +=1
this.formFamily.resetFields()
this.visibleFamily = false
}
}catch (e) {
this.$ntSetError()
throw e
}finally {
}
}
});
},
2021-01-30 22:35:05 +03:30
createEdu(e){
e.preventDefault();
this.formEdu.validateFields(async(err, values) => {
if (!err) {
try{
if(this.find_grade) values.grade = this.find_grade
if(this.editMode){
const find = this.edu.findIndex(item=> item.id == this.tempRow.id)
Object.assign(this.edu[find],values);
this.visibleEdu = false
}else{
values.id = this.id
this.edu.push(values)
this.id +=1
this.formEdu.resetFields()
this.visibleEdu = false
}
}catch (e) {
this.$ntSetError()
throw e
}finally {
}
}
});
},
createEducational(e){
e.preventDefault();
this.formEducational.validateFields(async(err, values) => {
if (!err) {
try{
2021-02-16 15:43:07 +03:30
if(this.editMode){
const find = this.educational.findIndex(item=> item.id == this.tempRow.id)
Object.assign(this.educational[find],values);
this.visibleEducational = false
}else{
values.id = this.id
this.educational.push(values)
this.id += 1
console.log(values,'values')
this.formEducational.resetFields()
this.visibleEducational = false
}
2021-01-30 22:35:05 +03:30
}catch (e) {
this.$ntSetError()
throw e
}finally {
}
}
});
},
createWork(e){
e.preventDefault();
this.formWork.validateFields(async(err, values) => {
if (!err) {
try{
2021-02-16 15:43:07 +03:30
if(this.editMode){
const find = this.work.findIndex(item=> item.id == this.tempRow.id)
Object.assign(this.work[find],values);
}else{
values.id = this.id
this.work.push(values)
this.id += 1
console.log(values,'values')
this.formWork.resetFields()
}
this.visibleWork = false
2021-01-30 22:35:05 +03:30
}catch (e) {
this.$ntSetError()
throw e
}
}
});
},
isCheckedWork(e){
this.is_work_check = e.target.checked
2021-02-16 15:43:07 +03:30
if(this.is_work_check) this.formWork.resetFields('end')
2021-01-30 22:35:05 +03:30
},
2021-02-19 15:46:05 +03:30
removeFamily(item){
console.log(item);
const index = this.family.indexOf(item)
this.family.splice(index,1)
},
2021-01-30 22:35:05 +03:30
removeEdu(item){
const index = this.edu.indexOf(item)
this.edu.splice(index,1)
},
removeEducational(item){
const index = this.educational.indexOf(item)
this.educational.splice(index,1)
},
removeWork(item){
const index = this.work.indexOf(item)
this.work.splice(index,1)
},
changeGrade(id){
console.log(id,'id')
this.find_grade = this.grade.find(item=>item.level == id)
2021-02-16 15:43:07 +03:30
},
isChecked(e){
this.is_check = e.target.checked
if(this.is_check) this.formEdu.resetFields('end')
2021-01-30 22:35:05 +03:30
},
openAccept(){
2021-02-16 15:43:07 +03:30
this.visibleAccept = true;
this.fullName = this.from.getFieldValue('name');
this.getDate()
},
LoginUser(){
this.$router.push('/auth/login')
2021-01-30 22:35:05 +03:30
},
next() {
this.current++;
},
prev() {
this.current--;
2021-02-16 15:43:07 +03:30
}
},
computed:{
2021-01-30 22:35:05 +03:30
},
2021-03-14 09:40:47 +03:30
created() {
this.getCity()
this.getJob()
},
mounted() {
2021-01-30 22:35:05 +03:30
}
}
</script>
2021-03-14 09:40:47 +03:30
<style>
[dir=rtl] .anticon.anticon-plus{
position: relative;
top: 4px;
left: 5px;
}
.ant-modal-title{
margin-right: 1rem;
}
.ant-steps-item-title::after{
/*left: unset !important;*/
right:100% !important;
}
/*.ant-select-arrow
{
left: 11px !important;
}*/
</style>