|
@@ -1,9 +1,9 @@
|
|
<template>
|
|
<template>
|
|
<ion-page>
|
|
<ion-page>
|
|
- <ion-header class="header-theme2">
|
|
|
|
|
|
+ <ion-header>
|
|
<ion-toolbar>
|
|
<ion-toolbar>
|
|
<ion-buttons slot="start">
|
|
<ion-buttons slot="start">
|
|
- <ion-icon :icon="arrowBackOutline" @click="()=>router.push('./list')"></ion-icon>
|
|
|
|
|
|
+ <ion-icon :icon="arrowBackOutline" @click="onCancel" style="padding-left:10px;width:24px;height:24px;"></ion-icon>
|
|
</ion-buttons>
|
|
</ion-buttons>
|
|
<ion-title>求职信息录入</ion-title>
|
|
<ion-title>求职信息录入</ion-title>
|
|
</ion-toolbar>
|
|
</ion-toolbar>
|
|
@@ -11,200 +11,336 @@
|
|
<ion-content>
|
|
<ion-content>
|
|
<div class="stepFlex">
|
|
<div class="stepFlex">
|
|
<div v-for="(record,key) in stepList" :key="key" class="stepFlex-item">
|
|
<div v-for="(record,key) in stepList" :key="key" class="stepFlex-item">
|
|
- <div
|
|
|
|
- :class="[(record.val < dataModel?.statusVal || dataModel?.statusVal==stepList[stepList.length-1].val) ? 'greenCircle' :record.val == dataModel?.statusVal ? 'now' : 'greyCircle']"></div>
|
|
|
|
- <div v-if="key !== stepList.length - 1"
|
|
|
|
- :class="[record.val < dataModel?.statusVal ? 'greenline' : 'greyline']"></div>
|
|
|
|
|
|
+ <div :class="[(record.val < curStepData?.statusVal || curStepData?.statusVal == stepList.val) ? 'greenCircle' :record.val == curStepData?.statusVal ? 'now' : 'grayCircle']"></div>
|
|
|
|
+ <div v-if="key !== stepList.length - 1" :class="[record.val < curStepData?.statusVal ? 'greenLine' : 'grayLine']"></div>
|
|
<div class="stepFlex-item-label">
|
|
<div class="stepFlex-item-label">
|
|
<p class="stepFlex-item-label-title">{{ record.title }}</p>
|
|
<p class="stepFlex-item-label-title">{{ record.title }}</p>
|
|
- <p class="stepFlex-item-label-desc">{{ record.desc }}</p>
|
|
|
|
|
|
+ <p class="stepFlex-item-label-desc"> {{ record.desc }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <form autocomplete="off">
|
|
|
|
- <ion-list>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="姓名" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="公民身份号码" label-placement="stacked" :clear-input="true"
|
|
|
|
- >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="性别" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="民族" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="政治面貌" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="出生地" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="出生日期" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="户口性质" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="文化程度" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="健康状况" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="血型" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="身高" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="视力" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="体重" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="婚姻状况" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="省份" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="市/县" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="镇/街" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="联系人" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="联系电话" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="地址" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="家庭住址" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="电子邮箱" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="兴趣爱好" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="就业状态" label-placement="stacked" :clear-input="true" >
|
|
|
|
- </ion-input>
|
|
|
|
- </ion-item>
|
|
|
|
- <ion-item>
|
|
|
|
- <ion-input label="重点人员类别" label-placement="stacked" :clear-input="true"
|
|
|
|
- >
|
|
|
|
- </ion-input>
|
|
|
|
|
|
+ <form ref="editForm" @submit.prevent="onSave">
|
|
|
|
+ <ion-list class="canvasWrapper" v-if="curStepData.statusVal==1">
|
|
|
|
+ <ion-item-divider style="height: 20px;">
|
|
|
|
+ <ion-badge slot="start">l</ion-badge>
|
|
|
|
+ <ion-label>
|
|
|
|
+ 基本信息
|
|
|
|
+ </ion-label>
|
|
|
|
+ </ion-item-divider>
|
|
|
|
+ <ion-item-group>
|
|
|
|
+ <ion-item :class="[baseDataValid.baseData.name.$error?'ion-invalid':'ion-valid']">
|
|
|
|
+ <ion-label>姓名<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-input name="name" id="name" placeholder="请输入姓名" v-model="baseData.name" ></ion-input>
|
|
|
|
+ <ion-note slot="error">姓名不能为空</ion-note>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item :class="[baseDataValid.baseData.identityNumber.$error?'ion-invalid':'ion-valid']">
|
|
|
|
+ <ion-label>公民身份号码<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-input name="identityNumber" id="identityNumber" placeholder="请输入身份证号码" v-model="baseData.identityNumber" ></ion-input>
|
|
|
|
+ <ion-note slot="error">公民身份号码不能为空</ion-note>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item :class="[baseDataValid.baseData.sex.$error?'ion-invalid':'ion-valid']">
|
|
|
|
+ <ion-label>性别<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-select name="sex" id="sex" okText="确定" cancelText="取消" v-model="baseData.sex"
|
|
|
|
+ interface="action-sheet" placeholder="请选择性别" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in genderList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ <ion-note slot="error">性别不能为空</ion-note>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item :class="[baseDataValid.baseData.jobStatusID.$error?'ion-invalid':'ion-valid']">
|
|
|
|
+ <ion-label>就业状态<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-select name="jobStatusID" id="jobStatusID" okText="确定" cancelText="取消" v-model="baseData.jobStatusID"
|
|
|
|
+ interface="action-sheet" placeholder="请选择就业状态" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in jobUserStatusList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ <ion-note slot="error">就业状态不能为空</ion-note>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item :class="[baseDataValid.baseData.keyPersonTypeID.$error?'ion-invalid':'ion-valid']">
|
|
|
|
+ <ion-label>重点人员类别<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-select name="keyPersonTypeID" id="keyPersonTypeID" okText="确定" cancelText="取消" v-model="baseData.keyPersonTypeID"
|
|
|
|
+ interface="action-sheet" placeholder="请选择重点人员类别" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in keyPersonTypeList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ <ion-note slot="error">重点人员类别不能为空</ion-note>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item :class="[baseDataValid.baseData.userMobile.$error?'ion-invalid':'ion-valid']">
|
|
|
|
+ <ion-label>联系电话<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-input name="userMobile" id="userMobile" placeholder="请输入联系电话" v-model="baseData.userMobile" ></ion-input>
|
|
|
|
+ <ion-note slot="error">联系电话不能为空</ion-note>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item :class="[baseDataValid.baseData.birthPlace.$error?'ion-invalid':'ion-valid']">
|
|
|
|
+ <ion-label>地址<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-input name="birthPlace" id="birthPlace" placeholder="请输入地址" v-model="baseData.birthPlace" ></ion-input>
|
|
|
|
+ <ion-note slot="error">地址不能为空</ion-note>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <!-- :class="[baseDataValid.dataModel.siteID.$error?'ion-invalid':'ion-valid']" -->
|
|
|
|
+ <ion-item >
|
|
|
|
+ <ion-label>所属驿站<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-select name="siteID" id="siteID" okText="确定" cancelText="取消" v-model="baseData.siteID"
|
|
|
|
+ interface="action-sheet" placeholder="请选择所属驿站" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in siteInfoList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.text }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ <ion-note slot="error">所属驿站不能为空</ion-note>
|
|
|
|
+ </ion-item>
|
|
|
|
+ </ion-item-group>
|
|
|
|
+ <ion-item-divider style="height: 20px;" >
|
|
|
|
+ <ion-badge slot="start">l</ion-badge>
|
|
|
|
+ <ion-label>
|
|
|
|
+ 其他信息
|
|
|
|
+ </ion-label>
|
|
|
|
+ <ion-avatar aria-hidden="true" slot="end" style="padding-top:5px;">
|
|
|
|
+ <img alt="" src="@/assets/icon/arrow-up-bold.png" style="width:32px;height:32px;" @click="expandChange" v-if="!expand"/>
|
|
|
|
+ <img alt="" src="@/assets/icon/arrow-down-bold.png" style="width:32px;height:32px;" @click="expandChange" v-if="expand"/>
|
|
|
|
+ </ion-avatar>
|
|
|
|
+ </ion-item-divider>
|
|
|
|
+ <ion-item-group v-if="expand">
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>文化程度<span class="danger">*</span></ion-label>
|
|
|
|
+ <ion-select name="cultureRank" id="cultureRank" okText="确定" cancelText="取消" v-model="baseData.cultureRank"
|
|
|
|
+ interface="action-sheet" placeholder="请选择文化程度" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in cultureRankList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>健康状况</ion-label>
|
|
|
|
+ <ion-select name="healthID" id="healthID" okText="确定" cancelText="取消" v-model="baseData.healthID"
|
|
|
|
+ interface="action-sheet" placeholder="请选择健康状况" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in userHealthList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>血型</ion-label>
|
|
|
|
+ <ion-select name="bloodTypeID" id="bloodTypeID" okText="确定" cancelText="取消" v-model="baseData.bloodTypeID"
|
|
|
|
+ interface="action-sheet" placeholder="请选择血型" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in bloodTypeList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>身高</ion-label>
|
|
|
|
+ <ion-input name="height" id="height" placeholder="请输入身高" v-model="baseData.height" ></ion-input>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>视力</ion-label>
|
|
|
|
+ <ion-input name="vision" id="vision" placeholder="请输入视力" v-model="baseData.vision" ></ion-input>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>体重</ion-label>
|
|
|
|
+ <ion-input name="weight" id="weight" placeholder="请输入体重" v-model="baseData.weight" ></ion-input>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>婚姻状况</ion-label>
|
|
|
|
+ <ion-select name="maritalStatusID" id="maritalStatusID" okText="确定" cancelText="取消" v-model="baseData.maritalStatusID"
|
|
|
|
+ interface="action-sheet" placeholder="请选择婚姻状况" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in maritalStatusList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>省份</ion-label>
|
|
|
|
+ <ion-select name="provinceCode" id="provinceCode" okText="确定" cancelText="取消" v-model="baseData.provinceCode"
|
|
|
|
+ interface="action-sheet" placeholder="请选择省份" @change="provinceChange()" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in provinceList" :key="key" :value="it.value">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>市/县</ion-label>
|
|
|
|
+ <ion-select name="regionCode" id="regionCode" okText="确定" cancelText="取消" v-model="baseData.regionCode"
|
|
|
|
+ interface="action-sheet" placeholder="请选择市/县" @ionChange="regionChange()" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in regionList" :key="key" :value="it.code">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>镇/街</ion-label>
|
|
|
|
+ <ion-select name="streetCode" id="streetCode" okText="确定" cancelText="取消" v-model="baseData.streetCode"
|
|
|
|
+ interface="action-sheet" placeholder="请选择镇/街" >
|
|
|
|
+ <ion-select-option v-for=" (it,key) in streetList" :key="key" :value="it.code">
|
|
|
|
+ {{ it.name }}
|
|
|
|
+ </ion-select-option>
|
|
|
|
+ </ion-select>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>联系人</ion-label>
|
|
|
|
+ <ion-input name="userName" id="userName" placeholder="请输入联系人姓名" v-model="baseData.userName" ></ion-input>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>家庭住址</ion-label>
|
|
|
|
+ <ion-input name="familyAddress" id="familyAddress" placeholder="请输入家庭住址" v-model="baseData.familyAddress" ></ion-input>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>电子邮箱</ion-label>
|
|
|
|
+ <ion-input name="email" id="email" placeholder="请输入电子邮箱" v-model="baseData.email" ></ion-input>
|
|
|
|
+ </ion-item>
|
|
|
|
+ <ion-item>
|
|
|
|
+ <ion-label>兴趣爱好</ion-label>
|
|
|
|
+ <ion-input name="hobby" id="hobby" placeholder="请输入兴趣爱好" v-model="baseData.hobby" ></ion-input>
|
|
|
|
+ </ion-item>
|
|
|
|
+ </ion-item-group>
|
|
|
|
+ </ion-list>
|
|
|
|
+ <ion-list class="canvasWrapper" v-if="curStepData.statusVal==2">
|
|
|
|
+ <ion-item-divider style="height: 20px;" >
|
|
|
|
+ <ion-badge slot="start">l</ion-badge>
|
|
|
|
+ <ion-label>
|
|
|
|
+ 教育经历
|
|
|
|
+ </ion-label>
|
|
|
|
+ <ion-buttons slot="end">
|
|
|
|
+ <ion-icon :icon="addCircleOutline" @click="onPathForward('./educationEdit',null,null,2)"></ion-icon>
|
|
|
|
+ </ion-buttons>
|
|
|
|
+ </ion-item-divider>
|
|
|
|
+ <ion-item v-for="(record,key) in educationList" :key="key" >
|
|
|
|
+ <ion-label>
|
|
|
|
+ <h3>{{record.schoolName}}</h3>
|
|
|
|
+ <p>{{record.schoolTime}}至{{record.overTime}}</p>
|
|
|
|
+ </ion-label>
|
|
|
|
+ <img alt="" src="@/assets/icon/forward.png" style="width:32px;height:32px;"
|
|
|
|
+ @click="onPathForward('./educationEdit',record.educationID,null,2)" />
|
|
|
|
+ </ion-item>
|
|
|
|
+ </ion-list>
|
|
|
|
+ <ion-list class="canvasWrapper" v-if="curStepData.statusVal==3">
|
|
|
|
+ <ion-item-divider style="height: 20px;">
|
|
|
|
+ <ion-badge slot="start">l</ion-badge>
|
|
|
|
+ <ion-label>
|
|
|
|
+ 求职意向
|
|
|
|
+ </ion-label>
|
|
|
|
+ <ion-buttons slot="end">
|
|
|
|
+ <ion-icon :icon="addCircleOutline" @click="onPathForward('./jobHuntEdit',null,null,3)"></ion-icon>
|
|
|
|
+ </ion-buttons>
|
|
|
|
+ </ion-item-divider>
|
|
|
|
+ <ion-item v-for="(record,key) in jobHuntList" :key="key" >
|
|
|
|
+ <ion-label>
|
|
|
|
+ <h3>{{record.jobUserType}}</h3>
|
|
|
|
+ <p>期望薪资:{{record.salary}}</p>
|
|
|
|
+ </ion-label>
|
|
|
|
+ <img alt="" src="@/assets/icon/forward.png" style="width:32px;height:32px;"
|
|
|
|
+ @click="onPathForward( './jobHuntEdit',null,record.jobHuntID,3)" />
|
|
</ion-item>
|
|
</ion-item>
|
|
</ion-list>
|
|
</ion-list>
|
|
- <ion-button class="next-btn">下一步
|
|
|
|
- </ion-button>
|
|
|
|
|
|
+
|
|
|
|
+ <ion-button class="next-btn" type="submit" v-if="curStepData.statusVal!=3">下一步</ion-button>
|
|
|
|
+ <ion-button class="next-btn" @click="onCancel" v-if="curStepData.statusVal==3">完 成</ion-button>
|
|
</form>
|
|
</form>
|
|
</ion-content>
|
|
</ion-content>
|
|
- <!-- <ion-footer>
|
|
|
|
- <div>
|
|
|
|
- <ion-button @click="onSave">下一步</ion-button>
|
|
|
|
- </div>
|
|
|
|
- </ion-footer>-->
|
|
|
|
</ion-page>
|
|
</ion-page>
|
|
</template>
|
|
</template>
|
|
<script lang="ts">
|
|
<script lang="ts">
|
|
-import {defineComponent, ref, watch} from "vue";
|
|
|
|
-/*import {getPracticeBaseForStudentList,getSysAreaList} from "@/api/system/dictionary";
|
|
|
|
-import {get, save} from "@/api/practice/intention";*/
|
|
|
|
|
|
+import {arrowBackOutline,addCircleOutline} from 'ionicons/icons';
|
|
|
|
+import {reactive,defineComponent, computed,watch,ref,toRefs} from "vue";
|
|
import {useRoute, useRouter} from "vue-router";
|
|
import {useRoute, useRouter} from "vue-router";
|
|
-import {alertController, onIonViewDidEnter} from "@ionic/vue";
|
|
|
|
-import {arrowBackOutline} from 'ionicons/icons';
|
|
|
|
|
|
+import {required} from "@vuelidate/validators";
|
|
|
|
+import {useVuelidate} from "@vuelidate/core";
|
|
|
|
+import {getDataById, baseInfoSave, getEducationList} from "@/api/jobUserInfo";
|
|
|
|
+import {getEducationListByJobUserID} from "@/api/education";
|
|
|
|
+import {getRegionCodeList, getStreetCodeList} from "@/api/system/area";
|
|
|
|
+import {getSiteDataList} from "@/api/siteInfo";
|
|
|
|
+import {getJobHuntListByJobUserID,jobHuntSave} from "@/api/jobHuntInfo";
|
|
|
|
+import {getSysDictionaryList} from '@/api/system/dictionary';
|
|
|
|
+import {alertController} from "@ionic/vue";
|
|
|
|
|
|
-interface DataModel {
|
|
|
|
|
|
+interface SelectProps {
|
|
|
|
+ name: string,
|
|
|
|
+ value: string
|
|
|
|
+}
|
|
|
|
+interface StepParams{
|
|
name: string,
|
|
name: string,
|
|
statusVal: number
|
|
statusVal: number
|
|
}
|
|
}
|
|
-
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
- name: 'PracticeIntentionEdit',
|
|
|
|
|
|
+ name: 'jobUserEdit',
|
|
setup() {
|
|
setup() {
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
- const dataModel = ref<DataModel>({
|
|
|
|
- name: '',
|
|
|
|
|
|
+ const editForm = ref();
|
|
|
|
+ const expand = ref<boolean>(false);
|
|
|
|
+ const siteInfoList = ref<SelectProps[]>([]);
|
|
|
|
+ const curStepData = ref<StepParams>({
|
|
|
|
+ name:"",
|
|
statusVal: 1
|
|
statusVal: 1
|
|
});
|
|
});
|
|
- const stepList = ref([{title: '基础信息', desc: '个人基础信息', val: 1}, {
|
|
|
|
- title: '教育经历',
|
|
|
|
- desc: '完事个人教育经历',
|
|
|
|
- val: 2
|
|
|
|
- }, {title: '求职意向', desc: '个人求职意向', val: 3}]);
|
|
|
|
-
|
|
|
|
- const onSave = () => {
|
|
|
|
- if (!dataModel.value.name) {
|
|
|
|
- presentAlert("请填写姓名!");
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /*save(dataModel.value as any).then(result => {
|
|
|
|
- if (result) {
|
|
|
|
- router.push({path: './index', query: {reload: 1}});
|
|
|
|
- }
|
|
|
|
- });*/
|
|
|
|
- }
|
|
|
|
|
|
+ const stepList = ref([
|
|
|
|
+ {title: '基础信息', desc: '个人基础信息', val: 1},
|
|
|
|
+ {title: '教育经历', desc: '完善个人教育经历',val: 2},
|
|
|
|
+ {title: '求职意向', desc: '个人求职意向', val: 3}
|
|
|
|
+ ]);
|
|
|
|
+ const genderList = ref<SelectProps[]>([]);
|
|
|
|
+ const jobUserStatusList = ref<SelectProps[]>([]);
|
|
|
|
+ const keyPersonTypeList = ref<SelectProps[]>([]);
|
|
|
|
+ const cultureRankList = ref<SelectProps[]>([]);
|
|
|
|
+ const userHealthList = ref<SelectProps[]>([]);
|
|
|
|
+ const bloodTypeList = ref<SelectProps[]>([]);
|
|
|
|
+ const maritalStatusList = ref<SelectProps[]>([]);
|
|
|
|
+ const provinceList = ref([{code:'01',name:'广东省'}]);
|
|
|
|
+ const regionList = ref<SelectProps[]>([]);
|
|
|
|
+ const streetList = ref<SelectProps[]>([]);
|
|
|
|
|
|
- const onCancel = () => {
|
|
|
|
- router.push("./index");
|
|
|
|
- }
|
|
|
|
|
|
+ const educationList = ref<SelectProps[]>([]);
|
|
|
|
+ const jobHuntList = ref<SelectProps[]>([]);
|
|
|
|
|
|
- const loadData = (practiceTaskStudentID: any) => {
|
|
|
|
- /*get(practiceTaskStudentID).then((result: any) => {
|
|
|
|
- dataModel.value = result;
|
|
|
|
|
|
+ const baseInfoData = reactive({baseData:{
|
|
|
|
|
|
- loadPracticeBaseList(dataModel.value.schoolYearID);
|
|
|
|
- loadCityList();
|
|
|
|
- });*/
|
|
|
|
- };
|
|
|
|
|
|
+ jobUserID:null,
|
|
|
|
+ name:null,
|
|
|
|
+ identityNumber: null,
|
|
|
|
+ sex: null,
|
|
|
|
+ userMobile: null,
|
|
|
|
+ birthPlace: null,
|
|
|
|
+ siteID:null,
|
|
|
|
+ jobStatusID: null,
|
|
|
|
+ keyPersonTypeID: null,
|
|
|
|
+ cultureRank:null,
|
|
|
|
+ healthID:null,
|
|
|
|
+ boolTypeID:null,
|
|
|
|
+ height:null,
|
|
|
|
+ vision:null,
|
|
|
|
+ weight:null,
|
|
|
|
+ maritalStatusID:null,
|
|
|
|
+ provinceCode:null,
|
|
|
|
+ regionCode:null,
|
|
|
|
+ streetCode:null,
|
|
|
|
+ userName:null,
|
|
|
|
+ familyAddress:null,
|
|
|
|
+ postalCode:null,
|
|
|
|
+ email:null,
|
|
|
|
+ hobby:null,
|
|
|
|
+ personalSkills:null,
|
|
|
|
+ }});
|
|
|
|
|
|
- const initData = (id: any) => {
|
|
|
|
- dataModel.value = {name: '',statusVal:1};
|
|
|
|
- loadData(id);
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- onIonViewDidEnter(() => {
|
|
|
|
- if (route.query.reload)
|
|
|
|
- initData(route.query.id);
|
|
|
|
|
|
+ const pageParams = reactive({
|
|
|
|
+ pageIndex: 1,
|
|
|
|
+ pageSize: 10,
|
|
|
|
+ jobUserID:''
|
|
});
|
|
});
|
|
|
|
+ const baseDataRule = computed(()=>{
|
|
|
|
+ return {baseData:{
|
|
|
|
+ name:{required},
|
|
|
|
+ identityNumber:{required},
|
|
|
|
+ sex:{required},
|
|
|
|
+ userMobile:{required},
|
|
|
|
+ birthPlace:{required},
|
|
|
|
+ jobStatusID:{required},
|
|
|
|
+ keyPersonTypeID:{required},
|
|
|
|
+ }}});
|
|
|
|
|
|
|
|
+ const baseDataValid = useVuelidate(baseDataRule,baseInfoData);
|
|
|
|
+ const expandChange= ()=>{
|
|
|
|
+ expand.value = !expand.value;
|
|
|
|
+ }
|
|
const presentAlert = async (message: string) => {
|
|
const presentAlert = async (message: string) => {
|
|
const alert = await alertController.create({
|
|
const alert = await alertController.create({
|
|
header: '错误!',
|
|
header: '错误!',
|
|
@@ -217,20 +353,160 @@ export default defineComponent({
|
|
await alert.present();
|
|
await alert.present();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ const onSave = async function (){
|
|
|
|
+ if (curStepData.value.statusVal==1){
|
|
|
|
+ const isFormCorrect = await baseDataValid.value.$validate();
|
|
|
|
+ if(!isFormCorrect){
|
|
|
|
+ await presentAlert("请填写完整的信息!");
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ baseInfoSave(baseInfoData.baseData).then(result => {
|
|
|
|
+ if (result) {
|
|
|
|
+ router.push({path: './edit', query: {jobUserID: baseInfoData.baseData.jobUserID,status:2}});
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ else if(curStepData.value.statusVal==2){
|
|
|
|
+ router.push({path: './edit', query: {jobUserID: baseInfoData.baseData.jobUserID,status:3}});
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const onPathForward = (pathValue:string,educationIDValue:any,jobHuntIDValue:any,statusValue:any)=>{
|
|
|
|
+ router.push({path: pathValue, query: {educationID:educationIDValue,jobHuntID:jobHuntIDValue,jobUserID: baseInfoData.baseData.jobUserID,status:statusValue}});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ const onCancel = () => {
|
|
|
|
+ router.push("./list");
|
|
|
|
+ }
|
|
|
|
+ const getSiteInfoList = async function(){
|
|
|
|
+ const siteInfoResult :any = await getSiteDataList();
|
|
|
|
+ siteInfoList.value = siteInfoResult;
|
|
|
|
+ }
|
|
|
|
+ const getGenderList = async function(){
|
|
|
|
+ const data :any = await getSysDictionaryList("Gender");
|
|
|
|
+ genderList.value = data;
|
|
|
|
+ }
|
|
|
|
+ const getJobUserStatusList = async function() {
|
|
|
|
+ const data :any = await getSysDictionaryList("JobStatus");
|
|
|
|
+ jobUserStatusList.value = data;
|
|
|
|
+ }
|
|
|
|
+ const getKeyPersonTypeList = async function() {
|
|
|
|
+ const data :any = await getSysDictionaryList("KeyPersonType");
|
|
|
|
+ keyPersonTypeList.value = data;
|
|
|
|
+ }
|
|
|
|
+ const getCultureRankList = async function(){
|
|
|
|
+ const data :any = await getSysDictionaryList("CultureLevel");
|
|
|
|
+ cultureRankList.value = data;
|
|
|
|
+ }
|
|
|
|
+ const getHealthTypeList = async function(){
|
|
|
|
+ const data :any = await getSysDictionaryList("Health");
|
|
|
|
+ userHealthList.value = data;
|
|
|
|
+ }
|
|
|
|
+ const getBloodTypeList = async function(){
|
|
|
|
+ const data :any = await getSysDictionaryList("BloodType");
|
|
|
|
+ bloodTypeList.value = data;
|
|
|
|
+ }
|
|
|
|
+ const getMaritalStatusList = async function(){
|
|
|
|
+ const data :any = await getSysDictionaryList("MaritalStatus");
|
|
|
|
+ maritalStatusList.value = data;
|
|
|
|
+ }
|
|
|
|
+ const getRegionList = async function(){
|
|
|
|
+ const regionResult: any = await getRegionCodeList();
|
|
|
|
+ regionList.value = regionResult;
|
|
|
|
+ }
|
|
|
|
+ const getStreetList = async function(){
|
|
|
|
+ if (baseInfoData.baseData.regionCode != null){
|
|
|
|
+ const streetResult: any = await getStreetCodeList(baseInfoData.baseData.regionCode);
|
|
|
|
+ streetList.value = streetResult;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ const regionChange = async function(){
|
|
|
|
+ baseInfoData.baseData.streetCode = null;
|
|
|
|
+ await getStreetList();
|
|
|
|
+ }
|
|
|
|
+ const provinceChange = async function(){
|
|
|
|
+ baseInfoData.baseData.regionCode = null;
|
|
|
|
+ await getRegionList();
|
|
|
|
+ await regionChange();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ const loadData = async (jobUserID: any,status:any) => {
|
|
|
|
+ pageParams.jobUserID = jobUserID;
|
|
|
|
+ curStepData.value.statusVal = status;
|
|
|
|
+ if(curStepData.value.statusVal==1){
|
|
|
|
+ await getSiteInfoList();
|
|
|
|
+ await getGenderList();
|
|
|
|
+ await getJobUserStatusList();
|
|
|
|
+ await getKeyPersonTypeList();
|
|
|
|
+ await getCultureRankList();
|
|
|
|
+ await getHealthTypeList();
|
|
|
|
+ await getBloodTypeList();
|
|
|
|
+ await getMaritalStatusList();
|
|
|
|
+ await getRegionList();
|
|
|
|
+ await getStreetList();
|
|
|
|
+ const reqData = await getDataById(jobUserID);
|
|
|
|
+ baseInfoData.baseData = reqData;
|
|
|
|
+ console.log('baseData',baseInfoData.baseData);
|
|
|
|
+ }
|
|
|
|
+ else if(curStepData.value.statusVal==2){
|
|
|
|
+ const data :any = await getEducationListByJobUserID(pageParams);
|
|
|
|
+ educationList.value = data.list;
|
|
|
|
+ }
|
|
|
|
+ else if(curStepData.value.statusVal==3){
|
|
|
|
+ const reqData = await getJobHuntListByJobUserID(pageParams);
|
|
|
|
+ jobHuntList.value= reqData.list;
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ watch(() => route.query, () => {
|
|
|
|
+ if (route.query) {
|
|
|
|
+ loadData(route.query.id,route.query.status);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
return {
|
|
return {
|
|
- dataModel,
|
|
|
|
|
|
+ ...toRefs(baseInfoData),
|
|
|
|
+ arrowBackOutline,
|
|
|
|
+ addCircleOutline,
|
|
|
|
+ editForm,
|
|
|
|
+ expand,
|
|
|
|
+ curStepData,
|
|
stepList,
|
|
stepList,
|
|
- initData,
|
|
|
|
|
|
+ siteInfoList,
|
|
|
|
+ genderList,
|
|
|
|
+ pageParams,
|
|
|
|
+ jobUserStatusList,
|
|
|
|
+ keyPersonTypeList,
|
|
|
|
+ cultureRankList,
|
|
|
|
+ userHealthList,
|
|
|
|
+ bloodTypeList,
|
|
|
|
+ maritalStatusList,
|
|
|
|
+ provinceList,
|
|
|
|
+ regionList,
|
|
|
|
+ streetList,
|
|
|
|
+ educationList,
|
|
|
|
+ jobHuntList,
|
|
|
|
+ expandChange,
|
|
|
|
+ provinceChange,
|
|
|
|
+ regionChange,
|
|
onSave,
|
|
onSave,
|
|
onCancel,
|
|
onCancel,
|
|
|
|
+ onPathForward,
|
|
|
|
+ loadData,
|
|
route,
|
|
route,
|
|
- arrowBackOutline,
|
|
|
|
router,
|
|
router,
|
|
|
|
+ baseDataValid,
|
|
}
|
|
}
|
|
|
|
+ },
|
|
|
|
+ mounted(){
|
|
|
|
+ const jobUserID = this.route.query.jobUserID;
|
|
|
|
+ const status = this.route.query.status;
|
|
|
|
+ this.loadData(jobUserID,status);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
</script>
|
|
-
|
|
|
|
<style lang="less">
|
|
<style lang="less">
|
|
.next-btn {
|
|
.next-btn {
|
|
width: 100%;
|
|
width: 100%;
|
|
@@ -289,7 +565,7 @@ export default defineComponent({
|
|
border: 4px solid #c5e8f9;
|
|
border: 4px solid #c5e8f9;
|
|
}
|
|
}
|
|
|
|
|
|
- .greyCircle {
|
|
|
|
|
|
+ .grayCircle {
|
|
top: calc(50% - 15px);
|
|
top: calc(50% - 15px);
|
|
left: calc(50% - 4px);
|
|
left: calc(50% - 4px);
|
|
position: absolute;
|
|
position: absolute;
|
|
@@ -300,7 +576,7 @@ export default defineComponent({
|
|
background-color: #ccc;
|
|
background-color: #ccc;
|
|
}
|
|
}
|
|
|
|
|
|
- .greenline {
|
|
|
|
|
|
+ .greenLine {
|
|
width: 100%;
|
|
width: 100%;
|
|
top: calc(50% - 11px);
|
|
top: calc(50% - 11px);
|
|
left: calc(50% - 2px);
|
|
left: calc(50% - 2px);
|
|
@@ -309,7 +585,7 @@ export default defineComponent({
|
|
position: absolute;
|
|
position: absolute;
|
|
}
|
|
}
|
|
|
|
|
|
- .greyline {
|
|
|
|
|
|
+ .grayLine {
|
|
height: 0;
|
|
height: 0;
|
|
border: 1px dashed #ccc;
|
|
border: 1px dashed #ccc;
|
|
width: 100%;
|
|
width: 100%;
|