Browse Source

1,上传我的招聘

2,我的求职
3,修改订单列表
4,压缩部分图片
master
1263428893@qq.com 2 months ago
parent
commit
8cfe0155d1
23 changed files with 548 additions and 380 deletions
  1. +1
    -1
      manifest.json
  2. +21
    -1
      pages.json
  3. +0
    -34
      pages/home/component/master.vue
  4. +0
    -329
      pages/home/component/screen-work.vue
  5. +11
    -1
      pages/order/component/enterprise.vue
  6. +11
    -0
      pages/order/component/master.vue
  7. +16
    -2
      pages/order/index.vue
  8. +22
    -0
      pages/user/index.vue
  9. +4
    -10
      pages_subpack/feedback/index.vue
  10. +295
    -0
      pages_subpack/hire/index.vue
  11. +158
    -0
      pages_subpack/job-hunt/index.vue
  12. +9
    -2
      pages_subpack/payment/index.vue
  13. BIN
      static/image/59.png
  14. BIN
      static/image/hire.png
  15. BIN
      static/image/jobhunt.png
  16. BIN
      static/image/nav1.png
  17. BIN
      static/image/nav2.png
  18. BIN
      static/image/nav3.png
  19. BIN
      static/image/nav4.png
  20. BIN
      static/image/nav5.png
  21. BIN
      static/image/nav6.png
  22. BIN
      static/image/nav7.png
  23. BIN
      static/image/nav8.png

+ 1
- 1
manifest.json View File

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


+ 21
- 1
pages.json View File

