# Conflicts: # node_modules/.bin/acorn # node_modules/.bin/eslint # node_modules/.bin/js-yaml # node_modules/.bin/mime # node_modules/.bin/mkdirp # node_modules/.bin/node-which # node_modules/.bin/os-name # node_modules/.bin/osx-release # node_modules/.bin/rimraf # node_modules/.bin/semver # node_modules/dunder-proto/.eslintrc # node_modules/dunder-proto/LICENSE # node_modules/eslint-config-airbnb-base/node_modules/.bin/semver # node_modules/fastq/package.json # node_modules/flatted/package.json # node_modules/get-intrinsic/CHANGELOG.md # node_modules/get-intrinsic/package.json # node_modules/get-proto/.github/FUNDING.yml # node_modules/import-fresh/package.json # node_modules/object-inspect/CHANGELOG.md # node_modules/object-inspect/package.json # node_modules/semver/bin/semver.js # node_modules/win-release/node_modules/semver/LICENSE # node_modules/win-release/node_modules/semver/README.md # node_modules/win-release/node_modules/semver/bin/semver # node_modules/win-release/node_modules/semver/range.bnf # node_modules/win-release/node_modules/semver/semver.js # yarn.lockmaster
@ -1 +1,2 @@ | |||
/unpackage | |||
/node_modules |
@ -1,6 +1,8 @@ | |||
module.exports = { | |||
// baseUrl: 'https://employadmin.augcl.com/employ-api', | |||
// baseUrl: 'http://3fl8266127.qicp.vip/' | |||
// baseUrl: 'http://3fl8266127.qicp.vip' | |||
// baseUrl:"https://employadmin.hhlm1688.com" | |||
baseUrl:"http://h5.xzaiyp.top", //测试环境 | |||
baseUrl:"https://employadmin.hhlm1688.com" | |||
// https://employadmin.hhlm1688.com/employ-api | |||
} | |||
@ -1 +1 @@ | |||
self.Flatted=function(n){"use strict";function t(n){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},t(n)}var r=JSON.parse,e=JSON.stringify,o=Object.keys,u=String,f="string",i={},c="object",a=function(n,t){return t},l=function(n){return n instanceof u?u(n):n},s=function(n,r){return t(r)===f?new u(r):r},y=function n(r,e,f,a){for(var l=[],s=o(f),y=s.length,p=0;p<y;p++){var v=s[p],S=f[v];if(S instanceof u){var b=r[S];t(b)!==c||e.has(b)?f[v]=a.call(f,v,b):(e.add(b),f[v]=i,l.push({k:v,a:[r,e,b,a]}))}else f[v]!==i&&(f[v]=a.call(f,v,S))}for(var m=l.length,g=0;g<m;g++){var h=l[g],O=h.k,d=h.a;f[O]=a.call(f,O,n.apply(null,d))}return f},p=function(n,t,r){var e=u(t.push(r)-1);return n.set(r,e),e},v=function(n,e){var o=r(n,s).map(l),u=o[0],f=e||a,i=t(u)===c&&u?y(o,new Set,u,f):u;return f.call({"":i},"",i)},S=function(n,r,o){for(var u=r&&t(r)===c?function(n,t){return""===n||-1<r.indexOf(n)?t:void 0}:r||a,i=new Map,l=[],s=[],y=+p(i,l,u.call({"":n},"",n)),v=!y;y<l.length;)v=!0,s[y]=e(l[y++],S,o);return"["+s.join(",")+"]";function S(n,r){if(v)return v=!v,r;var e=u.call(this,n,r);switch(t(e)){case c:if(null===e)return e;case f:return i.get(e)||p(i,l,e)}return e}};return n.fromJSON=function(n){return v(e(n))},n.parse=v,n.stringify=S,n.toJSON=function(n){return r(S(n))},n}({}); | |||
self.Flatted=function(n){"use strict";function t(n){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},t(n)}var r=JSON.parse,e=JSON.stringify,o=Object.keys,u=String,f="string",i={},c="object",a=function(n,t){return t},l=function(n){return n instanceof u?u(n):n},s=function(n,r){return t(r)===f?new u(r):r},y=function(n,r,e,f){for(var a=[],l=o(e),s=l.length,p=0;p<s;p++){var v=l[p],S=e[v];if(S instanceof u){var b=n[S];t(b)!==c||r.has(b)?e[v]=f.call(e,v,b):(r.add(b),e[v]=i,a.push({k:v,a:[n,r,b,f]}))}else e[v]!==i&&(e[v]=f.call(e,v,S))}for(var m=a.length,g=0;g<m;g++){var h=a[g],O=h.k,d=h.a;e[O]=f.call(e,O,y.apply(null,d))}return e},p=function(n,t,r){var e=u(t.push(r)-1);return n.set(r,e),e},v=function(n,e){var o=r(n,s).map(l),u=o[0],f=e||a,i=t(u)===c&&u?y(o,new Set,u,f):u;return f.call({"":i},"",i)},S=function(n,r,o){for(var u=r&&t(r)===c?function(n,t){return""===n||-1<r.indexOf(n)?t:void 0}:r||a,i=new Map,l=[],s=[],y=+p(i,l,u.call({"":n},"",n)),v=!y;y<l.length;)v=!0,s[y]=e(l[y++],S,o);return"["+s.join(",")+"]";function S(n,r){if(v)return v=!v,r;var e=u.call(this,n,r);switch(t(e)){case c:if(null===e)return e;case f:return i.get(e)||p(i,l,e)}return e}};return n.fromJSON=function(n){return v(e(n))},n.parse=v,n.stringify=S,n.toJSON=function(n){return r(S(n))},n}({}); |
@ -1,63 +0,0 @@ | |||
from flatted import stringify as _stringify, parse | |||
def stringify(value): | |||
return _stringify(value, separators=(',', ':')) | |||
assert stringify([None, None]) == '[[null,null]]' | |||
a = [] | |||
o = {} | |||
assert stringify(a) == '[[]]' | |||
assert stringify(o) == '[{}]' | |||
a.append(a) | |||
o['o'] = o | |||
assert stringify(a) == '[["0"]]' | |||
assert stringify(o) == '[{"o":"0"}]' | |||
b = parse(stringify(a)) | |||
assert isinstance(b, list) and b[0] == b | |||
a.append(1) | |||
a.append('two') | |||
a.append(True) | |||
o['one'] = 1 | |||
o['two'] = 'two' | |||
o['three'] = True | |||
assert stringify(a) == '[["0",1,"1",true],"two"]' | |||
assert stringify(o) == '[{"o":"0","one":1,"two":"1","three":true},"two"]' | |||
a.append(o) | |||
o['a'] = a | |||
assert stringify(a) == '[["0",1,"1",true,"2"],"two",{"o":"2","one":1,"two":"1","three":true,"a":"0"}]' | |||
assert stringify(o) == '[{"o":"0","one":1,"two":"1","three":true,"a":"2"},"two",["2",1,"1",true,"0"]]' | |||
a.append({'test': 'OK'}) | |||
a.append([1, 2, 3]) | |||
o['test'] = {'test': 'OK'} | |||
o['array'] = [1, 2, 3] | |||
assert stringify(a) == '[["0",1,"1",true,"2","3","4"],"two",{"o":"2","one":1,"two":"1","three":true,"a":"0","test":"3","array":"4"},{"test":"5"},[1,2,3],"OK"]' | |||
assert stringify(o) == '[{"o":"0","one":1,"two":"1","three":true,"a":"2","test":"3","array":"4"},"two",["2",1,"1",true,"0","3","4"],{"test":"5"},[1,2,3],"OK"]' | |||
a2 = parse(stringify(a)); | |||
o2 = parse(stringify(o)); | |||
assert a2[0] == a2 | |||
assert o2['o'] == o2 | |||
assert a2[1] == 1 and a2[2] == 'two' and a2[3] == True and isinstance(a2[4], dict) | |||
assert a2[4] == a2[4]['o'] and a2 == a2[4]['o']['a'] | |||
str = parse('[{"prop":"1","a":"2","b":"3"},{"value":123},["4","5"],{"e":"6","t":"7","p":4},{},{"b":"8"},"f",{"a":"9"},["10"],"sup",{"a":1,"d":2,"c":"7","z":"11","h":1},{"g":2,"a":"7","b":"12","f":6},{"r":4,"u":"7","c":5}]') | |||
assert str['b']['t']['a'] == 'sup' and str['a'][1]['b'][0]['c'] == str['b']['t'] | |||
oo = parse('[{"a":"1","b":"0","c":"2"},{"aa":"3"},{"ca":"4","cb":"5","cc":"6","cd":"7","ce":"8","cf":"9"},{"aaa":"10"},{"caa":"4"},{"cba":"5"},{"cca":"2"},{"cda":"4"},"value2","value3","value1"]'); | |||
assert oo['a']['aa']['aaa'] == 'value1' and oo == oo['b'] and oo['c']['ca']['caa'] == oo['c']['ca'] | |||
print('OK') |
@ -0,0 +1,317 @@ | |||
<template> | |||
<view class="se-m-10"> | |||
<u-sticky> | |||
<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> | |||
</view> | |||
<u-tabs | |||
class="se-bgc-white se-pb-20" | |||
:current="current" | |||
lineWidth="30" | |||
lineColor="#FF7A31" | |||
:activeStyle="{ | |||
color: '#303133', | |||
fontWeight: 'bold', | |||
transform: 'scale(1.05)' | |||
}" | |||
:inactiveStyle="{ | |||
color: '#606266', | |||
transform: 'scale(1)' | |||
}" | |||
itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;" | |||
:list="navList" | |||
@click="navClick($event)"> | |||
</u-tabs> | |||
</u-sticky> | |||
<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-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="tList && tList.length==0" mode="list"></u-empty> | |||
</template> | |||
<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-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}} | |||
<!-- <u-parse v-if="items.brief" :content="items.brief"></u-parse> --> | |||
</text> | |||
<text class="se-c-text-sub se-fs-24 se-toe-5" style="max-width: 350rpx;width:350rpx;"> | |||
{{items.address}} | |||
<!-- <u-parse v-if="items.brief" :content="items.brief"></u-parse> --> | |||
</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="rlist && rlist.length==0" mode="list"></u-empty> | |||
</template> | |||
</view> | |||
</template> | |||
<script> | |||
import { | |||
bannerList, | |||
taskList, | |||
rolelist, | |||
industryList, | |||
querySeekList, | |||
getSysText | |||
} from "@/common/api.js" | |||
export default{ | |||
data(){ | |||
return{ | |||
tpageNo:1, | |||
tpageSize:20, | |||
tList:[], | |||
rpageNo:1, | |||
rpageSize:20, | |||
rlist:[], | |||
id:null, | |||
keyword:"", | |||
current:0, | |||
navList:[ | |||
{ | |||
name: '求职大厅', | |||
}, | |||
{ | |||
name: '招聘大厅', | |||
} | |||
], | |||
} | |||
}, | |||
onLoad(options) { | |||
this.id=options.id | |||
if(options.title){ | |||
uni.setNavigationBarTitle({ | |||
title:options.title | |||
}) | |||
} | |||
// this.onTaskList() | |||
this.onRolelist() | |||
}, | |||
onReachBottom() { | |||
let that = this | |||
if(that.current==0){ | |||
that.rpageNo = that.rpageNo + 1 | |||
that.onRolelist() | |||
}else if(that.current==1){ | |||
that.tpageNo = that.tpageNo + 1 | |||
this.onTaskList() | |||
} | |||
}, | |||
onPullDownRefresh() { | |||
let that = this | |||
if(that.current==0){ | |||
that.rpageNo = 1 | |||
that.rlist=[] | |||
that.onRolelist() | |||
}else if(that.current==1){ | |||
that.tpageNo = 1 | |||
that.tList = [] | |||
this.onTaskList() | |||
} | |||
}, | |||
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:{ | |||
navClick(event){ | |||
this.current=event.index | |||
this.keyword = "" | |||
if(event.index==0){ | |||
this.rpageNo=1 | |||
this.onRolelist() | |||
}else if(event.index==1){ | |||
this.tpageNo=1 | |||
this.onTaskList() | |||
} | |||
}, | |||
onSearch(){ | |||
let that = this | |||
if(that.current==0){ | |||
that.rpageNo = 1 | |||
that.onRolelist() | |||
}else if(that.current==1){ | |||
that.tpageNo = 1 | |||
this.onTaskList() | |||
} | |||
}, | |||
onRolelist(){ | |||
querySeekList({ | |||
pageNo:this.rpageNo, | |||
pageSize:this.rpageSize, | |||
title:this.keyword, | |||
categoryOne:this.id, | |||
}).then(response=>{ | |||
console.info("response",response) | |||
if(this.rpageNo==1){ | |||
this.rlist = response.result.records | |||
}else{ | |||
this.rlist = this.rlist.concat(response.result.records) | |||
} | |||
}).catch(error=>{ | |||
}) | |||
}, | |||
onTaskList(){ | |||
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){ | |||
this.tList = response.result.records | |||
}else{ | |||
this.tList = this.tList.concat(response.result.records) | |||
} | |||
}).catch(error=>{ | |||
}) | |||
}, | |||
onTaskDetail(event){ | |||
console.info(event) | |||
uni.navigateTo({ | |||
url:"/pages_subpack/work-detail/index?id="+event.id | |||
}) | |||
}, | |||
onRoleDetail(event){ | |||
console.info("event",event) | |||
uni.navigateTo({ | |||
url:"/pages_subpack/master-detail/index?id="+event.id | |||
}) | |||
}, | |||
onCustomerService(phome){ | |||
let that = this | |||
// let obj = that.$utils.getkeyContent('phone') | |||
if (uni.canIUse('makePhoneCall')) { | |||
uni.makePhoneCall({ | |||
phoneNumber: String(phome), | |||
success: function () { | |||
console.log('拨打电话成功'); | |||
}, | |||
fail: function () { | |||
console.log('拨打电话失败'); | |||
} | |||
}); | |||
} else { | |||
console.log('你的设备不支持拨打电话功能'); | |||
} | |||
}, | |||
} | |||
} | |||
</script> | |||
<style> | |||
</style> |
@ -0,0 +1,329 @@ | |||
<template> | |||
<!-- 企业 --> | |||
<view> | |||
<view class="se-pt-20 se-pb-20 se-px-40 se-bgc-green se-c-white se-ta-c se-fs-24" v-if="status==1"> | |||
企业认证-已通过 | |||
</view> | |||
<u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80"> | |||
<view class="se-p-20"> | |||
<view class="se-p-20 se-bgc-white se-br-10 se-fs-20"> | |||
<u-form-item label="姓名" prop="name"> | |||
<u--input v-model="form.name" class="se-bgc-f5" placeholder="请输入姓名"></u--input> | |||
</u-form-item> | |||
<!-- <u-form-item label="密码" prop="password"> | |||
<u--input v-model="form.password" class="se-bgc-f5" placeholder="请输入您的密码"></u--input> | |||
</u-form-item> --> | |||
<u-form-item label="联系电话" prop="mobile"> | |||
<u--input v-model="form.mobile" class="se-bgc-f5" placeholder="请输入联系方式"></u--input> | |||
</u-form-item> | |||
<u-form-item label="公司名称" prop="company"> | |||
<u--input v-model="form.company" class="se-bgc-f5" placeholder="请输入公司名称"></u--input> | |||
</u-form-item> | |||
<u-form-item label="公司地址" prop="address"> | |||
<u--textarea :autoHeight="true" v-model="form.address" class="se-bgc-f5" placeholder="请选择地址" ></u--textarea> | |||
<!-- <u--input v-model="form.address" class="se-bgc-f5" placeholder="请选择地址" ></u--input> --> | |||
<view slot="right" @click="handleAreaChange()" class="se-ml-10 se-px-10 se-flex-1 se-br-10 se-flex-h-c se-h-40 se-lh-40 se-ta-c se-fs-22 se-c-white se-bgc-orange"> | |||
<text>地图</text> | |||
</view> | |||
</u-form-item> | |||
<!-- <u-form-item label="公司地址" prop="address"> | |||
<u--input v-model="form.address" class="se-bgc-f5" placeholder="请输入公司地址"></u--input> | |||
</u-form-item> --> | |||
<u-form-item label="行业" prop="industryId" @click="handleIndChange()"> | |||
<u--input readonly v-model="form.industryName" placeholder="请选择行业" border="bottom"></u--input> | |||
<u-icon slot="right" name="arrow-right"></u-icon> | |||
</u-form-item> | |||
</view> | |||
</view> | |||
<view class="se-p-20"> | |||
<view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20"> | |||
<u-form-item prop="file" labelWidth="2"> | |||
<view class="se-flex se-flex-v-sa"> | |||
<view class="se-py-20 se-w-p-100 se-flex"> | |||
<view class="line-orange"></view> | |||
<view class="se-ml-10"> | |||
营业执照上传 | |||
</view> | |||
</view> | |||
<view class="se-py-20 se-w-p-100"> | |||
<u-upload :fileList="form.businessLicenseFile" @afterRead="afterRead" @delete="deletePic" name="1" | |||
multiple :maxCount="10"></u-upload> | |||
</view> | |||
</view> | |||
</u-form-item> | |||
</view> | |||
</view> | |||
<view class="se-px-20 se-pt-20" v-if="status!=1"> | |||
<view class="se-px-20 se-pb-80 se-fs-20 se-flex"> | |||
<view @click="submit" class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-28 se-c-white se-bgc-orange"> | |||
<text>{{form.id?'保存':'提交审核'}}</text> | |||
</view> | |||
<!-- <view | |||
class="se-mx-10 se-flex-1 se-b se-br-40 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-28 se-c-66 se-bgc-f5"> | |||
<text>联系我们</text> | |||
</view> --> | |||
</view> | |||
</view> | |||
</u--form> | |||
<u-action-sheet :actions="indList" @select="selectIndClick" title="行业" :show="show" @close="show=false"></u-action-sheet> | |||
</view> | |||
</template> | |||
<script> | |||
import QQMapWX from "@/util/qqmap-wx-jssdk.min.js" | |||
import {roleBoss,industryList,updateRoleBoss,addAuthenticationCompany,queryCategoryList,getAuthenticationCompany} from "@/common/api.js" | |||
export default{ | |||
data(){ | |||
return{ | |||
status:-1, | |||
show:false, | |||
indList: [], | |||
form: { | |||
id:"", | |||
role:1, | |||
name: '', | |||
password: '', | |||
mobile: '', | |||
company:'', | |||
longitude:"", | |||
latitude:"", | |||
idCard:'', | |||
address:'', | |||
industryId:'', | |||
industryName:'', | |||
status:'', | |||
businessLicenseFile:[] | |||
}, | |||
rules: { | |||
name: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请输入姓名名称', | |||
trigger: ['blur', 'change'] | |||
}], | |||
password: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请输入您的密码', | |||
trigger: ['blur', 'change'] | |||
}], | |||
mobile: [ | |||
{ | |||
required: true, | |||
message: '请输入手机号', | |||
trigger: ['change','blur'], | |||
}, | |||
{ | |||
validator: (rule, value, callback) => { | |||
return uni.$u.test.mobile(value); | |||
}, | |||
message: '手机号码不正确', | |||
trigger: ['change','blur'], | |||
}, | |||
], | |||
company: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请输入公司名称', | |||
trigger: ['blur', 'change'] | |||
}], | |||
address: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请输入公司地址', | |||
trigger: ['blur', 'change'] | |||
}], | |||
industryId: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请选择行业', | |||
trigger: ['blur', 'change'] | |||
}], | |||
businessLicenseFile:[ | |||
{ | |||
validator: (rule, value, callback) => { | |||
if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) { | |||
callback(new Error('请选择营业执照')); | |||
} else { | |||
callback(); | |||
} | |||
}, | |||
trigger: 'blur' | |||
} | |||
] | |||
}, | |||
} | |||
}, | |||
watch: { | |||
}, | |||
onReady() { | |||
this.onQueryCategoryList() | |||
this.onAuthenticationCompany() | |||
this.$refs.uForm.setRules(this.rules) | |||
}, | |||
mounted() { | |||
}, | |||
methods: { | |||
onAuthenticationCompany(){ | |||
let params={} | |||
getAuthenticationCompany(params).then(response=>{ | |||
let company = response.result | |||
if(response.result){ | |||
this.status = company.status | |||
this.form.id = company.id | |||
this.form.name = company.name | |||
this.form.longitude = company.longitude | |||
this.form.latitude = company.latitude | |||
this.form.mobile = company.phone | |||
this.form.company = company.company | |||
this.form.address = company.address | |||
this.form.industryId = company.industry | |||
this.form.industryName = company.industryName | |||
this.form.status = company.status | |||
this.form.businessLicenseFile = this.stringToKeyValueArray(company.license) | |||
} | |||
}).catch(error=>{ | |||
}) | |||
}, | |||
stringToKeyValueArray(str, delimiter1 = ',') { | |||
if(str){ | |||
let arro = str.split(delimiter1); | |||
let arr = []; | |||
arro.forEach(items=>{ | |||
let obj = {}; | |||
obj["url"] = items | |||
arr.push(obj) | |||
}) | |||
console.info(arr) | |||
return arr | |||
}else{ | |||
return [] | |||
} | |||
}, | |||
handleIndChange(){ | |||
this.show = true | |||
}, | |||
selectIndClick(event){ | |||
this.form.industryId = event.id | |||
this.form.industryName = event.name | |||
this.show = false | |||
}, | |||
onQueryCategoryList(){ | |||
queryCategoryList({}).then(response=>{ | |||
console.info(response) | |||
this.indList = response.result | |||
}).catch(error=>{ | |||
}) | |||
}, | |||
onRoleBoss(){ | |||
let that = this | |||
let params={ | |||
userId:uni.getStorageSync("userInfo").id, | |||
id:that.form.id, | |||
name:that.form.name, | |||
longitude:that.form.longitude, | |||
latitude:that.form.latitude, | |||
role:that.form.role, | |||
phone:that.form.mobile, | |||
company:that.form.company, | |||
address:that.form.address, | |||
industry:that.form.industryId, | |||
industryName:that.form.industryName, | |||
license:that.form.businessLicenseFile.map(item => item.url).join(','), | |||
} | |||
// if(that.form.id){ | |||
// updateRoleBoss(params).then(response=>{ | |||
// uni.$u.toast("保存成功!") | |||
// setTimeout(()=>{ | |||
// uni.navigateBack({ | |||
// delta:1 | |||
// }) | |||
// },1500) | |||
// }).catch(error=>{ | |||
// }) | |||
// }else{ | |||
addAuthenticationCompany(params).then(response=>{ | |||
uni.$u.toast("提交成功,等待申请") | |||
setTimeout(()=>{ | |||
uni.switchTab({ | |||
url:"/pages/home/index" | |||
}) | |||
},1500) | |||
}).catch(error=>{ | |||
}) | |||
// } | |||
}, | |||
submit() { | |||
let that = this | |||
that.$refs.uForm.validate().then(res => { | |||
that.onRoleBoss() | |||
}).catch(errors => { | |||
// uni.$u.toast('校验失败') | |||
}) | |||
}, | |||
deletePic(event) { | |||
this.form.businessLicenseFile.splice(event.index, 1) | |||
}, | |||
async afterRead(e) { | |||
let self = this | |||
e.file.forEach(file => { | |||
self.$Oss.ossUpload(file.url).then(url => { | |||
console.info(url) | |||
self.form.businessLicenseFile.push({ | |||
url | |||
}) | |||
}) | |||
}) | |||
}, | |||
handleAreaChange(){ | |||
const that = this; | |||
wx.chooseLocation({ | |||
// type: 'wgs84', | |||
success: function (res) { | |||
const qqmapsdk = new QQMapWX({ | |||
key: 'BJKBZ-W46K3-6S43C-OFLJB-FW6FQ-RMBYP' // 必填 | |||
}); | |||
uni.showLoading({ | |||
title:"获取中...." | |||
}) | |||
qqmapsdk.reverseGeocoder({ | |||
location: { | |||
latitude: res.latitude, | |||
longitude: res.longitude | |||
}, | |||
success: function(response) { | |||
console.log('逆地理编码结果:', response); | |||
uni.hideLoading() | |||
that.form.longitude = response.result.location.lng | |||
that.form.latitude = response.result.location.lat | |||
that.form.address = response.result.address | |||
}, | |||
fail: function(error) { | |||
uni.hideLoading() | |||
console.error('逆地理编码失败:', error); | |||
} | |||
}); | |||
} | |||
}) | |||
// this.$refs.citySelectRef.open() | |||
}, | |||
} | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.line-orange { | |||
width: 8rpx; | |||
height: 32rpx; | |||
background: #ff7a31; | |||
border-radius: 4rpx; | |||
} | |||
</style> |
@ -0,0 +1,292 @@ | |||
<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">12:45:30有效</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">12:45:30有效</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">12:45:30有效</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">12:45:30有效</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">12:45:30有效</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">12:45:30有效</text> | |||
</template> | |||
</view> | |||
<view class="se-px-20 se-py-40"> | |||
<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 v-if="stepsIndex==0"> | |||
<view @click="onCancel()" | |||
class="se-mx-10 se-w-200 se-b se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-66 se-bgc-f5"> | |||
<text>取消</text> | |||
</view> | |||
</template> | |||
<template v-if="stepsIndex==1"> | |||
<view @click="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> | |||
<view @click="onCancel()" | |||
class="se-mx-10 se-w-200 se-b se-br-40 se-flex-h-c se-h-50 se-lh-50 se-ta-c se-fs-24 se-c-66 se-bgc-f5"> | |||
<text>取消</text> | |||
</view> | |||
</template> | |||
<template v-if="stepsIndex==2"> | |||
<view @click="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==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"> | |||
<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> | |||
<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> | |||
</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.employResume.headImage" 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.employSeek.address}}</view> | |||
<view class="se-fs-24 se-c-text-third se-display-ib">所属行业:{{obj.employSeek.categoryOne}}</view> | |||
<view class="se-fs-24 se-c-text-third se-display-ib">所属工种:{{obj.employSeek.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.employSeek.dayMoney}}元/天</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.employResume.name}}</text> | |||
<text class="se-fs-28 se-c-black se-fw5">民族:{{obj.employResume.nation}}</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.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)"> | |||
复制 | |||
</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">{{obj.employResume.brief}}</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.employSeek.selectGo}}</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" v-if="obj.employSeek.payType==0">提前支付</view> | |||
<view class="se-fs-24 se-display-ib" v-if="obj.employSeek.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.workTime}}</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.employSeek.workDetail"></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> | |||
</template> | |||
<script> | |||
import { | |||
orderDetail | |||
} 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、精通 PS、AI、CDR 等平面设计软件,能独立完成日常平面设计工作内容,熟练使用 PPT/Keynote,能完成提案内容的材料美化工作。<br/> | |||
</p>`, | |||
obj:{} | |||
} | |||
}, | |||
onLoad(options) { | |||
this.orderId=options.orderId | |||
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(){ | |||
uni.navigateBack({ | |||
delta:1 | |||
}) | |||
}, | |||
onService(){ | |||
console.info(`联系客服`) | |||
uni.makePhoneCall({ | |||
phoneNumber: this.obj.jobPhone, | |||
success: () => { | |||
console.log("拨打成功"); | |||
}, | |||
fail: (err) => { | |||
console.error("拨打失败", err); | |||
}, | |||
}) | |||
}, | |||
onsubmit(){ | |||
console.info(`确认`) | |||
}, | |||
onPay(){ | |||
uni.navigateTo({ | |||
url:"/pages_subpack/pay/index" | |||
}) | |||
}, | |||
onDel(){ | |||
console.info(`删除`) | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
</style> |
@ -0,0 +1,44 @@ | |||
<template> | |||
<view class="se-p-20"> | |||
<view class="se-c-black se-fw-6 se-fs-28"> | |||
{{detail.title}} | |||
</view> | |||
<view class="se-mt-20"> | |||
<u-parse :content="detail.content" :previewImg="true"></u-parse> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
import { | |||
getNotice | |||
} from "@/common/api.js" | |||
export default { | |||
data(){ | |||
return{ | |||
id:"", | |||
detail:{} | |||
} | |||
}, | |||
onLoad(options) { | |||
this.id = options.id | |||
this.onNotice() | |||
}, | |||
methods:{ | |||
onNotice(){ | |||
let that = this; | |||
let params={ | |||
newsId:that.id | |||
} | |||
getNotice(params).then(response=>{ | |||
that.detail = response.result | |||
}).catch(error=>{ | |||
}) | |||
} | |||
} | |||
} | |||
</script> | |||
<style> | |||
</style> |
@ -0,0 +1,361 @@ | |||
<template> | |||
<!-- 个人 --> | |||
<view> | |||
<view class="se-pt-20 se-pb-20 se-px-40 se-bgc-green se-c-white se-ta-c se-fs-24" v-if="status==1"> | |||
个人认证-已通过 | |||
</view> | |||
<u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80"> | |||
<view class="se-p-20"> | |||
<view class="se-p-20 se-bgc-white se-br-10 se-fs-20"> | |||
<u-form-item label="姓名" prop="name"> | |||
<u--input v-model="form.name" class="se-bgc-f5" placeholder="请输入姓名名称"></u--input> | |||
</u-form-item> | |||
<!-- <u-form-item label="密码" prop="password"> | |||
<u--input v-model="form.password" class="se-bgc-f5" placeholder="请输入您的密码"></u--input> | |||
</u-form-item> --> | |||
<u-form-item label="联系电话" prop="mobile"> | |||
<u--input v-model="form.mobile" class="se-bgc-f5" placeholder="请输入联系方式"></u--input> | |||
</u-form-item> | |||
<u-form-item label="居住地址" prop="address"> | |||
<u--input v-model="form.address" class="se-bgc-f5" placeholder="请输入详细地址"></u--input> | |||
</u-form-item> | |||
<u-form-item label="行业" prop="industryId" @click="handleIndChange()"> | |||
<u--input readonly v-model="form.industryName" placeholder="请选择行业" border="bottom"></u--input> | |||
<u-icon slot="right" name="arrow-right"></u-icon> | |||
</u-form-item> | |||
</view> | |||
</view> | |||
<view class="se-p-20"> | |||
<view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20"> | |||
<u-form-item prop="file" labelWidth="2"> | |||
<view class="se-flex se-flex-v-sa"> | |||
<view class="se-py-20 se-w-p-100 se-flex"> | |||
<view class="line-orange"></view> | |||
<view class="se-ml-10"> | |||
个人照片 | |||
</view> | |||
</view> | |||
<view class="se-py-20 se-w-p-100"> | |||
<u-upload :fileList="form.imageFile" @afterRead="afterImageFileRead" @delete="deleteImageFilePic" name="1" | |||
multiple :maxCount="10"></u-upload> | |||
</view> | |||
</view> | |||
</u-form-item> | |||
</view> | |||
</view> | |||
<view class="se-p-20"> | |||
<view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20"> | |||
<u-form-item prop="file" labelWidth="2"> | |||
<view class="se-flex se-flex-v-sa"> | |||
<view class="se-py-20 se-w-p-100 se-flex"> | |||
<view class="line-orange"></view> | |||
<view class="se-ml-10"> | |||
身份证上传(正面) | |||
</view> | |||
</view> | |||
<view class="se-py-20 se-w-p-100"> | |||
<u-upload :fileList="form.cerImageBackFile" @afterRead="afterCerImageBackFileRead" @delete="deleteCerImageBackFilePic" name="1" | |||
multiple :maxCount="10"></u-upload> | |||
</view> | |||
</view> | |||
</u-form-item> | |||
</view> | |||
</view> | |||
<view class="se-p-20"> | |||
<view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20"> | |||
<u-form-item prop="file" labelWidth="2"> | |||
<view class="se-flex se-flex-v-sa"> | |||
<view class="se-py-20 se-w-p-100 se-flex"> | |||
<view class="line-orange"></view> | |||
<view class="se-ml-10"> | |||
身份证上传(反面) | |||
</view> | |||
</view> | |||
<view class="se-py-20 se-w-p-100"> | |||
<u-upload :fileList="form.cerImageFrontFile" @afterRead="afterCerImageFrontRead" @delete="deleteCerImageFrontReadPic" name="1" | |||
multiple :maxCount="10"></u-upload> | |||
</view> | |||
</view> | |||
</u-form-item> | |||
</view> | |||
</view> | |||
<view class="se-px-20 se-pt-20" v-if="status!=1"> | |||
<view class="se-px-20 se-pb-80 se-fs-20 se-flex"> | |||
<view @click="submit" | |||
class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-28 se-c-white se-bgc-orange"> | |||
<text>{{form.id?'保存':'提交审核'}}</text> | |||
</view> | |||
<!-- <view class="se-mx-10 se-flex-1 se-b se-br-40 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-28 se-c-66 se-bgc-f5"> | |||
<text>联系我们</text> | |||
</view> --> | |||
</view> | |||
</view> | |||
</u--form> | |||
<u-action-sheet :actions="indList" @select="selectIndClick" title="行业" :show="show" @close="show=false"></u-action-sheet> | |||
</view> | |||
</template> | |||
<script> | |||
import {roleBoss,industryList,updateRoleBoss,queryCategoryList,addAuthenticationPerson,getAuthenticationPerson} from "@/common/api.js" | |||
export default{ | |||
data(){ | |||
return{ | |||
status:-1, | |||
show:false, | |||
indList: [], | |||
fileList: [], | |||
form: { | |||
id:'', | |||
role:0, | |||
name: '', | |||
password: '', | |||
mobile: '', | |||
address:'', | |||
industryId:'', | |||
industryName:'', | |||
cerImageBackFile:[], | |||
cerImageFrontFile:[], | |||
imageFile:[] | |||
}, | |||
rules: { | |||
name: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请输入姓名名称', | |||
trigger: ['blur', 'change'] | |||
}], | |||
password: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请输入您的密码', | |||
trigger: ['blur', 'change'] | |||
}], | |||
mobile: [ | |||
{ | |||
required: true, | |||
message: '请输入手机号', | |||
trigger: ['change','blur'], | |||
}, | |||
{ | |||
validator: (rule, value, callback) => { | |||
return uni.$u.test.mobile(value); | |||
}, | |||
message: '手机号码不正确', | |||
trigger: ['change','blur'], | |||
}, | |||
], | |||
address: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请输入居住地址', | |||
trigger: ['blur', 'change'] | |||
}], | |||
industryId: [{ | |||
type: 'string', | |||
required: true, | |||
message: '请选择行业', | |||
trigger: ['blur', 'change'] | |||
}], | |||
cerImageBackFile:[ | |||
{ | |||
validator: (rule, value, callback) => { | |||
if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) { | |||
callback(new Error('请选择身份证')); | |||
} else { | |||
callback(); | |||
} | |||
}, | |||
trigger: 'blur' | |||
} | |||
], | |||
cerImageFrontFile:[ | |||
{ | |||
validator: (rule, value, callback) => { | |||
if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) { | |||
callback(new Error('请选择身份证')); | |||
} else { | |||
callback(); | |||
} | |||
}, | |||
trigger: 'blur' | |||
} | |||
], | |||
imageFile:[ | |||
{ | |||
validator: (rule, value, callback) => { | |||
if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) { | |||
callback(new Error('请选择个人照片')); | |||
} else { | |||
callback(); | |||
} | |||
}, | |||
trigger: 'blur' | |||
} | |||
], | |||
}, | |||
} | |||
}, | |||
watch: { | |||
}, | |||
onReady() { | |||
this.onAuthenticationPerson() | |||
this.onQueryCategoryList() | |||
this.$refs.uForm.setRules(this.rules) | |||
}, | |||
mounted() { | |||
}, | |||
methods: { | |||
onAuthenticationPerson(){ | |||
let params={} | |||
getAuthenticationPerson(params).then(response=>{ | |||
let person = response.result | |||
if(response.result){ | |||
this.form.id = person.id | |||
this.status = person.status | |||
this.form.name = person.name | |||
this.form.mobile = person.phone | |||
this.form.address = person.address | |||
this.form.industryId = person.industry | |||
this.form.industryName = person.industryName | |||
this.form.cerImageBackFile = this.stringToKeyValueArray(person.cerImageBack) | |||
this.form.cerImageFrontFile = this.stringToKeyValueArray(person.cerImageFront) | |||
this.form.imageFile = this.stringToKeyValueArray(person.image) | |||
} | |||
}).catch(error=>{ | |||
}) | |||
}, | |||
onQueryCategoryList(){ | |||
queryCategoryList({}).then(response=>{ | |||
console.info(response) | |||
this.indList = response.result | |||
}).catch(error=>{ | |||
}) | |||
}, | |||
stringToKeyValueArray(str, delimiter1 = ',') { | |||
if(str){ | |||
let arro = str.split(delimiter1); | |||
let arr = []; | |||
arro.forEach(items=>{ | |||
let obj = {}; | |||
obj["url"] = items | |||
arr.push(obj) | |||
}) | |||
console.info(arr) | |||
return arr | |||
}else{ | |||
return [] | |||
} | |||
}, | |||
handleIndChange(){ | |||
this.show = true | |||
}, | |||
selectIndClick(event){ | |||
console.info("selectIndClick",event) | |||
this.form.industryId = event.id | |||
this.form.industryName = event.name | |||
this.show = false | |||
}, | |||
submit() { | |||
let that = this | |||
that.$refs.uForm.validate().then(res => { | |||
that.onRoleBoss() | |||
}).catch(errors => { | |||
console.info(errors) | |||
uni.$u.toast('校验失败') | |||
}) | |||
}, | |||
onRoleBoss(){ | |||
let that = this | |||
let params={ | |||
id:that.form.id, | |||
name:that.form.name, | |||
role:that.form.role, | |||
phone:that.form.mobile, | |||
address:that.form.address, | |||
industry:that.form.industryId, | |||
// categoryTwo:that.form.industryName, | |||
cerImageBack:that.form.cerImageBackFile.map(item => item.url).join(','), | |||
cerImageFront:that.form.cerImageFrontFile.map(item => item.url).join(','), | |||
image:that.form.imageFile.map(item => item.url).join(','), | |||
} | |||
// if(that.form.id){ | |||
// updateRoleBoss(params).then(response=>{ | |||
// uni.$u.toast("保存成功!") | |||
// setTimeout(()=>{ | |||
// uni.navigateBack({ | |||
// delta:1 | |||
// }) | |||
// },1500) | |||
// }).catch(error=>{ | |||
// }) | |||
// }else{ | |||
addAuthenticationPerson(params).then(response=>{ | |||
uni.$u.toast("提交成功,等待申请") | |||
setTimeout(()=>{ | |||
uni.switchTab({ | |||
url:"/pages/home/index" | |||
}) | |||
},1500) | |||
}).catch(error=>{ | |||
}) | |||
// } | |||
}, | |||
deleteCerImageBackFilePic(event) { | |||
this.form.cerImageBackFile.splice(e.index, 1) | |||
}, | |||
async afterCerImageBackFileRead(e) { | |||
let self = this | |||
e.file.forEach(file => { | |||
self.$Oss.ossUpload(file.url).then(url => { | |||
self.form.cerImageBackFile.push({ | |||
url | |||
}) | |||
}) | |||
}) | |||
}, | |||
deleteCerImageFrontReadPic(event) { | |||
this.form.cerImageFrontFile.splice(e.index, 1) | |||
}, | |||
async afterCerImageFrontRead(e) { | |||
let self = this | |||
e.file.forEach(file => { | |||
self.$Oss.ossUpload(file.url).then(url => { | |||
self.form.cerImageFrontFile.push({ | |||
url | |||
}) | |||
}) | |||
}) | |||
}, | |||
async afterImageFileRead(e) { | |||
let self = this | |||
e.file.forEach(file => { | |||
self.$Oss.ossUpload(file.url).then(url => { | |||
self.form.imageFile.push({ | |||
url | |||
}) | |||
}) | |||
}) | |||
}, | |||
deleteImageFilePic(event) { | |||
this.form.imageFile.splice(e.index, 1) | |||
}, | |||
} | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.line-orange { | |||
width: 8rpx; | |||
height: 32rpx; | |||
background: #ff7a31; | |||
border-radius: 4rpx; | |||
} | |||
</style> |