<template>
|
<view class="full-page c-m-b-40">
|
<view class="list">
|
<up-form labelPosition="left" :model="publicJob" ref="formRef" labelWidth='160rpx'>
|
<view class="content c-p-l-24">
|
<up-form-item label="工作名称" prop="orderName" required :borderBottom='false' ref="item1">
|
<up-input v-model="publicJob.orderName" border="none" placeholder="请填写工作名称"></up-input>
|
<!-- <template #right>
|
<up-icon name="arrow-right"></up-icon>
|
</template> -->
|
</up-form-item>
|
<up-form-item label="工作日期" prop="wordStartTime" required :borderBottom='false' ref="item1"
|
@click="clickTime(3)">
|
<up-input v-model="workDate" border="none" readonly placeholder="点击选择工作日期"></up-input>
|
<up-icon #right name="arrow-right"></up-icon>
|
</up-form-item>
|
<up-form-item label="工作时间" prop="StartTime" required :borderBottom='false' ref="item1"
|
@click="clickTime(6)">
|
<up-input v-model="workTime" border="none" readonly placeholder="点击选择工作时间"></up-input>
|
<up-icon #right name="arrow-right"></up-icon>
|
</up-form-item>
|
<up-form-item label="用工要求" prop="demand" required :borderBottom='false' ref="item1">
|
<view class="c-p-b-20">
|
<up-textarea v-model="publicJob.demand" border="none" placeholder="请输入用工要求" count
|
maxlength='400'></up-textarea>
|
</view>
|
</up-form-item>
|
<up-form-item label="招工人数" prop="worderCount" required :borderBottom='false' ref="item1">
|
<up-number-box button-size="24" v-model="publicJob.worderCount"></up-number-box>
|
</up-form-item>
|
<up-form-item label="工作地点" prop="worderAddress" required :borderBottom='false' ref="item1">
|
<up-input v-model="publicJob.worderAddress" border="none" placeholder="请输入工作地点"></up-input>
|
<up-icon #right name="arrow-right"></up-icon>
|
</up-form-item>
|
<up-form-item label="联系电话" prop="contactPhone" required :borderBottom='false' ref="item1">
|
<up-input v-model="publicJob.contactPhone" border="none" placeholder="请输入联系电话"></up-input>
|
</up-form-item>
|
<up-form-item label="方式" prop="workerType" required :borderBottom='false' ref="item1">
|
<up-tag class='c-p-r-14' text="计时" type="warning" :plain='!(publicJob.workerType=="0")'
|
@click='changStyle(0)'></up-tag>
|
<up-tag class='c-p-r-14' text="计件" type="warning" :plain='!(publicJob.workerType=="1")'
|
@click='changStyle(1)'></up-tag>
|
</up-form-item>
|
<up-form-item :label="publicJob.workerType==0?'计时工价':'计件工价'" prop="workPrice" required :borderBottom='false' ref="item1">
|
<up-input v-model="publicJob.workPrice" border="none" placeholder="请输入工价" type="digit">
|
<template #suffix>{{publicJob.workerType=="0"?'元/小时':'元/件'}}</template></up-input>
|
</up-form-item>
|
</view>
|
<!-- <view class="coreshop-bg-white c-m-t-20 c-p-20">
|
<view class="c-p-b-20 colorgray">
|
招工要求或福利(可多选)
|
</view>
|
<view class="c-p-b-20">
|
<up-tag class='c-p-l-14 c-p-b-14' :text="item" plain v-for="(item,index) in tags" :key="index"> </up-tag>
|
</view>
|
<view class="c-p-b-20 colorgray">
|
招工详细描述
|
</view>
|
<view class="c-p-b-20">
|
<up-textarea v-model="value1" placeholder="请输入:可以补充招工要求和福利" ></up-textarea>
|
</view>
|
</view> -->
|
</up-form>
|
</view>
|
<view class="tabbtns">
|
<up-button color='#fece01' class="text-69" text="发布招工" :loading='isLoading' loadingText="发布中"
|
@click="saveOrder"></up-button>
|
</view>
|
<!-- <fui-fab :zIndex="10" background='#fff' bottom='250'>
|
<fui-icon name="kefu-fill" color='#000'></fui-icon>
|
</fui-fab> -->
|
<fui-date-picker range :show="datePickerShow" :type="dateType" @change="changePicker" :minDate='minDate'
|
:start="dateType==6?'8:00':'开始日期'" :value="dateType==6?'8:00':null" :end="dateType==6?'18:00':'结束日期'" @cancel="cancel" :param='$util.formatDate(new Date())'></fui-date-picker>
|
</view>
|
</template>
|
|
<script setup>
|
import {
|
ref,
|
reactive,
|
getCurrentInstance,
|
onMounted
|
} from 'vue';
|
import {
|
onLoad,
|
onShow,
|
onReady
|
} from "@dcloudio/uni-app";
|
const {
|
$upload,
|
$api,
|
$util,
|
$db
|
} = getCurrentInstance().appContext.config.globalProperties
|
import {
|
useStore
|
} from 'vuex'
|
onLoad(() => {
|
let data = JSON.parse($db.get('userInfo')).userCompany
|
if (data) {
|
publicJob.orderUserId = 5
|
publicJob.worderAddress = data.address
|
publicJob.contactPhone = data.phone //联系电话
|
}
|
})
|
let rules = {
|
orderName: {
|
required: true,
|
message: '工作名称不能为空',
|
trigger: ['blur', 'change']
|
},
|
wordStartTime: {
|
required: true,
|
message: '工作日期不能为空',
|
trigger: ['blur', 'change']
|
},
|
StartTime: {
|
required: true,
|
message: '工作时间不能为空',
|
trigger: ['blur', 'change']
|
},
|
demand: {
|
required: true,
|
message: '用工要求不能为空',
|
trigger: ['blur', 'change']
|
},
|
worderAddress: {
|
required: true,
|
message: '工作地点不能为空',
|
trigger: ['blur', 'change']
|
},
|
resume: {
|
required: true,
|
message: '公司简介不能为空',
|
trigger: ['blur', 'change']
|
},
|
contactPhone: {
|
required: true,
|
message: '联系电话不能为空',
|
trigger: ['blur', 'change']
|
},
|
workPrice: {
|
required: true,
|
message: '工价不能为空',
|
trigger: ['blur', 'change']
|
}
|
}
|
const formRef = ref(null);
|
onReady(() => {
|
formRef.value.setRules(rules);
|
})
|
onMounted(() => {
|
formRef.value.setRules(rules);
|
console.log(formRef.value, 'formRef'); // 访问子组件Demo中的属性
|
});
|
let dateType = ref()
|
let minDate = $util.formatDate(new Date())
|
let longitude = ref(0)
|
let latitude = ref(0)
|
let workDate = ref('')
|
let workTime = ref('8:00至18:00')
|
const store = useStore()
|
let datePickerShow = ref(false)
|
let isLoading = ref(false)
|
const publicJob = reactive({
|
id: 0, //招工Id
|
orderUserId: '', //招工用户id
|
orderName: '', //招工名称
|
wordStartTime: '', //工作开始日期
|
wordEndTime: '', //工作结束日期
|
StartTime: `${$util.formatDate(new Date())}T08:00:00.000`, //工作开始时间
|
EndTime: `${$util.formatDate(new Date())}T18:00:00.000`, //工作结束时间
|
demand: '', //需求
|
worderCount: 1, //招工人数
|
worderAddress: '', //工作地点
|
contactPhone: '', //联系电话
|
workerType: 0, //工作方式 0计时1计件
|
workPrice: '', //工价
|
})
|
|
const style = ref('time')
|
const changStyle = (val) => {
|
publicJob.workerType = val
|
}
|
const clickTime = (type) => {
|
dateType.value = type
|
datePickerShow.value = !datePickerShow.value
|
}
|
const cancel = () => {
|
datePickerShow.value = !datePickerShow.value
|
}
|
const changePicker = (val) => {
|
console.log(val);
|
if (dateType.value == 3) {
|
workDate.value = val.startDate.result + '至' + val.endDate.result
|
// publicJob.wordStartTime = new Date(val.startDate.result) //工作开始时间
|
publicJob.wordStartTime = val.startDate.result //工作开始时间
|
publicJob.wordEndTime = new Date(val.endDate.result)
|
} else {
|
workTime.value = val.startDate.result + '至' + val.endDate.result
|
publicJob.StartTime = `${val.startDate.param}T${val.startDate.result}:00.000` //工作开始时间
|
publicJob.EndTime = `${val.endDate.param}T${val.endDate.result}:00.000`
|
}
|
}
|
const saveOrder = () => {
|
console.log(publicJob, 'publicJob',!publicJob.wordStartTime);
|
formRef.value.validate().then(res => {
|
isLoading.value = true
|
let time = publicJob.wordStartTime
|
publicJob.wordStartTime = new Date(publicJob.wordStartTime)
|
$api.saveOrder(publicJob).then(res => {
|
if (res.code == 1) {
|
$util.showToast({
|
title: "保存成功!",
|
icon: "success"
|
})
|
uni.redirectTo({
|
url: '/pages/order/order'
|
})
|
} else {
|
publicJob.wordStartTime = time
|
$util.showToast({
|
title: res.msg
|
})
|
}
|
isLoading.value = false
|
})
|
})
|
}
|
const toMap = () => {
|
// #ifdef MP-WEIXIN
|
console.log(store, 'store’');
|
const txMapkey = store.state.config.qqMapKey; //使用在腾讯位置服务申请的key
|
const referer = store.state.config.shopName; //调用插件的app的名称
|
const location = JSON.stringify({
|
latitude: publicJob.latitude == "" ? latitude : publicJob.latitude,
|
longitude: publicJob.longitude == "" ? longitude : publicJob.longitude
|
});
|
const category = '';
|
|
wx.navigateTo({
|
url: 'plugin://chooseLocation/index?key=' + txMapkey + '&referer=' + referer +
|
'&location=' +
|
location + '&category=' + category
|
});
|
// #endif
|
|
// #ifdef APP-PLUS || APP-PLUS-NVUE
|
uni.chooseLocation({
|
success: (res) => {
|
console.log(res, 'res');
|
}
|
});
|
// #endif
|
}
|
</script>
|
|
<style>
|
.list {}
|
|
.content {
|
width: 100%;
|
box-sizing: border-box;
|
background-color: #fff;
|
}
|
|
.u-textarea {
|
padding: 0 !important;
|
}
|
</style>
|