update 1399-12-24
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
|
||||
@font-face {
|
||||
font-family: 'p-yek';
|
||||
src: url("../fonts/yekan/medium.woff") format("woff");
|
||||
src: url("../fonts/yekan/iran-yekan-400.woff2") format("woff");
|
||||
font-weight: normal;
|
||||
font-style: normal
|
||||
}
|
||||
@@ -9,27 +9,27 @@
|
||||
|
||||
@font-face {
|
||||
font-family: 'p-yek';
|
||||
src: url("../fonts/yekan/bold.woff") format("woff");
|
||||
src: url("../fonts/yekan/iran-yekan-400.woff2") format("woff");
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'p-yek';
|
||||
src: url("../fonts/yekan/heavy.woff") format("woff");
|
||||
src: url("../fonts/yekan/iran-yekan-400.woff2") format("woff");
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'p-yek';
|
||||
src: url("../fonts/yekan/light.woff") format("woff");
|
||||
src: url("../fonts/yekan/iran-yekan-400.woff2") format("woff");
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'p-yek';
|
||||
src: url("../fonts/yekan/regular.woff") format("woff");
|
||||
src: url("../fonts/yekan/iran-yekan-400.woff2") format("woff");
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
<template>
|
||||
<div class="clearfix">
|
||||
<AUpload
|
||||
:action="url"
|
||||
:headers="headers"
|
||||
:accept="accept"
|
||||
list-type="picture-card"
|
||||
:multiple="false"
|
||||
:data="getData"
|
||||
:file-list="fileList"
|
||||
@preview="handlePreview"
|
||||
@select="select"
|
||||
@beforeUpload="beforeUpload"
|
||||
@change="handleChange"
|
||||
:remove="handleRemove"
|
||||
>
|
||||
<div v-if="fileList.length < 8">
|
||||
<a-icon type="plus"/>
|
||||
<div class="ant-upload-text">
|
||||
{{ title || label }}
|
||||
</div>
|
||||
</div>
|
||||
</AUpload>
|
||||
<AModal :visible="previewVisible" :footer="null" @cancel="handleCancel">
|
||||
<img alt="example" style="width: 100%" :src="previewImage"/>
|
||||
</AModal>
|
||||
<AFormItem ref="fi">
|
||||
<input v-decorator="[field]" type="hidden"/>
|
||||
</AFormItem>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
function getBase64(file) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
reader.readAsDataURL(file);
|
||||
reader.onload = () => resolve(reader.result);
|
||||
reader.onerror = error => reject(error);
|
||||
});
|
||||
}
|
||||
|
||||
//import themeConfig from "../../../../themeConfig";
|
||||
|
||||
export default {
|
||||
name: 'UploadInput',
|
||||
props: {
|
||||
title: {},
|
||||
label: {},
|
||||
field: {},
|
||||
size: {
|
||||
default: 2
|
||||
},
|
||||
accept: {default: "image/jpeg"},
|
||||
serverType: {
|
||||
types: {
|
||||
1: 'عکس',
|
||||
2: 'فیلم',
|
||||
3: 'مدارک',
|
||||
4: 'صوت',
|
||||
5: 'pdf',
|
||||
}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
url: 'http://hr.asco-intl.com/back/public/api/register/upload',
|
||||
previewVisible: false,
|
||||
previewImage: '',
|
||||
fileList: [],
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
fileList(n, o) {
|
||||
if (n.length > o.length) {
|
||||
this.$emit('add-file', n);
|
||||
} else if (n.length < o.length) {
|
||||
this.$emit('remove-file', n);
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleRemove(){
|
||||
const a = {};
|
||||
a[`${this.field}`] =null
|
||||
this.$refs.fi.FormContext.form.setFieldsValue(a)
|
||||
},
|
||||
beforeUpload(file) {
|
||||
const isJpgOrPng = this.types.includes(file.type);
|
||||
if (!isJpgOrPng) {
|
||||
this.$message.error('تنها مجاز به ارسال تصویر با پسوند jpg هستید.');
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < this.size;
|
||||
if (!isLt2M) {
|
||||
this.$message.error(`فایل بارگذاری شده بیش از ${this.size} مگا بایت نباید باشد.`);
|
||||
}
|
||||
return isJpgOrPng && isLt2M;
|
||||
},
|
||||
handleCancel() {
|
||||
this.previewVisible = false;
|
||||
},
|
||||
async handlePreview(file) {
|
||||
if (!file.url && !file.preview) {
|
||||
file.preview = await getBase64(file.originFileObj);
|
||||
}
|
||||
this.previewImage = file.url || file.preview;
|
||||
this.previewVisible = true;
|
||||
},
|
||||
handleChange({fileList, event, file}) {
|
||||
if (fileList.length > 1) {
|
||||
this.$message.error('تنها یک فایل در این قست قابل بارگذاری می باشد.');
|
||||
return false;
|
||||
}
|
||||
if (file.response && file.response.id) {
|
||||
this.$emit('ok', file.response);
|
||||
const a = {};
|
||||
a[`${this.field}`] = file.response.id
|
||||
this.$refs.fi.FormContext.form.setFieldsValue(a)
|
||||
}
|
||||
this.fileList = fileList;
|
||||
},
|
||||
select() {
|
||||
console.log("555 ==> ", 555);
|
||||
},
|
||||
getData() {
|
||||
return {
|
||||
has_thumb: 1,
|
||||
has_watermark: 1,
|
||||
type: this.serverType || 1,
|
||||
subject: 1,
|
||||
title: 1
|
||||
}
|
||||
}
|
||||
}
|
||||
,
|
||||
computed: {
|
||||
headers() {
|
||||
return {
|
||||
'Authorization': 'Bearer ' + localStorage.getItem("accessToken") || localStorage.accessToken
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
;
|
||||
</script>
|
||||
<style>
|
||||
/* you can make up upload button and sample style by using stylesheets */
|
||||
.ant-upload-select-picture-card i {
|
||||
font-size: 32px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.ant-upload-select-picture-card .ant-upload-text {
|
||||
margin-top: 8px;
|
||||
color: #666;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,145 @@
|
||||
<template>
|
||||
<div class="clearfix">
|
||||
<AUpload
|
||||
:action="url"
|
||||
:headers="headers"
|
||||
accept="image/jpeg"
|
||||
list-type="picture-card"
|
||||
:multiple="true"
|
||||
:data="getData"
|
||||
:file-list="fileList"
|
||||
@preview="handlePreview"
|
||||
@select="select"
|
||||
@beforeUpload="beforeUpload"
|
||||
@change="handleChange"
|
||||
>
|
||||
<div v-if="fileList.length < 8">
|
||||
<a-icon type="plus"/>
|
||||
<div class="ant-upload-text">
|
||||
{{ title || label }}
|
||||
</div>
|
||||
</div>
|
||||
</AUpload>
|
||||
<AModal :visible="previewVisible" :footer="null" @cancel="handleCancel">
|
||||
<img alt="example" style="width: 100%" :src="previewImage"/>
|
||||
</AModal>
|
||||
<AFormItem ref="fi">
|
||||
<input v-decorator="[field]" type="hidden"/>
|
||||
</AFormItem>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
function getBase64(file) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
reader.readAsDataURL(file);
|
||||
reader.onload = () => resolve(reader.result);
|
||||
reader.onerror = error => reject(error);
|
||||
});
|
||||
}
|
||||
|
||||
import themeConfig from "../../../../themeConfig";
|
||||
|
||||
export default {
|
||||
name: 'UploadInput',
|
||||
props: {
|
||||
title: {},
|
||||
field: {},
|
||||
size: {
|
||||
default: 2
|
||||
},
|
||||
label: {},
|
||||
serverType: {
|
||||
types: {
|
||||
1: 'عکس',
|
||||
2: 'فیلم',
|
||||
3: 'مدارک',
|
||||
4: 'صوت',
|
||||
5: 'pdf',
|
||||
}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
url: themeConfig.home('cu/file/create'),
|
||||
previewVisible: false,
|
||||
previewImage: '',
|
||||
fileList: [],
|
||||
resList: [],
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
fileList(n, o) {
|
||||
if (n.length > o.length) {
|
||||
this.$emit('add-file', n);
|
||||
} else if (n.length < o.length) {
|
||||
this.$emit('remove-file', n);
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
beforeUpload(file) {
|
||||
const isJpgOrPng = this.types.includes(file.type);
|
||||
if (!isJpgOrPng) {
|
||||
this.$message.error('پسوند قابل قبول نیست.');
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < this.size;
|
||||
if (!isLt2M) {
|
||||
this.$message.error(`فایل بارگذاری شده بیش از ${this.size} مگا بایت نباید باشد.`);
|
||||
}
|
||||
return isJpgOrPng && isLt2M;
|
||||
},
|
||||
handleCancel() {
|
||||
this.previewVisible = false;
|
||||
},
|
||||
async handlePreview(file) {
|
||||
if (!file.url && !file.preview) {
|
||||
file.preview = await getBase64(file.originFileObj);
|
||||
}
|
||||
this.previewImage = file.url || file.preview;
|
||||
this.previewVisible = true;
|
||||
},
|
||||
handleChange({fileList, event, file}) {
|
||||
if (file.response && file.response.id) {
|
||||
this.$emit('ok', file.response);
|
||||
this.resList.push(file.response.id);
|
||||
const a = {};
|
||||
a[`${this.field}`] = this.resList
|
||||
this.$refs.fi.FormContext.form.setFieldsValue(a)
|
||||
}
|
||||
this.fileList = fileList;
|
||||
},
|
||||
select() {
|
||||
|
||||
},
|
||||
getData() {
|
||||
return {
|
||||
has_thumb: 1,
|
||||
has_watermark: 1,
|
||||
type: this.serverType || 1,
|
||||
subject: 1,
|
||||
title: 1
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
headers() {
|
||||
return {
|
||||
'Authorization': 'Bearer ' + localStorage.getItem("accessToken") || localStorage.accessToken
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
/* you can make up upload button and sample style by using stylesheets */
|
||||
.ant-upload-select-picture-card i {
|
||||
font-size: 32px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.ant-upload-select-picture-card .ant-upload-text {
|
||||
margin-top: 8px;
|
||||
color: #666;
|
||||
}
|
||||
</style>
|
||||
@@ -3,7 +3,7 @@
|
||||
<ACard ref="tblCard">
|
||||
<ASpin :spinning="loading">
|
||||
<div class="flex w-full justify-between">
|
||||
<a-input-search class="w-1/4 pb-4 input-ltr" placeholder="جستجو بر اساس نام / کد ملی / کد پرسنلی / شمار بیمه" enter-button="جستجو" @search="onSearch"/>
|
||||
<a-input-search class="w-1/4 pb-4 input-ltr" placeholder="" enter-button="جستجو" @search="onSearch"/>
|
||||
<div class="flex items-center">
|
||||
<a class="left-table-btn" @click="fullScreen">
|
||||
<feather-icon :icon="getFullIcon" svg-classes="w-5 h-5"/>
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
:parent="parent"
|
||||
:hiddenBackground="clickNotClose"
|
||||
:reduce="reduce"
|
||||
v-hammer:swipe="onMenuSwipe">
|
||||
v-hammer:swipe="onMenuSwipe" >
|
||||
|
||||
<div @mouseenter="mouseEnter" @mouseleave="mouseLeave">
|
||||
<div @mouseenter="mouseEnter" @mouseleave="mouseLeave" >
|
||||
|
||||
<!-- Header -->
|
||||
<div class="header-sidebar flex items-end justify-between" slot="header">
|
||||
@@ -352,4 +352,9 @@ export default {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.vs-sidebar
|
||||
{
|
||||
width: 16% !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
export default [
|
||||
{
|
||||
url: '/dashboard',
|
||||
name: 'داشبرد',
|
||||
name: 'داشبورد',
|
||||
icon: 'HomeIcon',
|
||||
i18n: 'داشبرد',
|
||||
i18n: 'داشبورد',
|
||||
slug: "config",
|
||||
},
|
||||
{
|
||||
|
||||
+9
-9
@@ -27,10 +27,10 @@ import axios from './axios.js'
|
||||
Vue.prototype.$http = axios
|
||||
|
||||
// API Calls
|
||||
import './http/requests'
|
||||
/*import './http/requests'*/
|
||||
|
||||
// mock
|
||||
import './fake-db/index.js'
|
||||
/*import './fake-db/index.js'*/
|
||||
|
||||
// Theme Configurations
|
||||
import '../themeConfig.js'
|
||||
@@ -78,16 +78,16 @@ import './filters/filters'
|
||||
|
||||
|
||||
// Clipboard
|
||||
import VueClipboard from 'vue-clipboard2'
|
||||
/*import VueClipboard from 'vue-clipboard2'
|
||||
|
||||
Vue.use(VueClipboard)
|
||||
Vue.use(VueClipboard)*/
|
||||
|
||||
|
||||
// Tour
|
||||
import VueTour from 'vue-tour'
|
||||
/*import VueTour from 'vue-tour'
|
||||
|
||||
Vue.use(VueTour)
|
||||
require('vue-tour/dist/vue-tour.css')
|
||||
require('vue-tour/dist/vue-tour.css')*/
|
||||
|
||||
|
||||
// VeeValidate
|
||||
@@ -97,7 +97,7 @@ Vue.use(VeeValidate)
|
||||
|
||||
|
||||
// Google Maps
|
||||
import * as VueGoogleMaps from 'vue2-google-maps'
|
||||
/*import * as VueGoogleMaps from 'vue2-google-maps'
|
||||
|
||||
Vue.use(VueGoogleMaps, {
|
||||
load: {
|
||||
@@ -105,7 +105,7 @@ Vue.use(VueGoogleMaps, {
|
||||
key: 'AIzaSyB4DDathvvwuwlwnUu7F4Sow3oU22y5T1Y',
|
||||
libraries: 'places' // This is required if you use the Auto complete plug-in
|
||||
}
|
||||
})
|
||||
})*/
|
||||
|
||||
// Vuejs - Vue wrapper for hammerjs
|
||||
import {VueHammer} from 'vue2-hammer'
|
||||
@@ -120,7 +120,7 @@ Vue.use(notify)
|
||||
|
||||
|
||||
// PrismJS
|
||||
import 'prismjs'
|
||||
//import 'prismjs'
|
||||
import 'prismjs/themes/prism-tomorrow.css'
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -4,14 +4,14 @@ export default {
|
||||
Vue.prototype.$ntSetError = function (msg) {
|
||||
this.$vs.notify({
|
||||
title: 'خطا در ثبت اطلاعات',
|
||||
text: msg || 'اطلاعات ثبت نگردید.',
|
||||
//text: msg || 'اطلاعات ثبت نگردید.',
|
||||
color: 'danger',
|
||||
})
|
||||
}
|
||||
|
||||
Vue.prototype.$ntSet = function (msg) {
|
||||
this.$vs.notify({
|
||||
title: 'اطلاعات ثبت شد.',
|
||||
//title: 'اطلاعات ثبت شد.',
|
||||
text: msg || 'اطلاعات با موفقیت به ثبت رسید',
|
||||
color: 'primary',
|
||||
})
|
||||
|
||||
+4
-4
@@ -54,7 +54,7 @@ const router = new Router({
|
||||
{
|
||||
path: '/dashboard',
|
||||
name: 'dashborrdPage',
|
||||
component: () => import('./views/DashboardAnalytics.vue'),
|
||||
component: () => import('./views/dashboard/DashboardAnalytics.vue'),
|
||||
meta: {
|
||||
rule: 'editor'
|
||||
}
|
||||
@@ -105,7 +105,7 @@ router.afterEach(() => {
|
||||
router.beforeEach((to, from, next) => {
|
||||
// return next();
|
||||
let isLogin = sessionStorage.getItem('accessToken');
|
||||
console.log("to.path ==> ", to.path);
|
||||
//console.log("to.path ==> ", to.path);
|
||||
if (
|
||||
(
|
||||
to.path === "/register/form" ||
|
||||
@@ -115,9 +115,9 @@ router.beforeEach((to, from, next) => {
|
||||
to.path === "/auth/forgot-password"
|
||||
)
|
||||
) {
|
||||
if (isLogin) {
|
||||
/* if (isLogin) {
|
||||
router.push({path: '/'});
|
||||
}
|
||||
}*/
|
||||
return next();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
<!-- =========================================================================================
|
||||
File Name: DashboardAnalytics.vue
|
||||
Description: Dashboard Analytics
|
||||
----------------------------------------------------------------------------------------
|
||||
Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template
|
||||
Author: Pixinvent
|
||||
Author URL: http://www.themeforest.net/user/pixinvent
|
||||
========================================================================================== -->
|
||||
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<div class="grid grid-cols-4 gap-4">
|
||||
<div>
|
||||
<a-card >
|
||||
<span>تعداد کل پرسنل</span>
|
||||
<h1>{{ model.total_personnel }}</h1>
|
||||
<a-divider />
|
||||
<span>ثبت نام شده در 30 روز گذشته {{ model.last_month_personnel }}</span>
|
||||
</a-card>
|
||||
</div>
|
||||
<div>
|
||||
<a-card >
|
||||
<span>تعداد کل درخواست ها</span>
|
||||
<h1>{{ model.total_proposal }}</h1>
|
||||
<a-divider />
|
||||
<span>ثبت شده در 30 روز گذشته {{ model.last_month_proposal }}</span>
|
||||
</a-card>
|
||||
</div>
|
||||
<div>
|
||||
<a-card >
|
||||
<span>تعداد کل قراداد ها</span>
|
||||
<h1>{{ model.total_contract }}</h1>
|
||||
<a-divider />
|
||||
<span>ثبت شده در 30 روز گذشته {{ model.last_month_contract }}</span>
|
||||
</a-card>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<div>
|
||||
<a-card title="پرسنل استخدام شده در 30 روزگذشته">
|
||||
|
||||
<ATable
|
||||
class="p-0 m-0"
|
||||
:pagination="true"
|
||||
bordered
|
||||
:locale="{emptyText:'داده ای یافت نشد'}"
|
||||
:columns="cols" :data-source="personelPerMonth">
|
||||
|
||||
</ATable>
|
||||
|
||||
</a-card>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>
|
||||
<a-card title="پرسنلی که تازه و یا نزدیک به اتمام قرادادشان هست">
|
||||
<ATable
|
||||
class="p-0 m-0"
|
||||
:pagination="true"
|
||||
bordered
|
||||
:locale="{emptyText:'داده ای یافت نشد'}"
|
||||
:columns="cols" :data-source="personelPerMonth">
|
||||
|
||||
</ATable>
|
||||
</a-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as TableCol from "@/table/personelPerMonth";
|
||||
//import {ax} from "@/axios";
|
||||
import axios from "@/axios"
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
col:null,
|
||||
model:{},
|
||||
personelPerMonth:[],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
||||
},
|
||||
computed: {
|
||||
|
||||
},
|
||||
async created() {
|
||||
this.cols = TableCol.default;
|
||||
//console.log('111111111',axios.defaults.headers);
|
||||
try {
|
||||
await axios.get('dashboard')
|
||||
.then((res)=>{
|
||||
//console.log('dsfsdfsdfds');
|
||||
this.model=res.data;
|
||||
this.personelPerMonth=res.data.personnel;
|
||||
}).catch((error)=>{
|
||||
//console.log('dsafsdfsdfsdf');
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
catch (error)
|
||||
{
|
||||
// console.log('gggggggg');
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.ant-pagination
|
||||
{
|
||||
direction: ltr !important;
|
||||
}
|
||||
td,th{
|
||||
text-align: right !important;
|
||||
}
|
||||
</style>
|
||||
+387
-86
@@ -2,72 +2,220 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-card>
|
||||
|
||||
<a-tabs default-active-key="1" style="direction: ltr" >
|
||||
|
||||
<a-tab-pane key="2" tab="مدیریت شهرها">
|
||||
<a-tab-pane key="3" tab="شهرهای محل همکاری">
|
||||
|
||||
<input
|
||||
v-if="inputCityVisible"
|
||||
class="ant-input"
|
||||
ref="input"
|
||||
type="text"
|
||||
size="small"
|
||||
:style="{ width: '78px' }"
|
||||
:value="inputValue"
|
||||
@change="handleInputChange"
|
||||
@blur="handleInputConfirmCity"
|
||||
@keyup.enter="handleInputConfirmCity"
|
||||
/>
|
||||
<a-tag v-else style="background: #fff; borderStyle: dashed;" @click="showInputCity">
|
||||
<a-icon type="plus" />افزودن
|
||||
</a-tag>
|
||||
<template v-for="(city, index) in configCities">
|
||||
<a-tag :key="city.id" :closable="true" @close="() => handleCloseCity(city.id)">
|
||||
{{ city.title }}
|
||||
</a-tag>
|
||||
</template>
|
||||
<br>
|
||||
<a-button type="primary" class="mt-10" @click="saveCity()">
|
||||
ذخیره اطلاعات
|
||||
</a-button>
|
||||
|
||||
|
||||
</a-tab-pane>
|
||||
|
||||
|
||||
<a-tab-pane key="2" tab="دسته های آموزشی">
|
||||
<input
|
||||
v-if="inputVisible"
|
||||
class="ant-input"
|
||||
ref="input"
|
||||
type="text"
|
||||
size="small"
|
||||
:style="{ width: '78px' }"
|
||||
:value="inputValue"
|
||||
@change="handleInputChange"
|
||||
@blur="handleInputConfirm"
|
||||
@keyup.enter="handleInputConfirm"
|
||||
/>
|
||||
<a-tag v-else style="background: #fff; borderStyle: dashed;" @click="showInput">
|
||||
<a-icon type="plus" /> افزودن دسته جدید آموزشی
|
||||
</a-tag>
|
||||
<template v-for="(tag, index) in tags">
|
||||
<!-- <a-tooltip v-if="tag.length > 20" :key="tag" :title="tag">
|
||||
<a-tag :key="tag" :closable="index !== 0" @close="() => handleClose(tag)">
|
||||
{{ `${tag.slice(0, 20)}...` }}
|
||||
</a-tag>
|
||||
</a-tooltip>-->
|
||||
<a-tag :key="tag" :closable="true" @close="() => handleClose(tag)">
|
||||
{{ tag }}
|
||||
</a-tag>
|
||||
</template>
|
||||
<br>
|
||||
<a-button type="primary" class="mt-10" @click="saveCategory()">
|
||||
ذخیره اطلاعات
|
||||
</a-button>
|
||||
<!-- <template v-for="(item, index) in category">
|
||||
<!– <a-tooltip v-if="tag.length > 20" :key="tag" :title="tag">
|
||||
<a-tag :key="tag" :closable="index !== 0" @close="() => handleClose(tag)">
|
||||
{{ `${tag.slice(0, 20)}...` }}
|
||||
</a-tag>
|
||||
</a-tooltip>–>
|
||||
|
||||
|
||||
|
||||
<a-tag :key="item" :closable="index !== 0" @close="() => handleClose(item)">
|
||||
{{ item }}
|
||||
</a-tag>
|
||||
</template>-->
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="1" tab="مدیریت شهرها">
|
||||
<div>
|
||||
<a-card title="شهرهای محل همکاری" :bordered="true" >
|
||||
<!-- <a-card title="شهرهای محل همکاری" :bordered="true" >
|
||||
<a-form :form="formCities" @submit="handleSubmitCities">
|
||||
<div class="grid grid-cols-6 gap-4">
|
||||
<div>
|
||||
<a-button type="primary" class="mt-5">
|
||||
ذخیره شهر ها
|
||||
<a-form-item>
|
||||
<a-button type="primary" @click="handleSubmitCities" class="mt-5">
|
||||
ذخیره شهر ها
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
|
||||
<div class="col-span-5">
|
||||
<a-select
|
||||
class="mt-5"
|
||||
mode="multiple"
|
||||
:default-value="[]"
|
||||
style="width: 100%;direction: ltr !important;"
|
||||
placeholder="انتخاب شهر"
|
||||
>
|
||||
<a-select-option v-for="item,index in cities" :key="item.id" style="direction: rtl !important;">
|
||||
{{item.title}}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
|
||||
<a-modal
|
||||
v-model="showAddJob"
|
||||
okText="ثبت تغییرات "
|
||||
@ok="handleSubmit"
|
||||
cancelText="بستن"
|
||||
title="افزودن شغل" >
|
||||
<a-form :form="form" @submit="handleSubmit">
|
||||
|
||||
<a-form-item label="شغل">
|
||||
<a-input
|
||||
v-decorator="['title',{rules: [{ required: true, message: 'وارد کردن شغل الزامی است' }],},]"/>
|
||||
</a-form-item>
|
||||
<a-form-item label="شهر های همکاری">
|
||||
|
||||
<a-select
|
||||
class="mt-3"
|
||||
mode="multiple"
|
||||
style="width: 100%;direction: rtl !important;"
|
||||
placeholder="انتخاب شهر"
|
||||
v-decorator="['cities',{rules: [{ required: true, message: 'وارد کردن شهر های همکاری الزامی است' }],},]"
|
||||
>
|
||||
<a-select-option v-for="item,index in cities" :key="`${item.id}`">
|
||||
{{item.title}}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
|
||||
</a-form>
|
||||
</a-modal>
|
||||
|
||||
|
||||
<div class="col-span-5">
|
||||
<a-form-item >
|
||||
<a-select
|
||||
v-decorator="['select',{ rules: [{ required: true, message: 'لطفا شهر را انتخاب نمایید' }] },]"
|
||||
class="mt-5"
|
||||
mode="tags"
|
||||
style="width: 100%;direction: ltr !important;"
|
||||
placeholder="انتخاب شهر" >
|
||||
<a-select-option v-for="item,ndex in cities" :value="item.id" :key="item.id" style="direction: rtl !important;">
|
||||
{{item.title}}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</div>
|
||||
</div>
|
||||
</a-card>
|
||||
</a-form>
|
||||
<!–
|
||||
<a-form :form="formCities" @submit="">
|
||||
<div>
|
||||
<a-form-item >
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="col-span-5">
|
||||
<a-form-item label="">
|
||||
</a-form-item>
|
||||
</div>
|
||||
</a-form>
|
||||
</div>–>
|
||||
</a-card>-->
|
||||
<a-spin :spinning="spinning">
|
||||
<a-modal
|
||||
v-model="showAddJob"
|
||||
okText="ثبت تغییرات "
|
||||
@ok="handleSubmit"
|
||||
cancelText="بستن"
|
||||
title="افزودن شغل" >
|
||||
<a-form :form="form">
|
||||
<a-form-item label="شغل">
|
||||
<input class="ant-input"
|
||||
v-decorator="['title',{rules: [{ required: true, message: 'وارد کردن شغل الزامی است' }],},]"/>
|
||||
</a-form-item>
|
||||
<a-form-item label="نمایش در لیست ثبت نام">
|
||||
<a-checkbox v-decorator="['is_visible',{valuePropName:'checked',rules: [{ required: false, message: '' }],},]" >
|
||||
نمایش بده
|
||||
</a-checkbox>
|
||||
</a-form-item>
|
||||
|
||||
|
||||
<a-form-item label="شهر های همکاری">
|
||||
<a-select
|
||||
show-search
|
||||
:filter-option="filterOption"
|
||||
notFoundContent="اطلاعاتی یافت نشد"
|
||||
class="mt-3"
|
||||
mode="multiple"
|
||||
style="width: 100%;direction: rtl !important;"
|
||||
placeholder="انتخاب شهر"
|
||||
v-decorator="['cities',{rules: [{ required: true, message: 'وارد کردن شهر های همکاری الزامی است' }],},]" >
|
||||
<a-select-option v-for="item,index in cities" :key="`${item.id}`">
|
||||
{{item.title}}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
|
||||
</a-form>
|
||||
|
||||
</a-modal>
|
||||
</a-spin>
|
||||
|
||||
|
||||
</div>
|
||||
<a-button @click="showAddJob =true" type="primary" class="mt-5">
|
||||
افزودن شغل
|
||||
</a-button>
|
||||
</a-button >
|
||||
<br/>
|
||||
<ATable
|
||||
<x-table ref="jobTbl" class="mt-4" style="direction: rtl"
|
||||
:model="cols">
|
||||
<!-- <template slot="operator" slot-scope="text,record">
|
||||
<a-button type="primary" @click="showPersonal(text.record)">
|
||||
مشاهده و ویرایش اطلاعات
|
||||
</a-button>
|
||||
</template>-->
|
||||
|
||||
<template slot="cities_str_slot" slot-scope="{text,record}">
|
||||
<!--{{ record.cities_str }}-->
|
||||
<a-tag v-for="item,index in record.cities_str" :key="index" >{{item}}</a-tag>
|
||||
</template>
|
||||
|
||||
<template slot="visible" slot-scope="{text,record}">
|
||||
<a-tag color="green" v-if="record.is_visible">
|
||||
نمایش
|
||||
</a-tag>
|
||||
|
||||
<a-tag color="red" v-else>
|
||||
عدم نمایش
|
||||
</a-tag>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
<template slot="operator" slot-scope="{text,record}">
|
||||
<a-tooltip placement="bottomLeft">
|
||||
<template slot="title">
|
||||
<span>حذف</span>
|
||||
</template>
|
||||
<a-popconfirm
|
||||
title="آیا می خواهید حذف کنید؟"
|
||||
ok-text="بله"
|
||||
cancel-text="خیر"
|
||||
@confirm="okDelete(record.id)"
|
||||
>
|
||||
<a-button type="danger" class="ml-3">
|
||||
حذف
|
||||
</a-button>
|
||||
</a-popconfirm>
|
||||
</a-tooltip>
|
||||
|
||||
<a-button type="primary" @click="showEditModal(record)" >
|
||||
ویرایش
|
||||
</a-button>
|
||||
</template>
|
||||
</x-table>
|
||||
|
||||
<!-- <ATable
|
||||
class="mt-5"
|
||||
:pagination="true"
|
||||
bordered
|
||||
@@ -101,16 +249,19 @@
|
||||
ویرایش
|
||||
</a-button>
|
||||
</template>
|
||||
<!-- <a-button type="primary">
|
||||
<!– <a-button type="primary">
|
||||
Primary
|
||||
</a-button>-->
|
||||
</a-button>–>
|
||||
|
||||
</ATable>-->
|
||||
|
||||
|
||||
|
||||
</ATable>
|
||||
|
||||
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="1" tab="پیکربندی سیستم">
|
||||
|
||||
<!-- <a-tab-pane key="1" tab="پیکربندی سیستم">
|
||||
<a-checkbox v-model="global" style="direction: rtl">
|
||||
ثبت نام در تمامی شهر ها
|
||||
</a-checkbox>
|
||||
@@ -118,59 +269,69 @@
|
||||
<a-button type="primary" class="mt-5" @click="setConfig()">
|
||||
ثبت اطلاعات
|
||||
</a-button>
|
||||
</a-tab-pane>
|
||||
</a-tab-pane>-->
|
||||
</a-tabs>
|
||||
|
||||
|
||||
<a-modal
|
||||
v-model="showJobEditModal"
|
||||
okText="ثبت تغییرات "
|
||||
@ok="saveEditJob"
|
||||
cancelText="بستن"
|
||||
title="ویرایش شغل" >
|
||||
<a-form :form="fromJobEdit" @submit="saveEditJob" >
|
||||
<a-form :form="fromJobEdit">
|
||||
|
||||
<a-form-item label="شغل">
|
||||
<a-input
|
||||
<input class="ant-input"
|
||||
v-decorator="['title',{rules: [{ required: true, message: 'وارد کردن شغل الزامی است' }]}]"/>
|
||||
</a-form-item>
|
||||
<a-form-item label="نمایش در لیست ثبت نام">
|
||||
<a-checkbox v-decorator="['is_visible',{valuePropName:'checked',rules: [{ required: false, message: '' }],},]" >
|
||||
نمایش بده
|
||||
</a-checkbox>
|
||||
</a-form-item>
|
||||
<a-form-item label="شهر های همکاری">
|
||||
|
||||
<a-select
|
||||
show-search
|
||||
:filter-option="filterOption"
|
||||
notFoundContent="اطلاعاتی یافت نشد"
|
||||
class="mt-3"
|
||||
mode="multiple"
|
||||
style="width: 100%;direction: rtl !important;"
|
||||
autocomplete="off"
|
||||
placeholder="انتخاب شهر"
|
||||
v-decorator="['cities',{rules: [{ required: true, message: 'وارد کردن شهر های همکاری الزامی است' }]}]"
|
||||
>
|
||||
v-decorator="['cities',{rules: [{ required: true, message: 'وارد کردن شهر های همکاری الزامی است' }]}]">
|
||||
<a-select-option v-for="(item,index) in cities" :key="`${item.id}`">
|
||||
{{item.title}}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
|
||||
</a-form-item>
|
||||
|
||||
</a-form>
|
||||
</a-modal>
|
||||
|
||||
|
||||
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as TableCol from "./jobCols";
|
||||
//import * as TableCol from "./jobCols";
|
||||
//import * from TblJobs from "./pe"
|
||||
/*import * as TableCol from './jobTbl';*/
|
||||
//import XTable from "@/components/x-table/XTable";
|
||||
import * as TableCol from './jobTbl';
|
||||
import XTable from "@/components/x-table/XTable";
|
||||
import axios from "@/axios";
|
||||
|
||||
import axios from "@/axios";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
titleJobModal: '',
|
||||
tags: [],
|
||||
configCities:[{id:1,title:'تهران'},{id:2,title:'اصفهان'}],
|
||||
inputVisible: false,
|
||||
inputCityVisible:false,
|
||||
inputValue: '',
|
||||
spinning: false,
|
||||
titleJobModal: '',
|
||||
col: null,
|
||||
global: false,
|
||||
showAddJob: false,
|
||||
@@ -184,6 +345,7 @@
|
||||
username: '',
|
||||
form: this.$form.createForm(this, {name: 'coordinated'}),
|
||||
fromJobEdit: this.$form.createForm(this, {name: 'coordinated'}),
|
||||
formCities:this.$form.createForm(this, {name: 'coordinated'}),
|
||||
defaultCity:[]
|
||||
}
|
||||
},
|
||||
@@ -196,7 +358,107 @@
|
||||
}*/
|
||||
},
|
||||
methods: {
|
||||
async getJobs()
|
||||
saveCategory(){
|
||||
axios.post('/category',{category:this.tags})
|
||||
.then((res)=>{
|
||||
//console.log(res.data);
|
||||
this.$message.success('اطلاعات با موفقیت ثبت شد');
|
||||
//this.getJobs();
|
||||
//this.showAddJob=false;
|
||||
}).catch((error)=>{
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
});
|
||||
},
|
||||
|
||||
saveCity(){
|
||||
axios.post('/add-city',{cities:this.configCities})
|
||||
.then((res)=>{
|
||||
//console.log(res.data);
|
||||
this.configCities=res.data.map((item)=>{ return {id:item.id,title:item.title} });
|
||||
this.$message.success('اطلاعات با موفقیت ثبت شد');
|
||||
//this.getJobs();
|
||||
//this.showAddJob=false;
|
||||
}).catch((error)=>{
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
});
|
||||
},
|
||||
|
||||
handleClose(removedTag) {
|
||||
const tags = this.tags.filter(tag => tag !== removedTag);
|
||||
console.log(tags);
|
||||
this.tags = tags;
|
||||
},
|
||||
handleCloseCity(removedTag){
|
||||
if(removedTag!=null)
|
||||
{
|
||||
axios.post('/remove-city',{id:removedTag}).then((res)=>{
|
||||
|
||||
});
|
||||
}
|
||||
let index=this.configCities.findIndex((item)=> {
|
||||
return item.id==removedTag;
|
||||
});
|
||||
|
||||
if(index>-1){
|
||||
this.configCities.splice(index,1);
|
||||
}
|
||||
},
|
||||
showInput() {
|
||||
this.inputVisible = true;
|
||||
this.$nextTick(function() {
|
||||
this.$refs.input.focus();
|
||||
});
|
||||
},
|
||||
showInputCity() {
|
||||
this.inputCityVisible = true;
|
||||
this.$nextTick(function() {
|
||||
this.$refs.input.focus();
|
||||
});
|
||||
},
|
||||
handleInputChange(e) {
|
||||
this.inputValue = e.target.value;
|
||||
},
|
||||
handleInputConfirmCity(){
|
||||
|
||||
const inputValue = this.inputValue;
|
||||
if(inputValue.length==0)
|
||||
return ;
|
||||
let index=this.configCities.findIndex((item)=>{
|
||||
return item.title==inputValue;
|
||||
})
|
||||
if(index==-1){
|
||||
this.configCities.push({id:null,title:inputValue});
|
||||
}
|
||||
this.inputCityVisible=false;
|
||||
this.inputValue='';
|
||||
},
|
||||
handleInputConfirm() {
|
||||
const inputValue = this.inputValue;
|
||||
let tags = this.tags;
|
||||
//console.log('tags',tags);
|
||||
/* if(tags.length==0)
|
||||
{
|
||||
tags.push(inputValue);
|
||||
}
|
||||
else{
|
||||
|
||||
}*/
|
||||
if (inputValue && tags.indexOf(inputValue) === -1) {
|
||||
tags = [...tags, inputValue];
|
||||
}
|
||||
//console.log(tags);
|
||||
Object.assign(this, {
|
||||
tags,
|
||||
inputVisible: false,
|
||||
inputValue: '',
|
||||
});
|
||||
},
|
||||
filterOption(input, option) {
|
||||
return (
|
||||
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||
);
|
||||
},
|
||||
/* async getJobs()
|
||||
{
|
||||
await axios.get('/jobs')
|
||||
.then((res) => {
|
||||
@@ -204,30 +466,36 @@
|
||||
}).catch((error) => {
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
});
|
||||
},
|
||||
showEditModal(id)
|
||||
},*/
|
||||
showEditModal(record)
|
||||
{
|
||||
this.showJobEditModal=true;
|
||||
var item=this.jobs.find((item) => item.id==id);
|
||||
//var item=this.jobs.find((item) => item.id==id);
|
||||
this.$nextTick(()=>{
|
||||
this.currentJobID=item.id;
|
||||
this.fromJobEdit.setFieldsValue(item);
|
||||
this.currentJobID=record.id;
|
||||
this.fromJobEdit.setFieldsValue(record);
|
||||
})
|
||||
},
|
||||
saveEditJob(e)
|
||||
{
|
||||
|
||||
e.preventDefault();
|
||||
this.fromJobEdit.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.spinning = true;
|
||||
try{
|
||||
values.id=this.currentJobID;
|
||||
axios.post('/jobs',values)
|
||||
this.$message.success('اطلاعات با موفقیت ثبت شد');
|
||||
this.getJobs();
|
||||
this.showJobEditModal = false;
|
||||
axios.post('/jobs',values).then((res)=>{
|
||||
this.$refs.jobTbl.fetch();
|
||||
this.$message.success('اطلاعات با موفقیت ثبت شد');
|
||||
this.showJobEditModal = false;
|
||||
})
|
||||
//this.getJobs();
|
||||
//this.$refs.jobTbl.fetch();
|
||||
}catch (e) {
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
}
|
||||
this.spinning =false;
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -235,20 +503,43 @@
|
||||
e.preventDefault();
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.spinning = true;
|
||||
axios.post('/jobs',values)
|
||||
.then((res)=>{
|
||||
//console.log(res.data);
|
||||
this.$message.success('اطلاعات با موفقیت ثبت شد');
|
||||
this.getJobs();
|
||||
this.$refs.jobTbl.fetch();
|
||||
this.form.resetFields();
|
||||
//this.getJobs();
|
||||
this.showAddJob=false;
|
||||
}).catch((error)=>{
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
});
|
||||
this.spinning = false;
|
||||
//console.log('Received values of form: ', values);
|
||||
//this.$store.commit('update', values);
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSubmitCities(e) {
|
||||
e.preventDefault();
|
||||
this.formCities.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
//console.log("fdgsdfgdfg",values);
|
||||
/* axios.post('/jobs',values)
|
||||
.then((res)=>{
|
||||
//console.log(res.data);
|
||||
this.$message.success('اطلاعات با موفقیت ثبت شد');
|
||||
this.getJobs();
|
||||
this.showAddJob=false;
|
||||
}).catch((error)=>{
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
});*/
|
||||
//console.log('Received values of form: ', values);
|
||||
//this.$store.commit('update', values);
|
||||
}
|
||||
});
|
||||
},
|
||||
async changeTab() {
|
||||
/* switch (this.activeTab)
|
||||
{
|
||||
@@ -284,11 +575,11 @@
|
||||
this.$message.error('خطا در ثبت اطلاعات');
|
||||
});
|
||||
},
|
||||
|
||||
async okDelete(id){
|
||||
try{
|
||||
await axios.post('/jobs',{ id:id , delete:true })
|
||||
this.getJobs()
|
||||
this.$refs.jobTbl.fetch();
|
||||
//this.getJobs()
|
||||
}catch (e) {
|
||||
|
||||
}finally {
|
||||
@@ -311,15 +602,24 @@
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
});
|
||||
|
||||
await axios.get('/get-category')
|
||||
.then((res) => {
|
||||
//console.log(res.data);
|
||||
this.tags=res.data;
|
||||
}).catch((error) => {
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
});
|
||||
|
||||
await axios.get('/cities')
|
||||
.then((res) => {
|
||||
this.cities = res.data;
|
||||
this.configCities=res.data.map((item)=>{ return {id:item.id,title:item.title} });
|
||||
console.log(res.data);
|
||||
}).catch((error) => {
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
});
|
||||
|
||||
this.getJobs();
|
||||
//this.getJobs();
|
||||
|
||||
},
|
||||
mounted() {
|
||||
@@ -369,4 +669,5 @@
|
||||
direction: rtl;
|
||||
margin-right: 25px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('/jobsList', '');
|
||||
tbl.add(new Xtc('title', 'عنوان شغل').noSort());
|
||||
tbl.add(new Xtc('cities_str_slot', 'شهر های فعال در شغل').renderSlot('cities_str_slot').noSort());
|
||||
tbl.add(new Xtc('is_visible', 'نمایش در ثبت نام').renderSlot('visible').noSort());
|
||||
tbl.add(new Xtc('id', 'عملیات').renderSlot('operator').noSort())
|
||||
export default tbl;
|
||||
@@ -0,0 +1,160 @@
|
||||
<!-- =========================================================================================
|
||||
File Name: DashboardAnalytics.vue
|
||||
Description: Dashboard Analytics
|
||||
----------------------------------------------------------------------------------------
|
||||
Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template
|
||||
Author: Pixinvent
|
||||
Author URL: http://www.themeforest.net/user/pixinvent
|
||||
========================================================================================== -->
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<!-- <div class="grid grid-cols-4 gap-4">
|
||||
<div>
|
||||
<a-card >
|
||||
<span>تعداد کل پرسنل</span>
|
||||
<h1>{{ model.total_personnel }}</h1>
|
||||
<a-divider />
|
||||
<span>ثبت نام شده در 30 روز گذشته {{ model.last_month_personnel }}</span>
|
||||
</a-card>
|
||||
</div>
|
||||
<div>
|
||||
<a-card >
|
||||
<span>تعداد کل درخواست ها</span>
|
||||
<h1>{{ model.total_proposal }}</h1>
|
||||
<a-divider />
|
||||
<span>ثبت شده در 30 روز گذشته {{ model.last_month_proposal }}</span>
|
||||
</a-card>
|
||||
</div>
|
||||
<div>
|
||||
<a-card >
|
||||
<span>تعداد کل قراداد ها</span>
|
||||
<h1>{{ model.total_contract }}</h1>
|
||||
<a-divider />
|
||||
<span>ثبت شده در 30 روز گذشته {{ model.last_month_contract }}</span>
|
||||
</a-card>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
</div>-->
|
||||
<br/>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<a-card title="لیست پرسنل اتمام قرارداد در ماه گذشته">
|
||||
<x-table style="height: 400px;overflow: auto" class="mt-4" :model="contractEndPastMonth"></x-table>
|
||||
</a-card>
|
||||
</div>
|
||||
<div>
|
||||
<a-card title="لیست پرسنل اتمام قرارداد در ماه جاری">
|
||||
<x-table style="height: 400px;overflow: auto" class="mt-4" :model="contractEndCurrentMonth"></x-table>
|
||||
</a-card>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a-card title="لیست پرسنل اتمام قرارداد در ماه آینده">
|
||||
<x-table style="height: 400px;overflow: auto" class="mt-4" :model="contractEndNextMonth"></x-table>
|
||||
</a-card>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a-card title="لیست پرسنل استخدام شده در ماه گذشته">
|
||||
<x-table style="height: 400px;overflow: auto" class="mt-4" :model="PersonelPastMonth"></x-table>
|
||||
</a-card>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a-card title="لیست پرسنل استخدام شده در ماه جاری">
|
||||
<x-table style="height: 400px;overflow: auto" class="mt-4" :model="PersonelCurrentMonth"></x-table>
|
||||
</a-card>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a-card title="لیست پرسنل فسخ قرارداد در ماه گذشته">
|
||||
<x-table style="height: 400px;overflow: auto" class="mt-4" :model="contractTerminationPastMonth"></x-table>
|
||||
</a-card>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a-card title="لیست پرسنل فسخ قرارداد در ماه جاری">
|
||||
<x-table style="height: 400px;overflow: auto" class="mt-4" :model="contractTerminationCurrentMonth"></x-table>
|
||||
</a-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
//import * as TableCol from "@/table/personelPerMonth";
|
||||
import * as TableColcontractEndPastMonth from './personelEndContractPastmonthTbl';
|
||||
import * as TableColcontractEndNextMonth from './personelEndContractNextmonthTbl';
|
||||
import * as TableColcontractCurrentMonth from './personelEndContractCurrentmonthTbl';
|
||||
import * as TableColPersonelPastMonth from './personelPastmonthTbl';
|
||||
import * as TableColPersonelCurrentMonth from './personelCurrentmonthTbl';
|
||||
import * as TableColcontractTerminationCurrentMonth from './contractTerminationCurrentMonthTbl';
|
||||
import * as TableColcontractTerminationPastMonth from './contractTerminationPastMonthTbl';
|
||||
import XTable from "@/components/x-table/XTable";
|
||||
//import {ax} from "@/axios";
|
||||
import axios from "@/axios"
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
contractEndNextMonth,
|
||||
contractEndPastMonth,
|
||||
contractEndCurrentMonth,
|
||||
PersonelCurrentMonth,
|
||||
PersonelPastMonth,
|
||||
contractTerminationPastMonth,
|
||||
contractTerminationCurrentMonth
|
||||
//col:null,
|
||||
//model:{},
|
||||
//personelPerMonth:[],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
XTable,
|
||||
},
|
||||
computed: {
|
||||
|
||||
},
|
||||
async created() {
|
||||
this.contractEndPastMonth = TableColcontractEndPastMonth.default;
|
||||
this.contractEndNextMonth = TableColcontractEndNextMonth.default;
|
||||
this.contractEndCurrentMonth = TableColcontractCurrentMonth.default;
|
||||
this.PersonelCurrentMonth=TableColPersonelCurrentMonth.default;
|
||||
this.PersonelPastMonth= TableColPersonelPastMonth.default;
|
||||
this.contractTerminationPastMonth=TableColcontractTerminationPastMonth.default;
|
||||
this.contractTerminationCurrentMonth=TableColcontractTerminationCurrentMonth.default;
|
||||
//console.log('111111111',axios.defaults.headers);
|
||||
// try {
|
||||
// await axios.get('dashboard')
|
||||
// .then((res)=>{
|
||||
// //console.log('dsfsdfsdfds');
|
||||
// this.model=res.data;
|
||||
// this.personelPerMonth=res.data.personnel;
|
||||
// }).catch((error)=>{
|
||||
// //console.log('dsafsdfsdfsdf');
|
||||
// console.log(error);
|
||||
// });
|
||||
// }
|
||||
// catch (error)
|
||||
// {
|
||||
// // console.log('gggggggg');
|
||||
// }
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" >
|
||||
.ant-pagination
|
||||
{
|
||||
direction: ltr !important;
|
||||
}
|
||||
td,th{
|
||||
text-align: right !important;
|
||||
}
|
||||
/* .ant-input-search
|
||||
{
|
||||
display: none !important;
|
||||
}*/
|
||||
</style>
|
||||
@@ -0,0 +1,8 @@
|
||||
import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('contractTerminationCurrentMonth', 'لیست پرسنل');
|
||||
tbl.add(new Xtc('personnel.personel_id', 'کد پرسنلی').noSort());
|
||||
tbl.add(new Xtc('personnel.name', 'نام و نام خانوادگی').noSort())
|
||||
tbl.add(new Xtc('start_atj', 'تاریخ شروع قرارداد').noSort())
|
||||
tbl.add(new Xtc('end_atj', 'تاریخ اتمام قرارداد').noSort())
|
||||
export default tbl;
|
||||
@@ -0,0 +1,8 @@
|
||||
import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('contractTerminationPastMonth', 'لیست پرسنل');
|
||||
tbl.add(new Xtc('personnel.personel_id', 'کد پرسنلی').noSort());
|
||||
tbl.add(new Xtc('personnel.name', 'نام و نام خانوادگی').noSort())
|
||||
tbl.add(new Xtc('start_atj', 'تاریخ شروع قرارداد').noSort())
|
||||
tbl.add(new Xtc('end_atj', 'تاریخ اتمام قرارداد').noSort())
|
||||
export default tbl;
|
||||
@@ -0,0 +1,7 @@
|
||||
import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('personelCurrentMonth', 'لیست پرسنل');
|
||||
tbl.add(new Xtc('personel_id', 'کد پرسنلی').noSort());
|
||||
tbl.add(new Xtc('name', 'نام و نام خانوادگی').noSort())
|
||||
tbl.add(new Xtc('caj', 'تاریخ استخدام').noSort())
|
||||
export default tbl;
|
||||
@@ -0,0 +1,8 @@
|
||||
import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('personelContactEndCurrentMonth', 'لیست پرسنل');
|
||||
tbl.add(new Xtc('personnel.personel_id', 'کد پرسنلی').noSort());
|
||||
tbl.add(new Xtc('personnel.name', 'نام و نام خانوادگی').noSort())
|
||||
tbl.add(new Xtc('start_atj', 'تاریخ شروع قرارداد').noSort())
|
||||
tbl.add(new Xtc('end_atj', 'تاریخ اتمام قرارداد').noSort())
|
||||
export default tbl;
|
||||
@@ -0,0 +1,8 @@
|
||||
import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('personelContactEndNextMonth', 'لیست پرسنل');
|
||||
tbl.add(new Xtc('personnel.personel_id', 'کد پرسنلی').noSort());
|
||||
tbl.add(new Xtc('personnel.name', 'نام و نام خانوادگی').noSort())
|
||||
tbl.add(new Xtc('start_atj', 'تاریخ شروع قرارداد').noSort())
|
||||
tbl.add(new Xtc('end_atj', 'تاریخ اتمام قرارداد').noSort())
|
||||
export default tbl;
|
||||
@@ -0,0 +1,8 @@
|
||||
import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('personelContactEndPastMonth', 'لیست پرسنل');
|
||||
tbl.add(new Xtc('personnel.personel_id', 'کد پرسنلی').noSort());
|
||||
tbl.add(new Xtc('personnel.name', 'نام و نام خانوادگی').noSort())
|
||||
tbl.add(new Xtc('start_atj', 'تاریخ شروع قرارداد').noSort())
|
||||
tbl.add(new Xtc('end_atj', 'تاریخ اتمام قرارداد').noSort())
|
||||
export default tbl;
|
||||
@@ -0,0 +1,7 @@
|
||||
import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('personelPastMonth', 'لیست پرسنل');
|
||||
tbl.add(new Xtc('personel_id', 'کد پرسنلی').noSort());
|
||||
tbl.add(new Xtc('name', 'نام و نام خانوادگی').noSort())
|
||||
tbl.add(new Xtc('caj', 'تاریخ استخدام').noSort())
|
||||
export default tbl;
|
||||
+1039
-644
File diff suppressed because it is too large
Load Diff
@@ -2,8 +2,8 @@ import XTbl, {Xtc} from '../../components/x-table/index';
|
||||
|
||||
const tbl = new XTbl('http://hr.asco-intl.com/back/public/api/personnel', 'لیست پرسنل');
|
||||
tbl.add(new Xtc('name', 'نام و نام خانوادگی').filterText());
|
||||
tbl.add(new Xtc('fname', 'کد پرسنلی').filterText())
|
||||
tbl.add(new Xtc('id', 'شماره بیمه').filterText())
|
||||
tbl.add(new Xtc('personel_id', 'کد پرسنلی').filterText())
|
||||
tbl.add(new Xtc('insurance_no', 'شماره بیمه').filterText())
|
||||
tbl.add(new Xtc('ncode', 'کد ملی').filterText())
|
||||
tbl.add(new Xtc('caj', 'ثبت نام').filterDate().noSort())
|
||||
tbl.add(new Xtc('uaj', 'به روز رسانی').filterText().noSort())
|
||||
|
||||
+139
-122
@@ -35,7 +35,6 @@
|
||||
</x-table>
|
||||
|
||||
<a-modal :width="1000" v-model="showMosahebeModal" title="مشاهده مصاحبه ها" >
|
||||
|
||||
<div v-if="is_skeleton">
|
||||
<ASkeleton/>
|
||||
</div>
|
||||
@@ -56,12 +55,12 @@
|
||||
{{ item.interviewer }}
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="وضعیت">
|
||||
{{ item.type }}
|
||||
{{ item.sts_str }}
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
<a-card title="جزییات">
|
||||
<a-list>
|
||||
<a-list-item v-for="element,index in item.result" :key="index" v-if="item.result">
|
||||
<a-card title="جزییات" >
|
||||
<a-list >
|
||||
<a-list-item v-for="element,index in item.result" :key="index" v-if="item.result" style="direction: rtl">
|
||||
<div class="flex w-full flex-col">
|
||||
<div class="flex justify-between w-full items-center">
|
||||
<h3>{{title_interview[index]}}</h3>
|
||||
@@ -86,7 +85,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<template slot="footer">
|
||||
<a-button key="back" @click="showMosahebeModal=false">
|
||||
بستن
|
||||
@@ -96,27 +94,22 @@
|
||||
</a-modal>
|
||||
|
||||
<a-modal force-render :width="990" v-model="showAddMosahebeModal" title="ثبت مصاحبه">
|
||||
|
||||
<template slot="footer">
|
||||
|
||||
<a-button v-if="current < 2" type="primary" @click="savefromMosahebe">
|
||||
بعدی
|
||||
</a-button>
|
||||
<a-button
|
||||
v-if="current == 2"
|
||||
type="primary"
|
||||
@click="savefromMosahebe"
|
||||
>
|
||||
@click="savefromMosahebe">
|
||||
ثبت اطلاعات
|
||||
</a-button>
|
||||
<a-button v-if="current > 0" style="margin-left: 8px" @click="prev">
|
||||
قبلی
|
||||
</a-button>
|
||||
|
||||
</template>
|
||||
|
||||
<div>
|
||||
<a-steps :current="current" style="direction: ltr">
|
||||
<a-steps :current="current" style="direction:rtl">
|
||||
<a-step title="ثبت تاریخ و مصاحبه کننده" />
|
||||
<a-step title="ثبت جزئیات" />
|
||||
<a-step title="ایجاد پرونده" />
|
||||
@@ -139,13 +132,13 @@
|
||||
</a-form-item>
|
||||
<date-picker
|
||||
:auto-submit="true"
|
||||
color="#4f72ab"
|
||||
color="#1DA57A"
|
||||
v-model="interview_at"
|
||||
element="interview_at"
|
||||
/>
|
||||
</div>
|
||||
<a-form-item label="نام مصاحبه کننده">
|
||||
<a-input autocomplete="off" v-decorator="['interviewer',{rules: [{ required: true, message: 'وارد کردن شغل الزامی است' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['interviewer',{rules: [{ required: true, message: 'نام مصاحبه کننده را وارد نمایید' }]}]"/>
|
||||
</a-form-item>
|
||||
</div>
|
||||
</a-card>
|
||||
@@ -162,14 +155,14 @@
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="توضیحات">
|
||||
<a-textarea
|
||||
<textarea class="ant-input"
|
||||
placeholder=""
|
||||
v-decorator="['result_1.desc']"
|
||||
:auto-size="{ minRows: 2, maxRows: 6 }"
|
||||
/>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="نتیجه">
|
||||
<!--<a-form-item label="نتیجه">
|
||||
<a-radio-group v-decorator="['result_1.sts']">
|
||||
<a-radio :value="-1">
|
||||
رد شده
|
||||
@@ -179,7 +172,7 @@
|
||||
</a-radio>
|
||||
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-form-item>-->
|
||||
|
||||
</a-card>
|
||||
<br/>
|
||||
@@ -190,14 +183,14 @@
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="توضیحات">
|
||||
<a-textarea
|
||||
<textarea class="ant-input"
|
||||
placeholder=""
|
||||
v-decorator="['result_2.desc']"
|
||||
:auto-size="{ minRows: 2, maxRows: 6 }"
|
||||
/>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="نتیجه">
|
||||
<!-- <a-form-item label="نتیجه">
|
||||
<a-radio-group v-decorator="['result_2.sts']">
|
||||
<a-radio :value="-1">
|
||||
رد شده
|
||||
@@ -207,7 +200,7 @@
|
||||
</a-radio>
|
||||
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-form-item>-->
|
||||
|
||||
</a-card>
|
||||
<br/>
|
||||
@@ -219,7 +212,8 @@
|
||||
|
||||
<a-form-item label="توضیحات">
|
||||
|
||||
<a-textarea
|
||||
<textarea
|
||||
class="ant-input"
|
||||
placeholder=""
|
||||
v-decorator="['result_3.desc']"
|
||||
:auto-size="{ minRows: 2, maxRows: 6 }"
|
||||
@@ -227,7 +221,7 @@
|
||||
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="نتیجه">
|
||||
<!-- <a-form-item label="نتیجه">
|
||||
<a-radio-group v-decorator="['result_3.sts']">
|
||||
<a-radio :value="-1">
|
||||
رد شده
|
||||
@@ -237,7 +231,7 @@
|
||||
</a-radio>
|
||||
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-form-item>-->
|
||||
|
||||
</a-card>
|
||||
<br/>
|
||||
@@ -249,14 +243,14 @@
|
||||
|
||||
<a-form-item label="توضیحات">
|
||||
|
||||
<a-textarea
|
||||
<textarea class="ant-input"
|
||||
placeholder=""
|
||||
v-decorator="['result_4.desc']"
|
||||
:auto-size="{ minRows: 2, maxRows: 6 }"
|
||||
/>
|
||||
|
||||
</a-form-item>
|
||||
|
||||
<!--
|
||||
<a-form-item label="نتیجه">
|
||||
<a-radio-group v-decorator="['result_4.sts']">
|
||||
<a-radio :value="-1">
|
||||
@@ -267,7 +261,7 @@
|
||||
</a-radio>
|
||||
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-form-item>-->
|
||||
|
||||
</a-card>
|
||||
<br/>
|
||||
@@ -279,7 +273,7 @@
|
||||
|
||||
<a-form-item label="توضیحات">
|
||||
|
||||
<a-textarea
|
||||
<textarea class="ant-input"
|
||||
placeholder=""
|
||||
v-decorator="['result_5.desc']"
|
||||
:auto-size="{ minRows: 2, maxRows: 6 }"
|
||||
@@ -287,7 +281,7 @@
|
||||
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="نتیجه">
|
||||
<!-- <a-form-item label="نتیجه">
|
||||
<a-radio-group v-decorator="['result_5.sts']">
|
||||
<a-radio :value="-1">
|
||||
رد شده
|
||||
@@ -297,25 +291,27 @@
|
||||
</a-radio>
|
||||
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-form-item>-->
|
||||
|
||||
</a-card>
|
||||
|
||||
</div>
|
||||
|
||||
<div v-show="current==2">
|
||||
|
||||
<a-form-item label="نتیجه کلی مصاحبه">
|
||||
<a-radio-group v-decorator="['sts']">
|
||||
<a-radio-group v-decorator="['sts',{rules: [{ required: true, message: 'نتیجه مصاحبه را انتخاب نمایید' }]}]">
|
||||
<a-radio :value="-1">
|
||||
رد شده
|
||||
</a-radio>
|
||||
<a-radio :value="1">
|
||||
قبول
|
||||
</a-radio>
|
||||
<a-radio :value="2">
|
||||
الویت دوم
|
||||
</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-alert message="توجه داشته باشید که در صورت قبول انتخاب کردن نتیجه کلی مصاحبه برای فرد مورد نظر کد پرسنلی ایجاد خواهد شد." type="warning" />
|
||||
<!-- <a-alert message="توجه داشته باشید که در صورت قبول انتخاب کردن نتیجه کلی مصاحبه برای فرد مورد نظر کد پرسنلی ایجاد خواهد شد." type="warning" />-->
|
||||
|
||||
</div>
|
||||
|
||||
@@ -345,72 +341,80 @@
|
||||
<div>شغل متقاضی : {{ personalInformation.job_title }}</div>
|
||||
<div>نام پدر : {{ personalInformation.father_name }}</div>
|
||||
<div>تاریخ تولد : {{ personalInformation.birth_date }}</div>
|
||||
<div>جنسیت : {{ personalInformation.gender }}</div>
|
||||
<div>وضعیت تاهل : {{personalInformation.marriage_sts }}</div>
|
||||
<div>جنسیت : {{ personalInformation.gender_str }}</div>
|
||||
<div>وضعیت تاهل : {{personalInformation.marriage_sts_str }}</div>
|
||||
<div>شماره شناسنامه : {{ personalInformation.iden_id }}</div>
|
||||
<div>سریال شناسنامه : {{ personalInformation.iden_serial }}</div>
|
||||
<div>محل صدور : {{ personalInformation.iden_place }}</div>
|
||||
<div>محل تولد : {{ personalInformation.birth_place }}</div>
|
||||
<div>وضعیت مسکن : {{ personalInformation.record }}</div>
|
||||
<div>آدرس : {{ personalInformation.address }}</div>
|
||||
<div>وضعیت مسکن : {{ personalInformation.house_sts_str }}</div>
|
||||
<div>ایمیل : {{ personalInformation.email }}</div>
|
||||
<div>تلفن ثابت : {{ personalInformation.phone }}</div>
|
||||
<div>شماره بیمه : {{ personalInformation.name }}</div>
|
||||
<div>شماره بیمه : {{ personalInformation.insurance_no }}</div>
|
||||
<div>تلفن ضروری : {{ personalInformation.phone_emergency }}</div>
|
||||
<div>نام فرد مرتبط : {{ personalInformation.phone_emergency_related }}</div>
|
||||
<div>نسبت فرد : </div>
|
||||
|
||||
<div>نام فرد مرتبط : {{ personalInformation.phone_emergency_name }}</div>
|
||||
<div>نسبت فرد : {{ personalInformation.phone_emergency_related }}</div>
|
||||
<div>حقوق درخواستی : {{ personalInformation.requested_salary }}</div>
|
||||
<div class="col-span-2">شماره حساب بانک پاسارگاد : {{ personalInformation.pasargad_bank_number }}</div>
|
||||
<div class="col-span-3">آدرس : {{ personalInformation.address }}</div>
|
||||
</div>
|
||||
</a-card>
|
||||
<br/>
|
||||
|
||||
<!-- <a-card title="اطلاعات خانوادگی" :bordered="true" >
|
||||
<div class="grid grid-cols-3 gap-4" v-if="personalDetails.family[0]">
|
||||
<div>مقطع : {{ personalDetails.pro[0].university }}</div>
|
||||
<div>دانشگاه : {{ personalDetails.pro[0].university }}</div>
|
||||
<div>رشته تحصیلی: {{ personalDetails.pro[0].title }}</div>
|
||||
<div>گرایش: {{ personalDetails.pro[0].trend }}</div>
|
||||
<div>سال شروع: {{ personalDetails.pro[0].start_at }}</div>
|
||||
<div>سال خاتمه: {{ personalDetails.pro[0].end_at }}</div>
|
||||
|
||||
</div>
|
||||
</a-card>-->
|
||||
<br/>
|
||||
|
||||
<a-card title="اطلاعات تحصیلی" :bordered="true" >
|
||||
<div class="grid grid-cols-3 gap-4" v-if="personalDetails.pro && personalDetails.pro[0] ">
|
||||
<div>مقطع : {{ personalDetails.pro[0].university }}</div>
|
||||
<div>دانشگاه : {{ personalDetails.pro[0].university }}</div>
|
||||
<div>رشته تحصیلی: {{ personalDetails.pro[0].title }}</div>
|
||||
<div>گرایش: {{ personalDetails.pro[0].trend }}</div>
|
||||
<div>سال شروع: {{ personalDetails.pro[0].start_at }}</div>
|
||||
<div>سال خاتمه: {{ personalDetails.pro[0].end_at }}</div>
|
||||
|
||||
<a-card title="اطلاعات خانوادگی" :bordered="true" >
|
||||
<template v-for="(item,index) in personalDetails['family']" >
|
||||
<div class="grid grid-cols-3 gap-1" >
|
||||
<div>نام : {{ item.name }}</div>
|
||||
<div>نسبت : {{ item.relation }}</div>
|
||||
<div>مقطع : {{ item.edu_level_str }}</div>
|
||||
<div> رشته تحصیلی : {{ item.edu_title }}</div>
|
||||
<div> شغل : {{ item.job }}</div>
|
||||
</div>
|
||||
<a-divider />
|
||||
</template>
|
||||
</a-card>
|
||||
<br/>
|
||||
<a-card title="اطلاعات تحصیلی" :bordered="true" >
|
||||
<template v-for="(item,index) in personalDetails['education']">
|
||||
<div class="grid grid-cols-3 gap-4" >
|
||||
<div>مقطع : {{ item.level_str }}</div>
|
||||
<div>دانشگاه : {{ item.university }}</div>
|
||||
<div>رشته تحصیلی: {{ item.title }}</div>
|
||||
<div>گرایش: {{ item.trend }}</div>
|
||||
<div>سال شروع: {{ item.start_at }}</div>
|
||||
<div>سال خاتمه: {{ item.end_at }}</div>
|
||||
</div>
|
||||
<a-divider />
|
||||
</template>
|
||||
</a-card>
|
||||
<br/>
|
||||
<a-card title="سوابق آموزشی" :bordered="true" >
|
||||
<template v-for="(item,index) in personalDetails['traning']">
|
||||
<div class="grid grid-cols-3 gap-4">
|
||||
<div>مرکز برگزاری : {{ item.university }}</div>
|
||||
<div>عنوان دوره : {{ item.title }}</div>
|
||||
<div>سال : {{ item.start_at }}</div>
|
||||
<div>امکان ارائه گواهینامه : {{ item.has_certificate_str }}</div>
|
||||
</div>
|
||||
<a-divider />
|
||||
</template>
|
||||
</a-card>
|
||||
<br/>
|
||||
<!-- <a-card title="سوابق آموزشی" :bordered="true" >
|
||||
|
||||
<div class="grid grid-cols-3 gap-4" v-if="personalDetails.pro[1]">
|
||||
<div>مرکز برگزاری : {{ personalDetails.pro[1].university }}</div>
|
||||
<div>عنوان دوره : {{ personalDetails.pro[1].title }}</div>
|
||||
<div>سال : {{ personalDetails.pro[1].start_at }}</div>
|
||||
<a-card title="سوابق کاری" :bordered="true" >
|
||||
<template v-for="(item,index) in personalDetails['jobs_history']">
|
||||
<div class="grid grid-cols-4 gap-4" >
|
||||
<div>نام سازمان : {{ item.university }}</div>
|
||||
<div>عنوان شغل : {{ item.title }}</div>
|
||||
<div>سال شروع : {{ item.start_at }}</div>
|
||||
<div v-if="item.end_at">سال خاتمه : {{ item.end_at }}</div>
|
||||
<div v-else>سال خاتمه : تاکنون</div>
|
||||
<!--<div>تاکنون : {{ item.end_at }}</div>-->
|
||||
<div class="col-span-2">دلیل خاتمه : {{ item.note }}</div>
|
||||
</div>
|
||||
</a-card>-->
|
||||
<br/>
|
||||
|
||||
<!--<a-card title="سوابق کاری" :bordered="true" >
|
||||
<div class="grid grid-cols-3 gap-4" v-if="personalDetails.pro[2]">
|
||||
<div>نام سازمان : {{ personalDetails.pro[2].university }}</div>
|
||||
<div>عنوان شغل : {{ personalDetails.pro[2].title }}</div>
|
||||
<div>سال شروع : {{ personalDetails.pro[2].start_at }}</div>
|
||||
<div>سال خاتمه : {{ personalDetails.pro[2].end_at }}</div>
|
||||
</div>
|
||||
</a-card>-->
|
||||
|
||||
<a-divider />
|
||||
</template>
|
||||
</a-card>
|
||||
</a-modal>
|
||||
|
||||
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
@@ -470,35 +474,35 @@
|
||||
savefromMosahebe(e) {
|
||||
e.preventDefault();
|
||||
this.fromMosahebe.validateFields(async(err, values) => {
|
||||
if (!err) {
|
||||
|
||||
try{
|
||||
if(this.current < 2)
|
||||
{
|
||||
this.next();
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log(values,'values')
|
||||
const id = this.row_id
|
||||
values.interview_at = this.interview_at
|
||||
values.id = id
|
||||
await axios.post('proposal/update',values)
|
||||
this.showAddMosahebeModal = false
|
||||
this.$ntSet('اطلاعات با موفقیت کامل شد')
|
||||
this.fromMosahebe.resetFields()
|
||||
}
|
||||
}catch (e) {
|
||||
this.$ntSetError()
|
||||
throw e
|
||||
}finally {
|
||||
|
||||
}
|
||||
|
||||
try{
|
||||
if(this.current < 2)
|
||||
{
|
||||
this.next();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!err) {
|
||||
console.log(values,'values')
|
||||
const id = this.row_id
|
||||
values.interview_at = this.interview_at
|
||||
values.id = id
|
||||
await axios.post('proposal/update',values)
|
||||
this.showAddMosahebeModal = false
|
||||
this.current=0;
|
||||
//this.fromMosahebe.resetFields();
|
||||
this.$ntSet('اطلاعات با موفقیت کامل شد')
|
||||
this.fromMosahebe.resetFields();
|
||||
}
|
||||
}
|
||||
}catch (e) {
|
||||
this.$ntSetError()
|
||||
throw e
|
||||
}finally {
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
interview(e) {
|
||||
/* interview(e) {
|
||||
e.preventDefault();
|
||||
this.fromMosahebe.validateFields(async (err, values) => {
|
||||
if (!err) {
|
||||
@@ -513,7 +517,7 @@
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
},*/
|
||||
next() {
|
||||
this.current++;
|
||||
},
|
||||
@@ -521,11 +525,12 @@
|
||||
this.current--;
|
||||
},
|
||||
showDetails(record) {
|
||||
console.log('aaaaa',record);
|
||||
axios.post('/proposal/details', {id:record.id})
|
||||
.then((res)=>{
|
||||
this.personalInformation=record;
|
||||
this.personalDetails=res.data;
|
||||
console.log(this.personalDetails);
|
||||
// console.log(this.personalDetails);
|
||||
this.showInformationModal=true;
|
||||
}).catch((error)=>{
|
||||
this.$message.error('خطا در دریافت اطلاعات');
|
||||
@@ -535,9 +540,9 @@
|
||||
let self = this
|
||||
this.$confirm({
|
||||
title: 'آیا مطمئن به استخدام هستید ؟',
|
||||
content: 'در صورتی که گزینه بله را انتخاب کنید کد پرسنلی برای فرد درخواست کننده در سیستم اختصاص خواهد یافت',
|
||||
content: 'در صورتی که گزینه تایید را انتخاب نمایید فرد مورد نظر به عنوان پرسنل در سیستم ثبت می شود ',
|
||||
cancelText:'انصراف',
|
||||
okText:'بله',
|
||||
okText:'تایید',
|
||||
onOk() {
|
||||
|
||||
// this.$message.success('درخواست شما ثبت شد.');
|
||||
@@ -555,7 +560,7 @@
|
||||
}
|
||||
},
|
||||
onCancel() {
|
||||
console.log('Cancel');
|
||||
//console.log('Cancel');
|
||||
},
|
||||
//class: 'test',
|
||||
});
|
||||
@@ -570,13 +575,25 @@
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.ant-modal-mask
|
||||
{
|
||||
z-index: 9999999 !important;
|
||||
}
|
||||
.ant-modal-wrap
|
||||
{
|
||||
z-index: 999999999 !important;
|
||||
}
|
||||
.ant-modal-mask
|
||||
{
|
||||
z-index: 9999999 !important;
|
||||
}
|
||||
.ant-modal-wrap
|
||||
{
|
||||
z-index: 999999999 !important;
|
||||
}
|
||||
ant-modal-title{
|
||||
margin-right: 1rem;
|
||||
}
|
||||
.ant-steps-item-title::after{
|
||||
/*left: unset !important;*/
|
||||
right:100% !important;
|
||||
}
|
||||
|
||||
/*.ant-modal-close
|
||||
{
|
||||
left: 0 !important;
|
||||
}*/
|
||||
|
||||
</style>
|
||||
|
||||
+163
-114
@@ -6,58 +6,51 @@
|
||||
</div>
|
||||
<vx-card class="mx-auto mt-10">
|
||||
|
||||
<a-steps :current="current" style="direction: ltr">
|
||||
<a-steps :current="current" >
|
||||
<a-step title="مرحله اول" />
|
||||
<a-step title="مرحله دوم" />
|
||||
<a-step title="مرحله سوم" />
|
||||
<a-step title="مرحله سوم" />
|
||||
</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">
|
||||
|
||||
|
||||
|
||||
<a-form :form="formFirst">
|
||||
<!-- <a-form-item label="نام و نام خانوادگی">
|
||||
<!–<a-input autocomplete="off" v-decorator="['name2',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />–>
|
||||
<!– <a-input v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" class="ant-input" placeholder="Basic usage" />–>
|
||||
<!–<input type="text" v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" class="ant-input" >–>
|
||||
<!– <vs-input v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />–>
|
||||
</a-form-item>-->
|
||||
|
||||
<div v-show="current==0" class="mt-4" >
|
||||
|
||||
|
||||
<a-form-item label="نام و نام خانوادگی">
|
||||
<!--<a-input autocomplete="off" v-decorator="['name2',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />-->
|
||||
<a-input v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" class="ant-input" placeholder="Basic usage" />
|
||||
<!--<input type="text" v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" class="ant-input" >-->
|
||||
<!-- <vs-input v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />-->
|
||||
</a-form-item>
|
||||
|
||||
<div v-show="current==0" class="mt-4">
|
||||
<a-button type="primary" @click="addCity()">
|
||||
<a-button type="primary" @click="addCity()">
|
||||
افزودن ردیف
|
||||
</a-button>
|
||||
<a-card :bordered="true" class="mt-3" v-for="(item,index) in jobs">
|
||||
<a-card :bordered="true" class="mt-3" v-for="(item,index) in jobsList">
|
||||
<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
|
||||
v-decorator="[`jobs[${index}].city`,{rules: [{ required: true, message: 'انتخاب شهر الزامی است.' }]}]"
|
||||
:filter-option="filterOption"
|
||||
show-search
|
||||
v-decorator="[`jobs[${index}].city`,{rules: [{ required: true, message: 'انتخاب شهر الزامی است.' }]}]"
|
||||
autocomplete="off"
|
||||
placeholder="لطفا شهر را انتخاب کنید."
|
||||
>
|
||||
@select="getJob(index)"
|
||||
notFoundContent="اطلاعاتی یافت نشد"
|
||||
placeholder="لطفا شهر را انتخاب کنید." >
|
||||
<a-select-option v-for="item in city" :value="item.id">
|
||||
{{ item.title }}
|
||||
</a-select-option>
|
||||
@@ -65,13 +58,20 @@
|
||||
</a-form-item>
|
||||
</div>
|
||||
<a-form-item label="انتخاب شغل">
|
||||
<a-select autocomplete="off" aria-placeholder="لطفا شغل خود را انتخاب کنید." v-decorator="[`jobs[${index}].job`,{rules: [{ required: true, message: 'انتخاب شغل الزامی است.' }]}]">
|
||||
<a-select-option v-for="item in job" :value="item.id">
|
||||
<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">
|
||||
{{ item.title }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<a-button type="danger" @click="deleteCity(index)" v-if="index >0" >
|
||||
حذف
|
||||
</a-button>
|
||||
</a-card>
|
||||
</div>
|
||||
</a-form>
|
||||
@@ -84,32 +84,38 @@
|
||||
<div class="grid sm:grid-cols-1 md:grid-cols-4 lg:grid-cols-4 gap-4 mt-5">
|
||||
|
||||
<a-form-item label="نام و نام خانوادگی">
|
||||
<a-input autocomplete="off" v-decorator="['name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />
|
||||
<!-- <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" >
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="نام پدر">
|
||||
<a-input autocomplete="off" v-decorator="['father_name',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />
|
||||
<!--<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: 'نام پدر را وارد نمایید' }]}]">
|
||||
</a-form-item>
|
||||
|
||||
<div>
|
||||
<a-form-item label="تاریخ تولد">
|
||||
<a-form-item label="تاریخ تولد" :required="birth_day ? false:true" :validateStatus=" birth_day ? '' : 'error'" :help=" birth_day ? '':'تاریخ تولد را وارد نمایید'" >
|
||||
<!-- birth_date-->
|
||||
<a-input
|
||||
v-model="birth_day"
|
||||
id="birth_day"
|
||||
autocomplete="off"
|
||||
<input
|
||||
class="ant-input"
|
||||
readonly="true"
|
||||
v-model="birth_day"
|
||||
id="birth_day"
|
||||
autocomplete="off"
|
||||
/>
|
||||
<!-- v-decorator="['birthdate',{initialValue: null,rules: [{ required: true, message: 'تاریخ تولد را وارد نمایید' }]}]"-->
|
||||
</a-form-item>
|
||||
<date-picker
|
||||
:auto-submit="true"
|
||||
color="#4f72ab"
|
||||
color="#1da57a"
|
||||
v-model="birth_day"
|
||||
element="birth_day"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<a-form-item label="کد ملی">
|
||||
<a-input autocomplete="off" v-decorator="['ncode',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />
|
||||
<!--<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" >
|
||||
</a-form-item>
|
||||
|
||||
</div>
|
||||
@@ -136,11 +142,11 @@
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item label="شماره حساب بانک پاسارگاد">
|
||||
<a-input autocomplete="off" v-decorator="['pasargad_bank_number',{initialValue: null}]" />
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['pasargad_bank_number',{initialValue: null}]" />
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="حقوق درخواستی">
|
||||
<a-input autocomplete="off" v-decorator="['requested_salary',{initialValue: null}]" />
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['requested_salary',{initialValue: null,rules: [{ required: true, message: 'حقوق درخواستی را وارد نمایید' }]}]" />
|
||||
</a-form-item>
|
||||
|
||||
</div>
|
||||
@@ -151,7 +157,7 @@
|
||||
|
||||
<div class="grid sm:grid-cols-1 md:grid-cols-4 lg:grid-cols-4 gap-4">
|
||||
<a-form-item label="شماره شناسنامه">
|
||||
<a-input autocomplete="off" v-decorator="['iden_code',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['iden_code',{initialValue: null,rules: [{ required: true, message: 'شماره شناسنامه را وارد نمایید' }]}]" />
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="سریال شناسنامه">
|
||||
@@ -161,7 +167,7 @@
|
||||
{{ item }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
<a-input v-decorator="['iden_no_right',{initialValue: null}]" autocomplete="off" style="width: 70%;direction: rtl" />
|
||||
<input class="ant-input" v-decorator="['iden_no_right',{initialValue: null}]" autocomplete="off" style="width: 77%;direction: rtl" />
|
||||
</a-input-group>
|
||||
</a-form-item>
|
||||
<!-- <a-input-group compact>
|
||||
@@ -178,11 +184,11 @@
|
||||
|
||||
|
||||
<a-form-item label="محل صدور">
|
||||
<a-input autocomplete="off" v-decorator="['iden_where',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['iden_where',{initialValue: null,rules: [{ required: true, message: 'محل صدور را وارد نمایید' }]}]" />
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="محل تولد">
|
||||
<a-input autocomplete="off" v-decorator="['birth_where',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['birth_where',{initialValue: null,rules: [{ required: true, message: 'محل تولد را وارد نمایید' }]}]" />
|
||||
</a-form-item>
|
||||
</div>
|
||||
</a-card>
|
||||
@@ -190,7 +196,7 @@
|
||||
<a-card title="اطلاعات سکونت" :bordered="true" >
|
||||
|
||||
<a-form-item label="وضعیت مسکن">
|
||||
<a-radio-group style="direction: ltr" v-decorator="['house_status',{initialValue: '1'}]" button-style="solid">
|
||||
<a-radio-group style="direction: ltr" v-decorator="['house_sts',{initialValue: '1'}]" button-style="solid">
|
||||
<a-radio-button value="2">
|
||||
مستاجر
|
||||
</a-radio-button>
|
||||
@@ -201,34 +207,34 @@
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="آدرس">
|
||||
<a-input autocomplete="off" v-decorator="['address',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['address',{initialValue: null,rules: [{ required: true, message: 'آدرس را وارد نمایید' }]}]" />
|
||||
</a-form-item>
|
||||
|
||||
<div class="md:flex">
|
||||
<div class="md:w-1/4 md:pl-4">
|
||||
<a-row >
|
||||
<a-form-item label="ایمیل">
|
||||
<a-input style="direction: rtl !important;" v-decorator="['email',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]">
|
||||
<input class="ant-input" style="direction: rtl !important;" v-decorator="['email',{initialValue: null,rules: [{ required: true, message: 'ایمیل را وارد نمایید' }]}]">
|
||||
<!-- <feather-icon style="direction: ltr !important;" icon="MailIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
|
||||
</a-input>
|
||||
<!-- </a-input>-->
|
||||
</a-form-item>
|
||||
</a-row>
|
||||
</div>
|
||||
<div class="md:w-1/4 md:pl-4">
|
||||
<a-row >
|
||||
<a-form-item label="موبایل">
|
||||
<a-input autocomplete="off" v-decorator="['mobile',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" >
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['mobile',{initialValue: null,rules: [{ required: true, message: 'شماره موبایل را وارد نمایید' }]}]" >
|
||||
<!--<feather-icon style="direction: ltr !important;" icon="SmartPhoneIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
|
||||
</a-input>
|
||||
<!-- </a-input>-->
|
||||
</a-form-item>
|
||||
</a-row>
|
||||
</div>
|
||||
<div class="md:w-1/4 md:pl-4">
|
||||
<a-row >
|
||||
<a-form-item label="تلفن ثابت">
|
||||
<a-input autocomplete="off" v-decorator="['phone',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]" >
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['phone',{initialValue: null,rules: [{ required: true, message: 'تلفن ثابت را وارد نمایید' }]}]" >
|
||||
<!--<feather-icon style="direction: ltr !important;" icon="PhoneIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
|
||||
</a-input>
|
||||
<!-- </a-input>-->
|
||||
</a-form-item>
|
||||
</a-row>
|
||||
</div>
|
||||
@@ -240,27 +246,27 @@
|
||||
<div class="md:w-1/4 md:pl-4">
|
||||
<a-row >
|
||||
<a-form-item label="تلفن ضروری">
|
||||
<a-input style="direction: rtl !important;" v-decorator="['phone_emergency',{initialValue: null,rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]">
|
||||
<input class="ant-input" style="direction: rtl !important;" v-decorator="['phone_emergency',{initialValue: null,rules: [{ required: true, message: 'تلفن ضروری را وارد نمایید' }]}]">
|
||||
<!-- <feather-icon style="direction: ltr !important;" icon="MailIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
|
||||
</a-input>
|
||||
<!-- </a-input>-->
|
||||
</a-form-item>
|
||||
</a-row>
|
||||
</div>
|
||||
<div class="md:w-1/4 md:pl-4">
|
||||
<a-row >
|
||||
<a-form-item label="نام فرد">
|
||||
<a-input autocomplete="off" v-decorator="['phone_emergency_name',{initialValue: null}]" >
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['phone_emergency_name',{initialValue: null}]" >
|
||||
<!--<feather-icon style="direction: ltr !important;" icon="SmartPhoneIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
|
||||
</a-input>
|
||||
<!-- </a-input>-->
|
||||
</a-form-item>
|
||||
</a-row>
|
||||
</div>
|
||||
<div class="md:w-1/4 md:pl-4">
|
||||
<a-row >
|
||||
<a-form-item label="نسبت">
|
||||
<a-input autocomplete="off" v-decorator="['phone_emergency_related',{initialValue: null}]" >
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['phone_emergency_related',{initialValue: null}]" >
|
||||
<!--<feather-icon style="direction: ltr !important;" icon="PhoneIcon" slot="addonAfter" class="pt-1" svgClasses="w-5 h-5" />-->
|
||||
</a-input>
|
||||
<!-- </a-input>-->
|
||||
</a-form-item>
|
||||
</a-row>
|
||||
</div>
|
||||
@@ -271,25 +277,25 @@
|
||||
<a-card title="سابقه بیمه" :bordered="true" >
|
||||
|
||||
<a-form-item label="سابقه بیمه">
|
||||
<a-radio-group style="direction: ltr" v-decorator="['has_insurance',{initialValue: '1'}]" button-style="solid" @change="number_insurance">
|
||||
<a-radio-button value="1">
|
||||
<a-radio-group style="direction: ltr" v-decorator="['has_insurance',{initialValue:-1}]" button-style="solid" @change="number_insurance">
|
||||
<a-radio-button :value="1">
|
||||
دارم
|
||||
</a-radio-button>
|
||||
<a-radio-button value="-1">
|
||||
<a-radio-button :value="-1">
|
||||
ندارم
|
||||
</a-radio-button>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="شماره بیمه" v-if="has_instructor == '-1' ">
|
||||
<a-input autocomplete="off" style="width: 40%" v-decorator="['insurance_no',{initialValue: null,rules: [{ required: false, message: 'این فیلد نمیتواند خالی باشد.' }]}]" />
|
||||
<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: 'شماره بیمه را وارد نمایید' }]}]" />
|
||||
</a-form-item>
|
||||
|
||||
</a-card>
|
||||
<br/>
|
||||
<a-card title="اطلاعات خانوادگی" :bordered="true" >
|
||||
|
||||
<a-list class="mb-5" v-if="family.length > 0" :locale="{emptyText:'رکوردی وجود ندارد.'}" bordered item-layout="horizontal" >
|
||||
<a-list class="mb-5" v-if="family.length > 0" :locale="{emptyText:'اطلاعاتی برای نمایش وجود ندارد.'}" bordered item-layout="horizontal" >
|
||||
<a-list-item class="grid grid-cols-4" v-for="(item,index) in family" :key="index" >
|
||||
<div>
|
||||
<div style="direction: ltr" > نام :{{ item.name }}</div>
|
||||
@@ -331,7 +337,7 @@
|
||||
<br/>
|
||||
<a-card title="سوابق تحصیلی" :bordered="true" >
|
||||
|
||||
<a-list class="mb-5" v-if="edu.length > 0" :locale="{emptyText:'رکوردی وجود ندارد.'}" bordered item-layout="horizontal" >
|
||||
<a-list class="mb-5" v-if="edu.length > 0" :locale="{emptyText:'اطلاعاتی برای نمایش وجود ندارد.'}" bordered item-layout="horizontal" >
|
||||
<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>
|
||||
@@ -376,7 +382,7 @@
|
||||
<br/>
|
||||
<a-card title="سوابق آموزشی" :bordered="true" >
|
||||
|
||||
<a-list class="mb-5" v-if="educational.length > 0" :locale="{emptyText:'رکوردی وجود ندارد.'}" bordered item-layout="horizontal" >
|
||||
<a-list class="mb-5" v-if="educational.length > 0" :locale="{emptyText:'اطلاعاتی برای نمایش وجود ندارد.'}" bordered item-layout="horizontal" >
|
||||
<a-list-item class="grid grid-cols-3" v-for="(item,index) in educational" :key="index" >
|
||||
<div>
|
||||
<div style="direction: rtl"> مرکز برگزار کننده : {{ item.university }}</div>
|
||||
@@ -387,7 +393,7 @@
|
||||
<div style="direction: rtl">سال : {{ item.start }}</div>
|
||||
<div style="direction: rtl">
|
||||
امکان ارائه گواهینامه دارم:
|
||||
<feather-icon icon="CheckIcon" v-if="item.has_file" svgClasses="w-5 h-5 text-success"/>
|
||||
<feather-icon icon="CheckIcon" v-if="item.has_certificate" svgClasses="w-5 h-5 text-success"/>
|
||||
<feather-icon icon="XIcon" v-else svgClasses="w-5 h-5 text-danger"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -420,7 +426,7 @@
|
||||
<br/>
|
||||
<a-card title="سوابق کاری" :bordered="true" >
|
||||
|
||||
<a-list class="mb-5" v-if="work.length > 0" :locale="{emptyText:'رکوردی وجود ندارد.'}" bordered item-layout="horizontal" >
|
||||
<a-list class="mb-5" v-if="work.length > 0" :locale="{emptyText:'اطلاعاتی برای نمایش وجود ندارد.'}" bordered item-layout="horizontal" >
|
||||
<a-list-item class="grid grid-cols-4" v-for="(item,index) in work" :key="index" >
|
||||
<div>
|
||||
<div style="direction: rtl"> نام سازمان : {{ item.university }}</div>
|
||||
@@ -469,7 +475,7 @@
|
||||
<br/>
|
||||
|
||||
<a-form-item>
|
||||
<a-checkbox v-decorator="['commitment',{initialValue:false,rules: [{ required: true, message: 'تعهد الزامی است.' }]}]">
|
||||
<a-checkbox v-decorator="['commitment',{valuePropName: 'checked',initialValue: true,rules: [{ required: true, message: 'نام را وارد نمایید' }]}]">
|
||||
با آگاهی از قوانین و مقررات و صحت اطلاعات تایید میکنم.
|
||||
</a-checkbox>
|
||||
</a-form-item>
|
||||
@@ -487,8 +493,7 @@
|
||||
<a-result
|
||||
status="success"
|
||||
title="اطلاعات با موفقیت ثبت شد"
|
||||
sub-title="لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است."
|
||||
>
|
||||
sub-title="">
|
||||
<template #extra>
|
||||
<a-button @click="LoginUser">
|
||||
اتمام
|
||||
@@ -503,16 +508,16 @@
|
||||
<a-modal :visible="visibleFamily" title="اطلاعات خانوادگی" @ok="createFamily" @cancel="cancelFamily" ok-text="ایجاد" cancel-text="انصراف">
|
||||
<a-form :form="formFamily">
|
||||
<a-form-item label="نام">
|
||||
<a-input autocomplete="off" v-decorator="['name',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['name',{rules: [{ required: true, message: 'نام را وارد نمایید' }]}]"/>
|
||||
</a-form-item>
|
||||
<a-form-item label="نسبت">
|
||||
<a-input autocomplete="off" v-decorator="['relation',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['relation',{rules: [{ required: true, message: 'نسب را وارد نمایید' }]}]"/>
|
||||
</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: 'این فیلد نمیتواند خالی باشد.' }]}]"
|
||||
v-decorator="['level',{rules: [{ required: false, message: 'مقطع را وارد نمایید' }]}]"
|
||||
@change="changeGrade"
|
||||
allowClear
|
||||
>
|
||||
@@ -522,10 +527,10 @@
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="رشته تحصیلی">
|
||||
<a-input autocomplete="off" v-decorator="['edu_title',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['edu_title',{rules: [{ required: false, message: 'رشته تحصیلی را وارد نمایید' }]}]"/>
|
||||
</a-form-item>
|
||||
<a-form-item label="شغل">
|
||||
<a-input autocomplete="off" v-decorator="['job',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['job',{rules: [{ required: false, message: 'شغل را وارد نمایید' }]}]"/>
|
||||
</a-form-item>
|
||||
<!-- <a-form-item label="مقطع">
|
||||
<a-select
|
||||
@@ -570,13 +575,13 @@
|
||||
</a-form>
|
||||
</a-modal>
|
||||
|
||||
<a-modal :visible="visibleEdu" title="افزودن سابقه تحصیلی" @ok="createEdu" @cancel="cancelEdu" ok-text="ایجاد" cancel-text="انصراف">
|
||||
<a-modal :forceRender="true" :visible="visibleEdu" title="افزودن سابقه تحصیلی" @ok="createEdu" @cancel="cancelEdu" ok-text="ایجاد" cancel-text="انصراف">
|
||||
<a-form :form="formEdu">
|
||||
<a-form-item label="مقطع">
|
||||
<a-select
|
||||
class="mt-3"
|
||||
style="width: 100%;direction: rtl !important;"
|
||||
v-decorator="['level',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"
|
||||
v-decorator="['level',{rules: [{ required: true, message: 'مقطع را وارد نمایید ' }]}]"
|
||||
@change="changeGrade"
|
||||
allowClear
|
||||
>
|
||||
@@ -586,24 +591,25 @@
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="دانشگاه">
|
||||
<a-input autocomplete="off" v-decorator="['university',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-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: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-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: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['orientation',{rules: [{ required: false, 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-input-number v-decorator="['result_1.score',{initialValue: 0}]" :min="0" :max="20" />-->
|
||||
</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-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 وارد کنید.' }]}]"/>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="md:w-1/3">
|
||||
@@ -622,10 +628,10 @@
|
||||
<a-form :form="formEducational">
|
||||
|
||||
<a-form-item label="مرکز برگزار کننده">
|
||||
<a-input autocomplete="off" v-decorator="['university',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-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: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['major',{rules: [{ required: true, message: 'عنوان دوره را وارد نمایید' }]}]"/>
|
||||
</a-form-item>
|
||||
|
||||
<div class="md:flex">
|
||||
@@ -636,7 +642,7 @@
|
||||
</div>
|
||||
<div class="md:w-1/3">
|
||||
<a-form-item label="امکان ارائه گواهینامه دارم">
|
||||
<a-checkbox v-decorator="['has_file',{initialValue:false,valuePropName: 'checked'}]"/>
|
||||
<a-checkbox v-decorator="['has_certificate',{initialValue:false,valuePropName: 'checked'}]"/>
|
||||
</a-form-item>
|
||||
</div>
|
||||
</div>
|
||||
@@ -647,13 +653,13 @@
|
||||
<a-modal :visible="visibleWork" title="افزودن سابقه کاری" @ok="createWork" @cancel="cancelWork" ok-text="ایجاد" cancel-text="انصراف">
|
||||
<a-form :form="formWork">
|
||||
<a-form-item label="نام سازمان">
|
||||
<a-input autocomplete="off" v-decorator="['university',{rules: [{ required: true, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-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: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['major',{rules: [{ required: true, message: 'عنوان شغل را وارد نمایید' }]}]"/>
|
||||
</a-form-item>
|
||||
<a-form-item label="دلیل خاتمه">
|
||||
<a-input autocomplete="off" v-decorator="['note',{rules: [{ required:false, message: 'این فیلد نمیتواند خالی باشد.' }]}]"/>
|
||||
<input class="ant-input" autocomplete="off" v-decorator="['note',{rules: [{ required:is_work_check ? false : true, message: 'دلیل خاتمه را وارد نمایید' }]}]"/>
|
||||
</a-form-item>
|
||||
|
||||
<div class="md:flex">
|
||||
@@ -677,7 +683,7 @@
|
||||
</a-form>
|
||||
</a-modal>
|
||||
|
||||
<a-modal :visible="visibleAccept" title="شرایط و مقررات" @ok="visibleAccept = false" @cancel="visibleAccept = false" ok-text="باشه" cancel-text="انصراف">
|
||||
<a-modal :visible="visibleAccept" title="شرایط و مقررات" @ok="visibleAccept = false" @cancel="visibleAccept = false" ok-text="تایید" cancel-text="انصراف">
|
||||
اینجانب {{ fullName }} در تاریخ {{ date }} فرم بالا را تکمیل نموده و صحت کلیه اطلاعات تکمیل شده را تأیید می نمایم.
|
||||
</a-modal>
|
||||
|
||||
@@ -717,7 +723,8 @@
|
||||
edu:[],
|
||||
family:[],
|
||||
work:[],
|
||||
jobs:[{city:null,job:null}],
|
||||
jobsList:[{jobs:[]}],
|
||||
//jobs:[{city:null,job:null}],
|
||||
//model:[],
|
||||
educational:[],
|
||||
birth_day:'',
|
||||
@@ -746,9 +753,21 @@
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
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){
|
||||
|
||||
},*/
|
||||
addCity()
|
||||
{
|
||||
this.jobs.push({city:null,job:null})
|
||||
this.jobsList.push({jobs:[]});
|
||||
},
|
||||
number_insurance(e){
|
||||
this.has_instructor = e.target.value
|
||||
@@ -759,9 +778,9 @@
|
||||
{
|
||||
this.formFirst.validateFields(async(err, values) => {
|
||||
if (!err) {
|
||||
//this.current++;
|
||||
this.current++;
|
||||
|
||||
console.log(values,'first')
|
||||
// console.log(values,'first')
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -795,28 +814,46 @@
|
||||
}
|
||||
|
||||
},
|
||||
async getCity(){
|
||||
getCity(){
|
||||
try{
|
||||
const {data} = await axios.get('/register/cities')
|
||||
this.city = data
|
||||
//const {data} = await axios.get('/register/cities')
|
||||
axios.get('/register/cities').then((res)=>{
|
||||
this.city = res.data;
|
||||
}).catch((error)=>{
|
||||
this.$ntSetError()
|
||||
});
|
||||
}catch (e) {
|
||||
this.$ntSetError()
|
||||
}
|
||||
},
|
||||
async getDate(){
|
||||
getDate(){
|
||||
try{
|
||||
const {data} = await axios.get('/register/date')
|
||||
this.date = data
|
||||
//const {data} = await axios.get('/register/date')
|
||||
axios.get('/register/date').then((res)=>{
|
||||
this.date = res.data;
|
||||
}).catch((error)=>{
|
||||
this.$ntSetError()
|
||||
});;
|
||||
|
||||
}catch (e) {
|
||||
this.$ntSetError()
|
||||
}
|
||||
},
|
||||
async getJob(){
|
||||
try{
|
||||
const {data} = await axios.post('/register/jobs')
|
||||
this.job = data
|
||||
}catch (e) {
|
||||
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) {
|
||||
this.$ntSetError()
|
||||
}
|
||||
}
|
||||
},
|
||||
openModalEdu(){
|
||||
@@ -1034,20 +1071,32 @@
|
||||
computed:{
|
||||
|
||||
},
|
||||
mounted() {
|
||||
this.getCity()
|
||||
this.getJob()
|
||||
created() {
|
||||
this.getCity()
|
||||
this.getJob()
|
||||
},
|
||||
mounted() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
[dir=rtl] .anticon.anticon-plus{
|
||||
position: relative;
|
||||
top: 4px;
|
||||
left: 5px;
|
||||
}
|
||||
.ant-modal-title{
|
||||
margin-right: 1rem;
|
||||
}
|
||||
<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>
|
||||
|
||||
@@ -18,7 +18,6 @@ module.exports = {
|
||||
configureWebpack: {
|
||||
module: {
|
||||
rules: [
|
||||
|
||||
{
|
||||
test: /\.less$/,
|
||||
loader: 'less-loader',
|
||||
|
||||
Reference in New Issue
Block a user