@ -26,7 +26,9 @@
"navigationBarTitleText": "订单",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
"navigationBarTextStyle": "white",
"enablePullDownRefresh": true,
"onReachBottomDistance": 100
}
},
{
@ -68,6 +70,24 @@
{
"root": "pages_subpack",
"pages": [
{
"path": "hire/index",
"style": {
"navigationBarTitleText": "我的招聘",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
},
{
"path": "job-hunt/index",
"style": {
"navigationBarTitleText": "我的求职",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
},
{
"path": "version/index",
"style": {


+ 0
- 34
pages/home/component/master.vue View File

@ -1,37 +1,5 @@
<template>
<view>
<!-- <view class="se-flex se-flex-h-sb se-px-40 se-py-30 se-bgc-orange se-zi-s">
<view class="se-c-white se-fs-28">
<view class="se-bgc-white se-py-5 se-px-10 se-fw-6 se-br-12 se-c-orange se-fs-24 se-display-ib">
</view>
<text class="se-ml-10 se-fw-6 se-fs-28">用工平台</text>
</view>
<view class="se-br-30 se-bgc-white se-fw-6 se-c-orange se-fs-28 se-px-20 se-py-10">
企业/个人端
</view>
</view>
<view class="se-px-20 se-pt-10 se-zi-s">
<u-search height="40" placeholder="搜索" :showAction="false" v-model="keyword"></u-search>
</view>
<view class="se-px-20 se-pb-20 se-pt-40 se-zi-s">
<u-swiper
height="300rpx"
style="background-color: transparent;height: 300rpx;"
:list="list"
@change="change"
@click="click"
></u-swiper>
</view> -->
<!-- <view class="se-p-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> -->
<!-- <screenWork :filterData='filterData' :defaultIndex='defaultIndex' @onSelected='onSelected' @onIntellect="onIntellect"></screenWork> -->
<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 taskList" :key="indexs" @click="onMasterDetail(items)">
<view class="se-flex se-flex-h-sb">
@ -71,11 +39,9 @@
</template>
<script>
// import screenWork from "./screen-work.vue"
export default{
props:["taskList"],
components:{
// screenWork
},
data(){
return{


+ 0
- 329
pages/home/component/screen-work.vue View File

@ -1,329 +0,0 @@
<template>
<view class="filter-wrapper"
:style="{ height: height + 'rpx', top: top,'border-top':border?'1rpx solid #f2f2f2':'none' }"
@touchmove.stop.prevent="discard">
<view class="inner-wrapper">
<view class="mask" :class="showMask ? 'show' : 'hide'" @tap="tapMask"></view>
<view class="navs">
<view class="c-flex-align" :class="{ 'c-flex-center': index > 0, actNav: index === actNav }"
v-for="(item, index) in navData" :key="index" @click="navClick(index)">
<view v-for="(child, childx) in item" :key="childx" v-if="child.select">{{ child.text }}</view>
<u-icon class="icon-triangle se-ml-10" color="#FF7A31" v-if="index === actNav" name="arrow-up"></u-icon>
<u-icon class="icon-triangle se-ml-10" v-else name="arrow-down"></u-icon>
</view>
<view class="c-flex-align date" @click="intellectClick()">
<view>智能推荐</view>
<u-icon class="icon-triangle se-ml-10" name="arrow-down"></u-icon>
</view>
</view>
<scroll-view scroll-y="true" class="popup" :class="popupShow ? 'popupShow' : ''">
<view class="item-opt c-flex-align" :class="item.select ? 'actOpt' : ''"
v-for="(item, index) in navData[actNav]" :key="index" @click="handleOpt(index)">
{{ item.text }}
</view>
</scroll-view>
</view>
<u-popup :show="show" :custom-style="{alignItems:'center'}" mode="center" bg-color="transparent">
<view class="se-w-600 se-bgc-white se-br-40 se-p-40">
<view class="se-mb-30" v-for="(items,indexs) in intellectArr" :key="indexs">
<view class="se-flex se-flex-ai-c">
<view class="line-orange"></view>
<view class="se-ml-10">
{{items.name}}
</view>
</view>
<view class="se-flex se-flex-ai-c se-flex-ff-rw se-pt-10">
<view class="se-py-10 se-px-20 se-fs-22 se-br-10 se-ml-15 se-mt-10" :class="item.select ? 'se-bgc-orange se-c-white se-b-orange' : 'se-b se-c-text'" @click="handleIntellect(indexs,index)" v-for="(item,index) in items.arr" :key="index">
{{item.text}}
</view>
</view>
</view>
<view class="se-flex se-flex-h-sb se-mt-40">
<view @click="onCancel" class="se-br-20 se-flex-1 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-26 se-c-66 se-bgc-f5">
<text>取消</text>
</view>
<view @click="onSubmit" class="se-br-20 se-ml-20 se-flex-1 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-26 se-c-white se-bgc-orange">
<text class="se-ml-10">提交</text>
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
props: {
height: {
type: Number,
default: 80
},
top: {
type: String,
default: ''
},
border: {
type: Boolean,
default: false
},
filterData: {
//
type: Array,
default: () => {
return [];
}
// default: () => {
// return [
// [{ text: '', value: '' }, { text: '1', value: 1 }, { text: '2', value: 2 }, { text: '3', value: 3 }],
// [{ text: '', value: '' }, { text: '1', value: 1 }, { text: '2', value: 2 }, { text: '3', value: 3 }]
// ];
// }
},
defaultIndex: {
//,
type: Array,
default: () => {
return [0];
}
}
},
data() {
return {
show:false,
navData: [],
popupShow: false,
showMask: false,
actNav: null,
selDate: '选择日期',
selIndex: [] ,//
intellectArr:[
{
name:"您希望从事的工种",
arr:[
{
text:"全部",
value:"all",
select:true
},
{
text:"测试1",
value:"1",
select:false
}
]
},
{
name:"您希望从事的工作性质",
arr:[
{
text:"全部",
value:"all",
select:true
},
{
text:"测试1",
value:"1",
select:false
}
]
}
]
};
},
created() {
this.navData = this.filterData;
this.selIndex = this.defaultIndex;
this.keepStatus();
},
mounted() {
},
methods: {
keepStatus() {
this.navData.forEach(itemnavData => {
itemnavData.map(child => {
child.select = false;
});
return itemnavData;
});
for (let i = 0; i < this.selIndex.length; i++) {
let selindex = this.selIndex[i];
this.navData[i][selindex].select = true;
}
},
navClick(index) {
if (index === this.actNav) {
this.tapMask();
return;
}
this.popupShow = true;
this.showMask = true;
this.actNav = index;
},
handleOpt(index) {
this.selIndex[this.actNav] = index;
this.keepStatus();
setTimeout(() => {
this.tapMask();
}, 100);
let data = [];
let res = this.navData.forEach(item => {
let sel = item.filter(child => child.select);
data.push(sel);
});
this.$emit('onSelected', data);
},
handleIntellect(indexs,index){
this.intellectArr[indexs].arr[index].select = !this.intellectArr[indexs].arr[index].select
},
tapMask() {
this.showMask = false;
this.popupShow = false;
this.actNav = null;
},
discard() {},
intellectClick(){
this.show=true
},
onCancel(){
this.show=false
},
onSubmit(){
this.show=false
let data = [];
let res = this.intellectArr.forEach(item => {
let sel = item.arr.filter(child => child.select);
data.push(sel);
});
this.$emit('onIntellect', data);
}
}
};
</script>
<style lang="scss" scoped>
page {
font-size: 28rpx;
}
.c-flex-align {
display: flex;
align-items: center;
}
.c-flex-center {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
.filter-wrapper {
position: sticky;
background-color: #f5f5f5;
left: 0;
width: 750rpx;
z-index: 999;
.inner-wrapper {
// position: relative;
.navs {
position: relative;
height: 80rpx;
padding: 0 40rpx;
display: flex;
align-items: center;
justify-content: space-between;
// background-color: #fff;
border-bottom: 2rpx solid #f5f6f9;
color: #000;
// font-weight: bold;
z-index: 999;
box-sizing: border-box;
&>view {
flex: 1;
height: 100%;
flex-direction: row;
z-index: 999;
}
.date {
justify-content: flex-end;
}
.actNav {
color: #FF7A31;
font-weight: bold;
}
}
.mask {
z-index: 666;
position: fixed;
top: calc(var(--status-bar-height) + 44px);
left: 0;
right: 0;
bottom: 0;
background-color: #f5f5f5;
transition: background-color 0.15s linear;
&.show {
background-color: transparent;
}
&.hide {
display: none;
}
}
.popup {
position: relative;
max-height: 500rpx;
background-color: #f5f5f5;
border-bottom-left-radius: 20rpx;
border-bottom-right-radius: 20rpx;
overflow: scroll;
z-index: 999;
transition: all 1s linear;
opacity: 0;
display: none;
.item-opt {
height: 100rpx;
padding: 0 40rpx;
color: #111111;
border-bottom: 2rpx solid #f6f6f6;
}
.actOpt {
color: #FF7A31;
font-weight: bold;
position: relative;
&::after {
content: '✓';
font-weight: bold;
font-size: 36rpx;
position: absolute;
right: 40rpx;
}
}
}
.popupShow {
display: block;
opacity: 1;
}
}
.icon-triangle {
width: 16rpx;
height: 16rpx;
margin-left: 10rpx;
}
}
</style>

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

@ -115,6 +115,15 @@
this.onOrder();
},
methods:{
onReach(){
this.pageNo = this.pageNo + 1
this.onOrder()
},
onRefresh(){
this.list = []
this.pageNo = 1
this.onOrder()
},
onOrder(){
let that = this;
let params={
@ -135,7 +144,8 @@
})
},
tabClick(event){
console.info(event)
this.list = []
this.pageNo = 1
this.current = event.index
this.orderStatus = this.nav[event.index].index
this.onOrder()


+ 11
- 0
pages/order/component/master.vue View File

@ -115,6 +115,15 @@
this.onOrder()
},
methods:{
onReach(){
this.pageNo = this.pageNo + 1
this.onOrder()
},
onRefresh(){
this.list = []
this.pageNo = 1
this.onOrder()
},
onOrder(){
let that = this;
let params={
@ -134,6 +143,8 @@
})
},
tabClick(event){
this.list = []
this.pageNo = 1
this.current = event.index
this.orderStatus = this.nav[event.index].index
this.onOrder()


+ 16
- 2
pages/order/index.vue View File

@ -2,9 +2,9 @@
<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 v-if="current==0" />
<enterpriseBox ref="enterpriseBoxRef" v-if="current==0" />
<!--求职订单 -->
<masterBox v-if="current==1" />
<masterBox ref="masterBoxRef" v-if="current==1" />
</view>
</template>
@ -31,6 +31,20 @@
current: 0,
}
},
onReachBottom() {
if(this.current==0){
this.$refs.enterpriseBoxRef.onReach();
}else if(this.current==1){
this.$refs.masterBoxRef.onReach();
}
},
onPullDownRefresh() {
if(this.current==0){
this.$refs.enterpriseBoxRef.onRefresh();
}else if(this.current==1){
this.$refs.masterBoxRef.onRefresh();
}
},
methods:{
sectionChange(index){
this.current=index


+ 22
- 0
pages/user/index.vue View File

@ -71,6 +71,18 @@
</view>
</view>
<view class="se-grid">
<view class="se-flex-v-c se-mb-20 se-mt-20 se-cursor-p" @click="onHire()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-70" src="@/static/image/hire.png" mode=""></image>
</view>
<text class="se-h-60 se-lh-60 se-c-33 se-fs-26 se-ta-c se-mt-10 se-toe-2">我的招聘</text>
</view>
<view class="se-flex-v-c se-mb-20 se-mt-20 se-cursor-p" @click="onJobHunt()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-70" src="@/static/image/jobhunt.png" mode=""></image>
</view>
<text class="se-h-60 se-lh-60 se-c-33 se-fs-26 se-ta-c se-mt-10 se-toe-2">我的求职</text>
</view>
<view class="se-flex-v-c se-mb-20 se-mt-20 se-cursor-p" @click="onEnterprise()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-70" src="@/static/image/user1.png" mode=""></image>
@ -155,6 +167,16 @@
this.onUserInfoDetail()
},
methods: {
onHire(){
uni.navigateTo({
url:"/pages_subpack/hire/index"
})
},
onJobHunt(){
uni.navigateTo({
url:"/pages_subpack/job-hunt/index"
})
},
onEdit(){
uni.navigateTo({
url:"/pages/login/index?back=1"


+ 4
- 10
pages_subpack/feedback/index.vue View File

@ -52,14 +52,10 @@
data(){
return{
form:{
feedback:"以下文件体积超过 500KB,已跳过压缩以及 ES6 转 ES5 的处理",
name:"jerryxiao",
mobile:"13189698114",
proofFile: [
{
url:"https://tennis-oss.xzaiyp.top/2025-01-02/a1e3b236-9995-47ba-804e-e82155f55e67.jpg"
}
]
feedback:"",
name:"",
mobile:"",
proofFile: []
},
rules:{
feedback: [
@ -104,10 +100,8 @@
submit() {
this.$refs.uForm.validate().then(res => {
this.onaddSuggest()
// uni.$u.toast('')
}).catch(errors => {
console.info(errors)
uni.$u.toast('校验失败')
})
},
onaddSuggest(){


+ 295
- 0
pages_subpack/hire/index.vue View File

@ -0,0 +1,295 @@
<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 taskList" :key="indexs" @click="onMasterDetail(items)">
<view class="se-flex se-flex-h-sb">
<view class="se-flex">
<text class="se-fw-6 se-c-black se-fs-30">{{items.title}}</text>
</view>
<view class="se-c-orange se-fs-32 se-fw-6">
{{items.salaryMin}}-{{items.salaryMax}}k
</view>
</view>
<view class="se-py-10">
<text class="se-c-text-sub se-fs-22 se-mr-10 se-py-5 se-px-20 se-br-5 se-bgc-f5" v-if="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 class="se-flex se-flex-h-sb">
<view class="se-flex se-flex-h-c">
<u-icon name="map"></u-icon>
<text class="se-c-text-sub se-fs-24 se-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 class="se-c-text se-c-text-sub se-fs-24">
{{items.createTime | formatTime}}
</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">
<text class="se-ml-5">立即接单</text>
</view>
</view>
</view>
<u-empty v-if="taskList && taskList.length==0" mode="list"></u-empty>
</view>
</template>
<script>
export default{
data(){
return{
taskList:[
{
"id": "1895062781967736834",
"createBy": null,
"createTime": "2025-02-27 18:45:50",
"updateBy": null,
"updateTime": null,
"title": "销售兼职",
"address": "云南省昆明市官渡区站前路",
"categoryOne": "1894724968848064513",
"categoryTwo": "1894726005210251265",
"salaryMin": 3000,
"salaryMax": 10000,
"salaryDay": 200,
"payType": "1",
"phone": "17875426385",
"details": "卖衣服",
"image": "https://tennis-oss.xzaiyp.top/2025-02-27/45e4b177-f0da-4eba-95e5-2322589a8af7.jpg",
"userId": "1891910362819756034",
"longitude": 102.72173,
"latitude": 25.015772,
"tag": null,
"startTime": "2015-01-01 00:00:00",
"endTime": "2015-01-01 00:00:00",
"employAuthenticationPerson": {
"id": "1895028819692646402",
"createBy": null,
"createTime": 1740645053000,
"updateBy": "admin",
"updateTime": 1741768776000,
"name": "安师傅",
"password": null,
"phone": "17875426385",
"address": "云南省文山州凤凰谷",
"industry": "1894724665780240386",
"cerImageFront": "https://tennis-oss.xzaiyp.top/2025-02-27/9ed9dabf-15a1-4ea4-87cb-d7df3f52c0e8.jpg",
"cerImageBack": "https://tennis-oss.xzaiyp.top/2025-02-27/0bf464ca-b275-4db5-8349-6bc9720067b1.jpg",
"status": "1",
"userId": "1891910362819756034",
"industryName": null,
"image": "https://tennis-oss.xzaiyp.top/2025-02-27/b176ed2c-499e-40df-bce9-abbb7429f890.jpg"
},
"employAuthenticationCompany": null,
"hanHaiMember": {
"id": "1891910362819756034",
"createBy": null,
"createTime": 1739894400000,
"updateBy": "admin001",
"updateTime": 1740412800000,
"sysOrgCode": null,
"nickName": "哦哟",
"headImage": "https://tennis-oss.xzaiyp.top/2025-02-25/f209a458-f58c-492d-8887-7295000d9b5f.jpeg",
"name": "",
"phone": "17875426385",
"account": null,
"password": null,
"passwordSalt": null,
"shopName": null,
"role": "",
"cardId": null,
"frozenFlag": "",
"deleteFlag": "0",
"token": null,
"officialOpenid": null,
"appletOpenid": "opwCj7Z-ni6VvPuwI8zvebAiU_lk",
"appOpenid": null,
"wxUnionid": null,
"officialAppid": null,
"idCard": null,
"idCardPassword": null,
"idCardSalt": null,
"idCardOpen": null,
"intentionNum": null,
"successNum": null,
"addNum": null,
"shareId": null,
"vid": null,
"vtime": null,
"isPay": null,
"follow": null,
"payRole": null,
"price": 0,
"integerPrice": null,
"appletAppid": null,
"sex": "2",
"isDai": null
},
"categoryOne_dictText": "兼职",
"categoryTwo_dictText": "波音兼职",
"payType_dictText": "支付宝支付",
"userId_dictText": "哦哟"
},
{
"id": "1895062781967736834",
"createBy": null,
"createTime": "2025-02-27 18:45:50",
"updateBy": null,
"updateTime": null,
"title": "销售兼职",
"address": "云南省昆明市官渡区站前路",
"categoryOne": "1894724968848064513",
"categoryTwo": "1894726005210251265",
"salaryMin": 3000,
"salaryMax": 10000,
"salaryDay": 200,
"payType": "1",
"phone": "17875426385",
"details": "卖衣服",
"image": "https://tennis-oss.xzaiyp.top/2025-02-27/45e4b177-f0da-4eba-95e5-2322589a8af7.jpg",
"userId": "1891910362819756034",
"longitude": 102.72173,
"latitude": 25.015772,
"tag": null,
"startTime": "2015-01-01 00:00:00",
"endTime": "2015-01-01 00:00:00",
"employAuthenticationPerson": {
"id": "1895028819692646402",
"createBy": null,
"createTime": 1740645053000,
"updateBy": "admin",
"updateTime": 1741768776000,
"name": "安师傅",
"password": null,
"phone": "17875426385",
"address": "云南省文山州凤凰谷",
"industry": "1894724665780240386",
"cerImageFront": "https://tennis-oss.xzaiyp.top/2025-02-27/9ed9dabf-15a1-4ea4-87cb-d7df3f52c0e8.jpg",
"cerImageBack": "https://tennis-oss.xzaiyp.top/2025-02-27/0bf464ca-b275-4db5-8349-6bc9720067b1.jpg",
"status": "1",
"userId": "1891910362819756034",
"industryName": null,
"image": "https://tennis-oss.xzaiyp.top/2025-02-27/b176ed2c-499e-40df-bce9-abbb7429f890.jpg"
},
"employAuthenticationCompany": null,
"hanHaiMember": {
"id": "1891910362819756034",
"createBy": null,
"createTime": 1739894400000,
"updateBy": "admin001",
"updateTime": 1740412800000,
"sysOrgCode": null,
"nickName": "哦哟",
"headImage": "https://tennis-oss.xzaiyp.top/2025-02-25/f209a458-f58c-492d-8887-7295000d9b5f.jpeg",
"name": "",
"phone": "17875426385",
"account": null,
"password": null,
"passwordSalt": null,
"shopName": null,
"role": "",
"cardId": null,
"frozenFlag": "",
"deleteFlag": "0",
"token": null,
"officialOpenid": null,
"appletOpenid": "opwCj7Z-ni6VvPuwI8zvebAiU_lk",
"appOpenid": null,
"wxUnionid": null,
"officialAppid": null,
"idCard": null,
"idCardPassword": null,
"idCardSalt": null,
"idCardOpen": null,
"intentionNum": null,
"successNum": null,
"addNum": null,
"shareId": null,
"vid": null,
"vtime": null,
"isPay": null,
"follow": null,
"payRole": null,
"price": 0,
"integerPrice": null,
"appletAppid": null,
"sex": "2",
"isDai": null
},
"categoryOne_dictText": "兼职",
"categoryTwo_dictText": "波音兼职",
"payType_dictText": "支付宝支付",
"userId_dictText": "哦哟"
}
]
}
},
filters:{
formatTime(time) {
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)}天前`;
}
}
},
formDate(date){
return dayjs(date).format("YYYY-MM-DD").fromNow();
},
getDistance(lat1, lng1) {
let lng2 = uni.getStorageSync("longitude")
let lat2 = uni.getStorageSync("latitude")
if(!lng2 && !lat2){
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); //
}
},
methods:{
onMasterDetail(event){
uni.navigateTo({
url:"/pages_subpack/work-detail/index?id="+event.id
})
}
}
}
</script>
<style>
</style>

+ 158
- 0
pages_subpack/job-hunt/index.vue View File

@ -0,0 +1,158 @@
<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 class="se-flex">
<view class="se-a-80">
<image class="se-a-80 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>
<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 class="se-flex se-flex-h-c">
<view class="se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-ml-20 se-fw-6 se-toe-1" style="max-width: 100rpx;">
{{items.categoryOne_dictText}}
</view>
</view>
</view>
<view class="se-c-orange se-fs-32 se-fw-6">
{{items.salaryMin}}-{{items.salaryMax}}
</view>
</view>
<view>
<text class="se-c-text-third se-fs-22 se-mt-10">{{items.createTime}}</text>
</view>
<view class="se-flex se-flex-h-sb">
<text class="se-c-text-sub se-fs-24 se-toe-5" style="max-width: 100rpx;width: 100rpx;">
{{items.categoryTwo_dictText}}
</text>
<text class="se-c-text-sub se-fs-24 se-toe-5" style="max-width: 350rpx;width: 350rpx;">
{{items.address}}
</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>
</view>
</view>
<u-empty v-if="rolelist && rolelist.length==0" mode="list"></u-empty>
</view>
</template>
<script>
export default{
data(){
return{
rolelist:[
{
"id": "1895048259143999489",
"createBy": null,
"createTime": "2025-02-27 17:48:08",
"updateBy": null,
"updateTime": null,
"address": "湖南省长沙市开福区星光路",
"dayMoney": "300",
"categoryOne": "1894724595991216130",
"categoryTwo": "1894727062602678273",
"latitude": "28.236662",
"longitude": "113.05469",
"salaryMax": "9000",
"salaryMin": "5000",
"payType": "1",
"workDetail": "吃吃喝喝玩玩",
"userId": "1894327881803268098",
"resumeId": "1895048118693535746",
"selectGo": null,
"hanHaiMember": {
"id": "1894327881803268098",
"createBy": null,
"createTime": 1740412800000,
"updateBy": null,
"updateTime": 1740412800000,
"sysOrgCode": null,
"nickName": "A 江华 瑶都万能墙",
"headImage": "https://tennis-oss.xzaiyp.top/2025-02-25/dddd4d1c-86b1-4ad2-8533-9a6cf0eb3bd0.jpeg",
"name": null,
"phone": "19198239116",
"account": null,
"password": null,
"passwordSalt": null,
"shopName": null,
"role": null,
"cardId": null,
"frozenFlag": null,
"deleteFlag": "0",
"token": null,
"officialOpenid": null,
"appletOpenid": "opwCj7cnNjn3dbz5hijvvUjj5RRw",
"appOpenid": null,
"wxUnionid": null,
"officialAppid": null,
"idCard": null,
"idCardPassword": null,
"idCardSalt": null,
"idCardOpen": null,
"intentionNum": null,
"successNum": null,
"addNum": null,
"shareId": null,
"vid": null,
"vtime": null,
"isPay": null,
"follow": null,
"payRole": null,
"price": 0,
"integerPrice": null,
"appletAppid": null,
"sex": null,
"isDai": null
},
"employResume": {
"id": "1895048118693535746",
"createBy": null,
"createTime": 1740649654000,
"updateBy": "admin",
"updateTime": 1741768928000,
"name": "盘师傅",
"sex": "2",
"age": 20,
"categoryOne": "1894724595991216130",
"categoryTwo": "",
"headImage": "https://tennis-oss.xzaiyp.top/2025-02-27/014dad3f-c938-4043-9a68-e7dd453f2b24.jpg",
"salaryMin": 5000,
"salaryMax": 9000,
"phone": "19974688875",
"payType": "0",
"commuteType": null,
"address": "湖南长沙",
"title": null,
"nation": "苗",
"brief": "一个实力与美貌并存的完美女人",
"userId": "1894327881803268098",
"categoryOneName": null,
"categoryTwoName": null
},
"categoryOne_dictText": "餐饮",
"categoryTwo_dictText": "哈哈吃吃吃",
"payType_dictText": "支付宝支付",
"userId_dictText": "A 江华 瑶都万能墙",
"resumeId_dictText": "盘师傅"
}
]
}
},
methods:{
onMasterDetail(event){
console.info("event",event)
uni.navigateTo({
url:"/pages_subpack/master-detail/index?id="+event.id
})
}
}
}
</script>
<style>
</style>

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

@ -150,6 +150,7 @@
if(that.payRadio==1){
payOrder({orderId:that.id}).then(res=>{
uni.requestPayment({
provider: 'wxpay', //
timeStamp: res.result.timeStamp, //
@ -175,6 +176,7 @@
})
}else if(that.payRadio==2){
payOrder({orderId:that.id}).then(response=>{
console.info("payOrder",response)
uni.requestPayment({
provider: "wxpay",
nonceStr: response.result.nonceStr,
@ -186,8 +188,13 @@
that.$u.toast("付款成功!")
that.onDetail();
},
fail(e) {
console.info(e)
fail(err) {
console.info(err)
console.log('支付失败',err);
uni.showToast({
icon:'none',
title:"支付失败"
})
}
})
}).catch(error=>{


BIN
static/image/59.png View File

Before After
Width: 355  |  Height: 108  |  Size: 14 KiB Width: 355  |  Height: 108  |  Size: 12 KiB

BIN
static/image/hire.png View File

Before After
Width: 48  |  Height: 48  |  Size: 1.2 KiB

BIN
static/image/jobhunt.png View File

Before After
Width: 48  |  Height: 48  |  Size: 1.2 KiB

BIN
static/image/nav1.png View File

Before After
Width: 80  |  Height: 80  |  Size: 1.4 KiB

BIN
static/image/nav2.png View File

Before After
Width: 80  |  Height: 80  |  Size: 1.1 KiB

BIN
static/image/nav3.png View File

Before After
Width: 80  |  Height: 80  |  Size: 1.2 KiB

BIN
static/image/nav4.png View File

Before After
Width: 80  |  Height: 80  |  Size: 1.2 KiB

BIN
static/image/nav5.png View File

Before After
Width: 80  |  Height: 80  |  Size: 1.1 KiB

BIN
static/image/nav6.png View File

Before After
Width: 80  |  Height: 80  |  Size: 1.1 KiB

BIN
static/image/nav7.png View File

Before After
Width: 80  |  Height: 80  |  Size: 1.3 KiB

BIN
static/image/nav8.png View File

Before After
Width: 80  |  Height: 80  |  Size: 1.2 KiB

Loading…
Cancel
Save