update 1399-12-24

This commit is contained in:
AliGhasami
2021-03-14 09:40:47 +03:30
parent eea2705893
commit 1692a9973e
27 changed files with 2283 additions and 1124 deletions
+387 -86
View File
@@ -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">
&lt;!&ndash; <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>&ndash;&gt;
<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>
&lt;!&ndash;
<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>&ndash;&gt;
</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">
&lt;!&ndash; <a-button type="primary">
Primary
</a-button>-->
</a-button>&ndash;&gt;
</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>
+8
View File
@@ -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;