Browse Source

feat: 新增订单详情页、支付功能及API接口优化

- 新增企业端订单详情页(boss.vue)和求职者订单详情页(job-order-detail.vue)
- 实现订单状态流转功能(接单/确认/试工完成/支付等)
- 优化支付流程,整合微信支付和余额支付
- 新增多个订单相关API接口(确认订单/取消订单/支付等)
- 修复金额显示问题,默认显示0值
- 移除无用的web端OSS上传代码
- 更新阿里云OSS配置信息
- 添加时间校验逻辑,防止设置过去时间
- 优化页面跳转逻辑,增加登录校验

refactor: 重构订单模块代码结构
- 拆分订单详情为企业和求职者两个版本
- 统一支付流程处理逻辑
- 优化状态管理方式

fix: 修复多个问题
- 修复金额显示NaN问题
- 修复支付类型参数传递错误
- 修复页面跳转后数据不刷新问题
- 修复时间校验逻辑错误

perf: 优化页面加载性能
- 减少不必要的API调用
- 优化图片加载方式
master
前端-胡立永 1 week ago
parent
commit
4558da93a4
22 changed files with 1315 additions and 752 deletions
  1. +15
    -6
      common/api.js
  2. +2
    -1
      common/config.js
  3. +14
    -6
      config.js
  4. +1
    -1
      manifest.json
  5. +9
    -2
      pages.json
  6. +60
    -71
      pages/order/component/enterprise.vue
  7. +66
    -75
      pages/order/component/master.vue
  8. +19
    -5
      pages/order/index.vue
  9. +1
    -1
      pages/user/index.vue
  10. +160
    -152
      pages_subpack/category/index.vue
  11. +1
    -3
      pages_subpack/feedback/index.vue
  12. +102
    -83
      pages_subpack/hire/index.vue
  13. +46
    -36
      pages_subpack/job-hunt/index.vue
  14. +178
    -80
      pages_subpack/job-order-detail/index.vue
  15. +345
    -0
      pages_subpack/order-detail/boss.vue
  16. +106
    -73
      pages_subpack/order-detail/index.vue
  17. +118
    -31
      pages_subpack/pay/index.vue
  18. +60
    -51
      pages_subpack/payment/index.vue
  19. +2
    -2
      pages_subpack/record/index.vue
  20. +10
    -0
      pages_subpack/release/component/enterprise.vue
  21. +0
    -10
      utils/oss-upload/oss/index.js
  22. +0
    -63
      utils/oss-upload/oss/web.js

+ 15
- 6
common/api.js View File

