Browse Source

feat: 新增订单列表页面并优化求职招聘流程

fix: 修复支付页面金额计算错误问题
refactor: 重构订单详情页面布局和交互逻辑
style: 统一日薪字段显示为"试工日薪"
perf: 优化地址选择组件性能
docs: 更新页面注释和文案
master
前端-胡立永 3 weeks ago
parent
commit
a5fcf69e32
20 changed files with 708 additions and 142 deletions
  1. +1
    -1
      App.vue
  2. +1
    -1
      common/config.js
  3. +9
    -3
      components/list/enterprise.vue
  4. +1
    -1
      config.js
  5. +9
    -0
      pages.json
  6. +2
    -2
      pages_subpack/employ-progress/index.vue
  7. +88
    -27
      pages_subpack/enterprise/index.vue
  8. +14
    -13
      pages_subpack/hire/index.vue
  9. +176
    -0
      pages_subpack/hire/order-list.vue
  10. +18
    -6
      pages_subpack/job-hunt/index.vue
  11. +4
    -8
      pages_subpack/job-order-detail/index.vue
  12. +125
    -18
      pages_subpack/order-detail/boss.vue
  13. +0
    -6
      pages_subpack/order-detail/index.vue
  14. +121
    -31
      pages_subpack/pay/index.vue
  15. +4
    -2
      pages_subpack/payment/index.vue
  16. +3
    -3
      pages_subpack/release/component/enterprise.vue
  17. +70
    -8
      pages_subpack/release/component/master.vue
  18. +3
    -1
      pages_subpack/release/index.vue
  19. +28
    -11
      pages_subpack/work-detail/index.vue
  20. +31
    -0
      store/modules/data.js

+ 1
- 1
App.vue View File

@ -5,7 +5,7 @@
this.checkUpdate(); this.checkUpdate();
}, },
onShow: function() { onShow: function() {
this.$store.commit('initConfig')
}, },
onHide: function() { onHide: function() {


+ 1
- 1
common/config.js View File

@ -3,7 +3,7 @@ module.exports = {
// baseUrl:"https://employadmin.hhlm1688.com" // baseUrl:"https://employadmin.hhlm1688.com"
// baseUrl:"http://h5.xzaiyp.top", //测试环境 // baseUrl:"http://h5.xzaiyp.top", //测试环境
// baseUrl:"http://youyi-test.natapp1.cc", // baseUrl:"http://youyi-test.natapp1.cc",
baseUrl:"http://127.0.0.1:8001",
baseUrl:"http://127.0.0.1:8002",
// baseUrl:"https://admin.zhixuanlietou.com", // baseUrl:"https://admin.zhixuanlietou.com",
// http://youyi-test.natapp1.cc // http://youyi-test.natapp1.cc


+ 9
- 3
components/list/enterprise.vue View File

@ -35,8 +35,11 @@
<screenWork :filterData='filterData' :defaultIndex='defaultIndex' @onSelected='onSelected' @onIntellect="onIntellect"></screenWork> <screenWork :filterData='filterData' :defaultIndex='defaultIndex' @onSelected='onSelected' @onIntellect="onIntellect"></screenWork>
--> -->
<view class="se-mt-10"> <view class="se-mt-10">
<view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30" v-for="(items,indexs) in rolelist" :key="indexs">
<view class="se-flex se-flex-h-sb" @click.capture="onMasterDetail(items)">
<view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30"
v-for="(items,indexs) in rolelist"
@click.capture="onMasterDetail(items)"
:key="indexs">
<view class="se-flex se-flex-h-sb">
<view class="se-flex"> <view class="se-flex">
<view class="se-a-100"> <view class="se-a-100">
<image class="se-a-100 se-br-p-50 se-bgc-f5" :src="items.employResume.headImage" mode=""></image> <image class="se-a-100 se-br-p-50 se-bgc-f5" :src="items.employResume.headImage" mode=""></image>
@ -44,6 +47,7 @@
<view class="se-ml-20 se-flex se-flex-v-c se-flex-ai-fs"> <view class="se-ml-20 se-flex se-flex-v-c se-flex-ai-fs">
<text class="se-fw-6 se-c-black se-fs-30">{{items.employResume.name?items.employResume.name:items.hanHaiMember.nickName}}<text class="se-mx-10 se-b-l"></text><text class="se-fs-28 se-c-orange">日薪:{{items.dayMoney}}</text> </text> <text class="se-fw-6 se-c-black se-fs-30">{{items.employResume.name?items.employResume.name:items.hanHaiMember.nickName}}<text class="se-mx-10 se-b-l"></text><text class="se-fs-28 se-c-orange">日薪:{{items.dayMoney}}</text> </text>
<text class="se-fs-24 se-c-text-third">{{items.employResume.sex==1?"男":"女"}}-{{items.employResume.nation?items.employResume.nation:"未知"}}-{{items.employResume.age}}</text> <text class="se-fs-24 se-c-text-third">{{items.employResume.sex==1?"男":"女"}}-{{items.employResume.nation?items.employResume.nation:"未知"}}-{{items.employResume.age}}</text>
<view class="se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6 se-toe-1" style="max-width: 100rpx;"> <view class="se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6 se-toe-1" style="max-width: 100rpx;">
{{items.categoryOne_dictText}} {{items.categoryOne_dictText}}
</view> </view>
@ -58,6 +62,8 @@
{{items.salaryMin}}-{{items.salaryMax}} {{items.salaryMin}}-{{items.salaryMax}}
</view> </view>
</view> </view>
<text class="se-fs-24 se-c-text-third se-mt-5" v-if="items.employResume.brief">{{items.employResume.brief}}</text>
<text class="se-fs-24 se-c-text-third se-mt-5" v-else>暂无个人介绍</text>
<view> <view>
<text class="se-c-text-third se-fs-22 se-mt-10">{{items.createTime}}</text> <text class="se-c-text-third se-fs-22 se-mt-10">{{items.createTime}}</text>
</view> </view>
@ -68,7 +74,7 @@
<text class="se-c-text-sub se-fs-24 se-toe-5" style="max-width: 350rpx;width: 350rpx;"> <text class="se-c-text-sub se-fs-24 se-toe-5" style="max-width: 350rpx;width: 350rpx;">
{{items.address}} {{items.address}}
</text> </text>
<view @click.capture="onCustomerService(items.employAuthenticationPerson.phone)" class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
<view class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
<u-icon color="#FF7A31" name="phone-fill"></u-icon> <u-icon color="#FF7A31" name="phone-fill"></u-icon>
<text class="se-ml-5">立即聘用</text> <text class="se-ml-5">立即聘用</text>
</view> </view>


+ 1
- 1
config.js View File

@ -16,7 +16,7 @@ const config = {
baseUrl : 'http://augcl.natapp1.cc/employ-api', baseUrl : 'http://augcl.natapp1.cc/employ-api',
}, },
prod : { prod : {
baseUrl : 'https://employadmin.augcl.com/employ-api',
baseUrl : 'https://admin.zhixuanlietou.com/employ-api',
} }
} }


+ 9
- 0
pages.json View File

