Browse Source

Merge branch 'master' of http://175.178.51.79:3000/Augcl/employ-front

# 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.lock
master
主管理员 2 months ago
parent
commit
f501ad139d
64 changed files with 3180 additions and 577 deletions
  1. +1
    -0
      .gitignore
  2. +37
    -0
      App.vue
  3. +103
    -15
      common/api.js
  4. +5
    -3
      common/config.js
  5. +6
    -0
      node_modules/fastq/README.md
  6. +1
    -0
      node_modules/fastq/index.d.ts
  7. +4
    -0
      node_modules/fastq/package.json
  8. +11
    -0
      node_modules/fastq/test/test.js
  9. +3
    -3
      node_modules/flatted/index.js
  10. +1
    -1
      node_modules/flatted/min.js
  11. +34
    -7
      node_modules/flatted/package.json
  12. +4
    -4
      node_modules/flatted/python/flatted.py
  13. +0
    -63
      node_modules/flatted/python/test.py
  14. +4
    -0
      node_modules/get-intrinsic/.eslintrc
  15. +11
    -0
      node_modules/get-intrinsic/CHANGELOG.md
  16. +1
    -0
      node_modules/get-intrinsic/index.js
  17. +25
    -0
      node_modules/get-intrinsic/package.json
  18. +2
    -1
      node_modules/import-fresh/index.js
  19. +12
    -0
      node_modules/import-fresh/package.json
  20. +14
    -8
      node_modules/import-fresh/readme.md
  21. +11
    -0
      node_modules/object-inspect/CHANGELOG.md
  22. +10
    -7
      node_modules/object-inspect/index.js
  23. +11
    -2
      node_modules/object-inspect/package.json
  24. +50
    -0
      node_modules/object-inspect/test/values.js
  25. +50
    -3
      pages.json
  26. +69
    -33
      pages/auth/index.vue
  27. +20
    -14
      pages/home/component/enterprise.vue
  28. +74
    -14
      pages/home/component/master.vue
  29. +112
    -47
      pages/home/index.vue
  30. +14
    -12
      pages/identity/index.vue
  31. +48
    -23
      pages/login/index.vue
  32. +91
    -31
      pages/order/component/enterprise.vue
  33. +73
    -18
      pages/order/component/master.vue
  34. +20
    -7
      pages/order/index.vue
  35. +128
    -32
      pages/user/index.vue
  36. +6
    -1
      pages_subpack/business-settled/component/enterprise.vue
  37. +317
    -0
      pages_subpack/category/index.vue
  38. +7
    -2
      pages_subpack/employ-progress/index.vue
  39. +329
    -0
      pages_subpack/enterprise/index.vue
  40. +292
    -0
      pages_subpack/job-order-detail/index.vue
  41. +45
    -17
      pages_subpack/master-detail/index.vue
  42. +44
    -0
      pages_subpack/notice/index.vue
  43. +63
    -19
      pages_subpack/order-detail/index.vue
  44. +115
    -25
      pages_subpack/payment/index.vue
  45. +361
    -0
      pages_subpack/person/index.vue
  46. +46
    -12
      pages_subpack/record/index.vue
  47. +66
    -40
      pages_subpack/release/component/enterprise.vue
  48. +47
    -12
      pages_subpack/release/component/master.vue
  49. +143
    -57
      pages_subpack/resume/index.vue
  50. +67
    -5
      pages_subpack/system/index.vue
  51. +35
    -8
      pages_subpack/wallet/component/recharge.vue
  52. +21
    -5
      pages_subpack/wallet/component/withdrawal.vue
  53. +1
    -1
      pages_subpack/wallet/index.vue
  54. +51
    -14
      pages_subpack/work-detail/index.vue
  55. BIN
      static/image/user1.png
  56. BIN
      static/image/user2.png
  57. BIN
      static/image/user3.png
  58. BIN
      static/image/user4.png
  59. BIN
      static/image/user5.png
  60. BIN
      static/image/user6.png
  61. BIN
      static/image/user7.png
  62. +2
    -1
      util/request/requestInterceptors.js
  63. +10
    -10
      util/request/responseInterceptors.js
  64. +52
    -0
      yarn.lock

+ 1
- 0
.gitignore View File

@ -1 +1,2 @@
/unpackage
/node_modules

+ 37
- 0
App.vue View File

@ -1,12 +1,49 @@
<script>
export default {
onLaunch: function() {
this.checkUpdate();
},
onShow: function() {
},
onHide: function() {
},
methods: {
checkUpdate() {
if (wx.getUpdateManager) {
const updateManager = wx.getUpdateManager();
//
updateManager.onCheckForUpdate((res) => {
console.log("是否有新版本:", res.hasUpdate);
});
//
updateManager.onUpdateReady(() => {
wx.showModal({
title: "更新提示",
content: "新版本已经准备好,是否重启应用?",
success: (res) => {
if (res.confirm) {
updateManager.applyUpdate(); //
}
},
});
});
//
updateManager.onUpdateFailed(() => {
wx.showModal({
title: "更新失败",
content: "请删除小程序后重新打开。",
});
});
} else {
console.log("当前基础库版本不支持更新管理");
}
},
}
}
</script>


+ 103
- 15
common/api.js View File

