Browse Source

feat(订单详情): 完善订单详情页功能及样式

- 修改页面标题为"求职订单详情"
- 优化头像显示逻辑,增加默认图片
- 修复订单类型判断逻辑错误
- 新增师傅简历信息展示和企业信息展示模块
- 添加联系师傅和企业功能
- 优化图片加载失败时的默认显示
master
前端-胡立永 1 month ago
parent
commit
a5a91019ac
8 changed files with 205 additions and 23 deletions
  1. +1
    -1
      pages.json
  2. +1
    -1
      pages/order/component/enterprise.vue
  3. +1
    -1
      pages/order/component/master.vue
  4. +102
    -8
      pages_subpack/job-order-detail/index.vue
  5. +1
    -1
      pages_subpack/order-detail/boss.vue
  6. +88
    -1
      pages_subpack/order-detail/index.vue
  7. +7
    -6
      pages_subpack/pay/index.vue
  8. +4
    -4
      pages_subpack/payment/index.vue

+ 1
- 1
pages.json View File

@ -201,7 +201,7 @@
{
"path": "job-order-detail/index",
"style": {
"navigationBarTitleText": "聘用订单详情",
"navigationBarTitleText": "求职订单详情",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"


+ 1
- 1
pages/order/component/enterprise.vue View File

@ -24,7 +24,7 @@
</view>
<view class="se-flex" @click="onOrderDetail(items)">
<view class="se-w-160 se-h-160">
<image class="se-w-160 se-h-160 se-br-10" :src="items.workHeadImg" mode=""></image>
<image class="se-w-160 se-h-160 se-br-10" :src="items.workHeadImg || items.jobHeadImg || '@/static/image/user.png'" 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">{{items.title}}</view>


+ 1
- 1
pages/order/component/master.vue View File

@ -26,7 +26,7 @@
</view>
<view class="se-flex se-bgc-f5 se-br-20">
<view class="se-w-160 se-h-160">
<image class="se-w-160 se-h-160 se-br-10" :src="item.jobHeadImg"
<image class="se-w-160 se-h-160 se-br-10" :src="item.jobHeadImg || item.workHeadImg || '@/static/image/user.png'"
mode=""></image>
</view>
<view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">


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

@ -241,15 +241,59 @@
<u-parse :content="obj.employSeek.workDetail"></u-parse>
</view>
</view>
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c">
<button
open-type="contact"
class="se-mx-10 se-w-200 se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-white se-bgc-orange"
style="background: #ff7a31; border: none; padding: 0; margin: 0; line-height: 50rpx;">
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c" v-if="!type">
<view
@click="callMaster()"
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>
</button>
</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">
<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-py-10 se-pb-30">
<view class="se-mt-30">
<text class="se-fs-28 se-c-black se-fw5">公司名称{{obj.employAuthenticationCompany && obj.employAuthenticationCompany.name || obj.workName || '暂未'}}</text>
<br>
<text class="se-fs-28 se-c-black se-fw5">公司地址{{obj.employAuthenticationCompany && obj.employAuthenticationCompany.address || obj.workAddress || '暂未'}}</text>
<br>
<text class="se-fs-28 se-c-black se-fw5">所属行业{{obj.employAuthenticationCompany && obj.employAuthenticationCompany.industryName || '暂未'}}</text>
<br>
<text class="se-fs-28 se-c-black se-fw5">招聘联系人{{obj.employAuthenticationPerson && obj.employAuthenticationPerson.name || '暂未'}}</text>
<br>
<text class="se-fs-24 se-c-text-third">联系方式{{obj.employAuthenticationPerson && 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.employAuthenticationPerson && obj.employAuthenticationPerson.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>
<!-- 联系企业按钮 -->
<view class="se-px-220 se-pb-30 se-fs-20 se-flex se-flex-h-c" v-if="type">
<view
@click="callCompany()"
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>
</view>
</template>
@ -295,13 +339,13 @@
// type != 1:
if (that.obj && !that.obj.orderStatusSeek && that.obj.status > 0 && that.obj.status < 4) {
// (type == 0)(type)
if (that.obj.type == 0 && that.type) {
if (that.obj.type == 1 && that.type) {
uni.navigateTo({
url: "/pages_subpack/payment/index?id=" + that.orderId
})
}
// (type != 0)(!type)
else if (that.obj.type != 0 && !that.type) {
else if (that.obj.type != 1 && !that.type) {
uni.navigateTo({
url: "/pages_subpack/payment/index?id=" + that.orderId
})
@ -423,9 +467,59 @@
}
})
},
//
callMaster() {
const phone = this.obj.employResume && this.obj.employResume.phone;
if (phone) {
uni.makePhoneCall({
phoneNumber: phone,
fail: (err) => {
console.error('拨打电话失败', err);
uni.showToast({
title: '拨打电话失败',
icon: 'none'
});
}
});
} else {
uni.showToast({
title: '师傅电话号码不存在',
icon: 'none'
});
}
},
//
callCompany() {
const phone = this.obj.employAuthenticationPerson && this.obj.employAuthenticationPerson.phone;
if (phone) {
uni.makePhoneCall({
phoneNumber: phone,
fail: (err) => {
console.error('拨打电话失败', err);
uni.showToast({
title: '拨打电话失败',
icon: 'none'
});
}
});
} else {
uni.showToast({
title: '企业联系人电话号码不存在',
icon: 'none'
});
}
},
}
}
</script>
<style lang="scss" scoped>
.line-orange {
width: 8rpx;
height: 32rpx;
background: #ff7a31;
border-radius: 4rpx;
}
</style>

+ 1
- 1
pages_subpack/order-detail/boss.vue View File

@ -359,7 +359,7 @@
//
// (type)orderStatusSeek
if (that.type && that.obj && !that.obj.orderStatusSeek
&& that.obj.type == 1
&& that.obj.type == 0
&& that.obj.status > 0 && that.obj.status < 4) {
uni.navigateTo({
url: "/pages_subpack/payment/index?id=" + that.orderId


+ 88
- 1
pages_subpack/order-detail/index.vue View File

@ -169,6 +169,76 @@
</view>
</view>
<!-- 师傅简历信息展示部分 -->
<view class="se-mt-10" v-if="obj.employResume">
<view class="se-m-20 se-br-20 se-bs-b se-bgc-white se-py-20 se-px-30">
<view class="se-flex se-flex-ai-c se-pb-10">
<view class="line-orange"></view>
<view class="se-ml-10 se-fs-32 se-c-black se-fw-6">
师傅简历信息
</view>
</view>
<view class="se-flex se-flex-h-sb">
<view class="se-flex">
<view class="se-a-100">
<image class="se-a-100 se-br-p-50 se-bgc-f5" :src="obj.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">{{obj.employResume.name || obj.hanHaiMember.nickName || '暂未'}}</text>
<text
class="se-fs-24 se-c-text-third se-mt-5">{{obj.employResume.sex==1?"男":"女"}}-{{obj.employResume.nation || "未知"}}-{{obj.employResume.age || '未知'}}</text>
</view>
</view>
<view @click="onCustomerService(obj.employResume.phone)"
v-if="obj.status != 6 && obj.employResume.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>
</view>
<u-line dashed class="se-my-20"></u-line>
<view class="se-py-10">
<view class="se-flex se-flex-h-sb se-py-10">
<view class="se-fs-24 se-display-ib">联系电话</view>
<view class="se-fs-24 se-display-ib">{{obj.employResume.phone || '暂未'}}</view>
</view>
<view class="se-flex se-flex-h-sb se-py-10">
<view class="se-fs-24 se-display-ib">期望薪资</view>
<view class="se-fs-24 se-display-ib se-c-orange" v-if="obj.employResume.salaryMin && obj.employResume.salaryMax">{{obj.employResume.salaryMin}}-{{obj.employResume.salaryMax}}k</view>
<view class="se-fs-24 se-display-ib se-c-99" v-else>暂未</view>
</view>
<view class="se-flex se-flex-h-sb se-py-10">
<view class="se-fs-24 se-display-ib">期望工作地址</view>
<view class="se-fs-24 se-display-ib">{{obj.employResume.address || '暂未'}}</view>
</view>
<view class="se-flex se-flex-h-sb se-py-10">
<view class="se-fs-24 se-display-ib">支付方式偏好</view>
<view class="se-fs-24 se-display-ib" v-if="obj.employResume.payType==0">先付后试用</view>
<view class="se-fs-24 se-display-ib" v-else-if="obj.employResume.payType==1">先试用后支付</view>
<view class="se-fs-24 se-display-ib se-c-99" v-else>暂未</view>
</view>
<view class="se-flex se-flex-h-sb se-py-10" v-if="obj.employResume.categoryOne">
<view class="se-fs-24 se-display-ib">专业类别</view>
<view class="se-fs-24 se-display-ib">{{obj.employResume.categoryOneName || '暂未'}}</view>
</view>
</view>
<u-line dashed class="se-my-20" v-if="obj.employResume.brief"></u-line>
<view class="se-py-10" v-if="obj.employResume.brief">
<view class="se-fw-6 se-fs-28 se-c-black se-mb-10">
个人简介
</view>
<view class="se-fs-24 se-lh-40 se-c-text">
{{obj.employResume.brief}}
</view>
</view>
<view v-if="obj.status == 0" class="se-mt-20">
<text class="se-c-text-third se-fs-22">接单时间{{obj.createTime}}</text>
</view>
</view>
</view>
</view>
</template>
@ -208,7 +278,7 @@
let that = this
// orderStatusSeek
if (that.obj && !that.obj.orderStatusSeek &&
that.obj.type == 0 &&
that.obj.type == 1 &&
that.obj.status > 0 && that.obj.status < 4) {
uni.navigateTo({
url: "/pages_subpack/payment/index?id=" + that.orderId
@ -297,9 +367,26 @@
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
},
onCustomerService(phone) {
uni.makePhoneCall({
phoneNumber: phone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
},
}
}
</script>
<style lang="scss" scoped>
.line-orange {
width: 8rpx;
height: 32rpx;
background: #ff7a31;
border-radius: 4rpx;
}
</style>

+ 7
- 6
pages_subpack/pay/index.vue View File

@ -3,7 +3,8 @@
<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-w-160 se-h-160">
<image class="se-w-160 se-h-160 se-br-10" :src="detail.employJob.image || detail.jobHeadImg" mode="">
<image class="se-w-160 se-h-160 se-br-10"
:src="detail.employJob && detail.employJob.image || detail.jobHeadImg || detail.workHeadImg || '@/static/image/user.png'" mode="">
</image>
</view>
<view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">
@ -15,14 +16,14 @@
</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">
<image class="se-a-30" src="@/static/image/46502.png" mode=""></image>
<image class="se-a-30" src="@/static/image/46502.png" mode="" onerror="this.src='@/static/image/user.png'"></image>
<text class="se-c-black se-fs-32 se-ml-20">{{ detail.employResume ? detail.employResume.name : detail.workUser }}</text>
<text class="se-c-black se-fs-32 se-ml-20">{{ detail.employResume ? detail.employResume.phone : detail.workPhone }}</text>
</view>
<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-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="" onerror="this.src='@/static/image/user.png'"></image>
<text class="se-c-black se-fs-32 se-ml-20">{{ detail.employResume ? detail.employResume.name : detail.workUser }}</text>
</view>
<view>
@ -44,7 +45,7 @@
<view class="se-flex se-flex-h-sb se-pt-20"
v-if="detail.employSeek">
<view class="se-flex se-flex-h-fs">
<image class="se-w-30 se-h-40" src="@/static/image/47961.png" mode=""></image>
<image class="se-w-30 se-h-40" src="@/static/image/47961.png" mode="" onerror="this.src='@/static/image/user.png'"></image>
<text class="se-c-black se-fs-32 se-ml-20">师傅试工交通费用</text>
</view>
<view class="se-flex se-flex-ai-c">
@ -76,14 +77,14 @@
<view class="se-flex-v-sb se-w-p-100" style="align-items: unset;">
<u-radio name="1" activeColor="#ff7a31">
<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="" onerror="this.src='@/static/image/user.png'"></image>
<text class="se-c-black se-fs-30 se-ml-15">账户余额</text>
<text class="se-c-text-third se-fs-28 se-ml-15">(余额{{ amount }})</text>
</view>
</u-radio>
<u-radio name="2" activeColor="#ff7a31">
<view class="se-flex se-flex-ai-c se-pt-20">
<image class="se-w-35 se-h-30 se-mt-5" src="@/static/image/46662.png" mode=""></image>
<image class="se-w-35 se-h-30 se-mt-5" src="@/static/image/46662.png" mode="" onerror="this.src='@/static/image/wechat.png'"></image>
<text class="se-c-black se-fs-30 se-ml-15">微信支付</text>
</view>
</u-radio>


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

@ -5,7 +5,7 @@
<view class="se-w-160 se-h-160">
<image class="se-w-160 se-h-160 se-br-10" :src="
items.employJob &&
items.employJob.image" mode="aspectFill"></image>
items.employJob.image || items.workHeadImg || items.jobHeadImg || '@/static/image/user.png'" mode="aspectFill"></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">{{items.title}}</view>
@ -16,7 +16,7 @@
</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">
<image class="se-a-30" src="@/static/image/46502.png" mode=""></image>
<image class="se-a-30" src="@/static/image/46502.png" mode="" onerror="this.src='@/static/image/user.png'"></image>
<text class="se-c-black se-fs-32 se-ml-20">{{items.workName}}</text>
<text class="se-c-black se-fs-32 se-ml-20">{{items.workPhone}}</text>
</view>
@ -42,14 +42,14 @@
<view class="se-flex-v-sb se-w-p-100" style="align-items: unset;">
<u-radio name="1" activeColor="#ff7a31">
<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="" onerror="this.src='@/static/image/user.png'"></image>
<text class="se-c-black se-fs-30 se-ml-15">账户余额</text>
<text class="se-c-text-third se-fs-28 se-ml-15">(余额{{myMoney}})</text>
</view>
</u-radio>
<u-radio name="2" activeColor="#ff7a31">
<view class="se-flex se-flex-ai-c se-pt-20">
<image class="se-w-35 se-h-30 se-mt-5" src="@/static/image/46662.png" mode=""></image>
<image class="se-w-35 se-h-30 se-mt-5" src="@/static/image/46662.png" mode="" onerror="this.src='@/static/image/wechat.png'"></image>
<text class="se-c-black se-fs-30 se-ml-15">微信支付</text>
</view>
</u-radio>


Loading…
Cancel
Save