@ -25,7 +25,7 @@ export const taskList = (params) => http.get('/employ-api/employ/job/queryJobLis
// 求职大厅列表查询 // 求职大厅列表查询
export const rolelist = (params) => http.get('/employ-api/employ/resume/queryResumeList', {params:params}) export const rolelist = (params) => http.get('/employ-api/employ/resume/queryResumeList', {params:params})
// 公司发布任务 // 公司发布任务
export const addTask = (params) => http.post('/employ-api/employ/order/addOrder', params)
export const addTask = (params) => http.post('/employ-api/employ/job/addJob', params)
@ -40,9 +40,18 @@ export const orderDetail = (params) => http.get('/employ-api/employ/order/queryO
export const payOrder = (params) => http.post('/employ-api/employ/order/payOrder', params) export const payOrder = (params) => http.post('/employ-api/employ/order/payOrder', params)
//订单列表 //订单列表
export const bossOrderList = (params) => http.get('/employ-api/employ/order/queryOrderList', {params:params}) export const bossOrderList = (params) => http.get('/employ-api/employ/order/queryOrderList', {params:params})
//取消订单
export const deleteOrder = (orderId) => http.post('/employ-api/employ/order/deleteOrder?orderId=' + orderId, {})
//订单信息-企业确认订单
export const confirmOrder = (orderId) => http.post('/employ-api/employ/order/confirmOrder?orderId=' + orderId, {})
// 确认试工完成
export const confirmOrderTry = (orderId) => http.post('/employ-api/employ/order/confirmOrderTry?orderId=' + orderId, {})
// 订单信息-企业确认试工完成
export const confirmOrderTryCompany = (orderId) => http.post('/employ-api/employ/order/confirmOrderTryCompany?orderId=' + orderId, {})
// 订单信息-企业支付
export const payOrderCompany = (params) => http.post('/employ-api/employ/order/payOrderCompany', params)
// 订单信息-确认企业已结款
export const confirmOrderTryCompanyOk = (params) => http.post('/employ-api/employ/order/confirmOrderTryCompanyOk', params)
//我的招聘 //我的招聘
export const queryJobListByUserId = (params) => http.get('/employ-api/employ/job/queryJobListByUserId', {params:params}) export const queryJobListByUserId = (params) => http.get('/employ-api/employ/job/queryJobListByUserId', {params:params})
@ -93,9 +102,9 @@ export const updateSeek = (params) => http.post('/employ-api/employ/seek/updateS
// 我的头像昵称,平台客户电话等信息 // 我的头像昵称,平台客户电话等信息
export const userInfo = (params) => http.get('/employ-api/employ/user/getUserCenterData', {params:params}) export const userInfo = (params) => http.get('/employ-api/employ/user/getUserCenterData', {params:params})
// 帮助与反馈 // 帮助与反馈
export const addSuggest = (params) => http.post('/employ-api/index/addSuggest', params)
export const addSuggest = (params) => http.post('/employ-api/employ/feedback/addFeedback', params)
// 余额日志 // 余额日志
export const payLog = (params) => http.get('/employ-api/employ/amount/amountLog', params)
export const payLog = (params) => http.get('/employ-api/employ/amount/amountLog', {params})
// 充值支付 // 充值支付
export const payRecharge = (params) => http.get('/employ-api/employ/amount/recharge',{params:params}) export const payRecharge = (params) => http.get('/employ-api/employ/amount/recharge',{params:params})
// 提现 // 提现


+ 2
- 1
common/config.js View File

@ -2,9 +2,10 @@ module.exports = {
// baseUrl: 'http://3fl8266127.qicp.vip' // baseUrl: 'http://3fl8266127.qicp.vip'
// 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:"https://admin.zhixuanlietou.com", baseUrl:"https://admin.zhixuanlietou.com",
// http://youyi-test.natapp1.cc
// https://employadmin.hhlm1688.com/employ-api // https://employadmin.hhlm1688.com/employ-api
} }


+ 14
- 6
config.js View File

@ -22,19 +22,27 @@ const config = {
const defaultConfig = { const defaultConfig = {
mapKey : 'XMBBZ-BCPCV-SXPPQ-5Y7MY-PHZXK-YFFVU', mapKey : 'XMBBZ-BCPCV-SXPPQ-5Y7MY-PHZXK-YFFVU',
aliOss : { aliOss : {
url : 'https://image.hhlm1688.com/',
url : 'https://oss.zhixuanlietou.com/',
config : { config : {
//桶的地址 //桶的地址
region: 'oss-cn-shenzhen',
region: 'oss-cn-beijing',
//id //id
accessKeyId:'LTAI5tQSs47izVy8DLVdwUU9',
accessKeyId:'LTAI5t7QjvTcHz9rnULaKuU1',
//密钥 //密钥
accessKeySecret:'qHI7C3PaXYZySr84HTToviC71AYlFq',
accessKeySecret:'Kc9bnuNK2k9FIMeupHyTLnQX7JjHqj',
//桶的名字 //桶的名字
bucket: 'hanhaiimage',
endpoint:'oss-cn-shenzhen.aliyuncs.com',
bucket: 'zxltoss',
endpoint:'oss-cn-beijing.aliyuncs.com',
} }
}, },
/**
* accessKey: LTAI5t7QjvTcHz9rnULaKuU1
secretKey: Kc9bnuNK2k9FIMeupHyTLnQX7JjHqj
endpoint: oss-cn-beijing.aliyuncs.com
bucketName: zxltoss
staticDomain: https://oss.zhixuanlietou.com
*/
} }


+ 1
- 1
manifest.json View File

@ -1,6 +1,6 @@
{ {
"name" : "hire-wechat", "name" : "hire-wechat",
"appid" : "__UNI__5717BF9",
"appid" : "__UNI__197A38F",
"description" : "", "description" : "",
"versionName" : "2.0.37", "versionName" : "2.0.37",
"versionCode" : 1, "versionCode" : 1,


+ 9
- 2
pages.json View File

@ -50,8 +50,6 @@
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
}, },
{ {
"path": "pages/login/index", "path": "pages/login/index",
"style": { "style": {
@ -223,6 +221,15 @@
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
}, },
{
"path": "order-detail/boss",
"style": {
"navigationBarTitleText": "招聘订单详情",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
},
{ {
"path": "work-detail/index", "path": "work-detail/index",
"style": { "style": {


+ 60
- 71
pages/order/component/enterprise.vue View File

@ -1,23 +1,18 @@
<template> <template>
<view> <view>
<u-sticky bgColor="#ff7a31"> <u-sticky bgColor="#ff7a31">
<u-tabs :list="nav"
:current="current"
lineColor="#ffffff"
:activeStyle="{
<u-tabs :list="nav" :current="current" lineColor="#ffffff" :activeStyle="{
color: '#ffffff', color: '#ffffff',
transform: 'scale(1.05)' transform: 'scale(1.05)'
}"
:inactiveStyle="{
}" :inactiveStyle="{
color: '#f5f5f5', color: '#f5f5f5',
transform: 'scale(1)' transform: 'scale(1)'
}"
:scrollable="true"
itemStyle="padding-left: 60rpx; padding-right: 60rpx;font-size:22rpx; height: 100rpx;"
@click="tabClick"></u-tabs>
}" :scrollable="true" itemStyle="padding-left: 60rpx; padding-right: 60rpx;font-size:22rpx; height: 100rpx;"
@click="tabClick"></u-tabs>
</u-sticky> </u-sticky>
<view class="se-p-40"> <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="(items,indexs) in list" :key="indexs">
<view class="se-px-40 se-mb-30 se-py-30 se-bgc-white se-br-40 se-bs-b" v-for="(items,indexs) in list"
:key="indexs">
<view class="se-flex se-flex-h-sb se-fw-6 se-fs-32 se-pb-20"> <view class="se-flex se-flex-h-sb se-fw-6 se-fs-32 se-pb-20">
<view class="se-flex" @click="onOrderDetail(items)"> <view class="se-flex" @click="onOrderDetail(items)">
<text>{{items.workName}}</text> <text>{{items.workName}}</text>
@ -40,9 +35,12 @@
<view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20"> <view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20">
<view class="se-fs-24 se-display-ib"> <view class="se-fs-24 se-display-ib">
<text class="se-c-black">总价格</text> <text class="se-c-black">总价格</text>
<text class="se-c-orange se-fs-30 se-fw-6"><text class="se-fs-24"></text>{{items.payMoney}}</text>
<text class="se-c-orange se-fs-30 se-fw-6"><text
class="se-fs-24"></text>{{items.payMoney}}</text>
</view> </view>
<view class="se-display-ib se-px-20 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-fs-24 se-c-66 se-b" @click="callPhone(items)">
<view
class="se-display-ib se-px-20 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-fs-24 se-c-66 se-b"
@click="callPhone(items)">
<text>联系客服</text> <text>联系客服</text>
</view> </view>
</view> </view>
@ -56,115 +54,106 @@
import { import {
bossOrderList bossOrderList
} from "@/common/api.js" } from "@/common/api.js"
export default{
components:{
export default {
components: {
}, },
data(){
return{
current:0,
nav: [
{
data() {
return {
current: 0,
nav: [{
name: '全部', name: '全部',
index: null index: null
}, },
{ {
name: '待聘用', name: '待聘用',
index: 0 index: 0
},
{
name: '已接单',
index: 1
},
},
{ {
name: '进行中', name: '进行中',
index: 2
},
index: 1
},
{ {
name: '试工完成', name: '试工完成',
index: 3
index: 2
}, },
{ {
name: '企业确认', name: '企业确认',
index: 4
},
index: 3
},
{ {
name: '已支付', name: '已支付',
index: 5
},
index: 4
},
{ {
name: '已完成', name: '已完成',
index: 6
},
index: 5
},
{ {
name: '已取消', name: '已取消',
index: 7
},
{
name: '发起支付',
index: 8
index: 6
} }
], ],
list:[],
orderStatus:null,
pageNo:1,
pageSize:20,
list: [],
orderStatus: null,
pageNo: 1,
pageSize: 20,
} }
}, },
mounted() { mounted() {
this.onOrder(); this.onOrder();
}, },
methods:{
onReach(){
methods: {
onReach() {
this.pageNo = this.pageNo + 1 this.pageNo = this.pageNo + 1
this.onOrder() this.onOrder()
}, },
onRefresh(){
onRefresh() {
this.list = [] this.list = []
this.pageNo = 1 this.pageNo = 1
this.onOrder() this.onOrder()
}, },
onOrder(){
onOrder() {
let that = this; let that = this;
let params={
role:0,
status:that.orderStatus,
pageNo:that.pageNo,
pageSize:that.pageSize
let params = {
role: 0,
status: that.orderStatus,
pageNo: that.pageNo,
pageSize: that.pageSize
} }
bossOrderList(params).then(response=>{
console.info("bossOrder",response.result.records,that.pageNo)
if(that.pageNo==1){
bossOrderList(params).then(response => {
console.info("bossOrder", response.result.records, that.pageNo)
if (that.pageNo == 1) {
that.list = response.result.records that.list = response.result.records
}else{
} else {
that.list = that.list.concat(response.result.records) that.list = that.list.concat(response.result.records)
} }
}).catch(error=>{
}).catch(error => {
}) })
}, },
tabClick(event){
tabClick(event) {
this.list = [] this.list = []
this.pageNo = 1 this.pageNo = 1
this.current = event.index this.current = event.index
this.orderStatus = this.nav[event.index].index this.orderStatus = this.nav[event.index].index
this.onOrder() this.onOrder()
}, },
onOrderDetail(event){
onOrderDetail(event) {
uni.navigateTo({ uni.navigateTo({
url:"/pages_subpack/order-detail/index?orderId="+event.id
url: "/pages_subpack/order-detail/index?orderId=" + event.id
}) })
}, },
callPhone(event){
callPhone(event) {
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: event.phone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
phoneNumber: event.phone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
} }
} }
} }


+ 66
- 75
pages/order/component/master.vue View File

@ -1,48 +1,47 @@
<template> <template>
<view> <view>
<u-sticky bgColor="#ff7a31"> <u-sticky bgColor="#ff7a31">
<u-tabs :list="nav"
:current="current"
lineColor="#ffffff"
:activeStyle="{
<u-tabs :list="nav" :current="current" lineColor="#ffffff" :activeStyle="{
color: '#ffffff', color: '#ffffff',
transform: 'scale(1.05)' transform: 'scale(1.05)'
}"
:inactiveStyle="{
}" :inactiveStyle="{
color: '#f5f5f5', color: '#f5f5f5',
transform: 'scale(1)' transform: 'scale(1)'
}"
:scrollable="true"
itemStyle="padding-left: 60rpx; padding-right: 60rpx;font-size:22rpx; height: 100rpx;"
@click="tabClick"></u-tabs>
}" :scrollable="true" itemStyle="padding-left: 60rpx; padding-right: 60rpx;font-size:22rpx; height: 100rpx;"
@click="tabClick"></u-tabs>
</u-sticky> </u-sticky>
<view class="se-p-40"> <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="(items,indexs) in list" :key="indexs">
<view class="se-px-40 se-mb-30 se-py-30 se-bgc-white se-br-40 se-bs-b"
@click="onOrderDetail(item)"
v-for="(item,indexs) in list"
:key="indexs">
<view class="se-flex se-flex-h-sb se-fw-6 se-fs-32 se-pb-20"> <view class="se-flex se-flex-h-sb se-fw-6 se-fs-32 se-pb-20">
<view class="se-flex"> <view class="se-flex">
<text>工装石膏板搬运</text>
<text>{{ item.title }}</text>
<u-icon name="arrow-right"></u-icon> <u-icon name="arrow-right"></u-icon>
</view> </view>
<view class="se-c-red"> <view class="se-c-red">
已完成
{{ item.status_dictText }}
</view> </view>
</view> </view>
<view class="se-flex se-bgc-f5 se-br-20"> <view class="se-flex se-bgc-f5 se-br-20">
<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="https://cdn.uviewui.com/uview/album/1.jpg" mode=""></image>
<image class="se-w-160 se-h-160 se-br-10" :src="item.jobHeadImg"
mode=""></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-fs-24 se-c-text-third se-display-ib">师傅姓名: **</view>
<view class="se-fs-24 se-c-text-third se-display-ib">接单时间: 2024-03-25 15:39</view>
<view class="se-fs-24 se-c-text-third se-display-ib">联系电话: 13189698115</view>
<view class="se-fs-24 se-c-text-third se-display-ib">师傅姓名: {{ item.jobName }}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">接单时间: {{ item.createTime }}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">联系电话: {{ item.jobPhone }}</view>
</view> </view>
</view> </view>
<view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20"> <view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20">
<view class="se-fs-24 se-display-ib"> <view class="se-fs-24 se-display-ib">
<text class="se-c-black">总价格</text> <text class="se-c-black">总价格</text>
<text class="se-c-orange se-fs-30 se-fw-6"><text class="se-fs-24"></text>6000</text>
<text class="se-c-orange se-fs-30 se-fw-6"><text class="se-fs-24"></text>{{ item.jobMoney }}</text>
</view> </view>
<view class="se-display-ib se-px-20 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-fs-24 se-c-66 se-b">
<view
class="se-display-ib se-px-20 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-fs-24 se-c-66 se-b">
<text>联系客服</text> <text>联系客服</text>
</view> </view>
</view> </view>
@ -56,114 +55,106 @@
import { import {
bossOrderList bossOrderList
} from "@/common/api.js" } from "@/common/api.js"
export default{
components:{
export default {
components: {
}, },
data(){
return{
current:0,
data() {
return {
current: 0,
nav: [ nav: [
{ {
name: '全部', name: '全部',
index: null index: null
}, },
{ {
name: '待接单',
name: '待聘用',
index: 0 index: 0
},
{
name: '已接单',
index: 1
},
},
{ {
name: '进行中', name: '进行中',
index: 2
},
index: 1
},
{ {
name: '试工完成', name: '试工完成',
index: 3
index: 2
}, },
{ {
name: '企业确认', name: '企业确认',
index: 4
},
index: 3
},
{ {
name: '已支付', name: '已支付',
index: 5
},
index: 4
},
{ {
name: '已完成', name: '已完成',
index: 6
},
index: 5
},
{ {
name: '已取消', name: '已取消',
index: 7
},
{
name: '发起支付',
index: 8
index: 6
} }
], ],
list:[],
orderStatus:null,
pageNo:1,
pageSize:20,
list: [],
orderStatus: null,
pageNo: 1,
pageSize: 20,
} }
}, },
mounted() { mounted() {
this.onOrder() this.onOrder()
}, },
methods:{
onReach(){
methods: {
onReach() {
this.pageNo = this.pageNo + 1 this.pageNo = this.pageNo + 1
this.onOrder() this.onOrder()
}, },
onRefresh(){
onRefresh() {
this.list = [] this.list = []
this.pageNo = 1 this.pageNo = 1
this.onOrder() this.onOrder()
}, },
onOrder(){
onOrder() {
let that = this; let that = this;
let params={
role:1,
status:that.orderStatus,
pageNo:that.pageNo,
pageSize:that.pageSize
let params = {
role: 1,
status: that.orderStatus,
pageNo: that.pageNo,
pageSize: that.pageSize
} }
bossOrderList(params).then(response=>{
if(this.pageNo==1){
bossOrderList(params).then(response => {
if (this.pageNo == 1) {
this.list = response.result.records this.list = response.result.records
}else{
} else {
this.list = this.list.concat(response.result.records) this.list = this.list.concat(response.result.records)
} }
}).catch(error=>{
}).catch(error => {
}) })
}, },
tabClick(event){
tabClick(event) {
this.list = [] this.list = []
this.pageNo = 1 this.pageNo = 1
this.current = event.index this.current = event.index
this.orderStatus = this.nav[event.index].index this.orderStatus = this.nav[event.index].index
this.onOrder() this.onOrder()
}, },
onOrderDetail(event){
onOrderDetail(event) {
uni.navigateTo({ uni.navigateTo({
url:"/pages_subpack/order-detail/index?orderId="+event.id
url: "/pages_subpack/job-order-detail/index?orderId=" + event.id
}) })
}, },
callPhone(event){
callPhone(event) {
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: event.phone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
phoneNumber: event.phone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
} }
} }
} }


+ 19
- 5
pages/order/index.vue View File

@ -1,10 +1,17 @@
<template> <template>
<view class="u-page se-w-vw-100"> <view class="u-page se-w-vw-100">
<u-subsection bg-color="#ff7a31" button-color="#f0b744" active-color="#ff7a31" inactive-color="#ffffff" :list="list" :current="current" @change="sectionChange"></u-subsection>
<!-- 招聘订单 -->
<enterpriseBox ref="enterpriseBoxRef" v-if="current==0" />
<!--求职订单 -->
<masterBox ref="masterBoxRef" v-if="current==1" />
<view v-if="!isLogin" class="se-flex se-flex-h-e se-p-20">
<u-button style="background-color: #FF7A31;color: #fff;" @click="goLogin">登录</u-button>
</view>
<template v-else>
<u-subsection bg-color="#ff7a31" button-color="#f0b744" active-color="#ff7a31" inactive-color="#ffffff" :list="list" :current="current" @change="sectionChange"></u-subsection>
<!-- 招聘订单 -->
<enterpriseBox ref="enterpriseBoxRef" v-if="current==0" />
<!--求职订单 -->
<masterBox ref="masterBoxRef" v-if="current==1" />
</template>
</view> </view>
</template> </template>
@ -29,8 +36,12 @@
} }
], ],
current: 0, current: 0,
isLogin: !!uni.getStorageSync('token')
} }
}, },
onShow() {
this.isLogin = !!uni.getStorageSync('token')
},
onReachBottom() { onReachBottom() {
if(this.current==0){ if(this.current==0){
this.$refs.enterpriseBoxRef.onReach(); this.$refs.enterpriseBoxRef.onReach();
@ -48,6 +59,9 @@
methods:{ methods:{
sectionChange(index){ sectionChange(index){
this.current=index this.current=index
},
goLogin(){
uni.navigateTo({ url: '/pages/auth/index' })
} }
} }
} }


+ 1
- 1
pages/user/index.vue View File

@ -39,7 +39,7 @@
我的余额 我的余额
</view> </view>
<view class="se-fs-30 se-display-ib se-pt-20" style="color: #DC2828;"> <view class="se-fs-30 se-display-ib se-pt-20" style="color: #DC2828;">
{{amount}}
{{amount || 0}}
</view> </view>
</view> </view>
</view> </view>


+ 160
- 152
pages_subpack/category/index.vue View File

@ -2,29 +2,24 @@
<view class="se-m-10"> <view class="se-m-10">
<u-sticky> <u-sticky>
<view class="se-px-20 se-pt-10 se-zi-s se-bgc-white"> <view class="se-px-20 se-pt-10 se-zi-s se-bgc-white">
<u-search height="40" placeholder="搜索" :showAction="true" v-model="keyword" @search="onSearch()" @clickIcon="onSearch()" @custom="onSearch()"></u-search>
<u-search height="40" placeholder="搜索" :showAction="true" v-model="keyword" @search="onSearch()"
@clickIcon="onSearch()"
@clear="onSearch"
@custom="onSearch()"></u-search>
</view> </view>
<u-tabs
class="se-bgc-white se-pb-20"
:current="current"
lineWidth="30"
lineColor="#FF7A31"
:activeStyle="{
<u-tabs class="se-bgc-white se-pb-20" :current="current" lineWidth="30" lineColor="#FF7A31" :activeStyle="{
color: '#303133', color: '#303133',
fontWeight: 'bold', fontWeight: 'bold',
transform: 'scale(1.05)' transform: 'scale(1.05)'
}"
:inactiveStyle="{
}" :inactiveStyle="{
color: '#606266', color: '#606266',
transform: 'scale(1)' transform: 'scale(1)'
}"
itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;"
:list="navList"
@click="navClick($event)">
}" itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;" :list="navList" @click="navClick($event)">
</u-tabs> </u-tabs>
</u-sticky> </u-sticky>
<template v-if="current==1"> <template v-if="current==1">
<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 tList" :key="indexs" @click="onTaskDetail(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 tList"
:key="indexs" @click="onTaskDetail(items)">
<view class="se-flex se-flex-h-sb"> <view class="se-flex se-flex-h-sb">
<view class="se-flex se-fw-6"> <view class="se-flex se-fw-6">
<text class="se-c-black se-fs-30">{{items.title}}</text> <text class="se-c-black se-fs-30">{{items.title}}</text>
@ -36,20 +31,26 @@
</view> </view>
</view> </view>
<view class="se-py-10"> <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="items.categoryOne_dictText">{{items.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="items.categoryTwo_dictText">{{items.categoryTwo_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="items.payType_dictText">{{items.payType_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="items.categoryOne_dictText">{{items.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="items.categoryTwo_dictText">{{items.categoryTwo_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="items.payType_dictText">{{items.payType_dictText}}</text>
</view> </view>
<view class="se-flex se-flex-h-sb"> <view class="se-flex se-flex-h-sb">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<u-icon name="map"></u-icon> <u-icon name="map"></u-icon>
<text class="se-c-text-sub se-fs-24 se-pr-10">{{items.latitude,items.longitude | getDistance}}km</text>
<text class="se-c-text-sub se-fs-24 se-pl-10 se-b-l se-toe-3" style="max-width: 220rpx;">{{items.address}}</text>
<text
class="se-c-text-sub se-fs-24 se-pr-10">{{items.latitude,items.longitude | getDistance}}km</text>
<text class="se-c-text-sub se-fs-24 se-pl-10 se-b-l se-toe-3"
style="max-width: 220rpx;">{{items.address}}</text>
</view> </view>
<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 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">
<text class="se-ml-5">立即接单</text> <text class="se-ml-5">立即接单</text>
</view> </view>
</view> </view>
@ -57,16 +58,23 @@
<u-empty v-if="tList && tList.length==0" mode="list"></u-empty> <u-empty v-if="tList && tList.length==0" mode="list"></u-empty>
</template> </template>
<template v-if="current==0"> <template v-if="current==0">
<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 rlist" :key="indexs">
<view class="se-flex se-flex-h-sb" @click.capture="onRoleDetail(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 rlist"
:key="indexs">
<view class="se-flex se-flex-h-sb" @click.capture="onRoleDetail(items)">
<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>
</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 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>
<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;">
<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>
<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>
</view> </view>
@ -88,19 +96,20 @@
{{items.categoryTwo_dictText}} {{items.categoryTwo_dictText}}
<!-- <u-parse v-if="items.brief" :content="items.brief"></u-parse> --> <!-- <u-parse v-if="items.brief" :content="items.brief"></u-parse> -->
</text> </text>
<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}}
<!-- <u-parse v-if="items.brief" :content="items.brief"></u-parse> --> <!-- <u-parse v-if="items.brief" :content="items.brief"></u-parse> -->
</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">
<u-icon color="#FF7A31" name="phone-fill"></u-icon>
<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">
<u-icon color="#FF7A31" name="phone-fill"></u-icon>
<text class="se-ml-5">联系他</text> <text class="se-ml-5">联系他</text>
</view> </view>
</view> </view>
</view> </view>
<u-empty v-if="rlist && rlist.length==0" mode="list"></u-empty> <u-empty v-if="rlist && rlist.length==0" mode="list"></u-empty>
</template> </template>
</view> </view>
</template> </template>
@ -113,23 +122,22 @@
querySeekList, querySeekList,
getSysText getSysText
} from "@/common/api.js" } from "@/common/api.js"
export default{
data(){
return{
tpageNo:1,
tpageSize:20,
tList:[],
rpageNo:1,
rpageSize:20,
rlist:[],
id:null,
keyword:"",
current:0,
navList:[
{
export default {
data() {
return {
tpageNo: 1,
tpageSize: 20,
tList: [],
rpageNo: 1,
rpageSize: 20,
rlist: [],
id: null,
keyword: "",
current: 0,
navList: [{
name: '求职大厅', name: '求职大厅',
},
},
{ {
name: '招聘大厅', name: '招聘大厅',
} }
@ -137,10 +145,10 @@
} }
}, },
onLoad(options) { onLoad(options) {
this.id=options.id
if(options.title){
this.id = options.id
if (options.title) {
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title:options.title
title: options.title
}) })
} }
// this.onTaskList() // this.onTaskList()
@ -148,171 +156,171 @@
}, },
onReachBottom() { onReachBottom() {
let that = this let that = this
if(that.current==0){
if (that.current == 0) {
that.rpageNo = that.rpageNo + 1 that.rpageNo = that.rpageNo + 1
that.onRolelist() that.onRolelist()
}else if(that.current==1){
} else if (that.current == 1) {
that.tpageNo = that.tpageNo + 1 that.tpageNo = that.tpageNo + 1
this.onTaskList() this.onTaskList()
} }
}, },
onPullDownRefresh() { onPullDownRefresh() {
let that = this let that = this
if(that.current==0){
that.rpageNo = 1
that.rlist=[]
if (that.current == 0) {
that.rpageNo = 1
that.rlist = []
that.onRolelist() that.onRolelist()
}else if(that.current==1){
that.tpageNo = 1
} else if (that.current == 1) {
that.tpageNo = 1
that.tList = [] that.tList = []
this.onTaskList() this.onTaskList()
} }
}, },
filters:{
filters: {
formatTime(time) { formatTime(time) {
const timestamp = new Date(time).getTime(); const timestamp = new Date(time).getTime();
const currentTime = new Date().getTime();
console.info("currentTime",currentTime)
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)}天前`;
}
}
const currentTime = new Date().getTime();
console.info("currentTime", currentTime)
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)}天前`;
}
}
}, },
formDate(date){
formDate(date) {
return dayjs(date).format("YYYY-MM-DD").fromNow(); return dayjs(date).format("YYYY-MM-DD").fromNow();
}, },
getDistance(lat1, lng1) { getDistance(lat1, lng1) {
let lng2 = uni.getStorageSync("longitude") let lng2 = uni.getStorageSync("longitude")
let lat2 = uni.getStorageSync("latitude") let lat2 = uni.getStorageSync("latitude")
if(!lng2 && !lat2){
if (!lng2 && !lat2) {
return "请授权" return "请授权"
} }
const R = 6371; // km
const radLat1 = (lat1 * Math.PI) / 180;
const radLat2 = (lat2 * Math.PI) / 180;
const deltaLat = radLat2 - radLat1;
const deltaLng = ((lng2 - lng1) * Math.PI) / 180;
const a =
Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +
Math.cos(radLat1) *
Math.cos(radLat2) *
Math.sin(deltaLng / 2) *
Math.sin(deltaLng / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return (R * c).toFixed(2); //
const R = 6371; // km
const radLat1 = (lat1 * Math.PI) / 180;
const radLat2 = (lat2 * Math.PI) / 180;
const deltaLat = radLat2 - radLat1;
const deltaLng = ((lng2 - lng1) * Math.PI) / 180;
const a =
Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +
Math.cos(radLat1) *
Math.cos(radLat2) *
Math.sin(deltaLng / 2) *
Math.sin(deltaLng / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return (R * c).toFixed(2); //
} }
}, },
methods:{
navClick(event){
this.current=event.index
methods: {
navClick(event) {
this.current = event.index
this.keyword = "" this.keyword = ""
if(event.index==0){
this.rpageNo=1
if (event.index == 0) {
this.rpageNo = 1
this.onRolelist() this.onRolelist()
}else if(event.index==1){
this.tpageNo=1
} else if (event.index == 1) {
this.tpageNo = 1
this.onTaskList() this.onTaskList()
} }
}, },
onSearch(){
onSearch() {
let that = this let that = this
if(that.current==0){
that.rpageNo = 1
if (that.current == 0) {
that.rpageNo = 1
that.onRolelist() that.onRolelist()
}else if(that.current==1){
that.tpageNo = 1
} else if (that.current == 1) {
that.tpageNo = 1
this.onTaskList() this.onTaskList()
} }
}, },
onRolelist(){
onRolelist() {
querySeekList({ querySeekList({
pageNo:this.rpageNo,
pageSize:this.rpageSize,
title:this.keyword,
categoryOne:this.id,
}).then(response=>{
console.info("response",response)
if(this.rpageNo==1){
pageNo: this.rpageNo,
pageSize: this.rpageSize,
address: this.keyword,
categoryOne: this.id,
}).then(response => {
console.info("response", response)
if (this.rpageNo == 1) {
this.rlist = response.result.records this.rlist = response.result.records
}else{
} else {
this.rlist = this.rlist.concat(response.result.records) this.rlist = this.rlist.concat(response.result.records)
} }
}).catch(error=>{
}).catch(error => {
}) })
}, },
onTaskList(){
onTaskList() {
taskList({ taskList({
latitude:uni.getStorageSync("latitude"),
longitude:uni.getStorageSync("longitude"),
pageNo:this.tpageNo,
title:this.keyword,
categoryOne:this.id,
pageSize:this.tpageSize
}).then(response=>{
if(this.tpageNo==1){
latitude: uni.getStorageSync("latitude"),
longitude: uni.getStorageSync("longitude"),
pageNo: this.tpageNo,
title: this.keyword,
categoryOne: this.id,
pageSize: this.tpageSize
}).then(response => {
if (this.tpageNo == 1) {
this.tList = response.result.records this.tList = response.result.records
}else{
} else {
this.tList = this.tList.concat(response.result.records) this.tList = this.tList.concat(response.result.records)
} }
}).catch(error=>{
}).catch(error => {
}) })
}, },
onTaskDetail(event){
onTaskDetail(event) {
console.info(event) console.info(event)
uni.navigateTo({ uni.navigateTo({
url:"/pages_subpack/work-detail/index?id="+event.id
url: "/pages_subpack/work-detail/index?id=" + event.id
}) })
}, },
onRoleDetail(event){
console.info("event",event)
onRoleDetail(event) {
console.info("event", event)
uni.navigateTo({ uni.navigateTo({
url:"/pages_subpack/master-detail/index?id="+event.id
url: "/pages_subpack/master-detail/index?id=" + event.id
}) })
}, },
onCustomerService(phome){
onCustomerService(phome) {
let that = this let that = this
// let obj = that.$utils.getkeyContent('phone') // let obj = that.$utils.getkeyContent('phone')
if (uni.canIUse('makePhoneCall')) { if (uni.canIUse('makePhoneCall')) {
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: String(phome),
success: function () {
console.log('拨打电话成功');
},
fail: function () {
console.log('拨打电话失败');
}
phoneNumber: String(phome),
success: function() {
console.log('拨打电话成功');
},
fail: function() {
console.log('拨打电话失败');
}
}); });
} else { } else {
console.log('你的设备不支持拨打电话功能'); console.log('你的设备不支持拨打电话功能');
} }
}, },
} }
} }


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