@ -9,40 +9,128 @@ export const fetchMenu = (params, config = {}) => http.post('/ebapi/public_api/i
* 登录的接口
*/
// 微信登录接口
export const appletLogin = (params) => http.get('/employ-api/user/login', {params:params})
export const appletLogin = (params) => http.get('/employ-api/employ/login/login', {params:params})
// 招聘方填写信息
export const roleBoss = (params) => http.post('/employ-api/user/roleBoss', params)
// 求职者填写信息
export const role = (params) => http.post('/employ-api/user/role', params)
export const role = (params) => http.post('/employ-api/employ/resume/addResume', params)
// 首页行业菜单
export const industryList = (params) => http.get('/employ-api/index/industryList', {params:params})
export const industryList = (params) => http.get('/employ-api/employ/category/queryCategoryList', {params:params})
// 获取banner列表
export const bannerList = (params) => http.post('/employ-api/index/bannerList', params)
export const bannerList = (params) => http.get('/employ-api/employ/banner/queryBannerList', {params:params})
// 招聘大厅列表查询
export const taskList = (params) => http.get('/employ-api/index/taskList', {params:params})
export const taskList = (params) => http.get('/employ-api/employ/job/queryJobList', {params:params})
// 求职大厅列表查询
export const rolelist = (params) => http.get('/employ-api/index/rolelist1', {params:params})
export const rolelist = (params) => http.get('/employ-api/employ/resume/queryResumeList', {params:params})
// 公司发布任务
export const addTask = (params) => http.post('/employ-api/user/addTask', params)
export const addTask = (params) => http.post('/employ-api/employ/order/addOrder', params)
//订单信息-简历信息-立即聘用
export const addOrderWork = (params) => http.post('/employ-api/employ/order/addOrderWork', params)
//订单信息-求职信息-立即接单
export const addOrderJob = (params) => http.post('/employ-api/employ/order/addOrderJob', params)
//订单信息-查询订单详情
export const orderDetail = (params) => http.get('/employ-api/employ/order/queryOrderById', {params: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})
// 根据行业id查询工种
export const industryById = (params) => http.get('/employ-api/index/getIndustryById', {params:params})
export const industryById = (params) => http.get('/employ-api/employ/category/queryCategoryList', {params:params})
// tb_user_role-通过id查询
export const getTaskById = (params) => http.get('/employ-api/user/getTaskById', {params:params})
export const getTaskById = (params) => http.get('/employ-api/employ/job/queryJobById', {params:params})
//简历详情
export const queryResumeById = (params) => http.get('/employ-api/employ/resume/queryResumeById', {params:params})
//修改简历信息
export const updateResume = (params) => http.post('/employ-api/employ/resume/updateResume', params)
//新增简历
export const addResume = (params) => http.post('/employ-api/employ/resume/addResume', params)
//求职信息-查询求职信息列表
export const querySeekList = (params) => http.get('/employ-api/employ/seek/querySeekList', {params:params})
export const querySeekById = (params) => http.get('/employ-api/employ/seek/querySeekById', {params:params})
export const addSeek = (params) => http.post('/employ-api/employ/seek/addSeek', params)
export const updateSeek = (params) => http.post('/employ-api/employ/seek/updateSeek', params)
// 我的头像昵称,平台客户电话等信息
export const userInfo = (params) => http.post('/employ-api/index/index', 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 payLog = (params) => http.post('/employ-api/pay/log', params)
export const payLog = (params) => http.get('/employ-api/employ/amount/amountLog', params)
// 充值支付
export const payRecharge = (params) => http.post('/employ-api/pay/payRecharge', params)
export const payRecharge = (params) => http.get('/employ-api/employ/amount/recharge',{params:params})
// 提现
export const withdrawal = (params) => http.post('/employ-api/pay/withdrawal', params)
export const withdrawal = (params) => http.get('/employ-api/employ/amount/CashOut',{params:params})
// 招聘方订单分页列表查询
export const bossOrderList = (params) => http.post('/employ-api/order/bossOrderList', params)
// 发起聘请,等待师傅确认
export const orderTask = (params) => http.post('/employ-api/order/addTask', params)
// 招聘方订单分页列表查询
// export const bossOrderList = (params) => http.get('/employ-api/order/bossOrderList', {params:params})
// 求职方订单分页列表查询
export const workOrderList = (params) => http.get('/employ-api/order/workOrderList', {params:params})
// 获取平台隐私政策,协议等
export const getSysText = (params) => http.get('/employ-api/employ/config/queryConfigList', {params:params})
// 小程序-绑定手机号
export const bindPhone = (params) => http.get('/employ-api/employ/login/bindPhone', {params:params})
// 修改头像和昵称,传nickName和headimgurl
export const updateUserInfo = (params) => http.post('/employ-api/employ/user/updateUser', params)
// 公告详情
export const getNotice = (params) => http.get('/employ-api/employ/news/queryNewsById', {params:params})
// 求职者修改信息 传id修改
export const updateRole = (params) => http.post('/employ-api/user/updateRole', params)
// 招聘方修改信息 传id修改
export const updateRoleBoss = (params) => http.post('/employ-api/user/updateRoleBoss', params)
// 公告列表
export const noticeList = (params) => http.get('/employ-api/employ/news/queryNewsList', {params:params})
// 小程序-获取sessionKey
export const getSessionKey = (params) => http.get('/employ-api/user/getSessionKey', {params:params})
// 求职者修改信息 传id修改
export const addTask2 = (params) => http.post('/employ-api/employ/resume/addResume', params)
// 配置信息-获取配置信息列表
export const queryConfigList = (params) => http.get('/employ-api/employ/config/queryConfigList', {params:params})
// 个人信息
export const userInfoDetail = (params) => http.get('/employ-api/employ/user/queryUser', {params:params})
// 实名认证-企业实名认证
export const addAuthenticationCompany = (params) => http.post('/employ-api/employ/authentication/addAuthenticationCompany', params)
// 实名认证-查询企业实名认证信息
export const getAuthenticationCompany = (params) => http.get('/employ-api/employ/authentication/getAuthenticationCompany', {params:params})
// 实名认证-个人实名认证
export const addAuthenticationPerson = (params) => http.post('/employ-api/employ/authentication/addAuthenticationPerson', params)
// 实名认证-查询个人实名认证信息
export const getAuthenticationPerson = (params) => http.get('/employ-api/employ/authentication/getAuthenticationPerson', {params:params})
// 首页-分类信息列表
export const queryCategoryList = (params) => http.get('/employ-api/employ/category/queryCategoryList', params)
// 我的钱包-累计提现
export const CountCashOut = (params) => http.get('/employ-api/employ/amount/CountCashOut', params)
// 我的钱包-我的余额
export const queryBalance = (params) => http.get('/employ-api/employ/amount/queryBalance', params)

+ 5
- 3
common/config.js View File

@ -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
}

+ 6
- 0
node_modules/fastq/README.md View File

@ -233,6 +233,12 @@ each time a task is completed, `err` will be not null if the task has thrown an
Property that returns the number of concurrent tasks that could be executed in
parallel. It can be altered at runtime.
-------------------------------------------------------
<a name="paused"></a>
### queue.paused
Property (Read-Only) that returns `true` when the queue is in a paused state.
-------------------------------------------------------
<a name="drain"></a>
### queue.drain


+ 1
- 0
node_modules/fastq/index.d.ts View File

@ -20,6 +20,7 @@ declare namespace fastq {
killAndDrain(): any
error(handler: errorHandler<T>): void
concurrency: number
readonly paused: boolean
drain(): any
empty: () => void
saturated: () => void


+ 4
- 0
node_modules/fastq/package.json View File

@ -1,6 +1,10 @@
{
"name": "fastq",
<<<<<<< HEAD
"version": "1.18.0",
=======
"version": "1.19.0",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "Fast, in memory work queue",
"main": "queue.js",
"scripts": {


+ 11
- 0
node_modules/fastq/test/test.js View File

@ -640,3 +640,14 @@ test('pause/resume should trigger drain event', function (t) {
queue.resume()
})
test('paused flag', function (t) {
t.plan(2)
var queue = buildQueue(function (arg, cb) {
cb(null)
}, 1)
t.equal(queue.paused, false)
queue.pause()
t.equal(queue.paused, true)
})

+ 3
- 3
node_modules/flatted/index.js View File

@ -32,7 +32,7 @@ self.Flatted = (function (exports) {
var Primitives = function Primitives(_, value) {
return _typeof(value) === primitive ? new Primitive(value) : value;
};
var revive = function revive(input, parsed, output, $) {
var _revive = function revive(input, parsed, output, $) {
var lazy = [];
for (var ke = keys(output), length = ke.length, y = 0; y < length; y++) {
var k = ke[y];
@ -53,7 +53,7 @@ self.Flatted = (function (exports) {
var _lazy$i = lazy[i],
_k = _lazy$i.k,
a = _lazy$i.a;
output[_k] = $.call(output, _k, revive.apply(null, a));
output[_k] = $.call(output, _k, _revive.apply(null, a));
}
return output;
};
@ -73,7 +73,7 @@ self.Flatted = (function (exports) {
var input = $parse(text, Primitives).map(primitives);
var value = input[0];
var $ = reviver || noop;
var tmp = _typeof(value) === object && value ? revive(input, new Set(), value, $) : value;
var tmp = _typeof(value) === object && value ? _revive(input, new Set(), value, $) : value;
return $.call({
'': tmp
}, '', tmp);


+ 1
- 1
node_modules/flatted/min.js View File

@ -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}({});

+ 34
- 7
node_modules/flatted/package.json View File

@ -1,6 +1,10 @@
{
"name": "flatted",
<<<<<<< HEAD
"version": "3.3.2",
=======
"version": "3.3.3",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "A super light and fast circular JSON parser.",
"unpkg": "min.js",
"main": "./cjs/index.js",
@ -22,6 +26,7 @@
"type": "git",
"url": "git+https://github.com/WebReflection/flatted.git"
},
<<<<<<< HEAD
"keywords": [
"circular",
"JSON",
@ -29,6 +34,28 @@
"parser",
"minimal"
],
=======
"files": [
"LICENSE",
"README.md",
"cjs/",
"es.js",
"esm.js",
"esm/",
"index.js",
"min.js",
"php/flatted.php",
"python/flatted.py",
"types/"
],
"keywords": [
"circular",
"JSON",
"fast",
"parser",
"minimal"
],
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"author": "Andrea Giammarchi",
"license": "ISC",
"bugs": {
@ -36,19 +63,19 @@
},
"homepage": "https://github.com/WebReflection/flatted#readme",
"devDependencies": {
"@babel/core": "^7.23.9",
"@babel/preset-env": "^7.23.9",
"@babel/core": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-terser": "^0.4.4",
"@ungap/structured-clone": "^1.2.0",
"@ungap/structured-clone": "^1.3.0",
"ascjs": "^6.0.3",
"c8": "^9.1.0",
"c8": "^10.1.3",
"circular-json": "^0.5.9",
"circular-json-es6": "^2.0.2",
"jsan": "^3.1.14",
"rollup": "^4.12.0",
"terser": "^5.27.2",
"typescript": "^5.3.3"
"rollup": "^4.34.8",
"terser": "^5.39.0",
"typescript": "^5.7.3"
},
"module": "./esm/index.js",
"type": "module",


+ 4
- 4
node_modules/flatted/python/flatted.py View File

@ -1,6 +1,6 @@
# ISC License
#
# Copyright (c) 2018-2021, Andrea Giammarchi, @WebReflection
# Copyright (c) 2018-2025, Andrea Giammarchi, @WebReflection
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@ -41,7 +41,7 @@ def _object_keys(value):
return keys
def _is_array(value):
return isinstance(value, list) or isinstance(value, tuple)
return isinstance(value, (list, tuple))
def _is_object(value):
return isinstance(value, dict)
@ -65,10 +65,10 @@ def _loop(keys, input, known, output):
return output
def _ref(key, value, input, known, output):
if _is_array(value) and not value in known:
if _is_array(value) and value not in known:
known.append(value)
value = _loop(_array_keys(value), input, known, value)
elif _is_object(value) and not value in known:
elif _is_object(value) and value not in known:
known.append(value)
value = _loop(_object_keys(value), input, known, value)


+ 0
- 63
node_modules/flatted/python/test.py View File

@ -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')

+ 4
- 0
node_modules/get-intrinsic/.eslintrc View File

@ -11,6 +11,10 @@
"es2022": true,
},
"globals": {
"Float16Array": false,
},
"rules": {
"array-bracket-newline": 0,
"complexity": 0,


+ 11
- 0
node_modules/get-intrinsic/CHANGELOG.md View File

@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
<<<<<<< HEAD
=======
## [v1.3.0](https://github.com/ljharb/get-intrinsic/compare/v1.2.7...v1.3.0) - 2025-02-22
### Commits
- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `for-each`, `object-inspect` [`9b61553`](https://github.com/ljharb/get-intrinsic/commit/9b61553c587f1c1edbd435597e88c7d387da97dd)
- [Deps] update `call-bind-apply-helpers`, `es-object-atoms`, `get-proto` [`a341fee`](https://github.com/ljharb/get-intrinsic/commit/a341fee0f39a403b0f0069e82c97642d5eb11043)
- [New] add `Float16Array` [`de22116`](https://github.com/ljharb/get-intrinsic/commit/de22116b492fb989a0341bceb6e573abfaed73dc)
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
## [v1.2.7](https://github.com/ljharb/get-intrinsic/compare/v1.2.6...v1.2.7) - 2025-01-02
### Commits


+ 1
- 0
node_modules/get-intrinsic/index.js View File

@ -90,6 +90,7 @@ var INTRINSICS = {
'%Error%': $Error,
'%eval%': eval, // eslint-disable-line no-eval
'%EvalError%': $EvalError,
'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,
'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,


+ 25
- 0
node_modules/get-intrinsic/package.json View File

@ -1,6 +1,10 @@
{
"name": "get-intrinsic",
<<<<<<< HEAD
"version": "1.2.7",
=======
"version": "1.3.0",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "Get and robustly cache all JS language-level intrinsics at first require time",
"main": "index.js",
"exports": {
@ -44,12 +48,21 @@
},
"homepage": "https://github.com/ljharb/get-intrinsic#readme",
"dependencies": {
<<<<<<< HEAD
"call-bind-apply-helpers": "^1.0.1",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.0.0",
"function-bind": "^1.1.2",
"get-proto": "^1.0.0",
=======
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
@ -60,18 +73,30 @@
"auto-changelog": "^2.5.0",
"call-bound": "^1.0.3",
"encoding": "^0.1.13",
<<<<<<< HEAD
"es-abstract": "^1.23.8",
"es-value-fixtures": "^1.5.0",
"eslint": "=8.8.0",
"evalmd": "^0.0.19",
"for-each": "^0.3.3",
=======
"es-abstract": "^1.23.9",
"es-value-fixtures": "^1.7.1",
"eslint": "=8.8.0",
"evalmd": "^0.0.19",
"for-each": "^0.3.5",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"make-async-function": "^1.0.0",
"make-async-generator-function": "^1.0.0",
"make-generator-function": "^2.0.0",
"mock-property": "^1.1.0",
"npmignore": "^0.3.1",
"nyc": "^10.3.2",
<<<<<<< HEAD
"object-inspect": "^1.13.3",
=======
"object-inspect": "^1.13.4",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"safe-publish-latest": "^2.0.0",
"tape": "^5.9.0"
},


+ 2
- 1
node_modules/import-fresh/index.js View File

@ -29,5 +29,6 @@ module.exports = moduleId => {
const parent = require.cache[parentPath]; // If `filePath` and `parentPath` are the same, cache will already be deleted so we won't get a memory leak in next step
return parent === undefined ? require(filePath) : parent.require(filePath); // In case cache doesn't have parent, fall back to normal require
// In case cache doesn't have parent, fall back to normal require
return parent === undefined || parent.require === undefined ? require(filePath) : parent.require(filePath);
};

+ 12
- 0
node_modules/import-fresh/package.json View File

@ -1,6 +1,10 @@
{
"name": "import-fresh",
<<<<<<< HEAD
"version": "3.3.0",
=======
"version": "3.3.1",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "Import a module while bypassing the cache",
"license": "MIT",
"repository": "sindresorhus/import-fresh",
@ -10,6 +14,14 @@
"email": "sindresorhus@gmail.com",
"url": "https://sindresorhus.com"
},
<<<<<<< HEAD
=======
"exports": {
"types": "./index.d.ts",
"default": "./index.js"
},
"sideEffects": false,
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"engines": {
"node": ">=6"
},


+ 14
- 8
node_modules/import-fresh/readme.md View File

@ -4,10 +4,22 @@
Useful for testing purposes when you need to freshly import a module.
## Install
## ESM
For ESM, you can use this snippet:
```js
const importFresh = moduleName => import(`${moduleName}?${Date.now()}`);
const {default: foo} = await importFresh('foo');
```
$ npm install import-fresh
**This snippet causes a memory leak, so only use it for short-lived tests.**
## Install
```sh
npm install import-fresh
```
## Usage
@ -34,12 +46,6 @@ importFresh('./foo')();
//=> 1
```
## import-fresh for enterprise
Available as part of the Tidelift Subscription.
The maintainers of import-fresh and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-import-fresh?utm_source=npm-import-fresh&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
## Related
- [clear-module](https://github.com/sindresorhus/clear-module) - Clear a module from the import cache


+ 11
- 0
node_modules/object-inspect/CHANGELOG.md View File

@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
<<<<<<< HEAD
=======
## [v1.13.4](https://github.com/inspect-js/object-inspect/compare/v1.13.3...v1.13.4) - 2025-02-04
### Commits
- [Fix] avoid being fooled by a `Symbol.toStringTag` [`fa5870d`](https://github.com/inspect-js/object-inspect/commit/fa5870da468a525d2f20193700f70752f506cbf7)
- [Tests] fix tests in node v6.0 - v6.4 [`2abfe1b`](https://github.com/inspect-js/object-inspect/commit/2abfe1bc3c69f9293c07c5cd65a9d7d87a628b84)
- [Dev Deps] update `es-value-fixtures`, `for-each`, `has-symbols` [`3edfb01`](https://github.com/inspect-js/object-inspect/commit/3edfb01cc8cce220fba0dfdfe2dc8bc955758cdd)
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
## [v1.13.3](https://github.com/inspect-js/object-inspect/compare/v1.13.2...v1.13.3) - 2024-11-09
### Commits


+ 10
- 7
node_modules/object-inspect/index.js View File

@ -287,13 +287,16 @@ function quote(s) {
return $replace.call(String(s), /"/g, '&quot;');
}
function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }
function canTrustToString(obj) {
return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));
}
function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }
function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }
function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }
function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }
function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }
function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }
function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }
// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives
function isSymbol(obj) {


+ 11
- 2
node_modules/object-inspect/package.json View File

@ -1,6 +1,10 @@
{
"name": "object-inspect",
<<<<<<< HEAD
"version": "1.13.3",
=======
"version": "1.13.4",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"description": "string representations of objects in node and the browser",
"main": "index.js",
"sideEffects": false,
@ -10,13 +14,17 @@
"auto-changelog": "^2.5.0",
"core-js": "^2.6.12",
"error-cause": "^1.0.8",
<<<<<<< HEAD
"es-value-fixtures": "^1.5.0",
=======
"es-value-fixtures": "^1.7.1",
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
"eslint": "=8.8.0",
"for-each": "^0.3.3",
"for-each": "^0.3.4",
"functions-have-names": "^1.2.3",
"glob": "=10.3.7",
"globalthis": "^1.0.4",
"has-symbols": "^1.0.3",
"has-symbols": "^1.1.0",
"has-tostringtag": "^1.0.2",
"in-publish": "^2.0.1",
"jackspeak": "=2.1.1",
@ -26,6 +34,7 @@
"nyc": "^10.3.2",
"safe-publish-latest": "^2.0.0",
"safer-buffer": "^2.1.2",
"semver": "^6.3.1",
"string.prototype.repeat": "^1.0.0",
"tape": "^5.9.0"
},


+ 50
- 0
node_modules/object-inspect/test/values.js View File

@ -5,6 +5,8 @@ var test = require('tape');
var mockProperty = require('mock-property');
var hasSymbols = require('has-symbols/shams')();
var hasToStringTag = require('has-tostringtag/shams')();
var forEach = require('for-each');
var semver = require('semver');
test('values', function (t) {
t.plan(1);
@ -209,3 +211,51 @@ test('RegExps', function (t) {
t.end();
});
test('Proxies', { skip: typeof Proxy !== 'function' || !hasToStringTag }, function (t) {
var target = { proxy: true };
var fake = new Proxy(target, { has: function () { return false; } });
// needed to work around a weird difference in node v6.0 - v6.4 where non-present properties are not logged
var isNode60 = semver.satisfies(process.version, '6.0 - 6.4');
forEach([
'Boolean',
'Number',
'String',
'Symbol',
'Date'
], function (tag) {
target[Symbol.toStringTag] = tag;
t.equal(
inspect(fake),
'{ ' + (isNode60 ? '' : 'proxy: true, ') + '[Symbol(Symbol.toStringTag)]: \'' + tag + '\' }',
'Proxy for + ' + tag + ' shows as the target, which has no slots'
);
});
t.end();
});
test('fakers', { skip: !hasToStringTag }, function (t) {
var target = { proxy: false };
forEach([
'Boolean',
'Number',
'String',
'Symbol',
'Date'
], function (tag) {
target[Symbol.toStringTag] = tag;
t.equal(
inspect(target),
'{ proxy: false, [Symbol(Symbol.toStringTag)]: \'' + tag + '\' }',
'Object pretending to be ' + tag + ' does not trick us'
);
});
t.end();
});

+ 50
- 3
pages.json View File

@ -123,9 +123,27 @@
}
},
{
"path": "master-settled/index",
"path": "enterprise/index",
"style": {
"navigationBarTitleText": "师傅入驻",
"navigationBarTitleText": "企业",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
},
{
"path": "person/index",
"style": {
"navigationBarTitleText": "个人",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
},
{
"path": "resume/index",
"style": {
"navigationBarTitleText": "我的简历",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
@ -140,6 +158,15 @@
"navigationBarTextStyle": "white"
}
},
{
"path": "job-order-detail/index",
"style": {
"navigationBarTitleText": "聘用订单详情",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
},
{
"path": "record/index",
"style": {
@ -170,7 +197,7 @@
{
"path": "order-detail/index",
"style": {
"navigationBarTitleText": "订单详情",
"navigationBarTitleText": "招聘订单详情",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
@ -193,6 +220,26 @@
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
},
{
"path": "category/index",
"style": {
"navigationBarTitleText": "分类",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": true,
"onReachBottomDistance": 100
}
},
{
"path": "notice/index",
"style": {
"navigationBarTitleText": "公告详情",
"navigationStyle":"default",
"navigationBarBackgroundColor": "#FF7A31",
"navigationBarTextStyle": "white"
}
}
]
}


+ 69
- 33
pages/auth/index.vue View File

@ -3,25 +3,25 @@
<view class="se-flex se-pt-200 se-flex-h-c se-flex-ff-cw">
<image class="se-w-150 se-h-150" src="@/static/image/logo.png" mode=""></image>
<view class="se-flex se-flex-h-c se-fs-34 se-fw-6 se-c-black se-mt-40">
用工平台小程序
智选猎头
</view>
</view>
<view class="se-pb-200 se-pos-cb se-w-p-100">
<button @getuserinfo="onLogin" open-type="getUserInfo" class="se-mx-80 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-green">
<button @getuserinfo="onLogin" open-type="getUserInfo" class="se-mx-80 se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-orange">
<image class="se-w-45 se-h-35" src="@/static/image/wechat.png" mode=""></image>
<text class="se-ml-10">微信登录</text>
</button>
<!-- <view class="se-mx-80 se-br-40 se-mt-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-66 se-bgc-f5">
<text>手机验证码登录</text>
</view> -->
<view @click="onNavigator" class="se-mx-80 se-br-40 se-mt-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-66 se-bgc-f5">
<text>取消登录</text>
</view>
<view class="se-mx-80 se-br-40 se-mt-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-24 se-c-33">
<u-checkbox-group @change="checkboxChange" v-model="checked">
<u-checkbox name="1" activeColor="#07C160" label-size="12" shape="circle" label="阅读并同意"></u-checkbox>
<u-checkbox name="1" activeColor="#ff7a31" label-size="12" shape="circle" label="阅读并同意"></u-checkbox>
</u-checkbox-group>
<text class="se-c-green" @click="show=true">隐私政策</text>
<text class="se-c-green" @click="show=true">服务条款</text>
<text class="se-c-orange" @click="show=true">隐私政策</text>
<text class="se-c-orange" @click="show=true">服务条款</text>
</view>
</view>
@ -34,17 +34,18 @@
服务协议和隐私权政策
</view>
<view class="se-lh-40 se-mt-40 se-fs-24 se-c-99">
<text>请您务必审慎阅读充分理解用户协议和隐私政策各条款包括但不限于用户注意事项用户行为规范以及为了向你提供服务而收集使用存储你个人信息的情况等你可阅读</text>
<u-parse :content="getValueByName('config_privacy')"></u-parse>
<!-- <text>请您务必审慎阅读充分理解用户协议和隐私政策各条款包括但不限于用户注意事项用户行为规范以及为了向你提供服务而收集使用存储你个人信息的情况等你可阅读</text>
<text class="se-c-black se-fw-6" @click="handleOpenPrivacyContract()">用工平台小程序用户服务协议</text>
<text></text>
<text class="se-c-black se-fw-6" @click="handleOpenPrivacyContract()">用工平台小程序平台隐私权政策</text>
<text>了解详细信息如你同意请点击下方按钮开始接受我们的服务</text>
<text>了解详细信息如你同意请点击下方按钮开始接受我们的服务</text> -->
</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-80 se-lh-80 se-ta-c se-fs-32 se-c-66 se-bgc-f5">
<text>不同意</text>
</view>
<view @click="onAgree" class="se-br-20 se-ml-20 se-flex-1 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-green">
<view @click="onAgree" class="se-br-20 se-ml-20 se-flex-1 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-orange">
<text class="se-ml-10">同意</text>
</view>
</view>
@ -54,16 +55,52 @@
</template>
<script>
import { appletLogin,userInfo } from "@/common/api.js"
import { appletLogin,userInfo,getSysText,getSessionKey } from "@/common/api.js"
export default {
name : 'Auth',
data() {
return {
checked:[],
show:false
show:false,
sysList:[],
code:""
}
},
mounted() {
this.onSysText()
this.onSessionKey()
},
filter:{
},
methods: {
onSessionKey(){
// let that = this
// uni.login({
// success(res) {
// that.code = res.code
// getSessionKey({code:that.code}).then(response=>{
// uni.setStorageSync('sessionKey',response.result)
// }).catch(error=>{
// })
// }
// })
},
getValueByName(name) {
const item = this.sysList.find((item) => item.paramCode == name);
return item ? item.value : "";
},
onSysText(){
let that = this
let params={}
// getSysText(params).then(response=>{
// that.sysList=response.result
// uni.setStorageSync('sysList', response.result)
// }).catch(error=>{
// })
},
checkboxChange(n) {
console.log('change', n);
},
@ -99,37 +136,36 @@
headimgurl:event.detail.userInfo.avatarUrl,
iv:event.detail.iv,
nickName:event.detail.userInfo.nickName,
session_key:"",
session_key:uni.getStorageSync('sessionKey'),
shareId:uni.getStorageSync('userId'),
vid:""
}
appletLogin(params).then((response) => {
console.info(`response`,response)
let result = response.result
console.info(`appletLogin`,result)
uni.hideLoading()
uni.setStorageSync('token', response.result.token)
uni.setStorageSync('company', response.result.company)
uni.setStorageSync('boss', response.result.boss)
uni.setStorageSync('worker', response.result.worker)
uni.setStorageSync('userInfo', response.result.userInfo)
userInfo({}).then(response=>{
if(!response.result.headImage && !response.result.nickName){
uni.navigateTo({
url:"/pages/login/index"
})
}else{
uni.navigateTo({
url:"/pages/identity/index"
})
}
}).catch(err=>{
})
uni.setStorageSync('token', result.token)
uni.setStorageSync('userInfo', result.userInfo)
if(!result.userInfo.headImage && !result.userInfo.nickName && !result.userInfo.phone){
uni.navigateTo({
url:"/pages/login/index"
})
}else{
uni.navigateTo({
url:"/pages/identity/index"
})
}
}).catch((error) =>{
})
}
})
},
onNavigator(){
uni.switchTab({
url:"/pages/home/index"
})
},
handleOpenPrivacyContract() {
//
wx.openPrivacyContract({


+ 20
- 14
pages/home/component/enterprise.vue View File

@ -39,28 +39,34 @@
<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.headImage" mode=""></image>
<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.userName}}</text>
<text class="se-fs-24 se-c-text-third">{{items.gender==1?'男':'女'}}-汉族</text>
<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" >
{{items.industryName}}
<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.moneyMin}}-{{items.moneyMax}}
{{items.salaryMin}}-{{items.salaryMax}}
</view>
</view>
<!-- <view>
<text class="se-c-text-third se-fs-22 se-mt-10">09月23日 16:20</text>
</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">{{items.detail}}</text>
<view @click.capture="onCustomerService(items.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">
<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>
@ -68,10 +74,10 @@
</view>
<u-empty v-if="rolelist && rolelist.length==0" mode="list"></u-empty>
</view>
<view class="release-box" @click="toNavigator()">
<!-- <view class="release-box" @click="toNavigator()">
<image class="se-a-70 se-br-p-50" src="@/static/image/release_btn.png" mode=""></image>
<text class="se-c-white se-fs-30 se-fw-6">订单发布</text>
</view>
</view> -->
</view>
</template>
@ -148,7 +154,7 @@
onMasterDetail(event){
console.info("event",event)
uni.navigateTo({
url:"/pages_subpack/master-detail/index?id="+event.industryId
url:"/pages_subpack/master-detail/index?id="+event.id
})
}
}


+ 74
- 14
pages/home/component/master.vue View File

@ -39,24 +39,23 @@
<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.moneymin}}-{{items.moneymin}}k
{{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.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.industryName">{{items.industryName}}</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.companyName">{{items.companyName}}</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">水泥搬运</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 class="se-flex se-flex-h-sb">
<view class="se-flex">
<u-icon class="se-ml-10" name="map"></u-icon>
<text class="se-c-text-sub se-fs-24 se-pr-10">{{items.distances}}km</text>
<text class="se-c-text-sub se-fs-24 se-pl-10 se-b-l">{{items.workAddress}}</text>
<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-c-text se-c-text-sub se-fs-24">
09月23日 16:20
</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>
@ -64,10 +63,10 @@
</view>
<u-empty v-if="taskList && taskList.length==0" mode="list"></u-empty>
</view>
<view class="release-box" @click="toNavigator()">
<!-- <view class="release-box" @click="toNavigator()">
<image class="se-a-70 se-br-p-50" src="@/static/image/release_btn.png" mode=""></image>
<text class="se-c-white se-fs-30 se-fw-6">师傅发布</text>
</view>
</view> -->
</view>
</template>
@ -101,6 +100,66 @@
defaultIndex:[0,0]
}
},
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:{
onSelected(res){
console.info(res)
@ -118,6 +177,7 @@
},
onMasterDetail(event){
console.info(event)
console.info("------------"+event.id)
uni.navigateTo({
url:"/pages_subpack/work-detail/index?id="+event.id
})


+ 112
- 47
pages/home/index.vue View File

@ -6,39 +6,43 @@
<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>
<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 class="se-px-20 se-pt-10 se-zi-s" @click="onCategory()">
<u-search height="40" :disabled="true" placeholder="搜索" :showAction="false" v-model="keyword"></u-search>
</view>
<view class="se-pb-20 se-pt-40 se-zi-s">
<view class="se-px-20">
<u-swiper height="300rpx" style="background-color: #f5f5f5;height: 300rpx;" :list="swiperList" keyName="image" @change="change" @click="click"></u-swiper>
<u-swiper height="300rpx" :indicator="true" style="background-color: #f5f5f5;height: 300rpx;" :list="swiperList" keyName="image" @change="change" @click="click"></u-swiper>
</view>
<view class="se-pt-10 se-bgc-white se-px-0 se-py-10 se-ta-l se-c-orange se-flex se-flex-ai-c se-fs-26">
<image class="se-a-80" src="@/static/image/aed60x.png" mode=""></image>
<text class="se-ml-10">今日有6个工作息新发布....</text>
<view class="se-pt-10 se-px-0 se-py-10 se-ta-l se-flex se-flex-ai-c se-fs-26">
<u-notice-bar direction="column" mode="link" @click="onNoticeDetail" :text="notice"></u-notice-bar>
</view>
</view>
<view class="se-my-20 se-bgc-white se-grid">
<navigator :url="`/pages_subpack/category/index`+item.id" v-for="(item, index) in tabList" :key="index" class="se-flex-v-c se-pt-30 se-mb-20">
<image class="se-a-100 se-br-20 se-bgc-f5" :src="item.icon" mode=""></image>
<navigator :url="`/pages_subpack/category/index?id=`+item.id+`&title=`+item.name" v-for="(item, index) in tabList" :key="index" class="se-flex-v-c se-pt-30 se-mb-20">
<image class="se-a-100" :src="item.image" mode=""></image>
<text class="se-w-150 se-h-60 se-lh-30 se-c-black se-fs-22 se-ta-c se-mt-10 se-toe-2">{{item.name}}</text>
</navigator>
</view>
<view class="se-my-20 se-bgc-white se-p-20 se-flex">
<u-sticky>
<view class="se-bgc-white se-p-20 se-flex">
<view @click="toNavigator(1)" class="se-flex-1 se-flex-h-c se-flex-ai-c se-c-white se-py-20 se-fw-6 enterprise">
找工作
<!-- 找工作 -->
招聘
</view>
<view @click="toNavigator(2)" class="se-flex-1 se-ml-20 se-flex-h-c se-flex-ai-c se-c-white se-py-20 se-fw-6 master">
找师傅
<!-- 找师傅 -->
求职
</view>
</view>
<u-tabs
class="se-bgc-f5 se-pb-20"
:current="current"
lineWidth="30"
lineColor="#FF7A31"
@ -55,6 +59,7 @@
:list="navList"
@click="navClick($event)">
</u-tabs>
</u-sticky>
<!-- 企业端 求职大厅 -->
<enterpriseBox :rolelist="rlist" v-if="current==0" />
<!-- 师傅端 招聘大厅 -->
@ -68,7 +73,12 @@
bannerList,
taskList,
rolelist,
industryList
industryList,
getSysText,
querySeekList,
getNotice,
noticeList,
queryConfigList
} from "@/common/api.js"
import enterpriseBox from "./component/enterprise.vue"
import masterBox from "./component/master.vue"
@ -80,10 +90,11 @@
},
data(){
return {
status:1,
list: [
"https://cdn.uviewui.com/uview/swiper/swiper1.png"
],
latitude:'',
longitude:'',
notList:[],
notice:[],
tabList:[],//
swiperList:[],//
current:0,
@ -99,43 +110,90 @@
rpageSize:20,
rlist:[],
latitude:'34.00',
longitude:'134.65',
tpageNo:1,
tpageSize:20,
tList:[]
}
},
mounted() {
},
onShow() {
this.onBannerList()
this.onTaskList()
this.onRolelist()
this.onIndustryList()
this.getLocation()
this.onSysText()
this.onNotice()
},
onPullDownRefresh() {
let that = this
that.rpageNo = 1
that.rlist = []
that.onRolelist()
if(that.current==0){
that.rpageNo = 1
that.rlist = []
that.onRolelist()
}else if(that.current==1){
that.tpageNo = 1
that.tList = []
that.onTaskList()
}
},
onReachBottom() {
let that = this
that.rpageNo = that.rpageNo + 1
that.onRolelist()
if(that.current==0){
that.rpageNo = that.rpageNo + 1
that.onRolelist()
}else if(that.current==1){
that.tpageNo = that.tpageNo + 1
that.onTaskList()
}
},
methods:{
onNoticeDetail(index){
console.info(index)
uni.navigateTo({
url:"/pages_subpack/notice/index?id="+this.notList[index].id
})
},
onNotice(){
let that = this
let params={}
let arr=[]
noticeList(params).then(response=>{
console.info('noticeList',response)
response.result.records.forEach(items=>{
arr.push(items.title)
})
that.notice = arr
that.notList = response.result.records
}).catch(error=>{
})
},
onSysText(){
let that = this
let params={}
getSysText(params).then(response=>{
console.info("onSysText",response.result)
uni.setStorageSync('sysList', result.result)
}).catch(error=>{
})
},
getLocation(){
const that = this;
console.log('当前位置的经度:');
wx.getLocation({
type: 'wgs84',
success: function (res) {
console.log('位置',res);
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
that.latitude=res.latitude
that.longitude=res.longitude
uni.setStorageSync("longitude",res.longitude)
uni.setStorageSync("latitude",res.latitude)
const qqmapsdk = new QQMapWX({
key: 'TT7BZ-Z3LW4-KOAUB-KWHOA-SBJJ6-Y5B6R' //
key: 'BJKBZ-W46K3-6S43C-OFLJB-FW6FQ-RMBYP' //
});
qqmapsdk.reverseGeocoder({
location: {
@ -162,41 +220,42 @@
})
},
onBannerList(){
bannerList({}).then(response=>{
console.info("banner",response)
this.swiperList = response.result[0]
bannerList({type:0}).then(response=>{
this.swiperList = response.result.records
}).catch(error=>{
})
},
onTaskList(){
let that = this
taskList({
latitude:this.latitude,
longitude:this.longitude,
pageNo:this.tpageNo,
pageSize:this.tpageSize
latitude:that.latitude,
longitude:that.longitude,
pageNo:that.tpageNo,
pageSize:that.tpageSize
}).then(response=>{
if(this.tpageNo==1){
this.tList = response.result.records
console.info("response",response.result.records)
if(that.tpageNo==1){
that.tList = response.result.records
}else{
this.tList = this.tList.concat(response.result.records)
that.tList = that.tList.concat(response.result.records)
}
console.info("taskList",response)
}).catch(error=>{
})
},
onRolelist(){
rolelist({
pageNo:this.rpageNo,
pageSize:this.rpageSize
let that = this
querySeekList({
pageNo:that.rpageNo,
pageSize:that.rpageSize
}).then(response=>{
console.info("response",response)
if(this.rpageNo==1){
this.rlist = response.result.records
console.info("querySeekList",response)
if(that.rpageNo==1){
that.rlist = response.result.records
}else{
this.rlist = this.rlist.concat(response.result.records)
that.rlist = that.rlist.concat(response.result.records)
}
}).catch(error=>{
@ -212,10 +271,16 @@
console.info(event)
},
toNavigator(event){
console.info(event)
uni.navigateTo({
url:"/pages_subpack/release/index?status="+event
})
},
onCategory(){
uni.navigateTo({
url:"/pages_subpack/category/index"
})
}
}
}


+ 14
- 12
pages/identity/index.vue View File

@ -3,12 +3,12 @@
<view class="se-fs-40 se-fw-6 se-ta-c se-pt-120">
请选择您要入驻的身份
</view>
<view @click="onBusinessSettled" class="business se-mt-80 se-br-10 se-mx-35 se-bgc-red se-flex se-flex-h-sb se-w-680 se-h-240 se-fs-48 se-c-white">
<text class="se-ml-80">企业/个人入驻</text>
<view @click="onPerson" class="business se-mt-80 se-br-10 se-mx-35 se-bgc-red se-flex se-flex-h-sb se-w-680 se-h-240 se-fs-48 se-c-white">
<text class="se-ml-80">个人入驻</text>
<image class="se-a-170 se-br-p-50 se-mr-80" src="@/static/image/header.png" mode=""></image>
</view>
<view @click="onMasterSettled" class="master se-mt-80 se-br-10 se-mx-35 se-bgc-orange se-flex se-flex-h-sb se-w-680 se-h-240 se-fs-48 se-c-white">
<text class="se-ml-80">师傅入驻</text>
<view @click="onEnterprise" class="master se-mt-80 se-br-10 se-mx-35 se-bgc-orange se-flex se-flex-h-sb se-w-680 se-h-240 se-fs-48 se-c-white">
<text class="se-ml-80">企业入驻</text>
<image class="se-a-170 se-br-p-50 se-mr-80" src="@/static/image/47761.png" mode=""></image>
</view>
<view class="se-pos-fixed se-flex-h-c se-bs-t se-w-750 se-h-200" style="background-color: #fff;bottom: 0;left: 0;">
@ -27,19 +27,21 @@
}
},
methods:{
onJump(){
uni.switchTab({
url:"/pages/home/index"
//
onPerson(){
uni.navigateTo({
url:"/pages_subpack/person/index"
})
},
onBusinessSettled(){
//
onEnterprise(){
uni.navigateTo({
url:"/pages_subpack/business-settled/index"
url:"/pages_subpack/enterprise/index"
})
},
onMasterSettled(){
uni.navigateTo({
url:"/pages_subpack/master-settled/index"
onJump(){
uni.switchTab({
url:"/pages/home/index"
})
}
}


+ 48
- 23
pages/login/index.vue View File

@ -3,7 +3,7 @@
<view class="se-pt-200 se-flex se-flex-h-c se-flex-ff-cw">
<image class="se-w-150 se-h-150" src="@/static/image/logo.png" mode=""></image>
<view class="se-flex se-flex-h-c se-fs-34 se-fw-6 se-c-black se-mt-40">
用工平台小程序
智选猎头
</view>
<view class="se-mt-20 se-fs-26 se-c-black se-flex se-flex-h-c">
申请获取您的头像昵称
@ -23,17 +23,16 @@
<input type="nickname" placeholder="请输入昵称" v-model="nameUser"
@blur="bindblur" class="se-h-80 se-lh-80 se-w-320 se-fs-24 se-ta-r" placeholder-class="se-fs-24 se-ta-r" />
</view>
<!-- <view class=" se-b-b se-flex se-h-140 se-lh-140 se-flex-h-sb">
<view class=" se-b-b se-flex se-h-140 se-lh-140 se-flex-h-sb">
<text>手机号</text>
<button v-if="phone" class="default-btn se-h-100 se-p-0 se-m-0" open-type="getPhoneNumber" @getphonenumber="onPhonenumber">{{phone}}</button>
<button v-else class="se-w-140 se-h-60 se-lh-60 se-fs-20 se-bgc-green se-c-white se-py-0 se-br-30 se-px-20 se-m-0" open-type="getPhoneNumber" @getphonenumber="onPhonenumber">
<button v-else class="se-w-140 se-h-60 se-lh-60 se-fs-20 se-bgc-orange se-c-white se-py-0 se-br-30 se-px-20 se-m-0" open-type="getPhoneNumber" @getphonenumber="onPhonenumber">
获取手机号
</button>
</view> -->
</view>
</view>
<view class="se-mx-40">
<view @click="onUpdateInfo" class="se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-green">
<view @click="onUpdateInfo" class="se-br-40 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-orange">
确认
</view>
</view>
@ -41,7 +40,7 @@
</template>
<script>
import { appletLogin } from "@/common/api.js"
import { updateUserInfo,bindPhone,userInfoDetail,getSessionKey } from "@/common/api.js"
export default {
name : 'Login',
data() {
@ -49,18 +48,44 @@
nameUser:"",
imagUrl:"",
phone:"",
back:0
back:0,
code:""
}
},
onLoad(options) {
console.info(options)
// this.onSessionKey()
if(options.back==1){
this.imagUrl = uni.getStorageSync('userInfo').headImage
this.nameUser = uni.getStorageSync('userInfo').nickName
this.phone = uni.getStorageSync('userInfo').phone
this.back = options.back
this.onUserInfo()
}
},
methods: {
onSessionKey(){
// let that = this
// uni.login({
// success(res) {
// that.code = res.code
// getSessionKey({code:res.code}).then(response=>{
// uni.setStorageSync('sessionKey',response.result)
// }).catch(error=>{
// })
// }
// })
},
onUserInfo(){
let params={}
userInfoDetail(params).then(response=>{
console.info("userInfoDetail",response.result)
this.imagUrl=response.result.headImage
this.nameUser=response.result.nickName?response.result.nickName:"微信昵称"
this.phone=response.result.phone?response.result.phone:""
}).catch(error=>{
})
},
bindblur(event) {
this.nameUser = event.target.value
},
@ -75,15 +100,14 @@
var detail = event.detail;
if(detail.errMsg=='getPhoneNumber:ok'){
let params={
code : detail.code,
phoneCode : detail.code,
encryptedData: detail.encryptedData,
iv:detail.iv,
sessionKey: uni.getStorageSync('sessionKey'),
openid:uni.getStorageSync('userInfo').appletOpenid
}
bindPhone(params).then((response) => {
console.info(response)
that.phone = response.result
let obj = JSON.parse(response.result)
that.phone = obj.phone_info.phoneNumber
}).catch(error=>{
})
@ -102,15 +126,16 @@
}
let params={
code : res.code,
headimgurl:that.imagUrl,
headImage:that.imagUrl,
nickName:that.nameUser,
openid:uni.getStorageSync('userInfo').appletOpenid
// phone:that.phone
openid:uni.getStorageSync('userInfo').appletOpenid,
phone:that.phone
}
// &&that.phone
if(that.imagUrl&&that.nameUser){
appletLogin(params).then((response) => {
if(this.back==1){
//
if(that.imagUrl&&that.nameUser&&that.phone){
updateUserInfo(params).then((response) => {
console.info("updateUserInfo",response)
if(that.back==1){
uni.navigateBack({
delta:1
})
@ -125,7 +150,7 @@
}else{
return uni.showToast({
icon:"none",
title:"头像和昵称不能为空!"
title:"头像,昵称和手机号不能为空!"
})
}
}


+ 91
- 31
pages/order/component/enterprise.vue View File

@ -17,41 +17,45 @@
@click="tabClick"></u-tabs>
</u-sticky>
<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 20" :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">
<text>工装石膏板搬运</text>
<view class="se-flex" @click="onOrderDetail(items)">
<text>{{items.workName}}</text>
<u-icon name="arrow-right"></u-icon>
</view>
<view class="se-c-red">
已完成
{{items.status_dictText}}
</view>
</view>
<view class="se-flex">
<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="https://cdn.uviewui.com/uview/album/1.jpg" mode=""></image>
<image class="se-w-160 se-h-160 se-br-10" :src="items.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">泰山工装石膏板搬运</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-fw-6 se-c-black se-fs-30 se-display-ib">{{items.title}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属行业:{{items.categoryOne}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属工:{{items.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">
<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>{{items.payMoney}}</text>
</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" @click="callPhone(items)">
<text>联系客服</text>
</view>
</view>
</view>
<u-empty v-if="list && list.length==0" mode="list"></u-empty>
</view>
</view>
</template>
<script>
import {
bossOrderList
} from "@/common/api.js"
export default{
components:{
@ -60,41 +64,97 @@
return{
current:0,
nav: [
{
{
name: '全部',
}, {
index: null
},
{
name: '待聘用',
}, {
name: '待进行'
}, {
name: '待确认'
index: 0
},
{
name: '已接单',
index: 1
},
{
name: '进行中',
index: 2
},
{
name: '试工完成',
index: 3
},
{
name: '待支付'
name: '企业确认',
index: 4
},
{
name: '已支付',
index: 5
},
{
name: '已完成'
name: '已完成',
index: 6
},
{
name: '已取消'
name: '已取消',
index: 7
},
{
name: '发起支付',
index: 8
}
],
list:[
{},
{},
{},
{},
{},
{},
{},
{},
{},
]
list:[],
orderStatus:null,
pageNo:1,
pageSize:20,
}
},
mounted() {
this.onOrder();
},
methods:{
onOrder(){
let that = this;
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){
that.list = response.result.records
}else{
that.list = that.list.concat(response.result.records)
}
}).catch(error=>{
})
},
tabClick(event){
console.info(event)
this.current = event.index
this.orderStatus = this.nav[event.index].index
this.onOrder()
},
onOrderDetail(event){
uni.navigateTo({
url:"/pages_subpack/order-detail/index?orderId="+event.id
})
},
callPhone(event){
uni.makePhoneCall({
phoneNumber: event.phone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
}
}
}


+ 73
- 18
pages/order/component/master.vue View File

@ -17,7 +17,7 @@
@click="tabClick"></u-tabs>
</u-sticky>
<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 20" :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">
<text>工装石膏板搬运</text>
@ -47,11 +47,15 @@
</view>
</view>
</view>
<u-empty v-if="list && list.length==0" mode="list"></u-empty>
</view>
</view>
</template>
<script>
import {
bossOrderList
} from "@/common/api.js"
export default{
components:{
@ -62,42 +66,93 @@
nav: [
{
name: '全部',
},
index: null
},
{
name: '待接单',
index: 0
},
{
name: '待进行'
name: '已接单',
index: 1
},
{
name: '待确认'
name: '进行中',
index: 2
},
{
name: '试工完成',
index: 3
},
{
name: '待支付'
name: '企业确认',
index: 4
},
{
name: '已支付',
index: 5
},
{
name: '已完成',
index: 6
},
{
name: '已完成'
name: '已取消',
index: 7
},
{
name: '已取消'
name: '发起支付',
index: 8
}
],
list:[
{},
{},
{},
{},
{},
{},
{},
{},
{},
]
list:[],
orderStatus:null,
pageNo:1,
pageSize:20,
}
},
mounted() {
this.onOrder()
},
methods:{
onOrder(){
let that = this;
let params={
role:1,
status:that.orderStatus,
pageNo:that.pageNo,
pageSize:that.pageSize
}
bossOrderList(params).then(response=>{
if(this.pageNo==1){
this.list = response.result.records
}else{
this.list = this.list.concat(response.result.records)
}
}).catch(error=>{
})
},
tabClick(event){
this.current = event.index
this.orderStatus = this.nav[event.index].index
this.onOrder()
},
onOrderDetail(event){
uni.navigateTo({
url:"/pages_subpack/order-detail/index?orderId="+event.id
})
},
callPhone(event){
uni.makePhoneCall({
phoneNumber: event.phone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
}
}
}


+ 20
- 7
pages/order/index.vue View File

@ -1,15 +1,18 @@
<template>
<view class="u-page se-w-vw-100">
<!-- 企业端 -->
<enterpriseBox v-if="status==1" />
<!-- 师傅端 -->
<masterBox v-if="status==2" />
<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" />
<!--求职订单 -->
<masterBox v-if="current==1" />
</view>
</template>
<script>
import enterpriseBox from "./component/enterprise.vue"
import masterBox from "./component/master.vue"
import enterpriseBox from "./component/enterprise.vue"
export default{
components:{
enterpriseBox,
@ -17,11 +20,21 @@
},
data(){
return{
status:2,
list: [
{
name: '招聘订单'
},
{
name: '求职订单'
}
],
current: 0,
}
},
methods:{
sectionChange(index){
this.current=index
}
}
}
</script>


+ 128
- 32
pages/user/index.vue View File

@ -2,18 +2,26 @@
<view class="u-page">
<view class="se-pt-50 se-pb-120 se-px-40 se-bgc-orange se-c-white se-pos">
<view class="se-flex">
<image :src="headImage" class="se-br-p-50 se-bgc-f5 se-w-100 se-h-100" mode=""></image>
<image :src="user.headImage" class="se-br-p-50 se-bgc-f5 se-w-100 se-h-100" mode=""></image>
<view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">
<view class="se-flex">
<text class="se-fw-6 se-fs-30">{{nickName}}</text>
<view class="se-flex se-flex-ai-c se-ml-20">
<text class="se-fw-6 se-fs-30">{{user.nickName}}</text>
<view class="se-flex se-flex-ai-c se-ml-20" @click="onEdit()">
<image class="se-a-25 se-mr-10" src="@/static/image/pencil.png" mode=""></image>
<text class="se-fs-22">修改资料</text>
</view>
</view>
<view class="se-fs-24 se-display-ib">
<text>手机号:</text>
<text class="se-ml-20">{{phone}}</text>
<text class="se-ml-20">{{user.phone}}</text>
</view>
<view class="se-fs-24 se-display-ib">
<text class="se-tag se-bgc-gray" v-if="companyAuthenticationStatus==2">企业认证-未通过</text>
<text class="se-tag se-bgc-green" v-if="companyAuthenticationStatus==1">企业认证-已通过</text>
<text class="se-tag se-bgc-active" v-if="companyAuthenticationStatus==0">企业认证-审核中</text>
<text class="se-tag se-bgc-gray" v-if="personAuthenticationStatus==2">个人认证-未通过</text>
<text class="se-tag se-bgc-green" v-if="personAuthenticationStatus==1">个人认证-已通过</text>
<text class="se-tag se-bgc-active" v-if="personAuthenticationStatus==0">个人认证-审核中</text>
</view>
</view>
</view>
@ -31,7 +39,7 @@
我的余额
</view>
<view class="se-fs-30 se-display-ib se-pt-20" style="color: #DC2828;">
{{myMoney}}
{{amount}}
</view>
</view>
</view>
@ -51,8 +59,9 @@
</view>
</view>
<view class="se-px-40 se-py-30 se-mt-80">
<u-swiper height="200rpx" style="background-color: #f5f5f5;height: 200rpx;" :indicator="true" :list="swiperList" keyName="image" @change="changeSwiper" @click="click"></u-swiper>
<!-- <u-swiper :height="100" :list="list" @click="swiperClick"></u-swiper> -->
<image class="se-h-200 se-w-p-100" src="@/static/image/59.png" mode=""></image>
<!-- <image class="se-h-200 se-w-p-100" src="@/static/image/59.png" mode=""></image> -->
</view>
<view class="se-p-20 se-mx-40 se-mt-20 se-br-20 se-bgc-white">
<view class="se-flex se-flex-ai-c se-pb-20">
@ -62,27 +71,45 @@
</view>
</view>
<view class="se-grid">
<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>
</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="onPerson()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-70" src="@/static/image/user2.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="onResume()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-70" src="@/static/image/user3.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="onCustomerService()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-50" src="@/static/image/setting.png" mode=""></image>
<image class="se-a-70" src="@/static/image/user4.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="onSystem()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-50" src="@/static/image/setting.png" mode=""></image>
<image class="se-a-70" src="@/static/image/user5.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="onFeedback()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-50" src="@/static/image/setting.png" mode=""></image>
<image class="se-a-70" src="@/static/image/user6.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="onVersion()">
<view class="se-w-80 se-h-80 se-flex se-flex-v-c">
<image class="se-a-50" src="@/static/image/setting.png" mode=""></image>
<image class="se-a-70" src="@/static/image/user7.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>
@ -93,11 +120,18 @@
<script>
import {
userInfo
userInfo,
userInfoDetail,
bannerList
} from "@/common/api.js"
export default {
data() {
return {
amount:0,
companyAuthenticationStatus:null,//
personAuthenticationStatus:null,//
user:{},
swiperList:[],
list: [
'@/static/image/59.png'
],
@ -117,21 +151,49 @@
},
onShow() {
this.onUserInfo()
this.onBannerList()
this.onUserInfoDetail()
},
methods: {
onEdit(){
uni.navigateTo({
url:"/pages/login/index?back=1"
})
},
onBannerList(){
bannerList({type:1}).then(response=>{
this.swiperList = response.result.records
}).catch(error=>{
})
},
onUserInfoDetail(){
let params = {}
userInfoDetail(params).then(response=>{
console.info("userInfoDetail",response)
this.user = response.result
}).catch(error=>{
})
},
onUserInfo(){
let params={}
userInfo(params).then(response=>{
console.info("userInfo",response)
this.id=response.result.id
this.headImage=response.result.headImage
this.myMoney=response.result.myMoney?response.result.myMoney:0
this.nickName=response.result.nickName?response.result.nickName:"微信昵称"
this.phone=response.result.phone?response.result.phone:""
this.worker=response.result.worker?response.result.worker:""
this.boss=response.result.boss?response.result.boss:""
this.company=response.result.company?response.result.company:""
this.amount = response.result.amount;
this.companyAuthenticationStatus = response.result.companyAuthenticationStatus;
this.personAuthenticationStatus = response.result.personAuthenticationStatus;
console.info("userInfo",response.result)
// this.id=response.result.id
// this.headImage=response.result.headImage
// this.myMoney=response.result.myMoney?response.result.myMoney:0
// this.nickName=response.result.nickName?response.result.nickName:""
// this.phone=response.result.phone?response.result.phone:""
// this.worker=response.result.worker?response.result.worker:""
// this.boss=response.result.boss?response.result.boss:""
// this.company=response.result.company?response.result.company:""
// uni.setStorageSync('company', response.result.company)
// uni.setStorageSync('boss', response.result.boss)
// uni.setStorageSync('worker', response.result.worker)
}).catch(error=>{
})
@ -164,18 +226,41 @@
url:"/pages_subpack/version/index"
})
},
onBusinessSettled(){
uni.navigateTo({
url:"/pages_subpack/business-settled/index"
})
},
//
onPerson(){
uni.navigateTo({
url:"/pages_subpack/person/index"
})
},
//
onEnterprise(){
uni.navigateTo({
url:"/pages_subpack/enterprise/index"
})
},
onResume(){
uni.navigateTo({
url:"/pages_subpack/resume/index"
})
},
changeSwiper(event){
console.info("event",event)
},
onCustomerService(){
uni.showModal({
title: '联系客服',
content: '确定拨打客服电话?',
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
uni.makePhoneCall({
phoneNumber: '13185644852',
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
}
}
}
@ -192,4 +277,15 @@
gap: 10rpx;
padding-bottom: 4rpx;
}
.se-tag{
margin-right: 10rpx;
margin-top: 5px;
padding: 5rpx 10rpx;
border-radius: 4rpx;
border: 2rpx solid rgba(0,0,0,0.00);
font-size: 16rpx;
font-family: PingFang SC, PingFang SC-Bold;
font-weight: 700;
text-align: center;
}
</style>

+ 6
- 1
pages_subpack/business-settled/component/enterprise.vue View File

@ -190,7 +190,12 @@
businessLicense:that.form.businessLicenseFile.map(item => item.url).join(','),
}
roleBoss(params).then(response=>{
uni.$u.toast("提交成功,等待申请")
setTimeout(()=>{
uni.switchTab({
url:"/pages/home/index"
})
},1500)
}).catch(error=>{
// uni.$u.toast("")
setTimeout(()=>{


+ 317
- 0
pages_subpack/category/index.vue View File

@ -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>

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

@ -28,13 +28,18 @@
export default{
data(){
return{
id:null
}
},
onLoad(options) {
console.info("求职者订单详情:"+options.id)
this.id = options.id
},
methods:{
onOrderDetail(){
let that = this;
uni.navigateTo({
url:"/pages_subpack/order-detail/index"
url:"/pages_subpack/job-order-detail/index?orderId="+that.id
})
},
onCancel(){


+ 329
- 0
pages_subpack/enterprise/index.vue View File

@ -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>

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

@ -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">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>
</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精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 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>

+ 45
- 17
pages_subpack/master-detail/index.vue View File

@ -3,20 +3,20 @@
<view class="se-flex se-flex-h-sb se-p-40">
<view class="se-flex">
<view>
<image class="se-a-120 se-br-p-50" src="https://cdn.uviewui.com/uview/album/1.jpg" mode=""></image>
<image class="se-a-120 se-br-p-50" :src="items.employResume.headImage" mode=""></image>
<view class="se-py-10 se-px-20 se-br-12 se-fs-22 se-c-orange se-bgc-ffd se-mt-10 se-fw-6" >
装配电工
{{items.categoryOne}}
</view>
</view>
<view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">
<text class="se-fw-6 se-c-black se-fs-30">李志</text>
<text class="se-fs-24 se-c-text-third">性别:</text>
<text class="se-fs-24 se-c-text-third">年龄:32</text>
<text class="se-fs-24 se-c-text-third">所属工种:水泥搬运工</text>
<text class="se-fw-6 se-c-black se-fs-30">{{items.employResume.name}}</text>
<text class="se-fs-24 se-c-text-third">性别:{{items.employResume.sex==1?"":"女"}}</text>
<text class="se-fs-24 se-c-text-third">年龄:{{items.employResume.age}}</text>
<text class="se-fs-24 se-c-text-third">所属工种:{{items.categoryTwo}}</text>
</view>
</view>
<view class="se-c-orange se-fs-32 se-fw-6">
6000-11000
{{items.salaryMin}}-{{items.salaryMax}}
</view>
</view>
<view class="se-px-40 se-pt-40 se-fs-26">
@ -25,7 +25,7 @@
联系电话
</view>
<view>
13189698114
{{items.employResume.phone}}
</view>
</view>
<view class="se-flex se-py-10">
@ -33,7 +33,7 @@
结算方式
</view>
<view>
直接支付日薪
{{items.payType}}
</view>
</view>
<view class="se-flex se-py-10">
@ -41,7 +41,7 @@
出行方式
</view>
<view>
地铁(4)
{{items.selectGo}}
</view>
</view>
<view class="se-flex se-py-10">
@ -49,7 +49,7 @@
出发地址
</view>
<view>
深圳罗湖区深圳市百货广场大厦罗湖区百货广场大厦栋...
{{items.address}}
</view>
</view>
<view class="se-b se-mt-20"></view>
@ -59,7 +59,7 @@
个人介绍
</view>
<view class="se-fs-24 se-pt-20 se-pb-20 se-lh-40">
<u-parse :content="detail"></u-parse>
<u-parse :content="items.workDetail"></u-parse>
<!-- <text v-html="detail"></text> -->
</view>
</view>
@ -73,14 +73,22 @@
</view>
</view>
</template>
<!--
1全日制大专以上学历艺术设计类相关专业;
2两年以上平面品牌视觉设计等相关工作经验能独立完成项目的设计工作 3C数码/个护健 类产品服务经验优先有乙方工作经验佳;
3具备一定的设计提案能力能完整的呈现设计思路与创意能清晰的表达设计逻辑与思考;
4热爱设计平面基本功扎实拥有优良的审美与创意想法对版式色彩把控能力强;对工作富有责任心具备团队沟通与协作能力;
5精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 PPT/Keynote能完成提案内容的材料美化工作
-->
<script>
import {
getTaskById
querySeekById,addOrderJob
} from "@/common/api.js"
export default{
data(){
return{
items:{},
detail:`<p>
1全日制大专以上学历艺术设计类相关专业;<br/>
2两年以上平面品牌视觉设计等相关工作经验能独立完成项目的设计工作 3C数码/个护健 类产品服务经验优先有乙方工作经验佳;<br/>
@ -98,8 +106,8 @@
methods:{
onTask(){
let that = this
getTaskById({id:that.id}).then(response=>{
console.info('getTaskById',response);
querySeekById({id:that.id}).then(response=>{
console.info('querySeekById',response);
that.items = response.result
}).catch(error=>{
@ -107,9 +115,29 @@
},
onEmploy(){
console.info(`立即聘用`)
uni.navigateTo({
url:"/pages_subpack/employ-progress/index"
addOrderJob({id:this.id}).then(response=>{
console.log("聘用成功");
// uni.navigateTo({
// url:"/pages_subpack/payment/index?id="+response.result.id
// })
uni.navigateTo({
url:"/pages_subpack/employ-progress/index?id="+response.result.id
})
}).catch(error=>{
})
}
}
}


+ 44
- 0
pages_subpack/notice/index.vue View File

@ -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>

+ 63
- 19
pages_subpack/order-detail/index.vue View File

@ -4,7 +4,7 @@
<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>
<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>
@ -95,41 +95,44 @@
</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="https://cdn.uviewui.com/uview/album/1.jpg" mode=""></image>
<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">泰山工装石膏板搬运</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-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">6000</view>
<view class="se-c-orange se-fs-32 se-fw-6 se-display-ib">{{obj.jobMoney}}</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">姓名:李满和</text>
<text class="se-fs-24 se-c-text-third se-ml-40">联系方式:13189698114</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">
<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.workName}}</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">工作地址:湖南省长沙市雨花区高升路与时代阳光大道西交叉口东北方向140米御天国际商汇中心5栋6023</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">
<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>
@ -141,11 +144,12 @@
</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">试用以后支付</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">3h</view>
<view class="se-fs-24 se-display-ib">{{obj.startTime}} - {{obj.endTime}}</view>
</view>
</view>
<u-line dashed></u-line>
@ -154,7 +158,7 @@
工作内容
</view>
<view class="se-fs-24 se-pt-20 se-pb-20 se-lh-40">
<u-parse :content="detail"></u-parse>
<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">
@ -168,10 +172,13 @@
</template>
<script>
import {
orderDetail
} from "@/common/api.js"
export default{
data(){
return{
stepsIndex:4,
stepsIndex:1,
stepsList:[
{
title:"接单",
@ -204,13 +211,41 @@
3具备一定的设计提案能力能完整的呈现设计思路与创意能清晰的表达设计逻辑与思考;<br/>
4热爱设计平面基本功扎实拥有优良的审美与创意想法对版式色彩把控能力强;对工作富有责任心具备团队沟通与协作能力;<br/>
5精通 PSAICDR 等平面设计软件能独立完成日常平面设计工作内容熟练使用 PPT/Keynote能完成提案内容的材料美化工作<br/>
</p>`
</p>`,
obj:{}
}
},
mounted() {
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
@ -218,6 +253,15 @@
},
onService(){
console.info(`联系客服`)
uni.makePhoneCall({
phoneNumber: this.obj.workPhone,
success: () => {
console.log("拨打成功");
},
fail: (err) => {
console.error("拨打失败", err);
},
})
},
onsubmit(){
console.info(`确认`)


+ 115
- 25
pages_subpack/payment/index.vue View File

@ -3,20 +3,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-w-160 se-h-160">
<image class="se-w-160 se-h-160 se-br-10" :src="items.workPic" mode=""></image>
<image class="se-w-160 se-h-160 se-br-10" :src="items.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">{{items.title}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属行业:{{items.industryName}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属行业:{{items.categoryOne}}</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">工作时间:{{items.workTime}}</view>
<view class="se-fs-24 se-c-text-third se-display-ib">所属工种:{{items.categoryTwo}}</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">
<image class="se-a-30" src="@/static/image/46502.png" mode=""></image>
<text class="se-c-black se-fs-32 se-ml-20">{{items.userName}}</text>
<text class="se-c-black se-fs-32 se-ml-20">{{items.bossPhone}}</text>
<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>
<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">
<text class="se-c-black se-fs-28">联系地址{{items.workAddress}}</text>
@ -35,13 +35,13 @@
v-model="payRadio"
iconPlacement="right">
<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">
<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-text-third se-fs-28 se-ml-15">(余额10)</text>
<text class="se-c-text-third se-fs-28 se-ml-15">(余额{{myMoney}})</text>
</view>
</u-radio> -->
</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>
@ -54,61 +54,151 @@
<view class="se-mt-10 se-py-10 se-br-20">
<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>
<u-checkbox-group @change="checkboxChange" v-model="checked">
<u-checkbox name="true" activeColor="#ff7a31" label-size="12" shape="circle" label="阅读并同意"></u-checkbox>
</u-checkbox-group>
<!-- <u-checkbox v-model="checked" activeColor="#ff7a31" label-size="12" shape="circle" label="阅读并同意"></u-checkbox> -->
<text class="se-c-orange" @click="show=true">用户使用协议</text>
</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-fs-32 se-c-black se-ml-30">
<view class="se-fs-32 se-c-black se-ml-30" @click="onDetail()">
<text class="se-fs-24">合计</text>
<text class="se-c-orange">{{amount}}</text>
<text class="se-c-orange">{{items.payMoney}}</text>
</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="onPay()" class="se-mr-30 se-w-240 se-h-80 se-lh-80 se-ta-c se-c-white se-fs-32 se-br-40 se-bgc-orange">
立即支付
</view>
</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-flex se-flex-h-c se-fs-34 se-fw-6 se-c-black se-mt-0">
用户使用协议
</view>
<view class="se-lh-40 se-mt-40 se-fs-24 se-c-99">
<u-parse :content="getValueByName('yhsyxx')"></u-parse>
</view>
<view class="se-flex se-flex-h-sb se-mt-40">
<view @click="show=false" class="se-br-20 se-flex-1 se-flex-h-c se-h-80 se-lh-80 se-ta-c se-fs-32 se-c-white se-bgc-orange">
<text>确认</text>
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
import {
getTaskById,orderTask
getTaskById,orderTask,orderDetail,userInfo,payOrder
} from "@/common/api.js"
export default{
data(){
return{
show:false,
id:"",
checked:[],
myMoney:"",//
items:{},
amount:"9.9",
payRadio:"1"
payRadio:"1",
sysList:[]
}
},
onLoad(options) {
// this.sysList = uni.getStorageSync('sysList')
console.info(options)
this.id = options.id
this.onTask()
this.onOrderTask()
this.getOrderDetail()
this.onUserInfo()
},
methods:{
onOrderTask(){
orderTask({taskId:this.id}).then(response=>{
console.info('orderTask',response)
getValueByName(name) {
const item = this.sysList.find((item) => item.name == name);
return item ? item.value : "";
},
onUserInfo(){
let params={}
userInfo(params).then(response=>{
console.info("userInfo",response)
this.myMoney=response.result.myMoney?response.result.myMoney:0
}).catch(error=>{
})
},
onTask(){
let that = this
getTaskById({id:that.id}).then(response=>{
console.info('getTaskById',response);
that.items = response.result
checkboxChange(n) {
console.log('change', n);
},
getOrderDetail(){
orderDetail({orderId:this.id}).then(response=>{
console.info('orderDetail',response)
this.items = response.result
}).catch(error=>{
})
},
onPay(){
let that = this
console.info(that.checked)
if(that.checked.length==0){
return uni.showToast({
icon: "none",
title: "请勾选隐私协议"
})
}
console.info(that.payRadio)
if(that.payRadio==1){
payOrder({orderId:that.id}).then(res=>{
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=>{
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(e) {
console.info(e)
}
})
}).catch(error=>{
})
}
},
onDetail(){
uni.navigateTo({
url:"/pages_subpack/order-detail/index"
url:"/pages_subpack/order-detail/index?orderId="+this.id
})
}
}


+ 361
- 0
pages_subpack/person/index.vue View File

@ -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>

+ 46
- 12
pages_subpack/record/index.vue View File

@ -52,14 +52,15 @@
<view class="se-b-b se-m-20 se-py-20 se-px-20 se-flex-h-sb" v-for="(items,indexs) in records" :key="indexs" @click="onMasterDetail(items)">
<view class="se-flex se-flex-v">
<view class="se-flex">
<text class="se-fw-6 se-c-33 se-fs-30">{{items.desc}}</text>
<text class="se-fw-6 se-c-33 se-fs-30">{{items.title}}</text>
</view>
<view class="se-c-text-third se-fs-22 se-mt-20">
<text >{{items.createTime}}</text>
</view>
</view>
<view class="se-c-33 se-fs-30 se-fw-5">
{{items.money}}
<view class="se-c-33 se-fs-30 se-fw-5" :class="items.type==0?'se-c-red':'se-c-green'">
{{items.type==0?'-':'+'}}
{{items.amount}}
</view>
</view>
@ -73,7 +74,9 @@
<script>
import {
payLog
payLog,
CountCashOut,
queryBalance
} from "@/common/api.js"
export default{
data(){
@ -100,27 +103,58 @@
}
},
mounted() {
this.startTime = this.$dayjs().valueOf();
this.startDate = this.$dayjs().format('YYYY-MM-DD')
this.startTime = this.$dayjs().subtract(1, 'day').valueOf();
this.startDate = this.$dayjs().subtract(1, 'day').format('YYYY-MM-DD')
this.endTime = this.$dayjs().valueOf();
this.endDate = this.$dayjs().format('YYYY-MM-DD')
console.info(this.$dayjs().format('YYYY-MM-DD'))
this.onPayLog();
this.onCountCashOut()
this.onQueryBalance()
},
onReachBottom() {
let that = this
that.pageNo = that.pageNo + 1
that.onPayLog()
},
methods:{
onCountCashOut(){
let that = this
let params={}
CountCashOut(params).then(response=>{
console.info("CountCashOut",response)
that.moneyLog = response.result
}).catch(error=>{
})
},
onQueryBalance(){
let that = this
let params={}
queryBalance(params).then(response=>{
console.info("queryBalance",response)
that.money = response.result
}).catch(error=>{
})
},
onPayLog(){
let that = this
let params = {
pageNo:that.pageNo,
pageSize:that.pageSize,
startTime:that.startTime,
endTime:that.endTime
startTime:that.startDate+" 00:00:00",
endTime:that.endDate+" 23:59:59",
userId:uni.getStorageSync('userInfo').id
}
payLog(params).then(response=>{
console.info("payLog",response)
that.money = response.result.money?response.result.money:0
that.moneyLog = response.result.moneyLog?response.result.moneyLog:0
that.records = response.result.log.records
// that.money = response.result.money?response.result.money:0
// that.moneyLog = response.result.moneyLog?response.result.moneyLog:0
if(that.pageNo==1){
that.records = response.result.records
}else{
that.records = that.records.concat(response.result.records)
}
}).catch(error=>{
})


+ 66
- 40
pages_subpack/release/component/enterprise.vue View File

@ -14,16 +14,20 @@
<u-form-item labelWidth="0" prop="title">
<u--input v-model="form.title" placeholder="请在此输入标题"></u--input>
</u-form-item>
<u-form-item label="工作地点" prop="area" @click="handleAreaChange">
<u--input @click="handleAreaChange" readonly v-model="form.area" placeholder="请选择工作地点"
<u-form-item label="工作地点" prop="area" @click="handleAreaChange()">
<u--input readonly v-model="form.area" placeholder="请选择工作地点"
border="none"></u--input>
<u-icon @click="handleAreaChange" slot="right" name="arrow-right"></u-icon>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
<!-- <u-form-item label="请选择地址" class="se-b-b" prop="area" @click="handleAreaChange()">
<u--input readonly v-model="form.area" placeholder="请选择地址" border="none"></u--input>
<u-icon slot="right" name="arrow-right" ></u-icon>
</u-form-item> -->
<!-- <u-form-item label="详细地址" prop="address">
<u--textarea v-model="form.address" count
placeholder="请输入详细地址"></u--textarea>
</u-form-item> -->
<u-form-item label="所属行业" prop="industryName" @click="handleindustryChange">
<u-form-item label="所属行业" prop="industryId" @click="handleindustryChange">
<u--input @click="handleindustryChange" readonly v-model="form.industryName" placeholder="请选择行业"
border="none"></u--input>
<u-icon @click="handleindustryChange" slot="right" name="arrow-right"></u-icon>
@ -123,6 +127,7 @@
</template>
<script>
import QQMapWX from "@/util/qqmap-wx-jssdk.min.js"
import { addTask,industryList,industryById } from "@/common/api.js"
import citySelect from '@/components/cityselect/index.vue'
export default {
@ -148,30 +153,26 @@
showType: false,
typeList: [],
form: {
title:"宜佳营业员",
area:'河北省-秦皇岛市-抚宁区',
title:"",
area:'',
address:'',
industryId:"1865294357074157570",
industryName:"建筑",
settlement:'0',
industryId:"",
industryName:"",
settlement:'',
date:"",
dateMin:"2016-02-01 09:00:00",
dateMax:"2016-12-05 18:00:00",
mobile: '13189698114',
dateMin:"",
dateMax:"",
mobile: '',
typeId: '',
typeName:"",
salary:'',
dayMoney:"300",
salaryMin: '6000',
salaryMax: '8000',
introduce: '宜佳营业员,每天工作8个小时,上班轻松!',
fileList: [
{
url: "https://tennis-oss.xzaiyp.top/2024-12-31/4b65131c-41f8-4714-a31e-491d08dfb8c4.jpg"
}
],
latitude:'12.34',
longitude:"146.74"
dayMoney:"",
salaryMin: '',
salaryMax: '',
introduce: '',
fileList: [],
latitude:'',
longitude:""
},
rules: {
title:[
@ -339,7 +340,36 @@
this.showMaxDate = false
},
handleAreaChange(){
this.showPicker = true
const that = this;
wx.chooseLocation({
// type: 'wgs84',
success: function (res) {
const qqmapsdk = new QQMapWX({
key: 'TT7BZ-Z3LW4-KOAUB-KWHOA-SBJJ6-Y5B6R' //
});
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.area = response.result.address
},
fail: function(error) {
uni.hideLoading()
console.error('逆地理编码失败:', error);
}
});
}
})
// this.showPicker = true
},
handleCityChange(e) {
console.info(e)
@ -376,42 +406,38 @@
this.$refs.uForm.validateField('typeId')
},
submit() {
console.info(this.form)
this.$refs.uForm.validate().then(res => {
this.onaddTask()
// uni.$u.toast('')
}).catch(errors => {
// uni.$u.toast('')
})
},
onaddTask(){
let that = this
let params ={
"bossPhone": that.form.mobile,//
"dayMoney": that.form.dayMoney,//
"phone": that.form.mobile,//
"salaryDay": that.form.dayMoney,//
"endTime": that.form.dateMax,
// "industryId": that.form.industryId,
// "industryName": that.form.industryName,
"industryId": that.form.typeId,
"industryName": that.form.typeName,
"categoryOne": that.form.industryId,
"categoryTwo": that.form.typeId,
"latitude": that.form.latitude,
"longitude": that.form.longitude,
"moneymax": that.form.salaryMax,//
"moneymin": that.form.salaryMin,//
"salaryMax": that.form.salaryMax,//
"salaryMin": that.form.salaryMin,//
"payType": that.form.settlement,// 0 1
"startTime": that.form.dateMin,
"title": that.form.title,//
"workAddress": that.form.area,//
"workDetail": that.form.introduce,
"workPic": that.form.fileList.map(item => item.url).join(','),//
"address": that.form.area,//
"details": that.form.introduce,
"image": that.form.fileList.map(item => item.url).join(','),//
}
// 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=>{
console.info("response",response)
uni.$u.toast("提交成功!")
setTimeout(()=>{
uni.switchTab({
url:"/pages/home/index"
uni.navigateBack({
delta:1
})
},1500)
}).catch(error=>{


+ 47
- 12
pages_subpack/release/component/master.vue View File

@ -15,8 +15,8 @@
<u--input @click="handleindustryChange" readonly v-model="form.industry" placeholder="请选择行业" border="none"></u--input>
<u-icon @click="handleindustryChange" slot="right" name="arrow-right"></u-icon>
</u-form-item>
<u-form-item label="所属工种" class="se-b-b" prop="type" @click="handleTypeChange">
<u--input @click="handleTypeChange" v-model="form.type" readonly placeholder="请选择工种"
<u-form-item label="所属工种" class="se-b-b" prop="typeName" @click="handleTypeChange">
<u--input @click="handleTypeChange" v-model="form.typeName" readonly placeholder="请选择工种"
border="none"></u--input>
<u-icon @click="handleTypeChange" slot="right" name="arrow-right"></u-icon>
</u-form-item>
@ -45,9 +45,9 @@
<u--input v-model="form.salaryMax" type="number" class="se-w-200" placeholder="最大值"></u--input>
</view>
</u-form-item>
<u-form-item label="日薪" prop="dailywage">
<u-form-item label="日薪" prop="dayMoney">
<view class="se-flex se-flex-h-c">
<u--input v-model="form.dailywage" type="number" class="se-w-200" placeholder="固定值"></u--input>
<u--input v-model="form.dayMoney" type="number" class="se-w-200" placeholder="固定值"></u--input>
</view>
</u-form-item>
<!-- <u-form-item label="时间" prop="date">
@ -87,7 +87,7 @@
<script>
import QQMapWX from "@/util/qqmap-wx-jssdk.min.js"
import { industryById,industryList } from "@/common/api.js"
import { industryById,industryList,addTask2,addSeek } from "@/common/api.js"
export default {
components:{
@ -130,6 +130,7 @@
form: {
title:"",
area:'',
selectGo:"出租车",
address:'',
industryId:"",
industry:"",
@ -139,11 +140,11 @@
dateMax:"",
mobile: '',
typeId:"",
type: '',
typeName: '',
salary:'',
salaryMin: '',
salaryMax: '',
dailywage:'',
dayMoney:'',
introduce: '',
longitude:'',
latitude:''
@ -288,6 +289,7 @@
items.select=false
})
this.travelList[index].select = !this.travelList[index].select
this.form.selectGo = this.travelList[index].text
},
handleAreaChange(){
@ -343,17 +345,50 @@
},
typeSelect(e) {
this.form.typeId = e.id
this.form.type = e.name
this.form.typeName = e.name
this.$refs.uForm.validateField('type')
},
submit() {
console.info(this.form)
this.$refs.uForm.validate().then(res => {
uni.$u.toast('校验通过')
let that = this
that.$refs.uForm.validate().then(res => {
that.onAddTask()
}).catch(errors => {
// uni.$u.toast('')
})
}
},
onAddTask(){
let that = this
let params ={
"phone": that.form.mobile,//
"dayMoney": that.form.dayMoney,//
"selectGo": that.form.selectGo,//
// "endTime": that.form.dateMax,
"categoryOne": that.form.industryId,
"categoryTwo": that.form.typeId,
"latitude": that.form.latitude,
"longitude": that.form.longitude,
"salaryMax": that.form.salaryMax,//
"salaryMin": that.form.salaryMin,//
"payType": that.form.settlement,// 0 1
// "startTime": that.form.dateMin,
// "title": that.form.title,//
"address": that.form.area,//
"workDetail": that.form.introduce,
// "workPic": that.form.fileList.map(item => item.url).join(','),//
}
// let p={"bossPhone":"13189698115","dayMoney":"500","endTime":"2016-01-01 00:00:00","industryId":"1865299999310622721","industryName":"","latitude":28.23529,"longitude":112.93134,"moneymax":"15000","moneymin":"12000","payType":"1","startTime":"2015-01-01 00:00:00","title":"","workAddress":"517","workDetail":"","workPic":"https://tennis-oss.xzaiyp.top/2025-02-19/341d669a-ef66-4abb-8b98-ac71c08814c9.jpg"}
addSeek(params).then(response=>{
// console.info("response",response)
uni.$u.toast("提交成功!")
setTimeout(()=>{
uni.navigateBack({
delta:1
})
},1500)
}).catch(error=>{
})
},
},
onReady() {
this.$refs.uForm.setRules(this.rules)


pages_subpack/master-settled/index.vue → pages_subpack/resume/index.vue View File

@ -15,6 +15,14 @@
<u-form-item label="年龄" prop="age">
<u--input v-model="form.age" class="se-bgc-f5" placeholder="请输入年龄"></u--input>
</u-form-item>
<u-form-item label="名族" prop="nation">
<u--input v-model="form.nation" 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="sex" @click="handleSexChange">
<u--input @click="handleSexChange" readonly v-model="form.sex" placeholder="请选择性别"
border="none"></u--input>
@ -32,7 +40,7 @@
</view>
</u-form-item>
<u-form-item label="个人介绍" prop="introduce">
<u--textarea v-model="form.introduce" count class="se-bgc-f5"
<u--textarea v-model="form.introduce" height="100" count maxlength="300" class="se-bgc-f5"
placeholder="请选择个人介绍"></u--textarea>
</u-form-item>
</view>
@ -44,12 +52,11 @@
<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.idCardFile" @afterRead="afterRead" @delete="deletePic"
name="1" multiple :maxCount="10"></u-upload>
<u-upload :fileList="form.idCardFile" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="10"></u-upload>
</view>
</view>
</u-form-item>
@ -57,37 +64,38 @@
</view>
<view class="se-px-20 se-pt-20">
<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>申请审核</text>
<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>保存</text>
</view>
<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>
</view>
</u--form>
<!-- 性别 -->
<u-action-sheet :show="showSex" :actions="sexList" title="请选择性别" @close="showSex = false" @select="sexSelect">
</u-action-sheet>
<u-action-sheet :show="showSex" :actions="sexList" title="请选择性别" @close="showSex = false" @select="sexSelect"></u-action-sheet>
<!-- 种类 -->
<u-action-sheet :show="showType" :actions="typeList" title="请选择种类" @close="showType = false"
@select="typeSelect">
</u-action-sheet>
<u-action-sheet :show="showType" :actions="typeList" title="请选择种类" @close="showType = false" @select="typeSelect"></u-action-sheet>
</view>
</template>
<script>
import {
role,
industryList
industryList,
updateRole,
queryResumeById,
updateResume,
addResume
} from "@/common/api.js"
export default {
data() {
return {
showSex: false,
sexList: [{
sexList: [
{
name: '男',
},
{
@ -98,23 +106,20 @@
typeList: [],
fileList: [],
form: {
name: '张三',
id:"",
name: '',
password: '',
mobile: '13189698114',
age: '23',
sex: '男',
industryId: '1865037318519398402',
industryName: "餐饮",
mobile: '',
address:"",
age: '',
sex: '',
industryId: '',
industryName: "",
salary: '',
salaryMin: '1800',
salaryMax: '2400',
introduce: '张三的个人简介',
idCard: '',
idCardFile: [
{
url:"https://tennis-oss.xzaiyp.top/2024-12-22/7af6b40f-96f9-4656-9eff-98dce2223699.png"
}
]
salaryMin: '',
salaryMax: '',
introduce: '',
idCardFile: []
},
rules: {
name: [{
@ -123,12 +128,26 @@
message: '请输入姓名名称',
trigger: ['blur', 'change']
}],
nation: [{
type: 'string',
required: true,
message: '请输入名族',
trigger: ['blur', 'change']
}],
industryId: [{
type: 'string',
required: true,
message: '请选择行业',
trigger: ['blur', 'change']
}],
address:[
{
type: 'string',
required: true,
message: '请选择地址',
trigger: ['blur', 'change']
}
],
// password: [{
// type: 'string',
// required: true,
@ -217,7 +236,44 @@
immediate: true
}
},
mounted() {
// let worker = uni.getStorageSync("worker")
let params = {}
queryResumeById(params).then(response=>{
let worker = response.result;
if(worker){
this.form.id = worker.id
this.form.name = worker.name
this.form.mobile = worker.phone
this.form.age = worker.age
this.form.sex = worker.sex==1?'男':'女'
this.form.nation = worker.nation
this.form.introduce = worker.brief
this.form.address = worker.address
this.form.industryId = worker.categoryOne
this.form.industryName = worker.categoryOneName
this.form.salaryMin = worker.salaryMin
this.form.salaryMax = worker.salaryMax
this.form.idCardFile = this.stringToKeyValueArray(worker.headImage)
}
})
},
methods: {
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.showType = true
},
@ -245,33 +301,63 @@
},
onRole() {
let that = this
let params = {
userName: that.form.name,
industryId: that.form.industryId,
industryName: that.form.industryName,
age: that.form.age,
gender: that.form.sex=="男"?1:2,
moneyMin: that.form.salaryMin,
moneyMax: that.form.salaryMax,
phone: that.form.mobile,
detail: that.form.introduce,
idCard: that.form.idCardFile.map(item => item.url).join(','),
if(this.form.id){
let params = {
"id": that.form.id,
"name": that.form.name,
"categoryOne": that.form.industryId,
"categoryOneName": that.form.industryName,
"address":that.form.address,
"nation": that.form.nation,
"age": that.form.age,
"sex": that.form.sex=="男"?1:2,
"salaryMin": that.form.salaryMin,
"salaryMax": that.form.salaryMax,
"phone": that.form.mobile,
"brief": that.form.introduce,
"headImage": that.form.idCardFile.map(item => item.url).join(','),
}
updateResume(params).then(response=>{
uni.$u.toast("保存成功!")
setTimeout(()=>{
uni.navigateBack({
delta:1
})
},1500)
}).catch(error=>{
})
}else{
let params = {
"name": that.form.name,
"categoryOne": that.form.industryId,
"categoryOneName": that.form.industryName,
"address":that.form.address,
"age": that.form.age,
"nation": that.form.nation,
"sex": that.form.sex=="男"?1:2,
"salaryMin": that.form.salaryMin,
"salaryMax": that.form.salaryMax,
"phone": that.form.mobile,
"brief": that.form.introduce,
"headImage": that.form.idCardFile.map(item => item.url).join(','),
}
addResume(params).then(response => {
uni.$u.toast("提交成功,等待申请")
setTimeout(()=>{
uni.switchTab({
url:"/pages/home/index"
})
},1500)
}).catch(error => {
setTimeout(()=>{
uni.switchTab({
url:"/pages/home/index"
})
},1500)
})
}
role(params).then(response => {
uni.$u.toast("提交成功,等待申请")
setTimeout(()=>{
uni.switchTab({
url:"/pages/home/index"
})
},1500)
}).catch(error => {
setTimeout(()=>{
uni.switchTab({
url:"/pages/home/index"
})
},1500)
})
},
submit() {
this.$refs.uForm.validate().then(res => {

+ 67
- 5
pages_subpack/system/index.vue View File

@ -3,9 +3,9 @@
<view class="se-px-30 se-pt-40 se-pb-20 se-fs-26 se-c-text-third">
账号设置
</view>
<view class="se-px-30 se-py-20 se-flex se-flex-h-sb se-fs-28 se-c-black">
<view class="se-px-30 se-py-20 se-flex se-flex-h-sb se-fs-28 se-c-black" @click="outLogin">
<view class="se-flex se-flex-h-c">
<image class="se-w-40 se-h-30 se-mr-40" src="@/static/image/7822.png" mode=""></image>
<image class="se-w-40 se-h-30 se-mr-10" src="@/static/image/7822.png" mode=""></image>
<text>切换账号</text>
</view>
<view>
@ -15,16 +15,16 @@
<view class="se-px-30 se-pt-40 se-pb-20 se-fs-26 se-c-text-third">
系统设置
</view>
<view class="se-px-30 se-py-20 se-pt-40 se-flex se-flex-h-sb se-fs-28 se-c-black">
<view class="se-px-30 se-py-20 se-pt-40 se-flex se-flex-h-sb se-fs-28 se-c-black" @click="onCache">
<view class="se-flex se-flex-h-c">
<image class="se-w-30 se-h-30 se-mr-50" src="@/static/image/47822.png" mode=""></image>
<image class="se-w-30 se-h-30 se-mr-10" src="@/static/image/47822.png" mode=""></image>
<text>清理缓存</text>
</view>
<view class="">
<u-icon name="arrow-right"></u-icon>
</view>
</view>
<view class="se-px-30 se-py-20 se-pt-40 se-flex se-flex-h-sb se-fs-28 se-c-black">
<view class="se-px-30 se-py-20 se-pt-40 se-flex se-flex-h-sb se-fs-28 se-c-black" @click="checkUpdate">
<view class="se-flex se-flex-h-c">
<!-- <image class="se-w-50 se-h-30 se-mr-40" src="@/static/image/home.png" mode=""></image> -->
<text>版本更新</text>
@ -53,7 +53,69 @@
}
},
methods:{
onCache(){
wx.clearStorage({
success() {
wx.showToast({
title: "缓存已清除",
icon: "none",
});
},
fail() {
wx.showToast({
title: "清除失败",
icon: "none",
});
},
});
},
checkUpdate() {
if (wx.getUpdateManager) {
const updateManager = wx.getUpdateManager();
//
updateManager.onCheckForUpdate((res) => {
console.log("是否有新版本:", res.hasUpdate);
if(!res.hasUpdate){
uni.showToast({
icon: "none",
title: "暂无新版本"
})
}
});
//
updateManager.onUpdateReady(() => {
wx.showModal({
title: "更新提示",
content: "新版本已经准备好,是否重启应用?",
success: (res) => {
if (res.confirm) {
updateManager.applyUpdate(); //
}
},
});
});
//
updateManager.onUpdateFailed(() => {
wx.showModal({
title: "更新失败",
content: "请删除小程序后重新打开。",
});
});
} else {
console.log("当前基础库版本不支持更新管理");
}
},
outLogin(){
uni.removeStorageSync("token")
uni.removeStorageSync("company")
uni.removeStorageSync("boss")
uni.removeStorageSync("worker")
uni.removeStorageSync("userInfo")
uni.removeStorageSync("sysList")
uni.redirectTo({
url:"/pages/auth/index"
})


+ 35
- 8
pages_subpack/wallet/component/recharge.vue View File

@ -9,11 +9,12 @@
</view>
<view class="se-flex se-flex-v se-fs-24 se-c-66 se-mt-30">
<text class="se-hl-50">
<u-parse :content="getValueByName('czsm')"></u-parse>
<!-- <text class="se-hl-50">
1本次充值必须通过银行卡充值暂不支持其他途径</br>
2如若遇到24小时充值未到账请联系客服</br>
3充值金额至少不能低于10元
</text>
</text> -->
</view>
</view>
<view class="se-pt-80 se-fs-20 se-flex">
@ -34,20 +35,46 @@
props:["userId","myMoney"],
data(){
return{
money:""
money:"",
sysList:[]
}
},
mounted() {
this.sysList = uni.getStorageSync('sysList')
},
methods:{
getValueByName(name) {
const item = this.sysList.find((item) => item.name == name);
return item ? item.value : "";
},
onRecharge(){
let that = this
let params = {
rechargeReq:{
id:this.userId,
price:this.money
}
id:that.userId,
price:that.money
}
if(!that.money){
return that.$u.toast("请填写金额!")
}
payRecharge(params).then(response=>{
that.$emit("onParent")
console.info("response",response.result)
uni.requestPayment({
provider: "wxpay",
nonceStr: response.result.nonceStr,
package: response.result.packageValue,
timeStamp: response.result.timeStamp,
signType: response.result.signType,
paySign: response.result.paySign,
success(res) {
that.money="";
that.$u.toast("充值成功!")
that.$emit("onParent")
},
fail(e) {
console.info(e)
}
})
}).catch(error=>{
})


+ 21
- 5
pages_subpack/wallet/component/withdrawal.vue View File

@ -1,18 +1,20 @@
<template>
<view class="se-m-40">
<u--input v-model="money" type="number" class="se-bgc-f5 se-fs-32" placeholder="请输入提现金额">
<text slot="prefix" class="se-ml-10 se-c-orange se-fs-32"></text>
<u--input v-model="realName" type="text" class="se-bgc-f5 se-fs-32" placeholder="请输入真实姓名">
</u--input>
<u--input v-model="money" type="number" class="se-bgc-f5 se-mt-20 se-fs-32" placeholder="请输入提现金额">
</u--input>
<view class="se-flex se-flex-v se-pb-20 se-mt-80">
<view class="se-ml-10 se-fs-26 se-c-black se-fw-5">
提现说明
</view>
<view class="se-flex se-flex-v se-fs-24 se-c-66 se-mt-30">
<text class="se-hl-50">
<u-parse :content="getValueByName('txsm')"></u-parse>
<!-- <text class="se-hl-50">
1本次提现必须通过银行卡提现暂不支持其他途径</br>
2如若遇到24小时提现未到账请联系客服</br>
3提现金额至少不能低于300元
</text>
</text> -->
</view>
</view>
<view class="se-pt-80 se-fs-20 se-flex">
@ -33,18 +35,32 @@
props:["userId","myMoney"],
data(){
return{
realName:"",
money:"",
sysList:[]
}
},
mounted() {
this.sysList = uni.getStorageSync('sysList')
},
methods:{
getValueByName(name) {
const item = this.sysList.find((item) => item.name == name);
return item ? item.value : "";
},
onWithdrawal(){
let that = this
let params = {
money:this.money
realName:that.realName,
money:that.money
}
if(!that.money){
return that.$u.toast("请填写金额!")
}
withdrawal(params).then(response=>{
console.info("response",response)
that.money=""
that.$u.toast("申请成功!")
that.$emit("onParent")
}).catch(error=>{


+ 1
- 1
pages_subpack/wallet/index.vue View File

@ -64,7 +64,7 @@
userInfo(params).then(response=>{
console.info("userInfo",response)
this.userId=response.result.id
this.myMoney=response.result.myMoney?response.result.myMoney:0
this.myMoney=response.result.amount?response.result.amount:0
}).catch(error=>{
})


+ 51
- 14
pages_subpack/work-detail/index.vue View File

@ -4,11 +4,11 @@
{{items.title}}
</view>
<view class="se-fs-26 se-c-orange se-fw-6 ">
{{items.moneymin}} - {{items.moneymax}}
{{items.salaryMin}} - {{items.salaryMax}}
</view>
<view class="se-flex se-flex-v se-py-20">
<view class="se-fs-24 se-c-text">
<text>{{items.workAddress}}</text>
<text>{{items.address}}</text>
<!-- <text class="se-ml-20">不限</text> -->
</view>
<view class="se-fs-24 se-c-99 se-pt-20">
@ -18,11 +18,11 @@
<view class="se-flex se-flex-h-sb se-py-40 se-b-b">
<view class="se-flex">
<view>
<image class="se-a-80 se-br-p-50 se-bgc-f5" :src="items.headPic" mode=""></image>
<image class="se-a-80 se-br-p-50 se-bgc-f5" :src="items.employAuthenticationPerson.image" mode=""></image>
</view>
<view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">
<text class="se-fw-6 se-c-black se-fs-30">{{items.workName}}</text>
<text class="se-fs-24 se-c-text-third">{{items.companyName}}</text>
<text class="se-fw-6 se-c-black se-fs-30">{{items.employAuthenticationCompany.name}}</text>
<text class="se-fs-24 se-c-text-third">{{items.employAuthenticationCompany.company}}</text>
</view>
</view>
</view>
@ -30,8 +30,8 @@
<view class="se-fs-36 se-c-black">
工作地址
</view>
<view class="se-fs-24 se-c-66 se-pt-10 se-flex se-flex-h">
<text>{{items.workAddress}}</text>
<view class="se-fs-24 se-c-66 se-pt-10 se-flex se-flex-h" @click="openAddress()">
<text>{{items.address}}</text>
<u-icon name="arrow-right"></u-icon>
</view>
</view>
@ -40,15 +40,15 @@
职位详情
</view>
<view class="se-pt-20">
<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.workTime">{{items.workTime}}</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.industryName">{{items.industryName}}</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.companyName">{{items.companyName}}</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">{{items.payType}}</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">{{items.categoryOne}}</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">{{items.categoryTwo}}</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">水泥搬运</text> -->
</view>
</view>
<view class="se-fs-24 se-pt-20 se-pb-20 se-lh-40">
<text class="se-fs-24 se-c-text-third">岗位要求</text>
<u-parse :content="items.workDetail"></u-parse>
<u-parse :content="items.details"></u-parse>
</view>
<view class="se-px-20 se-pt-20">
<view class="se-px-20 se-pb-80 se-fs-20 se-flex">
@ -62,7 +62,7 @@
</template>
<script>
import {
getTaskById
getTaskById,orderTask,addOrderWork
} from "@/common/api.js"
export default{
data(){
@ -87,9 +87,46 @@
})
},
onPayment(){
uni.navigateTo({
url:"/pages_subpack/payment/index?id="+this.id
addOrderWork({id:this.id}).then(response=>{
console.log("下单成功");
uni.navigateTo({
url:"/pages_subpack/payment/index?id="+response.result.id
})
}).catch(error=>{
})
},
openAddress(){
let that = this
console.info(that.items.latitude)
console.info(that.items.longitude)
wx.openLocation({
latitude: Number(that.items.latitude),
longitude: Number(that.items.longitude),
name: that.items.title,
address: that.items.address,
scale: 12,
success: function(res) {
console.log(JSON.stringify(res));
},
fail: function(res) {
console.log(`openLocation fail:${JSON.stringify(res)}`);
}
})
// uni.openLocation({
// latitude: 30.492121,
// longitude: 114.410324,
// name: "",
// address: "",
// scale: 12,
// success: function(res) {
// console.log(JSON.stringify(res));
// },
// fail: function(res) {
// console.log(`openLocation fail:${JSON.stringify(res)}`);
// }
// })
}
}
}


BIN
static/image/user1.png View File

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

BIN
static/image/user2.png View File

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

BIN
static/image/user3.png View File

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

BIN
static/image/user4.png View File

Before After
Width: 48  |  Height: 48  |  Size: 971 B

BIN
static/image/user5.png View File

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

BIN
static/image/user6.png View File

Before After
Width: 48  |  Height: 48  |  Size: 912 B

BIN
static/image/user7.png View File

Before After
Width: 48  |  Height: 48  |  Size: 894 B

+ 2
- 1
util/request/requestInterceptors.js View File

@ -6,7 +6,8 @@ module.exports = (vm) => {
uni.$u.http.interceptors.request.use((config) => {
config.data = config.data || {}
config.header['X-Access-Token'] = uni.getStorageSync('token');
config.header['Content-Type'] = 'application/json'
// config.header['Content-Type'] = 'application/json'
config.header['Content-Type'] = 'application/x-www-form-urlencoded'
return config
}, config => {
return Promise.reject(config)


+ 10
- 10
util/request/responseInterceptors.js View File

@ -10,16 +10,16 @@ module.exports = (vm) => {
if (data.code == 200) {
return Promise.resolve(data);
}else if(data.code === 401){
uni.showToast({
icon:"none",
title:data.message
})
uni.removeStorageSync('token')
uni.removeStorageSync('userInfo')
uni.navigateTo({
url:"/pages/auth/index"
})
return;
// uni.showToast({
// icon:"none",
// title:data.message
// })
// uni.removeStorageSync('token')
// uni.removeStorageSync('userInfo')
// uni.navigateTo({
// url:"/pages/auth/index"
// })
// return;
}else if(data.code === 500 && (data.message == '操作失败,token非法无效!' || data.message == '操作失败,用户不存在!')){
uni.$u.toast(data.message)
uni.showToast({


+ 52
- 0
yarn.lock View File

@ -187,10 +187,17 @@ builtin-status-codes@^3.0.0:
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
<<<<<<< HEAD
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840"
integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==
=======
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
dependencies:
es-errors "^1.3.0"
function-bind "^1.1.2"
@ -372,7 +379,11 @@ es-errors@^1.3.0:
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
<<<<<<< HEAD
es-object-atoms@^1.0.0:
=======
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
@ -521,9 +532,15 @@ fast-levenshtein@^2.0.6:
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fastq@^1.6.0:
<<<<<<< HEAD
version "1.18.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0"
integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==
=======
version "1.19.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89"
integrity sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
dependencies:
reusify "^1.0.4"
@ -552,9 +569,15 @@ flat-cache@^3.0.4:
rimraf "^3.0.2"
flatted@^3.2.9:
<<<<<<< HEAD
version "3.3.2"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27"
integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==
=======
version "3.3.3"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358"
integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
formstream@^1.1.0:
version "1.5.1"
@ -577,6 +600,7 @@ function-bind@^1.1.2:
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6:
<<<<<<< HEAD
version "1.2.7"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.7.tgz#dcfcb33d3272e15f445d15124bc0a216189b9044"
integrity sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==
@ -587,12 +611,28 @@ get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6:
es-object-atoms "^1.0.0"
function-bind "^1.1.2"
get-proto "^1.0.0"
=======
version "1.3.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
dependencies:
call-bind-apply-helpers "^1.0.2"
es-define-property "^1.0.1"
es-errors "^1.3.0"
es-object-atoms "^1.1.1"
function-bind "^1.1.2"
get-proto "^1.0.1"
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
gopd "^1.2.0"
has-symbols "^1.1.0"
hasown "^2.0.2"
math-intrinsics "^1.1.0"
<<<<<<< HEAD
get-proto@^1.0.0:
=======
get-proto@^1.0.1:
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
version "1.0.1"
resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
@ -685,9 +725,15 @@ ignore@^5.2.0:
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
import-fresh@^3.2.1:
<<<<<<< HEAD
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
=======
version "3.3.1"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf"
integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
dependencies:
parent-module "^1.0.0"
resolve-from "^4.0.0"
@ -889,9 +935,15 @@ object-assign@^4.0.1:
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-inspect@^1.13.3:
<<<<<<< HEAD
version "1.13.3"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a"
integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==
=======
version "1.13.4"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
>>>>>>> f6c7301605cb7d02d0ad6c2c7d8246dabc5bc9e5
object-keys@^1.1.1:
version "1.1.1"


Loading…
Cancel
Save