-
zhangwei
2025-01-23 e5a77d6a551d13e4cf74624b31b0fa3e328b304d
src/pages/release/index.vue
@@ -1,68 +1,62 @@
<template>
   <view class="full-page c-m-b-40">
      <view class="list c-p-t-10">
         <up-form labelPosition="left" :model="model1" ref="form1" labelWidth='160rpx'>
            <view class="content c-p-20 c-m-t-10 c-m-b-20">
               <up-form-item label="标题" prop="userInfo.name" :borderBottom='false' ref="item1">
                  <up-input v-model="model1.userInfo.name" border="none" placeholder="请填写招工需求,如:贴标打包"></up-input>
                  <template #right>
      <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>
                  </template> -->
               </up-form-item>
            </view>
            <view class="content c-p-20 c-m-t-10 c-m-b-20">
               <up-form-item label="工作时间" prop="userInfo.name" :borderBottom='false' ref="item1">
                  <up-input v-model="model1.userInfo.name" border="none" placeholder="如今天9:00-今天17:00"></up-input>
               <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>
            </view>
            <view class="content c-p-20 c-m-t-10 c-m-b-20">
               <up-form-item label="性别要求" prop="userInfo.name" :borderBottom='false' ref="item1">
                  <up-tag class='c-p-r-14' text="男" type="warning" plain size="large"></up-tag>
                  <up-tag class='c-p-r-14' text="女" type="warning" plain size="large"></up-tag>
                  <up-tag class='c-p-r-14' text="不限" type="warning" size="large"></up-tag>
                  <!-- <up-input v-model="model1.userInfo.name" border="none" placeholder="如今天9:00-今天17:00"></up-input> -->
               <up-form-item label="自行安排" prop="startTime" :borderBottom='false' ref="item1"
                  v-if="publicJob.workerType==1">
                  <up-checkbox :customStyle="{marginBottom: '8px'}" label="自行安排时间" name="agree" usedAlone
                     v-model:checked="publicJob.zixinganpai" />
               </up-form-item>
               <view class="c-p-t-20 c-p-b-20">
                  <up-form-item label="年龄限制" prop="userInfo.name" :borderBottom='false' ref="item1">
                     <up-input v-model="model1.userInfo.name" border="none" placeholder="16~不限"></up-input>
                     <up-icon #right name="arrow-right"></up-icon>
                  </up-form-item>
               </view>
               <view class="c-p-t-20 c-p-b-20">
                  <up-form-item label="招工人数" prop="userInfo.name" :borderBottom='false' ref="item1">
                     <up-number-box v-model="model1.userInfo.value" @change="valChange"></up-number-box>
                  </up-form-item>
               </view>
               <view class="c-p-t-20 c-p-b-20">
                  <up-form-item label="工作地点" prop="userInfo.name" :borderBottom='false' ref="item1">
                     <up-input v-model="model1.userInfo.address" border="none"
                        placeholder="如今天9:00-今天17:00"></up-input>
                     <up-icon #right name="arrow-right"></up-icon>
                  </up-form-item>
               </view>
            </view>
            <view class="content c-p-20 c-m-t-10 c-m-b-20">
               <up-form-item label="联系电话" prop="userInfo.name" :borderBottom='false' ref="item1">
                  <up-input v-model="model1.userInfo.number" border="none"
                     placeholder="如今天9:00-今天17:00"></up-input>
               <up-form-item label="工作时间" prop="startTime" required :borderBottom='false' ref="item1"
                  v-if="!publicJob.zixinganpai" @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>
               <up-form-item label="工价上限" prop="workPriceMax" required :borderBottom='false' ref="item1">
                  <up-input v-model="publicJob.workPriceMax" border="none" placeholder="请输入工价上限" type="digit">
                     <template #suffix>{{publicJob.workerType=="0"?'元/小时':'元/件'}}</template></up-input>
               </up-form-item>
            </view>
            <view class="content c-p-20 c-m-t-10 c-m-b-20">
               <up-form-item label="方式" prop="userInfo.name" :borderBottom='false' ref="item1">
                  <up-tag class='c-p-r-14' text="计时" type="warning"  size="large"></up-tag>
                  <up-tag class='c-p-r-14' text="计件" type="warning" plain size="large"></up-tag>
               </up-form-item>
            </view>
            <view class="content c-p-20 c-m-t-10 c-m-b-20">
               <up-form-item label="计时工价" prop="userInfo.name" :borderBottom='false' ref="item1">
                  <up-input v-model="model1.userInfo.xiaoshi" border="none"
                     placeholder="如今天9:00-今天17:00">
                     <template #suffix>元/小时</template></up-input>
               </up-form-item>
            </view>
            <view class="coreshop-bg-white c-m-t-20 c-p-20">
            <!-- <view class="coreshop-bg-white c-m-t-20 c-p-20">
               <view class="c-p-b-20 colorgray">
                  招工要求或福利(可多选)
               </view>