@ -115,9 +115,7 @@
addSuggest(params).then(response=>{ addSuggest(params).then(response=>{
uni.$u.toast("提交成功!") uni.$u.toast("提交成功!")
setTimeout(()=>{ setTimeout(()=>{
uni.switchTab({
url:"/pages/user/index"
})
uni.navigateBack(-1)
},1500) },1500)
}).catch(error=>{ }).catch(error=>{


+ 102
- 83
pages_subpack/hire/index.vue View File

@ -1,6 +1,7 @@
<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 taskList" :key="indexs" @click="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 taskList"
:key="indexs" @click="onMasterDetail(items)">
<view class="se-flex se-flex-h-sb"> <view class="se-flex se-flex-h-sb">
<view class="se-flex se-fw-6"> <view class="se-flex se-fw-6">
<text class="se-c-black se-fs-30">{{items.title}}</text> <text class="se-c-black se-fs-30">{{items.title}}</text>
@ -12,128 +13,146 @@
</view> </view>
</view> </view>
<view class="se-py-10"> <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="items.categoryOne_dictText">{{items.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="items.categoryTwo_dictText">{{items.categoryTwo_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="items.payType_dictText">{{items.payType_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="items.categoryOne_dictText">{{items.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="items.categoryTwo_dictText">{{items.categoryTwo_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="items.payType_dictText">{{items.payType_dictText}}</text>
</view> </view>
<view class="se-flex se-flex-h-sb"> <view class="se-flex se-flex-h-sb">
<view class="se-flex se-flex-h-c"> <view class="se-flex se-flex-h-c">
<u-icon name="map"></u-icon> <u-icon name="map"></u-icon>
<text class="se-c-text-sub se-fs-24 se-pr-10">{{items.latitude,items.longitude | getDistance}}km</text>
<text class="se-c-text-sub se-fs-24 se-pl-10 se-b-l se-toe-3" style="max-width: 220rpx;">{{items.address}}</text>
<text
class="se-c-text-sub se-fs-24 se-pr-10">{{items.latitude,items.longitude | getDistance}}km</text>
<text class="se-c-text-sub se-fs-24 se-pl-10 se-b-l se-toe-3"
style="max-width: 220rpx;">{{items.address}}</text>
</view> </view>
<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 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 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> <text class="se-ml-5">修改</text>
</view> </view>
<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">
<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> <text class="se-ml-5">删除</text>
</view> </view>
<view v-else
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>
</view>
</view> </view>
</view> </view>
<u-empty v-if="taskList && taskList.length==0" mode="list"></u-empty> <u-empty v-if="taskList && taskList.length==0" mode="list"></u-empty>
</view>
</template>
</view>
</template>
<script> <script>
import { import {
queryJobListByUserId queryJobListByUserId
} from "@/common/api.js" } from "@/common/api.js"
export default{
data(){
return{
taskList:[
export default {
data() {
return {
taskList: [
] ]
} }
}, },
filters:{
filters: {
formatTime(time) { formatTime(time) {
const timestamp = new Date(time).getTime(); const timestamp = new Date(time).getTime();
const currentTime = new Date().getTime();
console.info("currentTime",currentTime)
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)}天前`;
}
}
const currentTime = new Date().getTime();
console.info("currentTime", currentTime)
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)}天前`;
}
}
}, },
formDate(date){
formDate(date) {
return dayjs(date).format("YYYY-MM-DD").fromNow(); return dayjs(date).format("YYYY-MM-DD").fromNow();
}, },
getDistance(lat1, lng1) { getDistance(lat1, lng1) {
let lng2 = uni.getStorageSync("longitude") let lng2 = uni.getStorageSync("longitude")
let lat2 = uni.getStorageSync("latitude") let lat2 = uni.getStorageSync("latitude")
if(!lng2 && !lat2){
if (!lng2 && !lat2) {
return "请授权" return "请授权"
} }
const R = 6371; // km
const radLat1 = (lat1 * Math.PI) / 180;
const radLat2 = (lat2 * Math.PI) / 180;
const deltaLat = radLat2 - radLat1;
const deltaLng = ((lng2 - lng1) * Math.PI) / 180;
const a =
Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +
Math.cos(radLat1) *
Math.cos(radLat2) *
Math.sin(deltaLng / 2) *
Math.sin(deltaLng / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return (R * c).toFixed(2); //
const R = 6371; // km
const radLat1 = (lat1 * Math.PI) / 180;
const radLat2 = (lat2 * Math.PI) / 180;
const deltaLat = radLat2 - radLat1;
const deltaLng = ((lng2 - lng1) * Math.PI) / 180;
const a =
Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +
Math.cos(radLat1) *
Math.cos(radLat2) *
Math.sin(deltaLng / 2) *
Math.sin(deltaLng / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return (R * c).toFixed(2); //
} }
}, },
onLoad() { onLoad() {
this.onQueryJobListByUserId(); this.onQueryJobListByUserId();
}, },
methods:{
onMasterDetail(event){
uni.navigateTo({
url:"/pages_subpack/work-detail/index?id="+event.id
})
methods: {
onMasterDetail(event) {
if(event.employOrder){
uni.navigateTo({
url: "/pages_subpack/order-detail/boss?orderId=" + event.employOrder.id
})
}else{
uni.navigateTo({
url: "/pages_subpack/work-detail/index?id=" + event.id
})
}
}, },
onQueryJobListByUserId(){
onQueryJobListByUserId() {
console.log("进入了我发布的招聘页面") console.log("进入了我发布的招聘页面")
queryJobListByUserId({}).then(response=>{
queryJobListByUserId({}).then(response => {
this.taskList = response.result.records this.taskList = response.result.records
}).catch(error=>{
}).catch(error => {
}) })
} }
} }
}
</script>
<style>
</style>
}
</script>
<style>
</style>

+ 46
- 36
pages_subpack/job-hunt/index.vue View File

@ -1,15 +1,22 @@
<template> <template>
<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" :key="indexs">
<view class="se-flex se-flex-h-sb" @click.capture="onMasterDetail(items)">
<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"
:key="indexs">
<view class="se-flex se-flex-h-sb" @click.capture="onMasterDetail(items)">
<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>
</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 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>
<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;">
<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>
<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>
</view> </view>
@ -33,54 +40,57 @@
<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">
<u-icon color="#FF7A31" name="phone-fill"></u-icon>
<text class="se-ml-5">联系他</text>
<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>
</view> </view>
</view> </view>
</view> </view>
<u-empty v-if="rolelist && rolelist.length==0" mode="list"></u-empty> <u-empty v-if="rolelist && rolelist.length==0" mode="list"></u-empty>
</view>
</template>
</view>
</template>
<script> <script>
import { import {
queryMySeekList queryMySeekList
} from "@/common/api.js" } from "@/common/api.js"
export default{
data(){
return{
rolelist:[
export default {
data() {
return {
rolelist: [
] ]
} }
}, },
onLoad() { onLoad() {
this.onQueryMySeekList(); this.onQueryMySeekList();
}, },
methods:{
onMasterDetail(event){
console.info("event",event)
uni.navigateTo({
url:"/pages_subpack/master-detail/index?id="+event.id
})
methods: {
onMasterDetail(event) {
if(event.employOrder){
uni.navigateTo({
url: `/pages_subpack/job-order-detail/index?orderId=${event.employOrder.id}&type=true`
})
}else{
uni.navigateTo({
url: "/pages_subpack/master-detail/index?id=" + event.id
})
}
}, },
onQueryMySeekList(){
onQueryMySeekList() {
console.log("进入了我的求职页面") console.log("进入了我的求职页面")
queryMySeekList({}).then(response=>{
queryMySeekList({}).then(response => {
this.rolelist = response.result.records this.rolelist = response.result.records
}).catch(error=>{
}).catch(error => {
}) })
} }
} }
}
</script>
<style>
}
</script>
<style>
</style> </style>

+ 178
- 80
pages_subpack/job-order-detail/index.vue View File

@ -18,21 +18,21 @@
<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> <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> <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> <text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template> </template>
@ -43,54 +43,78 @@
</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">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单已取消</text>
</view>
</template>
</view> </view>
<view class="se-px-20 se-py-40">
<view class="se-px-20 se-py-40" v-if="stepsIndex != 6">
<u-steps activeColor="#FF7A31" :current="stepsIndex" dot> <u-steps activeColor="#FF7A31" :current="stepsIndex" dot>
<u-steps-item class="se-fs-22" v-for="(items,indexs) in stepsList" :key="indexs" :title="items.title"> <u-steps-item class="se-fs-22" v-for="(items,indexs) in stepsList" :key="indexs" :title="items.title">
<!-- <text class="se-fs-22" slot="title">{{items.title}}</text> --> <!-- <text class="se-fs-22" slot="title">{{items.title}}</text> -->
</u-steps-item> </u-steps-item>
</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">
<view @click="onService()"
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 v-if="stepsIndex==0"> <template v-if="stepsIndex==0">
<view @click="onCancel()" <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"> 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> <text>取消</text>
</view> </view>
</template> </template>
<template v-if="stepsIndex==1">
<view @click="onSubmit()"
<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"> 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>
<text>企业确认</text>
</view> </view>
</template> </template>
<template v-if="stepsIndex==2">
<view @click="onService()"
<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"> 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>
<text>去支付</text>
</view> </view>
</template> </template>
<template v-if="stepsIndex==3">
<view @click="onSubmit()"
</view>
<!-- 求职者 -->
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c"
v-else>
<view @click="onService()"
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 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"> 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>
<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> </view>
</template> </template>
<template v-if="stepsIndex==4">
<view @click="onPay()"
<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"> 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>
<text>确认试工完成</text>
</view> </view>
</template> </template>
<template v-if="stepsIndex==5">
<view @click="onDel()"
<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"> 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>
<text>确认到账</text>
</view> </view>
</template> </template>
</view> </view>
@ -126,15 +150,17 @@
<text class="se-fs-28 se-c-black se-fw5">性别:{{obj.employResume.sex}}</text> <text class="se-fs-28 se-c-black se-fw5">性别:{{obj.employResume.sex}}</text>
<text class="se-fs-28 se-c-black se-fw5">年龄:{{obj.employResume.age}}</text> <text class="se-fs-28 se-c-black se-fw5">年龄:{{obj.employResume.age}}</text>
<text class="se-fs-28 se-c-black se-fw5">简介:{{obj.employResume.brief}}</text> <text class="se-fs-28 se-c-black se-fw5">简介:{{obj.employResume.brief}}</text>
<text class="se-fs-28 se-c-black se-fw5">地区:{{obj.employResume.address}}</text
<text class="se-fs-24 se-c-text-third se-ml-40">师傅电话:{{obj.employResume.phone}}</text>
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10" @click="copyText(obj.employResume.phone)">
<text class="se-fs-28 se-c-black se-fw5">地区:{{obj.employResume.address}}</text <text
class="se-fs-24 se-c-text-third se-ml-40">师傅电话:{{obj.employResume.phone}}</text>
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10"
@click="copyText(obj.employResume.phone)">
复制 复制
</view> </view>
</view> </view>
<view class="se-mt-10"> <view class="se-mt-10">
<text class="se-fs-24 se-c-33">简历地址:{{obj.workAddress}}</text> <text class="se-fs-24 se-c-33">简历地址:{{obj.workAddress}}</text>
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10" @click="copyText(obj.workAddress)">
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10"
@click="copyText(obj.workAddress)">
复制 复制
</view> </view>
</view> </view>
@ -183,107 +209,179 @@
<script> <script>
import { import {
orderDetail
orderDetail,
deleteOrder,
confirmOrder,
confirmOrderTry,
confirmOrderTryCompany,
confirmOrderTryCompanyOk,
} from "@/common/api.js" } from "@/common/api.js"
export default{
data(){
return{
stepsIndex:1,
stepsList:[
{
title:"接单",
date:"10:21"
export default {
data() {
return {
stepsIndex: 1,
stepsList: [{
title: "接单",
date: "10:21"
}, },
{ {
title:"进行",
date:"10:22"
title: "进行",
date: "10:22"
}, },
{ {
title:"试工完成",
date:"10:23"
title: "试工完成",
date: "10:23"
}, },
{ {
title:"企业确认",
date:"10:24"
title: "企业确认",
date: "10:24"
}, },
{ {
title:"企业支付",
date:"10:25"
title: "企业支付",
date: "10:25"
}, },
{ {
title:"企业完成",
date:"10:26"
title: "企业完成",
date: "10:26"
} }
], ],
detail:`<p>
detail: `<p>
1全日制大专以上学历艺术设计类相关专业;<br/> 1全日制大专以上学历艺术设计类相关专业;<br/>
2两年以上平面品牌视觉设计等相关工作经验能独立完成项目的设计工作 3C数码/个护健 类产品服务经验优先有乙方工作经验佳;<br/> 2两年以上平面品牌视觉设计等相关工作经验能独立完成项目的设计工作 3C数码/个护健 类产品服务经验优先有乙方工作经验佳;<br/>
3具备一定的设计提案能力能完整的呈现设计思路与创意能清晰的表达设计逻辑与思考;<br/> 3具备一定的设计提案能力能完整的呈现设计思路与创意能清晰的表达设计逻辑与思考;<br/>
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 || ''
this.onOrderDetail() this.onOrderDetail()
}, },
methods:{
onOrderDetail(){
methods: {
onOrderDetail() {
let that = this let that = this
let params = { let params = {
orderId:that.orderId
orderId: that.orderId
} }
orderDetail(params).then(response=>{
orderDetail(params).then(response => {
that.obj = response.result that.obj = response.result
that.stepsIndex = response.result.status; that.stepsIndex = response.result.status;
}).catch(error=>{
}).catch(error => {
}) })
}, },
copyText(event){
copyText(event) {
uni.setClipboardData({ uni.setClipboardData({
data: event, data: event,
success: () => { success: () => {
uni.showToast({
title: "复制成功",
icon: "none",
});
uni.showToast({
title: "复制成功",
icon: "none",
});
}, },
fail: (err) => { fail: (err) => {
console.error("复制失败", err);
console.error("复制失败", err);
}, },
}) })
}, },
onCancel(){
uni.navigateBack({
delta:1
onCancel() {
deleteOrder(this.orderId).then(res => {
if (res.code == 200) {
uni.navigateBack(-1)
}
}) })
}, },
onService(){
onService() {
console.info(`联系客服`) console.info(`联系客服`)
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: this.obj.jobPhone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
phoneNumber: this.obj.jobPhone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
},
// -
confirmOrder() {
confirmOrder(this.orderId)
.then(res => {
if(res.code == 200){
uni.showToast({
title: '确认成功',
icon: 'none'
})
this.onOrderDetail()
}
}) })
}, },
onsubmit(){
console.info(`确认`)
// -
confirmOrderTry(){
confirmOrderTry(this.orderId)
.then(res => {
if(res.code == 200){
uni.showToast({
title: '确认成功',
icon: 'none'
})
this.onOrderDetail()
}
})
},
//
confirmOrderTryCompanyOk(){
confirmOrderTryCompanyOk({
orderId : this.orderId
})
.then(res => {
this.onOrderDetail()
})
}, },
onPay(){
onPay() {
uni.navigateTo({ uni.navigateTo({
url:"/pages_subpack/pay/index"
url: "/pages_subpack/pay/index?orderId=" + this.orderId
})
},
/**
* 企业方法
*/
// -
confirmOrderTryCompany(){
confirmOrderTryCompany(this.orderId)
.then(res => {
if(res.code == 200){
uni.showToast({
title: '确认成功',
icon: 'none'
})
this.onOrderDetail()
}
})
},
// -
confirmOrder() {
confirmOrder(this.orderId)
.then(res => {
if(res.code == 200){
uni.showToast({
title: '确认成功',
icon: 'none'
})
this.onOrderDetail()
}
}) })
}, },
onDel(){
console.info(`删除`)
}
} }
} }
</script> </script>


+ 345
- 0
pages_subpack/order-detail/boss.vue View File

@ -0,0 +1,345 @@
<template>
<view class="u-page">
<view class="se-px-20 se-pt-40 se-flex-v-c">
<template v-if="stepsIndex==0">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">招聘发布-师傅接单-等待企业确认</text>
</view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template>
<template v-if="stepsIndex==1">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46524.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单进行中</text>
</view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template>
<template v-if="stepsIndex==2">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">试工完成</text>
</view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template>
<template v-if="stepsIndex==3">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">企业待支付</text>
</view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template>
<template v-if="stepsIndex==4">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单待完成</text>
</view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template>
<template v-if="stepsIndex==5">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单已完成</text>
</view>
<text class="se-c-orange se-mt-20 se-fs-24">124530有效</text>
</template>
<template v-if="stepsIndex==6">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单已取消</text>
</view>
</template>
</view>
<view class="se-px-20 se-py-40" v-if="stepsIndex != 6">
<u-steps activeColor="#FF7A31" :current="stepsIndex" dot>
<u-steps-item class="se-fs-22" v-for="(items,indexs) in stepsList" :key="indexs" :title="items.title">
<!-- <text class="se-fs-22" slot="title">{{items.title}}</text> -->
</u-steps-item>
</u-steps>
</view>
<view class="se-px-20">
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c">
<template>
<view @click="onService()"
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 == 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>
<view class="se-px-40 se-py-20">
<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-v-sa se-flex-ai-fs se-py-20">
<view class="se-flex">
<view class="se-w-160 se-h-160">
<image class="se-w-160 se-h-160 se-br-10" :src="obj.workHeadImg" mode=""></image>
</view>
<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">工作职位:{{obj.title}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属行业:{{obj.categoryOne}}</view>
<!-- <view class="se-fs-24 se-c-text-third se-display-ib">所属工种:{{obj.title}}</view> -->
<view class="se-fs-24 se-c-text-third se-display-ib">所属工种:{{obj.categoryTwo}}</view>
</view>
</view>
<view class="se-flex se-flex-h-sb se-w-p-100 se-pt-20">
<view class="se-fs-24 se-display-ib">日薪</view>
<view class="se-c-orange se-fs-32 se-fw-6 se-display-ib">{{obj.employJob.salaryDay}}</view>
</view>
</view>
<u-line dashed></u-line>
<view class="se-py-10 se-pb-30">
<view class="se-mt-30">
<text class="se-fs-28 se-c-black se-fw5">招聘公司名称:{{obj.workName}}</text>
<text class="se-fs-28 se-c-black se-fw5">招聘联系人:{{obj.employAuthenticationPerson.name}}</text>
<text class="se-fs-24 se-c-text-third se-ml-40">联系方式:{{obj.employAuthenticationPerson.phone}}</text>
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10"
@click="copyText(obj.phone)">
复制
</view>
</view>
<view class="se-mt-10">
<text class="se-fs-24 se-c-33">工作地址:{{obj.workAddress}}</text>
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10"
@click="copyText(obj.workAddress)">
复制
</view>
</view>
</view>
<u-line dashed></u-line>
<view class="se-mt-20 se-pt-20 se-pb-30">
<view class="se-fw-6 se-fs-32 se-c-black">
订单信息
</view>
<view class="se-flex se-pt-30 se-flex-h-sb">
<view class="se-fs-24 se-display-ib">支付方式</view>
<view class="se-fs-24 se-display-ib" v-if="obj.payType==0">提前支付</view>
<view class="se-fs-24 se-display-ib" v-if="obj.payType==1">试用后支付</view>
</view>
<view class="se-flex se-pt-30 se-flex-h-sb">
<view class="se-fs-24 se-display-ib">工作时间</view>
<view class="se-fs-24 se-display-ib">{{obj.employJob.startTime}} - {{obj.employJob.endTime}}</view>
</view>
</view>
<u-line dashed></u-line>
<view class="se-mt-20 se-pt-20 se-pb-30">
<view class="se-fw-6 se-fs-32 se-c-black">
工作内容
</view>
<view class="se-fs-24 se-pt-20 se-pb-20 se-lh-40">
<u-parse :content="obj.details"></u-parse>
</view>
</view>
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c">
<view @click="onService()"
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>
</view>
<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]"
:key="indexs">
<view class="se-flex se-flex-h-sb">
<view class="se-flex">
<view class="se-a-100">
<image class="se-a-100 se-br-p-50 se-bgc-f5" :src="items.employResume.headImage" mode="">
</image>
</view>
<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>
<text
class="se-fs-24 se-c-text-third">{{items.employResume.sex==1?"男":"女"}}-{{items.employResume.nation?items.employResume.nation:"未知"}}-{{items.employResume.age}}</text>
</view>
</view>
<view @click.capture="onCustomerService(items.employAuthenticationPerson.phone)"
v-if="stepsIndex != 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">
<u-icon color="#FF7A31" name="phone-fill"></u-icon>
<text class="se-ml-5">联系他</text>
</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>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import {
orderDetail,
deleteOrder,
confirmOrder,
confirmOrderTryCompany,
} from "@/common/api.js"
export default {
data() {
return {
stepsIndex: 1,
stepsList: [{
title: "接单",
date: "10:21"
},
{
title: "进行",
date: "10:22"
},
{
title: "试工完成",
date: "10:23"
},
{
title: "企业确认",
date: "10:24"
},
{
title: "企业支付",
date: "10:25"
},
{
title: "企业完成",
date: "10:26"
}
],
detail: `<p>
1全日制大专以上学历艺术设计类相关专业;<br/>
2两年以上平面品牌视觉设计等相关工作经验能独立完成项目的设计工作 3C数码/个护健 类产品服务经验优先有乙方工作经验佳;<br/>
3具备一定的设计提案能力能完整的呈现设计思路与创意能清晰的表达设计逻辑与思考;<br/>
4热爱设计平面基本功扎实拥有优良的审美与创意想法对版式色彩把控能力强;对工作富有责任心具备团队沟通与协作能力;<br/>
5精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 PPT/Keynote能完成提案内容的材料美化工作<br/>
</p>`,
obj: {}
}
},
onLoad(options) {
this.orderId = options.orderId
},
onShow() {
this.onOrderDetail()
},
methods: {
onOrderDetail() {
let that = this
let params = {
orderId: that.orderId
}
orderDetail(params).then(response => {
that.obj = response.result
that.stepsIndex = response.result.status;
}).catch(error => {
})
},
copyText(event) {
uni.setClipboardData({
data: event,
success: () => {
uni.showToast({
title: "复制成功",
icon: "none",
});
},
fail: (err) => {
console.error("复制失败", err);
},
})
},
onCancel() {
deleteOrder(this.orderId).then(res => {
if (res.code == 200) {
uni.navigateBack(-1)
}
})
},
onCustomerService(phone) {
uni.makePhoneCall({
phoneNumber: phone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
},
onService() {
console.info(`联系客服`)
uni.makePhoneCall({
phoneNumber: this.obj.workPhone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
},
// -
confirmOrderTryCompany(){
confirmOrderTryCompany(this.orderId)
.then(res => {
if(res.code == 200){
uni.showToast({
title: '确认成功',
icon: 'none'
})
this.onOrderDetail()
}
})
},
// -
confirmOrder() {
confirmOrder(this.orderId)
.then(res => {
if(res.code == 200){
uni.showToast({
title: '确认成功',
icon: 'none'
})
this.onOrderDetail()
}
})
},
onPay() {
uni.navigateTo({
url: "/pages_subpack/pay/index?orderId=" + this.orderId
})
},
onDel() {
console.info(`删除`)
}
}
}
</script>
<style lang="scss" scoped>
</style>

+ 106
- 73
pages_subpack/order-detail/index.vue View File

@ -43,8 +43,14 @@
</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">
<view class="se-flex se-flex-h-c">
<image class="se-a-50" src="@/static/image/46525.png" mode=""></image>
<text class="se-c-orange se-fs-30 se-ml-10">订单已取消</text>
</view>
</template>
</view> </view>
<view class="se-px-20 se-py-40">
<view class="se-px-20 se-py-40" v-if="stepsIndex != 6">
<u-steps activeColor="#FF7A31" :current="stepsIndex" dot> <u-steps activeColor="#FF7A31" :current="stepsIndex" dot>
<u-steps-item class="se-fs-22" v-for="(items,indexs) in stepsList" :key="indexs" :title="items.title"> <u-steps-item class="se-fs-22" v-for="(items,indexs) in stepsList" :key="indexs" :title="items.title">
<!-- <text class="se-fs-22" slot="title">{{items.title}}</text> --> <!-- <text class="se-fs-22" slot="title">{{items.title}}</text> -->
@ -60,42 +66,30 @@
</view> </view>
</template> </template>
<template v-if="stepsIndex==1"> <template v-if="stepsIndex==1">
<view @click="onSubmit()"
<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"> 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>
<text>确认试工完成</text>
</view> </view>
<view @click="onCancel()" <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"> 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> <text>取消</text>
</view> </view>
</template> </template>
<template v-if="stepsIndex==2">
<template>
<view @click="onService()" <view @click="onService()"
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"> 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> <text>联系客服</text>
</view> </view>
</template> </template>
<template v-if="stepsIndex==3">
<view @click="onSubmit()"
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"> <template v-if="stepsIndex==4">
<view @click="onPay()"
<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"> 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==5">
<view @click="onDel()"
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>
<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">
<view class="se-flex se-flex-ai-c se-pb-10"> <view class="se-flex se-flex-ai-c se-pb-10">
<view class="line-orange"></view> <view class="line-orange"></view>
@ -126,13 +120,15 @@
<text class="se-fs-28 se-c-black se-fw5">招聘公司名称:{{obj.workName}}</text> <text class="se-fs-28 se-c-black se-fw5">招聘公司名称:{{obj.workName}}</text>
<text class="se-fs-28 se-c-black se-fw5">招聘联系人:{{obj.employAuthenticationPerson.name}}</text> <text class="se-fs-28 se-c-black se-fw5">招聘联系人:{{obj.employAuthenticationPerson.name}}</text>
<text class="se-fs-24 se-c-text-third se-ml-40">联系方式:{{obj.employAuthenticationPerson.phone}}</text> <text class="se-fs-24 se-c-text-third se-ml-40">联系方式:{{obj.employAuthenticationPerson.phone}}</text>
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10" @click="copyText(obj.phone)">
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10"
@click="copyText(obj.phone)">
复制 复制
</view> </view>
</view> </view>
<view class="se-mt-10"> <view class="se-mt-10">
<text class="se-fs-24 se-c-33">工作地址:{{obj.workAddress}}</text> <text class="se-fs-24 se-c-33">工作地址:{{obj.workAddress}}</text>
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10" @click="copyText(obj.workAddress)">
<view class="se-bgc-orange se-c-white se-fs-20 se-display-ib se-px-10 se-py-5 se-br-10 se-ml-10"
@click="copyText(obj.workAddress)">
复制 复制
</view> </view>
</view> </view>
@ -168,112 +164,149 @@
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import { import {
orderDetail
orderDetail,
deleteOrder,
confirmOrder,
confirmOrderTry,
confirmOrderTryCompanyOk,
} from "@/common/api.js" } from "@/common/api.js"
export default{
data(){
return{
stepsIndex:1,
stepsList:[
{
title:"接单",
date:"10:21"
export default {
data() {
return {
stepsIndex: 1,
stepsList: [{
title: "接单",
date: "10:21"
}, },
{ {
title:"进行",
date:"10:22"
title: "进行",
date: "10:22"
}, },
{ {
title:"试工完成",
date:"10:23"
title: "试工完成",
date: "10:23"
}, },
{ {
title:"企业确认",
date:"10:24"
title: "企业确认",
date: "10:24"
}, },
{ {
title:"企业支付",
date:"10:25"
title: "企业支付",
date: "10:25"
}, },
{ {
title:"企业完成",
date:"10:26"
title: "企业完成",
date: "10:26"
} }
], ],
detail:`<p>
detail: `<p>
1全日制大专以上学历艺术设计类相关专业;<br/> 1全日制大专以上学历艺术设计类相关专业;<br/>
2两年以上平面品牌视觉设计等相关工作经验能独立完成项目的设计工作 3C数码/个护健 类产品服务经验优先有乙方工作经验佳;<br/> 2两年以上平面品牌视觉设计等相关工作经验能独立完成项目的设计工作 3C数码/个护健 类产品服务经验优先有乙方工作经验佳;<br/>
3具备一定的设计提案能力能完整的呈现设计思路与创意能清晰的表达设计逻辑与思考;<br/> 3具备一定的设计提案能力能完整的呈现设计思路与创意能清晰的表达设计逻辑与思考;<br/>
4热爱设计平面基本功扎实拥有优良的审美与创意想法对版式色彩把控能力强;对工作富有责任心具备团队沟通与协作能力;<br/> 4热爱设计平面基本功扎实拥有优良的审美与创意想法对版式色彩把控能力强;对工作富有责任心具备团队沟通与协作能力;<br/>
5精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 PPT/Keynote能完成提案内容的材料美化工作<br/> 5精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 PPT/Keynote能完成提案内容的材料美化工作<br/>
</p>`, </p>`,
obj:{}
obj: {}
} }
}, },
onLoad(options) { onLoad(options) {
this.orderId=options.orderId
this.orderId = options.orderId
},
onShow() {
this.onOrderDetail() this.onOrderDetail()
}, },
methods:{
onOrderDetail(){
methods: {
onOrderDetail() {
let that = this let that = this
let params = { let params = {
orderId:that.orderId
orderId: that.orderId
} }
orderDetail(params).then(response=>{
orderDetail(params).then(response => {
that.obj = response.result that.obj = response.result
that.stepsIndex = response.result.status; that.stepsIndex = response.result.status;
}).catch(error=>{
}).catch(error => {
}) })
}, },
copyText(event){
copyText(event) {
uni.setClipboardData({ uni.setClipboardData({
data: event, data: event,
success: () => { success: () => {
uni.showToast({
title: "复制成功",
icon: "none",
});
uni.showToast({
title: "复制成功",
icon: "none",
});
}, },
fail: (err) => { fail: (err) => {
console.error("复制失败", err);
console.error("复制失败", err);
}, },
}) })
}, },
onCancel(){
uni.navigateBack({
delta:1
//
confirmOrderTryCompanyOk(){
confirmOrderTryCompanyOk({
orderId : this.orderId
})
.then(res => {
this.onOrderDetail()
})
},
onCancel() {
deleteOrder(this.orderId).then(res => {
if (res.code == 200) {
uni.navigateBack(-1)
}
}) })
}, },
onService(){
onService() {
console.info(`联系客服`) console.info(`联系客服`)
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: this.obj.workPhone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
phoneNumber: this.obj.workPhone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
}) })
}, },
onsubmit(){
console.info(`确认`)
// -
confirmOrder() {
confirmOrder(this.orderId)
.then(res => {
if(res.code == 200){
uni.showToast({
title: '确认成功',
icon: 'none'
})
this.onOrderDetail()
}
})
}, },
onPay(){
// -
confirmOrderTry(){
confirmOrderTry(this.orderId)
.then(res => {
if(res.code == 200){
uni.showToast({
title: '确认成功',
icon: 'none'
})
this.onOrderDetail()
}
})
},
onPay() {
uni.navigateTo({ uni.navigateTo({
url:"/pages_subpack/pay/index"
url: "/pages_subpack/pay/index"
}) })
}, },
onDel(){
console.info(`删除`)
}
} }
} }
</script> </script>


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

@ -3,44 +3,46 @@
<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="https://cdn.uviewui.com/uview/album/1.jpg" mode=""></image>
<image class="se-w-160 se-h-160 se-br-10" :src="detail.employJob.image || detail.jobHeadImg" mode="">
</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">泰山工装石膏板搬运</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属行业:水泥搬运</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属工种:中午搬运</view>
<view class="se-fs-24 se-c-text-third se-display-ib">工作时间:3h</view>
<view class="se-fw-6 se-c-black se-fs-30 se-display-ib">{{ detail.title }}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属行业:{{ detail.categoryOne }}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属工种:{{ detail.categoryTwo }}</view>
<!-- <view class="se-fs-24 se-c-text-third se-display-ib">工作时间:3h</view> -->
</view> </view>
</view> </view>
</view> </view>
<view class="se-flex se-flex-h-fs se-mt-30 se-py-20 se-px-30 se-bs se-bgc-white se-br-20"> <view class="se-flex se-flex-h-fs se-mt-30 se-py-20 se-px-30 se-bs se-bgc-white se-br-20">
<image class="se-a-30" src="@/static/image/46502.png" mode=""></image> <image class="se-a-30" src="@/static/image/46502.png" mode=""></image>
<text class="se-c-black se-fs-32 se-ml-20">李满和</text>
<text class="se-c-black se-fs-32 se-ml-20">13189698114</text>
<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.workPhone }}</text>
</view> </view>
<view class="se-mt-30 se-py-20 se-px-30 se-bs se-bgc-white se-br-20"> <view class="se-mt-30 se-py-20 se-px-30 se-bs se-bgc-white se-br-20">
<view class="se-flex se-flex-h-sb se-pb-20 se-b-b"> <view class="se-flex se-flex-h-sb se-pb-20 se-b-b">
<view class="se-flex se-flex-h-fs"> <view class="se-flex se-flex-h-fs">
<image class="se-w-30 se-h-40" src="@/static/image/47961.png" mode=""></image> <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>
<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">$400</text>
<text class="se-c-orange se-fs-32 se-ml-20">$ {{ detail.orderNoMoney }}</text>
</view> </view>
</view> </view>
<view class="se-flex se-flex-h-sb se-pt-20">
<view class="se-flex se-flex-h-sb se-pt-20" v-if="detail.employSeek">
<view class="se-flex se-flex-h-fs"> <view class="se-flex se-flex-h-fs">
<image class="se-w-30 se-h-40" src="@/static/image/47961.png" mode=""></image> <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> <text class="se-c-black se-fs-32 se-ml-20">师傅试工交通费用</text>
</view> </view>
<view class="se-flex se-flex-ai-c"> <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"> <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> </view>
<text class="se-c-orange se-fs-32 se-ml-20">$10</text> <text class="se-c-orange se-fs-32 se-ml-20">$10</text>
</view> </view>
</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-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> <view class="se-w-10 se-h-10 se-br-5 se-bgc-orange se-mr-10"></view>
<text>全程共</text> <text>全程共</text>
<text class="se-c-orange se-px-5 se-fw-6">5</text> <text class="se-c-orange se-px-5 se-fw-6">5</text>
@ -56,16 +58,13 @@
</view> </view>
</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">
<view class="se-flex-v-sb se-w-p-100" style="align-items: unset;"> <view class="se-flex-v-sb se-w-p-100" style="align-items: unset;">
<u-radio name="1" activeColor="#ff7a31"> <u-radio name="1" activeColor="#ff7a31">
<view class="se-flex se-flex-ai-c se-pb-20"> <view class="se-flex se-flex-ai-c se-pb-20">
<image class="se-w-30 se-h-25 se-mt-5" src="@/static/image/46518.png" mode=""></image> <image class="se-w-30 se-h-25 se-mt-5" src="@/static/image/46518.png" mode=""></image>
<text class="se-c-black se-fs-30 se-ml-15">账户余额</text> <text class="se-c-black se-fs-30 se-ml-15">账户余额</text>
<text class="se-c-text-third se-fs-28 se-ml-15">(余额10)</text>
<text class="se-c-text-third se-fs-28 se-ml-15">(余额{{ amount }})</text>
</view> </view>
</u-radio> </u-radio>
<u-radio name="2" activeColor="#ff7a31"> <u-radio name="2" activeColor="#ff7a31">
@ -77,19 +76,23 @@
</view> </view>
</u-radio-group> </u-radio-group>
</view> </view>
<view class="se-mt-10 se-py-10 se-br-20">
<view class="se-mt-10 se-py-10 se-br-20"
style="display: flex;flex-direction: column;align-items: center;">
<text class="se-c-66 se-fs-22">温馨提示下单前请仔细查看下单需知</text> <text class="se-c-66 se-fs-22">温馨提示下单前请仔细查看下单需知</text>
<view class="se-flex-h-fs se-br-40 se-mt-20 se-flex-ai-fs se-h-80 se-lh-80 se-ta-c se-fs-24 se-c-33" style="align-items: unset;">
<u-checkbox :checked="checked" activeColor="#ff7a31" label-size="12" shape="circle" label="阅读并同意"></u-checkbox>
<view class="se-flex-h-fs se-br-40 se-mt-20 se-flex-ai-fs se-h-80 se-lh-80 se-ta-c se-fs-24 se-c-33"
style="align-items: unset;">
<u-checkbox :checked="checked" activeColor="#ff7a31" label-size="12" shape="circle"
label="阅读并同意"></u-checkbox>
<text class="se-c-orange" @click="show=true">用户使用协议</text> <text class="se-c-orange" @click="show=true">用户使用协议</text>
</view> </view>
</view> </view>
<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"> <view class="se-fs-32 se-c-black se-ml-30">
<text class="se-fs-24">合计</text> <text class="se-fs-24">合计</text>
<text class="se-c-orange">{{amount}}</text>
<text class="se-c-orange">{{price}}</text>
</view> </view>
<view @click="onDetail" 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="payOrderCompany"
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> </view>
</view> </view>
@ -97,19 +100,103 @@
</template> </template>
<script> <script>
export default{
data(){
return{
amount:"440.1",
payRadio:"1"
import {
orderDetail,
deleteOrder,
confirmOrder,
payOrderCompany,
userInfo,
} from "@/common/api.js"
export default {
data() {
return {
amount: 0,
payRadio: "1",
orderId : 0,
checked : 0,
detail : {},
} }
}, },
methods:{
onDetail(){
computed : {
price(){
return 440
},
},
onLoad(options) {
this.orderId = options.orderId
},
onShow() {
this.onOrderDetail()
this.onUserInfo()
},
methods: {
onUserInfo(){
let params={}
userInfo(params).then(response=>{
this.amount=response.result.amount?response.result.amount:0
}).catch(error=>{
})
},
onOrderDetail() {
let that = this
let params = {
orderId: that.orderId
}
orderDetail(params).then(response => {
that.detail = response.result
}).catch(error => {
})
},
onDetail() {
uni.navigateTo({ uni.navigateTo({
url:"/pages_subpack/order-detail/index"
url: "/pages_subpack/order-detail/index"
}) })
}
},
payOrderCompany() {
let that = this
if(that.checked.length==0){
return uni.showToast({
icon: "none",
title: "请勾选隐私协议"
})
}
let data = {
orderId: this.orderId,
payType: this.payRadio,
}
payOrderCompany(data)
.then(res => {
if (res.code == 200) {
if (data.payType == '2') {
uni.requestPayment({
provider: 'wxpay', //
timeStamp: res.result.timeStamp, //
nonceStr: res.result.nonceStr, //
package: res.result.packageValue,
signType: res.result.signType, //
paySign: res.result.paySign, //
success: function(res) {
uni.navigateBack(-1)
},
fail: function(err) {
uni.showToast({
icon: 'none',
title: "支付失败"
})
}
});
} else if (res.code == 200) {
uni.navigateBack(-1)
}
}
})
},
} }
} }
</script> </script>


+ 60
- 51
pages_subpack/payment/index.vue View File

@ -110,6 +110,8 @@
console.info(options) console.info(options)
this.id = options.id this.id = options.id
this.getOrderDetail() this.getOrderDetail()
},
onShow() {
this.onUserInfo() this.onUserInfo()
}, },
methods:{ methods:{
@ -121,7 +123,7 @@
let params={} let params={}
userInfo(params).then(response=>{ userInfo(params).then(response=>{
console.info("userInfo",response) console.info("userInfo",response)
this.myMoney=response.result.myMoney?response.result.myMoney:0
this.myMoney=response.result.amount?response.result.amount:0
}).catch(error=>{ }).catch(error=>{
}) })
@ -146,65 +148,72 @@
title: "请勾选隐私协议" title: "请勾选隐私协议"
}) })
} }
console.info(that.payRadio)
if(that.payRadio==1){
payOrder({orderId:that.id}).then(res=>{
let data = {
orderId : that.id,
payType : that.payRadio,
}
// if(that.payRadio==1){
payOrder(data).then(res=>{
if(data.payType == '2'){
uni.requestPayment({
provider: 'wxpay', //
timeStamp: res.result.timeStamp, //
nonceStr: res.result.nonceStr, //
package: res.result.packageValue,
signType: res.result.signType, //
paySign: res.result.paySign, //
success: function (res) {
that.onDetail();
},
fail: function (err) {
uni.showToast({
icon:'none',
title:"支付失败"
})
}
});
}else if(res.code == 200){
that.onDetail();
}
uni.requestPayment({
provider: 'wxpay', //
timeStamp: res.result.timeStamp, //
nonceStr: res.result.nonceStr, //
package: res.result.packageValue,
signType: res.result.signType, //
paySign: res.result.paySign, //
success: function (res) {
console.log('支付成功',res);
that.onDetail();
},
fail: function (err) {
console.log('支付失败',err);
error(err)
uni.showToast({
icon:'none',
title:"支付失败"
})
}
});
}).catch(error=>{
})
}else if(that.payRadio==2){
payOrder({orderId:that.id}).then(response=>{
console.info("payOrder",response)
uni.requestPayment({
provider: "wxpay",
nonceStr: response.result.nonceStr,
package: response.result.package,
timeStamp: response.result.timeStamp,
signType: response.result.signType,
paySign: response.result.paySign,
success(res) {
that.$u.toast("付款成功!")
that.onDetail();
},
fail(err) {
console.info(err)
console.log('支付失败',err);
uni.showToast({
icon:'none',
title:"支付失败"
})
}
})
}).catch(error=>{ }).catch(error=>{
}) })
}
// }else if(that.payRadio==2){
// payOrder({orderId:that.id}).then(response=>{
// console.info("payOrder",response)
// uni.requestPayment({
// provider: "wxpay",
// nonceStr: response.result.nonceStr,
// package: response.result.package,
// timeStamp: response.result.timeStamp,
// signType: response.result.signType,
// paySign: response.result.paySign,
// success(res) {
// that.$u.toast("")
// that.onDetail();
// },
// fail(err) {
// console.info(err)
// console.log('',err);
// uni.showToast({
// icon:'none',
// title:""
// })
// }
// })
// }).catch(error=>{
// })
// }
}, },
onDetail(){ onDetail(){
uni.navigateTo({
uni.redirectTo({
url:"/pages_subpack/order-detail/index?orderId="+this.id url:"/pages_subpack/order-detail/index?orderId="+this.id
}) })
} }


+ 2
- 2
pages_subpack/record/index.vue View File

@ -7,7 +7,7 @@
总余额( 总余额(
</view> </view>
<view class="se-c-orange se-fs-26 se-c-orange se-mt-20"> <view class="se-c-orange se-fs-26 se-c-orange se-mt-20">
{{money}}
{{money || 0}}
</view> </view>
<view class="se-fs-24 se-mt-10 se-px-30 se-py-10 se-b-orange se-c-orange se-br-10 se-fw-6"> <view class="se-fs-24 se-mt-10 se-px-30 se-py-10 se-b-orange se-c-orange se-br-10 se-fw-6">
提现 提现
@ -18,7 +18,7 @@
累计提现 累计提现
</view> </view>
<view class="se-c-orange se-fs-26 se-c-orange se-mt-20"> <view class="se-c-orange se-fs-26 se-c-orange se-mt-20">
{{moneyLog}}
{{moneyLog || 0}}
</view> </view>
<view class="se-fs-24 se-mt-10 se-px-30 se-py-10 se-b-orange se-c-orange se-br-10 se-fw-6"> <view class="se-fs-24 se-mt-10 se-px-30 se-py-10 se-b-orange se-c-orange se-br-10 se-fw-6">
提现记录 提现记录


+ 10
- 0
pages_subpack/release/component/enterprise.vue View File

@ -431,6 +431,16 @@
"details": that.form.introduce, "details": that.form.introduce,
"image": that.form.fileList.map(item => item.url).join(','),// "image": that.form.fileList.map(item => item.url).join(','),//
} }
if(this.$dayjs(params.startTime).isAfter(this.$dayjs(params.endTime))){
return uni.$u.toast('开始时间不能大于结束时间')
} else if(this.$dayjs(params.endTime).isBefore(this.$dayjs())){
return uni.$u.toast('结束时间不能小于当前时间')
}else if(this.$dayjs(params.startTime).isBefore(this.$dayjs())){
return uni.$u.toast('开始时间不能小于当前时间')
}
// 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"}
addTask(params).then(response=>{ addTask(params).then(response=>{
console.info("response",response) console.info("response",response)


+ 0
- 10
utils/oss-upload/oss/index.js View File

@ -2,10 +2,6 @@
* 阿里云OSS工具类 * 阿里云OSS工具类
*/ */
import OSSConfig from "@/utils/oss-upload/oss/OSSConfig.js" import OSSConfig from "@/utils/oss-upload/oss/OSSConfig.js"
//支持web端
import {
uploadFileToOSS
} from '@/utils/oss-upload/oss/web.js'
import ossConfig from '@/config.js' import ossConfig from '@/config.js'
/** /**
@ -93,9 +89,6 @@ export function ossUploadImage({
count: 1, count: 1,
sizeType, sizeType,
success(res) { success(res) {
// #ifdef H5
return uploadFileToOSS(res.tempFiles[0]).then(success).catch(fail)
// #endif
ossUpload(res.tempFilePaths[0], key, folder).then(success).catch(fail) ossUpload(res.tempFilePaths[0], key, folder).then(success).catch(fail)
}, },
fail fail
@ -123,9 +116,6 @@ export function ossUploadVideo({
maxDuration, maxDuration,
camera, camera,
success(res) { success(res) {
// #ifdef H5
return uploadFileToOSS(res.tempFile).then(success).catch(fail)
// #endif
ossUpload(res.tempFilePath, key, folder).then(success).catch(fail) ossUpload(res.tempFilePath, key, folder).then(success).catch(fail)
}, },
fail fail


+ 0
- 63
utils/oss-upload/oss/web.js View File

@ -1,63 +0,0 @@
// 此方法适用于web
import OSS from "ali-oss"
import config from '@/config.js'
/**
* 生成一个随机的Key
*/
function storeKey() {
let s = [];
let hexDigits = "0123456789abcdef";
for (let i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4";
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
s[8] = s[13] = s[18] = s[23] = "-";
return s.join("");
}
/**
* 根据当天日期在OSS端生成文件夹
*/
function storeFolder() {
const date = new Date();
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
return [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(formatNumber).join('-')
}
export function uploadFileToOSS(file) {
uni.showLoading({
title: '上传中...'
});
return new Promise((resolve,reject) => {
// 创建OSS实例
const client = new OSS(config.aliOss.config);
// 设置文件名和文件目录
const suffix = '.' + file.name.split('.').pop();
let key = storeFolder()
if(key[key.length - 1] != '/') key += '/'
const fileName = key + storeKey() + suffix; // 注意:文件名需要是唯一的
// 使用put接口上传文件
client.multipartUpload(fileName, file, {
headers: {
'Content-Disposition': 'inline',
'Content-Type': file.type
}
}).then(res => {
uni.hideLoading();
resolve(config.aliOss.url + res.name);
}).catch(err => {
uni.hideLoading();
reject(err)
})
})
}

Loading…
Cancel
Save