@ -77,6 +77,15 @@
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
}, },
{
"path": "hire/order-list",
"style": {
"navigationBarTitleText": "订单列表",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
},
{ {
"path": "job-hunt/index", "path": "job-hunt/index",
"style": { "style": {


+ 2
- 2
pages_subpack/employ-progress/index.vue View File

@ -40,8 +40,8 @@
methods:{ methods:{
onOrderDetail(){ onOrderDetail(){
let that = this; let that = this;
uni.navigateTo({
url:"/pages_subpack/job-order-detail/index?orderId="+that.id
uni.redirectTo({
url:`/pages_subpack/job-order-detail/index?orderId=${that.id}`
}) })
}, },
onCancel(){ onCancel(){


+ 88
- 27
pages_subpack/enterprise/index.vue View File

@ -19,8 +19,8 @@
<u-form-item label="公司名称" prop="company"> <u-form-item label="公司名称" prop="company">
<u--input v-model="form.company" class="se-bgc-f5" placeholder="请输入公司名称"></u--input> <u--input v-model="form.company" class="se-bgc-f5" placeholder="请输入公司名称"></u--input>
</u-form-item> </u-form-item>
<u-form-item label="公司地址" prop="address">
<u--textarea :autoHeight="true" v-model="form.address" class="se-bgc-f5" placeholder="请选择地址" ></u--textarea>
<u-form-item label="公司地址" prop="address" @click="handleAreaChange()">
<u--textarea :autoHeight="true" v-model="form.address" readonly class="se-bgc-f5" placeholder="请点击地图选择地址" ></u--textarea>
<!-- <u--input v-model="form.address" class="se-bgc-f5" placeholder="请选择地址" ></u--input> --> <!-- <u--input v-model="form.address" class="se-bgc-f5" placeholder="请选择地址" ></u--input> -->
<view slot="right" @click="handleAreaChange()" class="se-ml-10 se-px-10 se-flex-1 se-br-10 se-flex-h-c se-h-40 se-lh-40 se-ta-c se-fs-22 se-c-white se-bgc-orange"> <view slot="right" @click="handleAreaChange()" class="se-ml-10 se-px-10 se-flex-1 se-br-10 se-flex-h-c se-h-40 se-lh-40 se-ta-c se-fs-22 se-c-white se-bgc-orange">
<text>地图</text> <text>地图</text>
@ -37,6 +37,20 @@
</view> </view>
<view class="se-p-20"> <view class="se-p-20">
<view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20"> <view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20">
<u-form-item prop="headImg" labelWidth="2">
<view class="se-flex se-flex-v-sa">
<view class="se-py-20 se-w-p-100 se-flex">
<view class="line-orange"></view>
<view class="se-ml-10">
企业logo上传
</view>
</view>
<view class="se-py-20 se-w-p-100">
<u-upload :fileList="form.headImg" @afterRead="afterReadLogo" @delete="deleteLogoImg" name="2"
:maxCount="1"></u-upload>
</view>
</view>
</u-form-item>
<u-form-item prop="file" labelWidth="2"> <u-form-item prop="file" labelWidth="2">
<view class="se-flex se-flex-v-sa"> <view class="se-flex se-flex-v-sa">
<view class="se-py-20 se-w-p-100 se-flex"> <view class="se-py-20 se-w-p-100 se-flex">
@ -92,6 +106,7 @@
industryId:'', industryId:'',
industryName:'', industryName:'',
status:'', status:'',
headImg:[],
businessLicenseFile:[] businessLicenseFile:[]
}, },
rules: { rules: {
@ -140,6 +155,18 @@
message: '请选择行业', message: '请选择行业',
trigger: ['blur', 'change'] trigger: ['blur', 'change']
}], }],
headImg:[
{
validator: (rule, value, callback) => {
if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) {
callback(new Error('请上传企业logo'));
} else {
callback();
}
},
trigger: 'blur'
}
],
businessLicenseFile:[ businessLicenseFile:[
{ {
validator: (rule, value, callback) => { validator: (rule, value, callback) => {
@ -183,6 +210,7 @@
this.form.industryId = company.industry this.form.industryId = company.industry
this.form.industryName = company.industryName this.form.industryName = company.industryName
this.form.status = company.status this.form.status = company.status
this.form.headImg = this.stringToKeyValueArray(company.headImg)
this.form.businessLicenseFile = this.stringToKeyValueArray(company.license) this.form.businessLicenseFile = this.stringToKeyValueArray(company.license)
} }
}).catch(error=>{ }).catch(error=>{
@ -235,6 +263,7 @@
address:that.form.address, address:that.form.address,
industry:that.form.industryId, industry:that.form.industryId,
industryName:that.form.industryName, industryName:that.form.industryName,
headImg:that.form.headImg.map(item => item.url).join(','),
license:that.form.businessLicenseFile.map(item => item.url).join(','), license:that.form.businessLicenseFile.map(item => item.url).join(','),
} }
// if(that.form.id){ // if(that.form.id){
@ -272,6 +301,9 @@
deletePic(event) { deletePic(event) {
this.form.businessLicenseFile.splice(event.index, 1) this.form.businessLicenseFile.splice(event.index, 1)
}, },
deleteLogoImg(event) {
this.form.headImg.splice(event.index, 1)
},
async afterRead(e) { async afterRead(e) {
let self = this let self = this
e.file.forEach(file => { e.file.forEach(file => {
@ -283,38 +315,67 @@
}) })
}) })
}, },
handleAreaChange(){
async afterReadLogo(e) {
let self = this
self.$Oss.ossUpload(e.file.url).then(url => {
console.info(url)
self.form.headImg.push({
url
})
})
},
handleAreaChange(){
const that = this; const that = this;
wx.chooseLocation({ wx.chooseLocation({
type: 'gcj02',
// type: 'wgs84', // type: 'wgs84',
success: function (res) { success: function (res) {
const qqmapsdk = new QQMapWX({
key: 'BJKBZ-W46K3-6S43C-OFLJB-FW6FQ-RMBYP' //
});
uni.showLoading({
title:"获取中...."
})
qqmapsdk.reverseGeocoder({
location: {
latitude: res.latitude,
longitude: res.longitude
},
success: function(response) {
console.log('逆地理编码结果:', response);
uni.hideLoading()
that.form.longitude = response.result.location.lng
that.form.latitude = response.result.location.lat
that.form.address = response.result.address
},
fail: function(error) {
uni.hideLoading()
console.error('逆地理编码失败:', error);
}
});
that.form.latitude = res.latitude
that.form.longitude = res.longitude
if (!res.address && res.name) { //
return that.form.address = res.name
}
if (res.address || res.name) {
return that.form.address = res.address + res.name
}
that.form.address = '' //
} }
}) })
// this.$refs.citySelectRef.open()
}, },
// handleAreaChange(){
// const that = this;
// wx.chooseLocation({
// // type: 'wgs84',
// success: function (res) {
// const qqmapsdk = new QQMapWX({
// key: 'BJKBZ-W46K3-6S43C-OFLJB-FW6FQ-RMBYP' //
// });
// uni.showLoading({
// title:"...."
// })
// qqmapsdk.reverseGeocoder({
// location: {
// latitude: res.latitude,
// longitude: res.longitude
// },
// success: function(response) {
// console.log('', response);
// uni.hideLoading()
// that.form.longitude = response.result.location.lng
// that.form.latitude = response.result.location.lat
// that.form.address = response.result.address
// },
// fail: function(error) {
// uni.hideLoading()
// console.error('', error);
// }
// });
// }
// })
// // this.$refs.citySelectRef.open()
// },
} }
} }
</script> </script>