@@ -75,44 +69,262 @@
               <view class="c-p-b-20">
                  <up-textarea v-model="value1" placeholder="请输入:可以补充招工要求和福利" ></up-textarea>
               </view>
            </view>
            </view> -->
         </up-form>
      </view>
      <view class="tabbtns">
         <up-button color='#fece01' class="text-69" text="发布招工"></up-button>
         <up-button color='#fece01' :text="editItem?'修改招工':'发布招工'" :loading='isLoading' :loadingText="editItem?'修改中':'发布中'"
            @click="saveOrder"></up-button>
      </view>
      <fui-fab :zIndex="10" background='#fff' bottom='150'>
      <!-- <fui-fab :zIndex="10" background='#fff' bottom='250'>
         <fui-icon name="kefu-fill" color='#000'></fui-icon>
      </fui-fab>
      </fui-fab> -->
      <fui-date-picker range :show="datePickerShow" :type="dateType" @change="changePicker" :minDate='minDate'
         :start="dateType==6?'8:00':'开始日期'" :value="dateType==6?'8:00':sDate" :end="dateType==6?'18:00':eDate"
         @cancel="cancel" :param='$util.formatDate(new Date())'></fui-date-picker>
   </view>
</template>
<script setup>
   import {
      ref,
      reactive
      reactive,
      getCurrentInstance,
      onMounted
   } from 'vue';
   const tags = ['可无经验','晚上包饭','只要熟手','手脚麻利','中午包饭','吃饭不扣时','不磨洋工','禁止吸烟']
   const value1 = ref('')
   const model1 = reactive({
      userInfo: {
         name: '',
         sex: '',
         number: 12345678989,
         value: 3,
         address: '四川省成都市武侯区环球东路',
         xiaoshi:20
   import {
      onLoad,
      onShow,
      onReady,
      onHide
   } from "@dcloudio/uni-app";
   const {
      $upload,
      $api,
      $util,
      $db
   } = getCurrentInstance().appContext.config.globalProperties
   import {
      useStore
   } from 'vuex'
   onLoad(() => {
      let data = $db.get('userInfo').userCompany
      editItem = $db.get('editItem')
      if (data) {
         publicJob.orderUserId = 5
         publicJob.worderAddress = data.address
         publicJob.contactPhone = data.phone //联系电话
      }
      if (editItem) {
         publicJob = reactive(editItem)
         workDate.value = editItem.wordStartTimeName + '至' + editItem.wordEndTimeName
         sDate = editItem.wordStartTimeName
         eDate = editItem.wordEndTimeName
         $db.del('editItem')
      }
   })
   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: {
         type: 'number',
         required: true,
         message: '工价不能为空',
         trigger: ['blur', 'change']
      },
      workPriceMax: {
         type: 'number',
         required: true,
         message: '工价上限不能为空',
         trigger: ['blur', 'change']
      },
   }
   const formRef = ref(null);
   onReady(() => {
      formRef.value.setRules(rules);
   })
   onShow(()=>{
      console.log('Show-------------',publicJob);
   })
   onHide(()=>{
      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: '', //需求
         zixinganpai: false, //自行安排时间
         worderCount: 1, //招工人数
         worderAddress: '', //工作地点
         contactPhone: '', //联系电话
         workerType: 0, //工作方式 0计时1计件
         workPrice: '', //工价
      })
      workDate.value = ''
   })
   onMounted(() => {
      formRef.value.setRules(rules);
      console.log(formRef.value, 'formRef'); // 访问子组件Demo中的属性
   });
   let dateType = ref()
   let minDate = $util.formatDate(new Date())
   let sDate = $util.formatDate(new Date(), null, 1)
   let eDate = '结束日期'
   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)
   let editItem = null
   let 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: '', //需求
      zixinganpai: false, //自行安排时间
      worderCount: 1, //招工人数
      worderAddress: '', //工作地点
      contactPhone: '', //联系电话
      workerType: 0, //工作方式 0计时1计件
      workPrice: '', //工价
   })
   const style = ref('time')
   const changStyle = (val) => {
      publicJob.workerType = val
      if (val == 0) {
         publicJob.zixinganpai = false
      }
   }
   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.workPrice);
      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) {
               if (editItem) {
                  uni.navigateBack()
               } else {
                  uni.navigateTo({
                     url: '/pages/order/order'
                  })
               }
               $util.showToast({
                  title: editItem?'修改成功!':"保存成功!",
                  icon: "success"
               })
            } else {
               publicJob.wordStartTime = time
               $util.showToast({
                  title: res.error
               })
            }
            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{
   }
   .list {}
   .content {
      width: 100%;
      box-sizing: border-box;
      background-color: #fff;
   }
   .u-textarea {
      padding: 0 !important;
   }
</style>