|
@@ -13,23 +13,26 @@
|
|
<ion-content>
|
|
<ion-content>
|
|
<form autocomplete="off">
|
|
<form autocomplete="off">
|
|
<div class="bw-vue-form">
|
|
<div class="bw-vue-form">
|
|
- <ion-list>
|
|
|
|
<div class="form-title">基本信息</div>
|
|
<div class="form-title">基本信息</div>
|
|
<div class="form-input">
|
|
<div class="form-input">
|
|
<ion-label>岗位名称<span class="danger">*</span></ion-label>
|
|
<ion-label>岗位名称<span class="danger">*</span></ion-label>
|
|
- <ion-input placeholder="请选择岗位" label-placement="stacked" :clear-input="true"
|
|
|
|
- v-model="dataModel.professionName" style="width: 88%;float:left;">
|
|
|
|
- </ion-input>
|
|
|
|
- <picker :ProfessionID="dataModel.professionID" aria-disabled="false" @SetProfessionID="onSetProfessionID" style="width: 10%;float:left;"></picker>
|
|
|
|
-<!-- <ion-note slot="error">请选择岗位</ion-note>-->
|
|
|
|
|
|
+ <div>
|
|
|
|
+ <ion-input placeholder="请选择岗位" label-placement="stacked" style="float: left;width:78%;"
|
|
|
|
+ v-model="dataModel.professionName" class="custom">
|
|
|
|
+ </ion-input>
|
|
|
|
+ <ion-item style="width:22%;float: right;padding:0px;margin: 0px;">
|
|
|
|
+ <post-selection :ProfessionID="dataModel.professionID" @SetProfessionID="onSetProfessionID"></post-selection>
|
|
|
|
+ </ion-item>
|
|
|
|
+ </div>
|
|
|
|
+ <ion-note v-show="isCommit&&v$.dataModel.professionID.$error" class="danger" >请选择岗位</ion-note>
|
|
</div>
|
|
</div>
|
|
<div style="width: 100%;overflow: hidden;"></div>
|
|
<div style="width: 100%;overflow: hidden;"></div>
|
|
<div class="form-input">
|
|
<div class="form-input">
|
|
- <ion-label>招聘数量(人)<span class="danger">*</span></ion-label>
|
|
|
|
|
|
+ <ion-label>招聘数量(人)<span class="danger">*</span></ion-label>
|
|
<ion-input type="number" placeholder="请输入招聘数量" label-placement="stacked" :clear-input="true"
|
|
<ion-input type="number" placeholder="请输入招聘数量" label-placement="stacked" :clear-input="true"
|
|
v-model="dataModel.recruitCount" class="custom">
|
|
v-model="dataModel.recruitCount" class="custom">
|
|
</ion-input>
|
|
</ion-input>
|
|
-<!-- <ion-note slot="error">请输入招聘数量</ion-note>-->
|
|
|
|
|
|
+ <ion-note v-show="isCommit&&v$.dataModel.professionName.$error" class="danger" >请输入招聘数量</ion-note>
|
|
</div>
|
|
</div>
|
|
<div class="form-input">
|
|
<div class="form-input">
|
|
<ion-label>招聘日期<span class="danger">*</span></ion-label>
|
|
<ion-label>招聘日期<span class="danger">*</span></ion-label>
|
|
@@ -38,31 +41,32 @@
|
|
<span style="float:left;padding-top: 5px;">至</span>
|
|
<span style="float:left;padding-top: 5px;">至</span>
|
|
<ion-datetime-button datetime="endTime" style="float:left;"></ion-datetime-button>
|
|
<ion-datetime-button datetime="endTime" style="float:left;"></ion-datetime-button>
|
|
<ion-modal :keep-contents-mounted="true">
|
|
<ion-modal :keep-contents-mounted="true">
|
|
- <ion-datetime placeholder="招聘日期" id="startTime"
|
|
|
|
|
|
+ <ion-datetime placeholder="招聘开始日期" id="startTime"
|
|
v-model="dataModel.startTime" :prefer-wheel="true"
|
|
v-model="dataModel.startTime" :prefer-wheel="true"
|
|
dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
|
|
dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
|
|
:show-default-buttons="true" style="text-align: left;width: 100%;">
|
|
:show-default-buttons="true" style="text-align: left;width: 100%;">
|
|
</ion-datetime>
|
|
</ion-datetime>
|
|
</ion-modal>
|
|
</ion-modal>
|
|
<ion-modal :keep-contents-mounted="true">
|
|
<ion-modal :keep-contents-mounted="true">
|
|
- <ion-datetime placeholder="招聘日期" id="endTime"
|
|
|
|
|
|
+ <ion-datetime placeholder="招聘结束日期" id="endTime"
|
|
v-model="dataModel.endTime" :prefer-wheel="true"
|
|
v-model="dataModel.endTime" :prefer-wheel="true"
|
|
dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
|
|
dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
|
|
:show-default-buttons="true" style="text-align: left;width: 100%;">
|
|
:show-default-buttons="true" style="text-align: left;width: 100%;">
|
|
</ion-datetime>
|
|
</ion-datetime>
|
|
</ion-modal>
|
|
</ion-modal>
|
|
- <!-- <ion-note slot="error">招聘开始日期与结束日期不能为空</ion-note>-->
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div style="overflow: hidden;width:100%;"></div>
|
|
|
|
|
|
+ <div style="width: 100%;overflow: hidden;"></div>
|
|
<div class="form-input">
|
|
<div class="form-input">
|
|
<ion-label>招聘地点<span class="danger">*</span></ion-label>
|
|
<ion-label>招聘地点<span class="danger">*</span></ion-label>
|
|
<ion-textarea placeholder="请输入招聘地点" :rows="3" label-placement="stacked" :clear-input="true"
|
|
<ion-textarea placeholder="请输入招聘地点" :rows="3" label-placement="stacked" :clear-input="true"
|
|
v-model="dataModel.jobPlace" class="custom" style="border-bottom: 1px solid #fff2e8;">
|
|
v-model="dataModel.jobPlace" class="custom" style="border-bottom: 1px solid #fff2e8;">
|
|
</ion-textarea>
|
|
</ion-textarea>
|
|
-<!-- <ion-note slot="error">请输入招聘地点</ion-note>-->
|
|
|
|
|
|
+ <ion-note v-show="isCommit&&v$.dataModel.jobPlace.$error" class="danger" >请输入招聘数量</ion-note>
|
|
</div>
|
|
</div>
|
|
- <div class="form-title">
|
|
|
|
|
|
+ </div>
|
|
|
|
+ <div class="bw-vue-form">
|
|
|
|
+ <div class="form-title" >
|
|
其他信息
|
|
其他信息
|
|
<div style="float: right;">
|
|
<div style="float: right;">
|
|
<ion-icon :icon="chevronDownOutline" @click="isShow=!isShow" v-if="!isShow"
|
|
<ion-icon :icon="chevronDownOutline" @click="isShow=!isShow" v-if="!isShow"
|
|
@@ -96,13 +100,13 @@
|
|
</ion-select>
|
|
</ion-select>
|
|
</div>
|
|
</div>
|
|
<div class="form-input">
|
|
<div class="form-input">
|
|
- <ion-label>试用期(月)</ion-label>
|
|
|
|
|
|
+ <ion-label>试用期(月)</ion-label>
|
|
<ion-input type="number" placeholder="请输入试用期月数" label-placement="stacked"
|
|
<ion-input type="number" placeholder="请输入试用期月数" label-placement="stacked"
|
|
v-model="dataModel.trailMonths" class="custom">
|
|
v-model="dataModel.trailMonths" class="custom">
|
|
</ion-input>
|
|
</ion-input>
|
|
</div>
|
|
</div>
|
|
<div class="form-input">
|
|
<div class="form-input">
|
|
- <ion-label>试用期月薪(元)</ion-label>
|
|
|
|
|
|
+ <ion-label>试用期月薪(元)</ion-label>
|
|
<div>
|
|
<div>
|
|
<ion-input placeholder="请输入金额" label-placement="stacked" style="float:left;width:40%;"
|
|
<ion-input placeholder="请输入金额" label-placement="stacked" style="float:left;width:40%;"
|
|
v-model="dataModel.trailMinSalary" class="custom">
|
|
v-model="dataModel.trailMinSalary" class="custom">
|
|
@@ -125,7 +129,7 @@
|
|
</ion-select>
|
|
</ion-select>
|
|
</div>
|
|
</div>
|
|
<div class="form-select">
|
|
<div class="form-select">
|
|
- <ion-label>学历要求</ion-label>
|
|
|
|
|
|
+ <ion-label>学历要求</ion-label>
|
|
<ion-select interface="action-sheet" placeholder="请选择学历" cancel-text="取消"
|
|
<ion-select interface="action-sheet" placeholder="请选择学历" cancel-text="取消"
|
|
id="cultureRank" v-model="dataModel.cultureRank" style="width: 100%;text-align: left;">
|
|
id="cultureRank" v-model="dataModel.cultureRank" style="width: 100%;text-align: left;">
|
|
<ion-select-option v-for="(record,key) in cultureRankList" :key="key"
|
|
<ion-select-option v-for="(record,key) in cultureRankList" :key="key"
|
|
@@ -135,19 +139,18 @@
|
|
</ion-select>
|
|
</ion-select>
|
|
</div>
|
|
</div>
|
|
<div class="form-input">
|
|
<div class="form-input">
|
|
- <ion-label>福利待遇</ion-label>
|
|
|
|
|
|
+ <ion-label>福利待遇</ion-label>
|
|
<ion-textarea placeholder="请输入福利待遇" :rows="3" label-placement="stacked"
|
|
<ion-textarea placeholder="请输入福利待遇" :rows="3" label-placement="stacked"
|
|
v-model="dataModel.welfare" class="custom" style="border-bottom: 1px solid #fff2e8;">
|
|
v-model="dataModel.welfare" class="custom" style="border-bottom: 1px solid #fff2e8;">
|
|
</ion-textarea>
|
|
</ion-textarea>
|
|
</div>
|
|
</div>
|
|
<div class="form-input">
|
|
<div class="form-input">
|
|
- <ion-label>其他要求</ion-label>
|
|
|
|
|
|
+ <ion-label>其他要求</ion-label>
|
|
<ion-textarea placeholder="请输入其他要求" :rows="3" label-placement="stacked"
|
|
<ion-textarea placeholder="请输入其他要求" :rows="3" label-placement="stacked"
|
|
v-model="dataModel.postDesc" class="custom" style="border-bottom: 1px solid #fff2e8;">
|
|
v-model="dataModel.postDesc" class="custom" style="border-bottom: 1px solid #fff2e8;">
|
|
</ion-textarea>
|
|
</ion-textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- </ion-list>
|
|
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</form>
|
|
</ion-content>
|
|
</ion-content>
|
|
@@ -165,19 +168,20 @@ import {useRoute, useRouter} from "vue-router";
|
|
import {alertController, onIonViewDidEnter} from "@ionic/vue";
|
|
import {alertController, onIonViewDidEnter} from "@ionic/vue";
|
|
import {useVuelidate} from "@vuelidate/core";
|
|
import {useVuelidate} from "@vuelidate/core";
|
|
import {getPostByID,savePost} from "@/api/post";
|
|
import {getPostByID,savePost} from "@/api/post";
|
|
-import {minLength, required} from "@vuelidate/validators";
|
|
|
|
|
|
+import {required} from "@vuelidate/validators";
|
|
import {getSysDictionaryList} from "@/api/system/dictionary";
|
|
import {getSysDictionaryList} from "@/api/system/dictionary";
|
|
import dayjs from "dayjs";
|
|
import dayjs from "dayjs";
|
|
-import Picker from "@/components/picker.vue";
|
|
|
|
|
|
+import PostSelection from "@/components/postSelection.vue";
|
|
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: 'PostEdit',
|
|
name: 'PostEdit',
|
|
- components:{Picker},
|
|
|
|
|
|
+ components:{PostSelection},
|
|
setup() {
|
|
setup() {
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
const isShow = ref<any>(false);
|
|
const isShow = ref<any>(false);
|
|
const isEdit = ref<any>(false);
|
|
const isEdit = ref<any>(false);
|
|
|
|
+ const isCommit = ref<any>(false);
|
|
const formState = reactive({
|
|
const formState = reactive({
|
|
dataModel: {
|
|
dataModel: {
|
|
companyID:null,
|
|
companyID:null,
|
|
@@ -204,6 +208,7 @@ export default defineComponent({
|
|
return {
|
|
return {
|
|
dataModel: {
|
|
dataModel: {
|
|
professionName: {required},
|
|
professionName: {required},
|
|
|
|
+ professionID:{required},
|
|
recruitCount: {required},
|
|
recruitCount: {required},
|
|
startTime: {required},
|
|
startTime: {required},
|
|
endTime: {required},
|
|
endTime: {required},
|
|
@@ -234,6 +239,7 @@ export default defineComponent({
|
|
formState.dataModel.professionName = data.text;
|
|
formState.dataModel.professionName = data.text;
|
|
}
|
|
}
|
|
const onSave = async function (){
|
|
const onSave = async function (){
|
|
|
|
+ isCommit.value =true;
|
|
const isFormCorrect = await v$.value.$validate();
|
|
const isFormCorrect = await v$.value.$validate();
|
|
console.log("当前岗位信息",formState.dataModel);
|
|
console.log("当前岗位信息",formState.dataModel);
|
|
if (!isFormCorrect) {
|
|
if (!isFormCorrect) {
|
|
@@ -263,6 +269,7 @@ export default defineComponent({
|
|
}
|
|
}
|
|
|
|
|
|
const loadData = async (postID: any,companyID:any) => {
|
|
const loadData = async (postID: any,companyID:any) => {
|
|
|
|
+ isCommit.value =false;
|
|
await getWorkYearList();
|
|
await getWorkYearList();
|
|
await getCultureRankList();
|
|
await getCultureRankList();
|
|
const reqData = await getPostByID(postID);
|
|
const reqData = await getPostByID(postID);
|
|
@@ -286,6 +293,7 @@ export default defineComponent({
|
|
chevronDownOutline,
|
|
chevronDownOutline,
|
|
chevronUpOutline,
|
|
chevronUpOutline,
|
|
arrowBackOutline,
|
|
arrowBackOutline,
|
|
|
|
+ isCommit,
|
|
route,
|
|
route,
|
|
router,
|
|
router,
|
|
isShow,
|
|
isShow,
|
|
@@ -304,27 +312,6 @@ export default defineComponent({
|
|
|
|
|
|
<style lang="less">
|
|
<style lang="less">
|
|
|
|
|
|
-.custom{
|
|
|
|
- --placeholder-color: gray;
|
|
|
|
- --placeholder-opacity: 0.5;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.title-item{
|
|
|
|
- margin-left: 15px;
|
|
|
|
- color:#1c3d70 !important;
|
|
|
|
- font-size: 14px !important;
|
|
|
|
- font-weight: bold;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-ion-item {
|
|
|
|
- --border-width: 0;
|
|
|
|
- --border-style: none;
|
|
|
|
-
|
|
|
|
- ion-label, input, ion-select, ion-datetime {
|
|
|
|
- font-size: 14px !important;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
.stepFlex {
|
|
.stepFlex {
|
|
margin: 0;
|
|
margin: 0;
|
|
display: flex;
|
|
display: flex;
|