123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- <!-- -->
- <template>
- <view class="ss-m-x-30 ss-m-y-30">
- <uni-forms ref="form" :modelValue="formData" :rules="rules" validateTrigger="bind">
- <uni-forms-item label="期望岗位" name="positionId" required label-width="90px">
- <uni-data-picker popup-title="请选择期望岗位" v-model="formData.positionId" :localdata="dictObj?.positionTreeData || []" :clear-icon="false" :map="{ text: 'nameCn', value: 'id'}"></uni-data-picker>
- </uni-forms-item>
- <uni-forms-item label="期望行业" name="industryIdList" required label-width="90px">
- <m-select
- label="请选择期望行业"
- :items="dictObj?.industryTreeData || []"
- item-label="nameCn"
- item-value="id"
- multiple
- v-model="formData.industryIdList"
- ></m-select>
- <!-- <uni-data-picker popup-title="请选择期望行业" v-model="formData.industryIdList" :localdata="dictObj?.industryTreeData || []" :clear-icon="false" :map="{ text: 'nameCn', value: 'id'}"></uni-data-picker> -->
- </uni-forms-item>
- <uni-forms-item label="最低薪资" name="payFrom" required label-width="90px">
- <uni-number-box v-model="formData.payFrom" :min="1" :max="999999999" :step="1000" :width="150" @change="payChange"></uni-number-box>
- </uni-forms-item>
- <uni-forms-item label="最高薪资" name="payTo" required label-width="90px">
- <uni-number-box v-model="formData.payTo" :min="payToMin" :max="999999999" :step="1000" :width="150"></uni-number-box>
- </uni-forms-item>
- <uni-forms-item label="求职类型" name="jobType" required label-width="90px">
- <uni-data-picker popup-title="请选择求职类型" v-model="formData.jobType" :localdata="dictObj?.jobType || []" :clear-icon="false" :map="{ text: 'label', value: 'value'}"></uni-data-picker>
- </uni-forms-item>
- <uni-forms-item label="工作城市" name="workAreaId" required label-width="90px">
- <uni-data-picker popup-title="请选择工作城市" v-model="formData.workAreaId" :localdata="dictObj?.areaTreeData || []" :clear-icon="false" :map="{ text: 'name', value: 'id'}"></uni-data-picker>
- </uni-forms-item>
- <uni-forms-item label="其它感兴趣的城市" name="interestedAreaIdList" label-width="90px">
- <!-- <uni-data-picker popup-title="其它感兴趣的城市" v-model="formData.interestedAreaIdList" :localdata="dictObj?.areaTreeData || []" :clear-icon="false" :map="{ text: 'name', value: 'id'}"></uni-data-picker> -->
- <m-select
- label="请选择其它感兴趣的城市"
- :items="dictObj?.areaTreeData || []"
- item-label="name"
- item-value="id"
- multiple
- v-model="formData.interestedAreaIdList"
- >
- </m-select>
- </uni-forms-item>
- </uni-forms>
- <view class="f-horizon-center">
- <button v-if="editId" size="default" class="delete-button commonBtnStyle" @click="handleDelete">删 除</button>
- <button size="default" :class="{'save-button': editId, 'commonBtnStyle': editId, 'send-button': !editId}" @click="submit">保 存</button>
- </view>
- </view>
- </template>
- <script setup>
- import { ref, unref } from 'vue'
- import { dictObj } from '@/utils/position.js'
- import { saveResumeJobInterested, getResumeJobInterested, deleteResumeJobInterested } from '@/api/resume.js'
- import { onLoad } from '@dcloudio/uni-app'
- import { cloneDeep } from 'lodash-es'
- import MSelect from '@/components/FilterList/select.vue'
- let formData = ref({ positionId: '', payFrom: 0, payTo: 0 })
- const form = ref()
- const editId = ref(null)
- // 获取求职意向
- async function getJobInterested (id) {
- const { data } = await getResumeJobInterested()
- if (!data || !data.length) {
- return
- }
- const obj = data.find(k => k.id === id)
- formData.value = cloneDeep(obj)
- formData.value.interestedAreaIdList = obj.interestedAreaIdList.map(e => +e)
- if (dictObj && dictObj?.areaTreeData) {
- const type = typeof dictObj.areaTreeData[0].id
- formData.value.workAreaId = type === 'string' ? obj.workAreaId.toString() : Number(obj.workAreaId)
- }
- }
- onLoad((options) => {
- if (options.id) {
- editId.value = options.id
- getJobInterested(options.id)
- }
- })
- // 提交
- const submit = async () => {
- const valid = await unref(form).validate()
- if (!valid) return
- // 后续做多选
- // const query = {...formData.value, industryIdList: formData.value.industryIdList, interestedAreaIdList: formData.value.interestedAreaIdList}
- try {
- await saveResumeJobInterested(formData.value)
- uni.showToast({
- icon: 'success',
- title: '保存成功'
- })
- setTimeout(() => {
- editId.value = null
- uni.navigateBack({
- delta: 1
- })
- }, 1000)
- } catch (err) {
- uni.showToast({
- icon: 'none',
- title: err.msg
- })
- }
- }
- // 删除
- const handleDelete = async () => {
- try {
- await deleteResumeJobInterested(editId.value)
- uni.showToast({
- icon: 'success',
- title: '删除成功'
- })
- setTimeout(() => {
- editId.value = null
- uni.navigateBack({
- delta: 1
- })
- }, 1000)
- } catch (err) {
- uni.showToast({
- icon: 'none',
- title: err.msg
- })
- }
- }
- const rules = {
- positionId:{
- rules: [{required: true, errorMessage: '请选择期望岗位' }]
- },
- industryIdList:{
- rules: [{required: true, errorMessage: '请选择期望行业' }]
- },
- payFrom:{
- rules: [{required: true, errorMessage: '请输入薪资最低要求' }]
- },
- payTo:{
- rules: [{required: true, errorMessage: '请输入薪资最高要求' }]
- },
- jobType:{
- rules: [{required: true, errorMessage: '请选择求职类型' }]
- },
- workAreaId:{
- rules: [{required: true, errorMessage: '请选择工作城市' }]
- },
- }
- const payToMin = ref(1)
- const payChange = (val) => {
- payToMin.value = val
- if (val > formData.value.payTo) formData.value.payTo = val
- }
- </script>
- <style lang="scss" scoped>
- .content {
- position: relative;
- &-cover {
- position: absolute;
- width: 100%;
- height: 100%;
- left: 0;
- top: 0;
- z-index: 3;
- }
- }
- :deep(.uni-forms-item__content) {
- max-width: 100%;
- overflow: hidden;
- }
- </style>
|