+ 14
- 13
pages_subpack/hire/index.vue View File

@ -31,17 +31,20 @@
<view class="se-c-text se-c-text-sub se-fs-24"> <view class="se-c-text se-c-text-sub se-fs-24">
{{items.createTime | formatTime}} {{items.createTime | formatTime}}
</view> </view>
<view v-if="!items.employOrder"
<view v-if="!items.employOrder.length"
style="flex-shrink: 0;"
class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6"> class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
<text class="se-ml-5">修改</text> <text class="se-ml-5">修改</text>
</view> </view>
<view v-if="!items.employOrder"
<view v-if="!items.employOrder.length"
style="flex-shrink: 0;"
class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6"> class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
<text class="se-ml-5">删除</text> <text class="se-ml-5">删除</text>
</view> </view>
<view v-else <view v-else
style="flex-shrink: 0;"
class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6"> class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
<text class="se-ml-5">接单</text>
<text class="se-ml-5">{{ items.employOrder.length }}接单</text>
</view> </view>
</view> </view>
</view> </view>
@ -54,9 +57,6 @@
queryJobListByUserId queryJobListByUserId
} from "@/common/api.js" } from "@/common/api.js"
export default { export default {
data() { data() {
return { return {
@ -125,22 +125,23 @@
return (R * c).toFixed(2); // return (R * c).toFixed(2); //
} }
}, },
onLoad() {
onShow() {
this.onQueryJobListByUserId(); this.onQueryJobListByUserId();
}, },
methods: { methods: {
onMasterDetail(event) { onMasterDetail(event) {
if(event.employOrder){
//
if(event.employOrder && event.employOrder.length > 0){
// ID
uni.navigateTo({ uni.navigateTo({
url: "/pages_subpack/order-detail/boss?orderId=" + event.employOrder.id
})
url: "/pages_subpack/hire/order-list?jobId=" + event.id
});
}else{ }else{
//
uni.navigateTo({ uni.navigateTo({
url: "/pages_subpack/work-detail/index?id=" + event.id url: "/pages_subpack/work-detail/index?id=" + event.id
})
});
} }
}, },
onQueryJobListByUserId() { onQueryJobListByUserId() {
console.log("进入了我发布的招聘页面") console.log("进入了我发布的招聘页面")


+ 176
- 0
pages_subpack/hire/order-list.vue View File

@ -0,0 +1,176 @@
<template>
<view class="u-page se-w-vw-100">
<!-- 招聘信息头部 -->
<view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30" v-if="jobInfo">
<view class="se-flex se-flex-h-sb se-mb-10">
<view class="se-flex se-fw-6">
<text class="se-c-black se-fs-30">{{jobInfo.title}}</text>
<text class="se-mx-10 se-b-l"></text>
<text class="se-fs-28 se-c-orange">日薪:{{jobInfo.salaryDay}}</text>
</view>
<view class="se-c-orange se-fs-32 se-fw-6">
{{jobInfo.salaryMin}}-{{jobInfo.salaryMax}}k
</view>
</view>
<view class="se-py-10">
<text class="se-c-text-sub se-fs-22 se-mr-10 se-py-5 se-px-20 se-br-5 se-bgc-f5"
v-if="jobInfo.categoryOne_dictText">{{jobInfo.categoryOne_dictText}}</text>
<text class="se-c-text-sub se-fs-22 se-mr-10 se-py-5 se-px-20 se-br-5 se-bgc-f5"
v-if="jobInfo.categoryTwo_dictText">{{jobInfo.categoryTwo_dictText}}</text>
</view>
<view class="se-flex se-flex-h-sb">
<view class="se-flex se-flex-h-c">
<u-icon name="map"></u-icon>
<text class="se-c-text-sub se-fs-24 se-pl-10 se-toe-3">{{jobInfo.address}}</text>
</view>
<view
style="flex-shrink: 0;"
class="se-c-orange se-fs-24 se-fw-6">
{{orderList.length}}个订单
</view>
</view>
</view>
<view class="se-p-40">
<view class="se-px-40 se-mb-30 se-py-30 se-bgc-white se-br-40 se-bs-b"
v-for="(item, index) in orderList"
:key="index"
@click="onOrderDetail(item)">
<view class="se-flex se-flex-h-sb se-fw-6 se-fs-32 se-pb-20">
<view class="se-flex">
</view>
<view class="se-c-red">
{{getStatusText(item.status)}}
</view>
</view>
<view class="se-flex se-bgc-f5 se-br-20 se-p-20">
<view class="se-w-160 se-h-160">
<image class="se-w-160 se-h-160 se-br-10" :src="item.employResume ?
item.employResume.headImage
: '/static/image/user.png'" mode="aspectFill"></image>
</view>
<view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs se-flex-1">
<view class="se-fw-6 se-c-black se-fs-30 se-display-ib se-mb-10">求职者{{item.jobName}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib se-mb-5">联系电话{{item.jobPhone}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib se-mb-5">接单时间{{item.createTime | formatTime}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib se-mb-5">工作地址{{item.jobAddress}}</view>
</view>
</view>
</view>
<u-empty v-if="orderList && orderList.length==0" mode="list" text="暂无订单信息"></u-empty>
</view>
</view>
</template>
<script>
import {
getTaskById
} from "@/common/api.js"
export default {
data() {
return {
orderList: [],
jobInfo: null,
jobId: null
}
},
filters: {
formatTime(time) {
if (!time) return '';
//
let timestamp;
if (typeof time === 'number') {
// 使
timestamp = time;
} else {
//
timestamp = new Date(time).getTime();
}
const currentTime = new Date().getTime();
const diff = (currentTime - timestamp) / 1000; //
//
const oneMonthInSeconds = 30 * 24 * 60 * 60;
if (diff > oneMonthInSeconds) {
let date = new Date(timestamp);
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;
return `${year}-${month}-${day}`;
} else {
//
if (diff < 60) {
return `${Math.floor(diff)}秒钟前`;
} else if (diff < 60 * 60) {
return `${Math.floor(diff / 60)}分钟前`;
} else if (diff < 60 * 60 * 24) {
return `${Math.floor(diff / 60 / 60)}小时前`;
} else {
//
return `${Math.floor(diff / 60 / 60 / 24)}天前`;
}
}
}
},
onLoad(options) {
if (options.jobId) {
this.jobId = options.jobId;
}
},
onShow(){
this.getJobDetail();
},
methods: {
getJobDetail() {
getTaskById({ id: this.jobId }).then(response => {
if (response.success) {
this.jobInfo = response.result;
this.orderList = this.jobInfo.employOrder || [];
//
uni.setNavigationBarTitle({
title: `${this.jobInfo.title} - 订单列表`
});
} else {
uni.showToast({
title: '获取工作详情失败',
icon: 'none'
});
}
}).catch(error => {
console.error('获取工作详情失败:', error);
uni.showToast({
title: '网络错误',
icon: 'none'
});
});
},
getStatusText(status) {
const statusMap = {
0: '待聘用',
1: '进行中',
2: '试工完成',
3: '企业确认',
4: '已支付',
5: '已完成',
6: '已取消'
};
return statusMap[status] || '未知状态';
},
onOrderDetail(order) {
uni.navigateTo({
url: `/pages_subpack/order-detail/boss?orderId=${order.id}&type=true`
});
}
}
}
</script>
<style>
</style>

+ 18
- 6
pages_subpack/job-hunt/index.vue View File

@ -1,8 +1,9 @@
<template> <template>
<view> <view>
<view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30" v-for="(items,indexs) in rolelist" <view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30" v-for="(items,indexs) in rolelist"
@click.capture="onMasterDetail(items)"
:key="indexs"> :key="indexs">
<view class="se-flex se-flex-h-sb" @click.capture="onMasterDetail(items)">
<view class="se-flex se-flex-h-sb" >
<view class="se-flex"> <view class="se-flex">
<view class="se-a-80"> <view class="se-a-80">
<image class="se-a-80 se-br-p-50 se-bgc-f5" :src="items.employResume.headImage" mode=""></image> <image class="se-a-80 se-br-p-50 se-bgc-f5" :src="items.employResume.headImage" mode=""></image>
@ -41,9 +42,19 @@
{{items.address}} {{items.address}}
</text> </text>
<view <view
v-if="items.employOrder"
class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
<text class="se-ml-5">已聘用</text>
v-if="items"
class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-fw-6"
:class="{
'se-c-99 se-bgc-f5': items.seekStatus == 0,
'se-c-orange se-bgc-ffd': items.seekStatus == 1,
'se-c-green se-bgc-green-light': items.seekStatus == 2
}">
<text class="se-ml-5" v-if="items.employOrder && items.seekStatus == 0">
待确认
</text>
<text class="se-ml-5" v-else>
{{ items.seekStatus == 0 ? '待聘用' : items.seekStatus == 1 ? '已聘用' : '已完成' }}
</text>
</view> </view>
</view> </view>
</view> </view>
@ -73,9 +84,10 @@
uni.navigateTo({ uni.navigateTo({
url: `/pages_subpack/job-order-detail/index?orderId=${event.employOrder.id}&type=true` url: `/pages_subpack/job-order-detail/index?orderId=${event.employOrder.id}&type=true`
}) })
}else{
}else if(event.seekStatus == 0){
//
uni.navigateTo({ uni.navigateTo({
url: "/pages_subpack/master-detail/index?id=" + event.id
url: `/pages_subpack/release/index?status=2&editId=${event.id}`
}) })
} }
}, },


+ 4
- 8
pages_subpack/job-order-detail/index.vue View File

@ -6,42 +6,36 @@
<image class="se-a-50" src="@/static/image/46524.png" mode=""></image> <image class="se-a-50" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">聘用师傅-师傅求职-等待师傅确认</text> <text class="se-c-orange se-fs-30 se-ml-10">聘用师傅-师傅求职-等待师傅确认</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==1"> <template v-if="stepsIndex==1">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46524.png" mode=""></image> <image class="se-a-50" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单进行中</text> <text class="se-c-orange se-fs-30 se-ml-10">订单进行中</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==2"> <template v-if="stepsIndex==2">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">企业待确认</text> <text class="se-c-orange se-fs-30 se-ml-10">企业待确认</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==3"> <template v-if="stepsIndex==3">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">企业待支付</text> <text class="se-c-orange se-fs-30 se-ml-10">企业待支付</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==4"> <template v-if="stepsIndex==4">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">求职者待确认</text> <text class="se-c-orange se-fs-30 se-ml-10">求职者待确认</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==5"> <template v-if="stepsIndex==5">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单已完成</text> <text class="se-c-orange se-fs-30 se-ml-10">订单已完成</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==6"> <template v-if="stepsIndex==6">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
@ -58,8 +52,8 @@
</u-steps> </u-steps>
</view> </view>
<!-- 企业 -->
<view class="se-px-20"> <view class="se-px-20">
<!-- 企业 -->
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c" <view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c"
v-if="!type"> v-if="!type">
<button <button
@ -295,8 +289,10 @@
onLoad(options) { onLoad(options) {
this.orderId = options.orderId this.orderId = options.orderId
this.type = options.type || '' this.type = options.type || ''
this.onOrderDetail()
}, },
onShow(){
this.onOrderDetail()
},
methods: { methods: {
onOrderDetail() { onOrderDetail() {
let that = this let that = this


+ 125
- 18
pages_subpack/order-detail/boss.vue View File

@ -6,42 +6,37 @@
<image class="se-a-50" src="@/static/image/46524.png" mode=""></image> <image class="se-a-50" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">招聘发布-师傅接单-等待企业确认</text> <text class="se-c-orange se-fs-30 se-ml-10">招聘发布-师傅接单-等待企业确认</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==1"> <template v-if="stepsIndex==1">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46524.png" mode=""></image> <image class="se-a-50" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单进行中</text> <text class="se-c-orange se-fs-30 se-ml-10">订单进行中</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==2"> <template v-if="stepsIndex==2">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">试工完成</text> <text class="se-c-orange se-fs-30 se-ml-10">试工完成</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==3"> <template v-if="stepsIndex==3">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">企业待支付</text> <text class="se-c-orange se-fs-30 se-ml-10">企业待支付</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==4"> <template v-if="stepsIndex==4">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单待完成</text> <text class="se-c-orange se-fs-30 se-ml-10">订单待完成</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==5"> <template v-if="stepsIndex==5">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单已完成</text> <text class="se-c-orange se-fs-30 se-ml-10">订单已完成</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
<!-- <text class="se-c-orange se-mt-20 se-fs-24">124530有效</text> -->
</template> </template>
<template v-if="stepsIndex==6"> <template v-if="stepsIndex==6">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
@ -58,7 +53,76 @@
</u-steps> </u-steps>
</view> </view>
<view class="se-px-20"> <view class="se-px-20">
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c">
<!-- 企业 -->
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c"
v-if="type">
<button
open-type="contact"
class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
<text>联系客服</text>
</button>
<template v-if="stepsIndex==0">
<view @click="confirmOrder()"
class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
<text>接收该员工</text>
</view>
<view @click="onCancel()"
class="se-mx-10 se-w-200 se-b se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-66 se-bgc-f5">
<text>取消</text>
</view>
</template>
<template v-if="stepsIndex == 2">
<view @click="confirmOrderTryCompany()"
class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
<text>企业确认</text>
</view>
</template>
<template v-if="stepsIndex==3">
<view @click="onPay()"
class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
<text>去支付</text>
</view>
</template>
</view>
<!-- 求职者 -->
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c"
v-else>
<button
open-type="contact"
class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
<text>联系客服</text>
</button>
<template v-if="stepsIndex==0">
<view @click="onCancel()"
class="se-mx-10 se-w-200 se-b se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-66 se-bgc-f5">
<text>取消</text>
</view>
</template>
<template v-if="stepsIndex==1">
<view @click="confirmOrderTry()"
class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
<text>确认试工完成</text>
</view>
</template>
<template v-if="stepsIndex==4">
<view @click="confirmOrderTryCompanyOk()"
class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange">
<text>确认到账</text>
</view>
</template>
</view>
<!-- <view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c">
<template> <template>
<button <button
open-type="contact" open-type="contact"
@ -79,7 +143,7 @@
<text>去支付</text> <text>去支付</text>
</view> </view>
</template> </template>
</view>
</view> -->
</view> </view>
<view class="se-px-40 se-py-20"> <view class="se-px-40 se-py-20">
@ -165,6 +229,12 @@
<view class="se-mt-10"> <view class="se-mt-10">
<view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30" v-for="(items,indexs) in [obj]" <view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30" v-for="(items,indexs) in [obj]"
:key="indexs"> :key="indexs">
<view class="se-flex se-flex-ai-c se-pb-10">
<view class="line-orange"></view>
<view class="se-ml-10 se-fs-32 se-c-black se-fw-6">
求职者简历信息
</view>
</view>
<view class="se-flex se-flex-h-sb"> <view class="se-flex se-flex-h-sb">
<view class="se-flex"> <view class="se-flex">
<view class="se-a-100"> <view class="se-a-100">
@ -173,10 +243,9 @@
</view> </view>
<view class="se-ml-20 se-flex se-flex-v-c se-flex-ai-fs"> <view class="se-ml-20 se-flex se-flex-v-c se-flex-ai-fs">
<text <text
class="se-fw-6 se-c-black se-fs-30">{{items.employResume.name?items.employResume.name:items.hanHaiMember.nickName}}<text
class="se-mx-10 se-b-l"></text></text>
class="se-fw-6 se-c-black se-fs-30">{{items.employResume.name?items.employResume.name:items.hanHaiMember.nickName}}</text>
<text <text
class="se-fs-24 se-c-text-third">{{items.employResume.sex==1?"男":"女"}}-{{items.employResume.nation?items.employResume.nation:"未知"}}-{{items.employResume.age}}</text>
class="se-fs-24 se-c-text-third se-mt-5">{{items.employResume.sex==1?"男":"女"}}-{{items.employResume.nation?items.employResume.nation:"未知"}}-{{items.employResume.age}}</text>
</view> </view>
</view> </view>
<view @click.capture="onCustomerService(items.employAuthenticationPerson.phone)" <view @click.capture="onCustomerService(items.employAuthenticationPerson.phone)"
@ -186,14 +255,44 @@
<text class="se-ml-5">联系他</text> <text class="se-ml-5">联系他</text>
</view> </view>
</view> </view>
<view v-if="stepsIndex == 0">
<text class="se-c-text-third se-fs-22 se-mt-10">{{items.createTime}}</text>
<view @click.capture="confirmOrder(items.employAuthenticationPerson.phone)"
style="padding: 20rpx 0;"
class="se-flex se-flex-h-c se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-fw-6">
<text class="se-ml-5">确认</text>
<u-line dashed class="se-my-20"></u-line>
<view class="se-py-10">
<view class="se-flex se-flex-h-sb se-py-10">
<view class="se-fs-24 se-display-ib">联系电话</view>
<view class="se-fs-24 se-display-ib">{{items.employResume.phone || '暂未'}}</view>
</view>
<view class="se-flex se-flex-h-sb se-py-10">
<view class="se-fs-24 se-display-ib">期望薪资</view>
<view class="se-fs-24 se-display-ib se-c-orange" v-if="items.employResume.salaryMin && items.employResume.salaryMax">{{items.employResume.salaryMin}}-{{items.employResume.salaryMax}}k</view>
<view class="se-fs-24 se-display-ib se-c-99" v-else>暂未</view>
</view>
<view class="se-flex se-flex-h-sb se-py-10">
<view class="se-fs-24 se-display-ib">期望工作地址</view>
<view class="se-fs-24 se-display-ib">{{items.employResume.address || '暂未'}}</view>
</view>
<view class="se-flex se-flex-h-sb se-py-10">
<view class="se-fs-24 se-display-ib">支付方式偏好</view>
<view class="se-fs-24 se-display-ib" v-if="items.employResume.payType==0">提前支付</view>
<view class="se-fs-24 se-display-ib" v-else-if="items.employResume.payType==1">试用后支付</view>
<view class="se-fs-24 se-display-ib se-c-99" v-else>暂未</view>
</view>
<view class="se-flex se-flex-h-sb se-py-10" v-if="items.employResume.categoryOne">
<view class="se-fs-24 se-display-ib">专业类别</view>
<view class="se-fs-24 se-display-ib">{{items.employResume.categoryOneName || '暂未'}}</view>
</view> </view>
</view> </view>
<u-line dashed class="se-my-20" v-if="items.employResume.brief"></u-line>
<view class="se-py-10" v-if="items.employResume.brief">
<view class="se-fw-6 se-fs-28 se-c-black se-mb-10">
个人简介
</view>
<view class="se-fs-24 se-lh-40 se-c-text">
{{items.employResume.brief}}
</view>
</view>
<view v-if="stepsIndex == 0" class="se-mt-20">
<text class="se-c-text-third se-fs-22">接单时间{{items.createTime}}</text>
</view>
</view> </view>
</view> </view>
@ -243,11 +342,13 @@
4热爱设计平面基本功扎实拥有优良的审美与创意想法对版式色彩把控能力强;对工作富有责任心具备团队沟通与协作能力;<br/> 4热爱设计平面基本功扎实拥有优良的审美与创意想法对版式色彩把控能力强;对工作富有责任心具备团队沟通与协作能力;<br/>
5精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 PPT/Keynote能完成提案内容的材料美化工作<br/> 5精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 PPT/Keynote能完成提案内容的材料美化工作<br/>
</p>`, </p>`,
obj: {}
obj: {},
type : '',
} }
}, },
onLoad(options) { onLoad(options) {
this.orderId = options.orderId this.orderId = options.orderId
this.type = options.type || ''
}, },
onShow() { onShow() {
this.onOrderDetail() this.onOrderDetail()
@ -338,4 +439,10 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.line-orange {
width: 8rpx;
height: 32rpx;
background: #ff7a31;
border-radius: 4rpx;
}
</style> </style>

+ 0
- 6
pages_subpack/order-detail/index.vue View File

@ -6,42 +6,36 @@
<image class="se-a-50" src="@/static/image/46524.png" mode=""></image> <image class="se-a-50" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">招聘发布-师傅接单-等待企业确认</text> <text class="se-c-orange se-fs-30 se-ml-10">招聘发布-师傅接单-等待企业确认</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==1"> <template v-if="stepsIndex==1">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46524.png" mode=""></image> <image class="se-a-50" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单进行中</text> <text class="se-c-orange se-fs-30 se-ml-10">订单进行中</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==2"> <template v-if="stepsIndex==2">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">试工完成</text> <text class="se-c-orange se-fs-30 se-ml-10">试工完成</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==3"> <template v-if="stepsIndex==3">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">企业待确认</text> <text class="se-c-orange se-fs-30 se-ml-10">企业待确认</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==4"> <template v-if="stepsIndex==4">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">企业待支付</text> <text class="se-c-orange se-fs-30 se-ml-10">企业待支付</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==5"> <template v-if="stepsIndex==5">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image> <image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单已完成</text> <text class="se-c-orange se-fs-30 se-ml-10">订单已完成</text>
</view> </view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
<template v-if="stepsIndex==6"> <template v-if="stepsIndex==6">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">


+ 121
- 31
pages_subpack/pay/index.vue View File

@ -26,36 +26,49 @@
<text class="se-c-black se-fs-32 se-ml-20">{{ detail.workUser }}</text> <text class="se-c-black se-fs-32 se-ml-20">{{ detail.workUser }}</text>
</view> </view>
<view> <view>
<text class="se-c-orange se-fs-32 se-ml-20">$ {{ detail.orderNoMoney }}</text>
<text class="se-c-orange se-fs-32 se-ml-20">$ {{ detail.payMoney }}</text>
</view> </view>
</view> </view>
<view class="se-flex se-flex-h-sb se-pt-20" v-if="detail.employSeek">
<view class="se-flex se-flex-h-fs">
<image class="se-w-30 se-h-40" src="@/static/image/47961.png" mode=""></image>
<text class="se-c-black se-fs-32 se-ml-20">师傅试工交通费用</text>
</view>
<view class="se-flex se-flex-ai-c">
<view class="se-bgc-orange se-display-ib se-br-10 se-py-5 se-px-20 se-c-white se-fs-20">
{{ detail.employSeek.selectGo }}
</view>
<text class="se-c-orange se-fs-32 se-ml-20">$10</text>
</view>
</view>
<view class="se-c-black se-p-20 se-fs-24 se-flex se-flex-ai-c se-mt-20"
style="background-color:rgba(255,164,113,0.48);">
<view class="se-w-10 se-h-10 se-br-5 se-bgc-orange se-mr-10"></view>
<text>全程共</text>
<text class="se-c-orange se-px-5 se-fw-6">5</text>
<text>公里</text>
</view>
<view class="se-p-20 se-fs-24 se-flex se-flex-ai-c" style="background-color:rgba(255,164,113,0.18);">
从师傅出发地到用工目的地总全程为5公里5公里x2=10
</view>
<view class="se-fs-22 se-lh-50 se-flex se-flex-v se-mt-10">
<text>1.公交/地铁出行费用按站xxxxxxxxx</text>
<text>2.出租车出行费用按公里xxxxxxxxx</text>
<text>3.网约车出行费用按xxxxxxxxxxxxxx</text>
</view>
<!-- 新增保险费明细 type==1 时显示 -->
<template v-if="detail.type == 1">
<view class="se-flex se-flex-h-sb se-pt-20">
<view class="se-flex se-flex-h-fs">
<image class="se-w-30 se-h-40" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-black se-fs-32 se-ml-20">保险费</text>
</view>
<view>
<text class="se-c-orange se-fs-32 se-ml-20">{{ detail.premium }}</text>
</view>
</view>
<view class="se-flex se-flex-h-sb se-pt-20"
v-if="detail.employSeek">
<view class="se-flex se-flex-h-fs">
<image class="se-w-30 se-h-40" src="@/static/image/47961.png" mode=""></image>
<text class="se-c-black se-fs-32 se-ml-20">师傅试工交通费用</text>
</view>
<view class="se-flex se-flex-ai-c">
<view class="se-bgc-orange se-display-ib se-br-10 se-py-5 se-px-20 se-c-white se-fs-20">
{{ detail.employSeek.selectGo }}
</view>
<text class="se-c-orange se-fs-32 se-ml-20">$ {{ fare }}</text>
</view>
</view>
<view class="se-c-black se-p-20 se-fs-24 se-flex se-flex-ai-c se-mt-20"
style="background-color:rgba(255,164,113,0.48);">
<view class="se-w-10 se-h-10 se-br-5 se-bgc-orange se-mr-10"></view>
<text>全程共</text>
<text class="se-c-orange se-px-5 se-fw-6">{{ distance }}</text>
<text>公里</text>
</view>
<view class="se-p-20 se-fs-24 se-flex se-flex-ai-c" style="background-color:rgba(255,164,113,0.18);">
从师傅出发地到用工目的地总全程为5公里{{ distance }}公里x{{ farePerKm }}={{ fare }}
</view>
<view class="se-fs-22 se-lh-50 se-flex se-flex-v se-mt-10">
<text>1.公交/地铁出行费用每公里{{ trafficPrice.bus }}</text>
<text>2.出租车出行费用每公里{{ trafficPrice.taxi }}</text>
<text>3.网约车出行费用每公里{{ trafficPrice.online }}</text>
</view>
</template>
</view> </view>
<view class="se-mt-30 se-py-30 se-px-30 se-bs se-bgc-white se-br-20"> <view class="se-mt-30 se-py-30 se-px-30 se-bs se-bgc-white se-br-20">
<u-radio-group size="18" v-model="payRadio" iconPlacement="right"> <u-radio-group size="18" v-model="payRadio" iconPlacement="right">
@ -107,19 +120,45 @@
payOrderCompany, payOrderCompany,
userInfo, userInfo,
} from "@/common/api.js" } from "@/common/api.js"
import position from "@/utils/position.js"
export default { export default {
data() { data() {
return { return {
amount: 0,
amount: 0,
payRadio: "1", payRadio: "1",
orderId : 0, orderId : 0,
checked : 0, checked : 0,
detail : {}, detail : {},
// type 0
// type 1
//
trafficPrice: {
bus: 2, // /
taxi: 3, //
online: 2.5 //
},
fare : 0,//
distance : 0,//
farePerKm : 2,//
} }
}, },
computed : { computed : {
price(){ price(){
return 440
// type 0
// type 1
let basePrice = Number(this.detail.payMoney) || 0;
let premiumFee = Number(this.detail.premium) || 0;
let trafficFee = Number(this.fare) || 0;
if (this.detail.type == 1) {
//
return basePrice + premiumFee + trafficFee;
} else {
//
return basePrice;
}
}, },
}, },
onLoad(options) { onLoad(options) {
@ -145,10 +184,60 @@
} }
orderDetail(params).then(response => { orderDetail(params).then(response => {
that.detail = response.result that.detail = response.result
}).catch(error => {
that.calcDistance()
that.calcFare()
}).catch(error => {
console.log(error)
}) })
}, },
//
calcDistance(){
console.log('calcDistance-计算距离')
let distance = 0;
if (this.detail.type == 1) {
let seek = this.detail.employSeek
let company = this.detail.employAuthenticationCompany
distance = position.calculateDistance(seek.latitude, seek.longitude, company.latitude, company.longitude)
}
this.distance = distance;
},
//
calcFare(){
console.log('calcFare-计算费用')
let fare = 0;
if (this.detail.type == 1) {
//
let seek = this.detail.employSeek
if(!seek) return
// console.log(this.$store.state.data.configList);
let configList = this.$store.state.data.configList
// if(seek.selectGo.includes('')){
// this.farePerKm = this.trafficPrice.taxi
// }else if(seek.selectGo.includes('')){
// this.farePerKm = this.trafficPrice.online
// }else if(seek.selectGo.includes('')){
// this.farePerKm = this.trafficPrice.bus
// }
if(seek.selectGo.includes('出租车')){
this.farePerKm = configList.taxi_price
}else if(seek.selectGo.includes('网约车')){
this.farePerKm = configList.online_price
}else if(seek.selectGo.includes('公交')){
this.farePerKm = configList.bus_price
}
fare = this.farePerKm * this.distance;
}
this.fare = fare;
},
onDetail() { onDetail() {
uni.navigateTo({ uni.navigateTo({
url: "/pages_subpack/order-detail/index" url: "/pages_subpack/order-detail/index"
@ -168,6 +257,7 @@
let data = { let data = {
orderId: this.orderId, orderId: this.orderId,
payType: this.payRadio, payType: this.payRadio,
fare : this.fare || 0,//
} }
payOrderCompany(data) payOrderCompany(data)


+ 4
- 2
pages_subpack/payment/index.vue View File

@ -3,7 +3,9 @@
<view class="se-flex se-flex-v-sa se-flex-ai-fs se-py-20 se-px-30 se-bs se-bgc-white se-br-20"> <view class="se-flex se-flex-v-sa se-flex-ai-fs se-py-20 se-px-30 se-bs se-bgc-white se-br-20">
<view class="se-flex"> <view class="se-flex">
<view class="se-w-160 se-h-160"> <view class="se-w-160 se-h-160">
<image class="se-w-160 se-h-160 se-br-10" :src="items.workHeadImg" mode=""></image>
<image class="se-w-160 se-h-160 se-br-10" :src="
items.employJob &&
items.employJob.image" mode="aspectFill"></image>
</view> </view>
<view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs"> <view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">
<view class="se-fw-6 se-c-black se-fs-30 se-display-ib">{{items.title}}</view> <view class="se-fw-6 se-c-black se-fs-30 se-display-ib">{{items.title}}</view>
@ -64,7 +66,7 @@
<view class="se-pos-fixed se-pos-lb se-bs-t se-flex se-flex-h-sb se-pb-60 se-pt-20 se-bgc-white se-w-vw-100"> <view class="se-pos-fixed se-pos-lb se-bs-t se-flex se-flex-h-sb se-pb-60 se-pt-20 se-bgc-white se-w-vw-100">
<view class="se-fs-32 se-c-black se-ml-30" @click="onDetail()"> <view class="se-fs-32 se-c-black se-ml-30" @click="onDetail()">
<text class="se-fs-24">合计</text> <text class="se-fs-24">合计</text>
<text class="se-c-orange">{{items.payMoney}}</text>
<text class="se-c-orange">{{items.premium}}</text>
</view> </view>
<view @click="onPay()" class="se-mr-30 se-w-240 se-h-80 se-lh-80 se-ta-c se-c-white se-fs-32 se-br-40 se-bgc-orange"> <view @click="onPay()" class="se-mr-30 se-w-240 se-h-80 se-lh-80 se-ta-c se-c-white se-fs-32 se-br-40 se-bgc-orange">
立即支付 立即支付


+ 3
- 3
pages_subpack/release/component/enterprise.vue View File

@ -44,8 +44,8 @@
<u--input v-model="form.salaryMax" class="se-w-200" placeholder="最大值"></u--input> <u--input v-model="form.salaryMax" class="se-w-200" placeholder="最大值"></u--input>
</view> </view>
</u-form-item> </u-form-item>
<u-form-item label="期望日薪" prop="dayMoney">
<u--input v-model="form.dayMoney" placeholder="期望日薪"></u--input>
<u-form-item label="试工日薪" prop="dayMoney">
<u--input v-model="form.dayMoney" placeholder="试工日薪"></u--input>
</u-form-item> </u-form-item>
<u-form-item label="结算方式" prop="settlement"> <u-form-item label="结算方式" prop="settlement">
<u-radio-group v-model="form.settlement" placement="row"> <u-radio-group v-model="form.settlement" placement="row">
@ -219,7 +219,7 @@
{ {
type: 'string', type: 'string',
required: true, required: true,
message: '期望日薪',
message: '试工日薪',
trigger: ['blur', 'change'] trigger: ['blur', 'change']
} }
], ],


+ 70
- 8
pages_subpack/release/component/master.vue View File

@ -4,7 +4,7 @@
<view class="se-p-20"> <view class="se-p-20">
<view class="se-px-20 se-bgc-white se-br-10 se-fs-20"> <view class="se-px-20 se-bgc-white se-br-10 se-fs-20">
<!-- @click="showPicker=true" --> <!-- @click="showPicker=true" -->
<u-form-item label="请选择地址" class="se-b-b" prop="area" @click="handleAreaChange()">
<u-form-item label="请选择居住地址" class="se-b-b" prop="area" @click="handleAreaChange()">
<u--input readonly v-model="form.area" placeholder="请选择地址" border="none"></u--input> <u--input readonly v-model="form.area" placeholder="请选择地址" border="none"></u--input>
<u-icon slot="right" name="arrow-right" ></u-icon> <u-icon slot="right" name="arrow-right" ></u-icon>
</u-form-item> </u-form-item>
@ -45,9 +45,9 @@
<u--input v-model="form.salaryMax" type="number" class="se-w-200" placeholder="最大值"></u--input> <u--input v-model="form.salaryMax" type="number" class="se-w-200" placeholder="最大值"></u--input>
</view> </view>
</u-form-item> </u-form-item>
<u-form-item label="日薪" prop="dayMoney">
<u-form-item label="试工日薪" prop="dayMoney">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<u--input v-model="form.dayMoney" type="number" class="se-w-200" placeholder="固定值"></u--input>
<u--input v-model="form.dayMoney" type="number" class="se-w-200" placeholder="试工日薪"></u--input>
</view> </view>
</u-form-item> </u-form-item>
<!-- <u-form-item label="时间" prop="date"> <!-- <u-form-item label="时间" prop="date">
@ -70,9 +70,9 @@
<view class="se-px-20 se-pt-20"> <view class="se-px-20 se-pt-20">
<view class="se-px-20 se-pb-80 se-fs-20 se-flex"> <view class="se-px-20 se-pb-80 se-fs-20 se-flex">
<view @click="submit" <view @click="submit"
class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-orange">
<text>发布订单</text>
</view>
class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-28 se-c-white se-bgc-orange">
<text>{{ editId ? '更新求职信息' : '发布订单' }}</text>
</view>
</view> </view>
</view> </view>
</u--form> </u--form>
@ -87,8 +87,14 @@
<script> <script>
import QQMapWX from "@/util/qqmap-wx-jssdk.min.js" import QQMapWX from "@/util/qqmap-wx-jssdk.min.js"
import { industryById,industryList,addTask2,addSeek } from "@/common/api.js"
import { industryById,industryList,addTask2,addSeek,updateSeek,querySeekById } from "@/common/api.js"
export default { export default {
props: {
editId: {
type: String,
default: null
}
},
components:{ components:{
}, },
@ -273,10 +279,13 @@
mounted() { mounted() {
industryList({}).then(response=>{ industryList({}).then(response=>{
this.industryList = response.result this.industryList = response.result
//
if (this.editId) {
this.getSeekDetail()
}
}).catch(error=>{ }).catch(error=>{
}) })
}, },
methods: { methods: {
dateConfirm(event){ dateConfirm(event){
@ -337,6 +346,54 @@
this.form.typeName = e.name this.form.typeName = e.name
this.$refs.uForm.validateField('type') this.$refs.uForm.validateField('type')
}, },
getSeekDetail() {
querySeekById({ id: this.editId }).then(response => {
const data = response.result
//
this.form.area = data.address || ''
this.form.industryId = data.categoryOne || ''
this.form.industry = data.categoryOne || ''
this.form.typeId = data.categoryTwo || ''
this.form.typeName = data.categoryTwo || ''
this.form.selectGo = data.selectGo || '出租车'
this.form.settlement = data.payType || 1
this.form.salaryMin = data.salaryMin || ''
this.form.salaryMax = data.salaryMax || ''
this.form.dayMoney = data.dayMoney || ''
this.form.introduce = data.workDetail || ''
this.form.latitude = data.latitude || ''
this.form.longitude = data.longitude || ''
//
this.travelList.forEach(item => {
item.select = item.text === data.selectGo
})
//
if (data.categoryOne && this.industryList.length > 0) {
const selectedIndustry = this.industryList.find(item => item.id === data.categoryOne)
if (selectedIndustry) {
this.form.industry = selectedIndustry.name
}
}
//
if (data.categoryOne) {
industryById({pid: data.categoryOne}).then(typeResponse => {
this.typeList = typeResponse.result
//
if (data.categoryTwo && this.typeList.length > 0) {
const selectedType = this.typeList.find(item => item.id === data.categoryTwo)
if (selectedType) {
this.form.typeName = selectedType.name
}
}
})
}
}).catch(error => {
console.error('获取求职详情失败:', error)
})
},
submit() { submit() {
let that = this let that = this
that.$refs.uForm.validate().then(res => { that.$refs.uForm.validate().then(res => {
@ -365,6 +422,11 @@
"workDetail": that.form.introduce, "workDetail": that.form.introduce,
// "workPic": that.form.fileList.map(item => item.url).join(','),// // "workPic": that.form.fileList.map(item => item.url).join(','),//
} }
if(this.editId){
params.id = this.editId
}
// let p={"bossPhone":"13189698115","dayMoney":"500","endTime":"2016-01-01 00:00:00","industryId":"1865299999310622721","industryName":"","latitude":28.23529,"longitude":112.93134,"moneymax":"15000","moneymin":"12000","payType":"1","startTime":"2015-01-01 00:00:00","title":"","workAddress":"517","workDetail":"","workPic":"https://tennis-oss.xzaiyp.top/2025-02-19/341d669a-ef66-4abb-8b98-ac71c08814c9.jpg"} // let p={"bossPhone":"13189698115","dayMoney":"500","endTime":"2016-01-01 00:00:00","industryId":"1865299999310622721","industryName":"","latitude":28.23529,"longitude":112.93134,"moneymax":"15000","moneymin":"12000","payType":"1","startTime":"2015-01-01 00:00:00","title":"","workAddress":"517","workDetail":"","workPic":"https://tennis-oss.xzaiyp.top/2025-02-19/341d669a-ef66-4abb-8b98-ac71c08814c9.jpg"}
addSeek(params).then(response=>{ addSeek(params).then(response=>{
// console.info("response",response) // console.info("response",response)


+ 3
- 1
pages_subpack/release/index.vue View File

@ -3,7 +3,7 @@
<!-- 企业端 --> <!-- 企业端 -->
<enterpriseBox v-if="status==1" /> <enterpriseBox v-if="status==1" />
<!-- 师傅端 --> <!-- 师傅端 -->
<masterBox v-if="status==2" />
<masterBox v-if="status==2" :editId="editId" />
</view> </view>
</template> </template>
@ -18,11 +18,13 @@
data() { data() {
return { return {
status:0, status:0,
editId: null,
} }
}, },
onLoad(options) { onLoad(options) {
console.info(`options`,options) console.info(`options`,options)
this.status = options.status this.status = options.status
this.editId = options.editId || null
}, },
watch: { watch: {


+ 28
- 11
pages_subpack/work-detail/index.vue View File

@ -9,7 +9,7 @@
<!-- 添加日薪月薪展示 --> <!-- 添加日薪月薪展示 -->
<view class="se-flex se-flex-h-sb se-py-20 se-b-b"> <view class="se-flex se-flex-h-sb se-py-20 se-b-b">
<view class="se-flex se-flex-v-c"> <view class="se-flex se-flex-v-c">
<text class="se-fs-32 se-c-text-sub">日薪</text>
<text class="se-fs-32 se-c-text-sub">试工日薪</text>
<text class="se-fs-40 se-c-orange se-fw-6">{{ items.salaryDay }}</text> <text class="se-fs-40 se-c-orange se-fw-6">{{ items.salaryDay }}</text>
</view> </view>
<view class="se-flex se-flex-v-c"> <view class="se-flex se-flex-v-c">
@ -107,16 +107,7 @@
// //
this.$store.dispatch('onResumeComplete', { this.$store.dispatch('onResumeComplete', {
success: (resume) => { success: (resume) => {
//
addOrderWork({id:this.id}).then(response=>{
uni.hideLoading()
console.log("下单成功");
uni.navigateTo({
url:"/pages_subpack/payment/index?id="+response.result.id
})
}).catch(error=>{
uni.hideLoading()
})
this.addOrderWork()
}, },
fail: (resume) => { fail: (resume) => {
uni.hideLoading() uni.hideLoading()
@ -156,6 +147,32 @@
} }
}) })
}, },
addOrderWork(){
//
addOrderWork({id:this.id}).then(response=>{
uni.hideLoading()
console.log("下单成功");
uni.navigateTo({
url:"/pages_subpack/payment/index?id="+response.result.id
})
}).catch(error=>{
console.log(error);
setTimeout(()=>{
if (error.result && error.result.id) {
if(error.result.orderStatusSeek == 'Y'){
uni.navigateTo({
url:"/pages_subpack/order-detail/index?orderId="+error.result.id
})
}else{
uni.navigateTo({
url:"/pages_subpack/payment/index?id="+error.result.id
})
}
}
}, 800);
uni.hideLoading()
})
},
openAddress(){ openAddress(){
let that = this let that = this
console.info(that.items.latitude) console.info(that.items.latitude)


+ 31
- 0
store/modules/data.js View File

@ -1,7 +1,10 @@
export default { export default {
state: { state: {
isTurntableShow:false, isTurntableShow:false,
isShareShow:false, isShareShow:false,
configList : {},
}, },
mutations: { mutations: {
@ -11,6 +14,34 @@ export default {
mutationsShareShow(state,status) { mutationsShareShow(state,status) {
state.isShareShow = status state.isShareShow = status
}, },
initConfig(state){
console.log('initConfig 开始执行')
import('@/common/api.js').then(api=>{
api.queryConfigList({}).then(res=>{
console.log('getConfig 请求成功:', res)
uni.setStorageSync('configList', res.result)
const configList = {
...state.configList,
}
if (res.code == 200) {
res.result.forEach(n => {
configList[n.paramCode] = n.paramValueText ||
n.paramValue ||
n.paramValueImage
});
}
state.configList = configList
uni.$emit('initConfig', state.configList)
console.log('配置初始化完成:', state.configList)
}).catch(error=>{
console.error('getConfig 请求失败:', error)
})
})
},
}, },
actions: {} actions: {}

Loading…
Cancel
Save