flat: 添加企业2

This commit is contained in:
Apcallover
2024-04-12 17:57:52 +08:00
parent c981e19e89
commit c4f62b6efb
14 changed files with 2279 additions and 1848 deletions

150
App.vue
View File

@@ -1,72 +1,78 @@
<style lang="scss">
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss";
</style>
<script>
import website from '@/config/website.js'
import {
mapGetters
} from 'vuex'
// #ifdef H5
import {
setPlatformByHostName
} from '@/untils/customized.js'
// #endif
export default {
onLaunch: function(options) {
if(options.query.token) {
uni.reLaunch({
url: '/pages/login/blank?token=' + options.query.token
})
} else if (this.$store.state.user.token) {
this.$store.dispatch('startRefreshTokenTimer')
this.$store.dispatch('startRefreshNewsTimer')
this.$store.dispatch('refreshAuthState')
}
// #ifdef H5
// 企业定制
setPlatformByHostName(this.$store)
// #endif
},
onShow: function() {},
onHide: function() {},
computed: {
...mapGetters(['news']),
allUnread() {
return this.news.allUnread
}
},
watch: {
allUnread(value) {
if (!this.$store.state.user.token) {} else if (value > 0) {
uni.showTabBarRedDot({
index: 2
})
uni.$once('newsReadChange', () => {
uni.showTabBarRedDot({
index: 2
})
})
} else {
uni.hideTabBarRedDot({
index: 2
})
uni.$once('newsReadChange', () => {
uni.hideTabBarRedDot({
index: 2
})
})
}
}
}
};
</script>
<style>
/*每个页面公共css */
/* tabbar 字体大小 */
/* .uni-tabbar__label{
font-size: 14px !important;
} */
</style>
<style lang="scss">
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss";
</style>
<script>
import website from '@/config/website.js'
import {
mapGetters
} from 'vuex'
// #ifdef H5
import {
setPlatformByHostName
} from '@/untils/customized.js'
// #endif
export default {
onLaunch: function(options) {
if (options.query.token) {
uni.reLaunch({
url: '/pages/login/blank?token=' + options.query.token
})
} else if (this.$store.state.user.token) {
this.$store.dispatch('startRefreshTokenTimer')
this.$store.dispatch('startRefreshNewsTimer')
this.$store.dispatch('refreshAuthState')
}
// #ifdef H5
// 企业定制
setPlatformByHostName(this.$store)
// #endif
},
onShow: function() {},
onHide: function() {},
computed: {
...mapGetters(['news']),
allUnread() {
return this.news.allUnread
}
},
watch: {
allUnread(value) {
if (!this.$store.state.user.token) {} else if (value > 0) {
uni.showTabBarRedDot({
index: 2
})
uni.$once('newsReadChange', () => {
uni.showTabBarRedDot({
index: 2
})
})
} else {
uni.hideTabBarRedDot({
index: 2
})
uni.$once('newsReadChange', () => {
uni.hideTabBarRedDot({
index: 2
})
})
}
}
}
};
</script>
<style>
/*每个页面公共css */
/* tabbar 字体大小 */
/* .uni-tabbar__label{
font-size: 14px !important;
} */
@font-face {
font-family: 'uicon-iconfont';
font-weight: mormal;
font-style: mormal;
src: url('/static/font/font_2225171_8kdcwk4po24.ttf') format('truetype');
}
</style>

52
api/upload.js Normal file
View File

@@ -0,0 +1,52 @@
import {
request
} from '@/untils/AxiosUtils.js';
import {
baseUrl
} from '@/config/env.js'
import {
getStore
} from '@/untils/store.js'
import {
Base64
} from 'js-base64'
import website from "@/config/website.js"
export async function uploadFile(file) {
uni.showLoading({
title: '上传中'
})
var token = getStore({
name: 'token'
})
return new Promise((resolve, reject) => {
const header = {
'Authorization': `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`,
}
header[website.tokenName] = "bearer " + token
uni.uploadFile({
url: `${baseUrl}/api/jobslink-api/resource/file/save?bussinessType=5`,
header,
filePath: file.url,
// formData: formdata,
name: 'file',
success: ({
statusCode,
data
}) => {
const resp = JSON.parse(data)
if (statusCode === 200 && resp.code === 200) {
resolve(resp.msg)
} else {
reject(new Error('数据异常'))
}
},
fail: (uploadFileRes) => {
reject(uploadFileRes)
},
complete: () => {
uni.hideLoading()
}
});
})
}

View File

@@ -1,93 +1,106 @@
import {
request
} from '@/untils/AxiosUtils.js';
import {
getStore
} from '@/untils/store.js'
function getHeader() {
const platformId = getStore({
name: 'platformId'
})
if (platformId) {
return {
'Platform-Id': platformId
}
} else {
return {}
}
}
/*首页 最新任务(10条)*/
export const getPushListByUserId = (params) => {
return request({
url: '/api/jobslink-api/user/userrecruit/getPushListByUserId',
headers: getHeader(),
method: 'get',
params
})
}
/*岗位详情*/
// workDetail
export const userrecruitDetail = (workId) => {
return request({
url: '/api/jobslink-api/user/userrecruit/getWorksInfoByWorkId',
method: 'get',
params: {
workId
}
})
}
export const submitInfo = (data) => {
return request({
url: '/api/jobslink-api/user/userrecruit/saveApp',
method: 'post',
data: data
})
}
export const getuserrecruitListApp = (params) => {
return request({
url: '/api/jobslink-api/user/userrecruit/listApp',
method: 'get',
params
})
}
export const getuserrecruitDetailApp = (params) => {
return request({
url: '/api/jobslink-api/user/userrecruit/detailApp',
method: 'get',
params
})
}
export const seeIsHaveCodep = (params) => {
return request({
url: '/api/jobslink-api/tenant/company/app/isHaveCode',
method: 'get',
params
})
}
export const getWorktypesBaseList = (params) => {
return request({
url: '/api/jobslink-api/tenant/worktypes/base/list',
method: 'get',
params
})
}
export const getUserCompanyInfo = (params) => {
return request({
url: '/api/jobslink-api/user/user/userCompanyInfo',
method: 'get',
params
})
}
export const findTradeList = () => {
return request({
url: '/api/jobslink-api/tenant/trade/base/find',
method: 'get',
// params
})
import {
request
} from '@/untils/AxiosUtils.js';
import {
getStore
} from '@/untils/store.js'
function getHeader() {
const platformId = getStore({
name: 'platformId'
})
if (platformId) {
return {
'Platform-Id': platformId
}
} else {
return {}
}
}
/*首页 最新任务(10条)*/
export const getPushListByUserId = (params) => {
return request({
url: '/api/jobslink-api/user/userrecruit/getPushListByUserId',
headers: getHeader(),
method: 'get',
params
})
}
/*岗位详情*/
// workDetail
export const userrecruitDetail = (workId) => {
return request({
url: '/api/jobslink-api/user/userrecruit/getWorksInfoByWorkId',
method: 'get',
params: {
workId
}
})
}
export const submitInfo = (data) => {
return request({
url: '/api/jobslink-api/user/userrecruit/saveApp',
method: 'post',
data: data
})
}
export const getuserrecruitListApp = (params) => {
return request({
url: '/api/jobslink-api/user/userrecruit/listApp',
method: 'get',
params
})
}
export const getuserrecruitDetailApp = (params) => {
return request({
url: '/api/jobslink-api/user/userrecruit/detailApp',
method: 'get',
params
})
}
export const seeIsHaveCodep = (params) => {
return request({
url: '/api/jobslink-api/tenant/company/app/isHaveCode',
method: 'get',
params
})
}
export const getWorktypesBaseList = (params) => {
return request({
url: '/api/jobslink-api/tenant/worktypes/base/list',
method: 'get',
params
})
}
export const getUserCompanyInfo = (params) => {
return request({
url: '/api/jobslink-api/user/user/userCompanyInfo',
method: 'get',
params
})
}
export const findTradeList = () => {
return request({
url: '/api/jobslink-api/tenant/trade/base/find',
method: 'get',
// params
})
}
export const addInviteCompanyAuth = ({
params,
data
}) => {
return request({
url: '/api/jobslink-api/tenant/company/app/inviteCompany/auth',
method: 'post',
data,
params
})
}

View File

@@ -1,319 +1,416 @@
// 发布岗位和个体招工 参考工资
const salary = [{
name: "2000元以下/月",
label: "2000元以下/月",
},
{
name: "2000-5000元/月",
label: "2000-5000元/月",
},
{
name: "5000-8000元/月",
label: "5000-8000元/月",
},
{
name: "8000-10000元/月",
label: "8000-10000元/月",
},
{
name: "10000-15000元/月",
label: "10000-15000元/月",
},
{
name: "15000-20000元/月",
label: "15000-20000元/月",
},
{
name: "20000-25000元/月",
label: "20000-25000元/月",
},
{
name: "25000-30000元/月",
label: "25000-30000元/月",
},
{
name: "30000元以上/月",
label: "30000元以上/月",
},
{
name: "面议、暂无要求",
label: "面议、暂无要求",
},
]
const taskSalary = [
[
"10-15元/小时",
"16-20元/小时",
"21-25元/小时",
"26-30元/小时",
"30元/小时以上",
"100-150元/天",
"151-200元/天",
"201-250元/天",
"251-300元/天",
"300元/天以上",
"30000元以上/月",
"面议、暂无要求"
]
]
const tradeArr = [
[{
"id": "1754327500065390596",
"name": "农、林、牧、渔业",
},
{
"id": "1754327500065390597",
"name": "采矿业",
},
{
"id": "1754327500065390598",
"name": "采矿业,制造业",
},
{
"id": "1754327500065390599",
"name": "制造业",
},
{
"id": "1754327500065390600",
"name": "电力、热力、燃气及水生产和供应业",
},
{
"id": "1754327500065390601",
"name": "建筑业",
},
{
"id": "1754327500065390602",
"name": "批发和零售业",
},
{
"id": "1754327500065390603",
"name": "交通运输、仓储和邮政业",
},
{
"id": "1754327500065390604",
"name": "住宿和餐饮业",
},
{
"id": "1754327500065390605",
"name": "信息传输、软件和信息技术服务业",
},
{
"id": "1754327500065390606",
"name": "金融业",
},
{
"id": "1754327500065390607",
"name": "房地产业",
},
{
"id": "1754327500065390608",
"name": "租赁和商务服务业",
},
{
"id": "1754327500065390609",
"name": "科学研究和技术服务业",
},
{
"id": "1754327500065390610",
"name": "水利、环境和公共设施管理业",
},
{
"id": "1754327500065390611",
"name": "居民服务、修理和其他服务业",
},
{
"id": "1754327500065390612",
"name": "教育",
},
{
"id": "1754327500065390613",
"name": "卫生和社会工作",
},
{
"id": "1754327500065390614",
"name": "文化、体育和娱乐业",
},
{
"id": "1754327500065390615",
"name": "公共管理、社会保障和社会组织",
},
{
"id": "1754327500065390616",
"name": "国际组织",
},
{
"id": "1754327500065390617",
"name": "其他",
},
// {
// "id": "1754327500065390890",
// "name": "111",
// },
// {
// "id": "1758061062381690882",
// "name": "11",
// },
{
"id": "1758102909546467329",
"name": "服务业",
}
]
]
const natureArr = [
['灵活用工']
]
const ageArr = [
[{
label: "不限年龄",
value: "不限年龄",
},
{
label: "30以下",
value: "30以下",
},
{
label: "35以下",
value: "35以下",
},
{
label: "40以下",
value: "40以下",
},
{
label: "45以下",
value: "45以下",
},
{
label: "50以下",
value: "50以下",
},
{
label: "55以下",
value: "55以下",
},
{
label: "60以下",
value: "60以下",
},
]
]
const eduArr = [
[{
label: "不限",
value: 8,
},
{
label: "初中及以下",
value: 7,
},
{
label: "中专/中技",
value: 6,
},
{
label: "高中",
value: 5,
},
{
label: "大专",
value: 4,
},
{
label: "本科",
value: 3,
},
{
label: "硕士",
value: 2,
},
{
label: "博士",
value: 1,
},
{
label: "MBA/EMBA",
value: 0,
},
]
]
const expeArr = [
[{
label: "不限经验",
value: "不限经验",
},
{
label: "1年以下",
value: "1年以下",
},
{
label: "1~3年",
value: "1~3年",
},
{
label: "3~5年",
value: "3~5年",
},
{
label: "5~10年",
value: "5~10年",
},
{
label: "10年以上",
value: "10年以上",
},
]
]
const companyEnum = [
{ value: 1, label: "机关/事业单位" },
{ value: 2, label: "国有企业" },
{ value: 3, label: "私营企业" },
{ value: 4, label: "外商及港澳台投资企业" },
{ value: 5, label: "股份制企业" },
{ value: 6, label: "学校/下级学院" },
{ value: 7, label: "医院" },
{ value: 8, label: "律师事务所" },
{ value: 9, label: "银行" },
{ value: 10, label: "非盈利社会组织" },
{ value: 11, label: "其它" },
]
const wageUnitCategoryState = [[
{ id: 1, label: "元/人·时", disable: false },
{ id: 2, label: "元/人·天", disable: false },
{ id: 3, label: "元/人·月", disable: false },
{ id: 4, label: "其他", disable: false },
// { value: 0, label: "元/人·次", disable: true },
// { value: 4, label: "元/人·周", disable: true },
// { value: 5, label: "元/人·个", disable: true },
// { value: 6, label: "元/人·件", disable: true },
]];
const workwageUnitCategoryState = [[
// { id: 1, label: "元/人·时", disable: false },
// { id: 2, label: "元/人·天", disable: false },
{ id: 3, label: "元/人·月", disable: true },
{ id: 4, label: "其他", disable: true },
// { value: 0, label: "元/人·次", disable: true },
// { value: 4, label: "元/人·周", disable: true },
// { value: 5, label: "元/人·个", disable: true },
// { value: 6, label: "元/人·件", disable: true },
]];
export default {
salary,
taskSalary,
tradeArr,
natureArr,
ageArr,
eduArr,
expeArr,
companyEnum,
wageUnitCategoryState,
workwageUnitCategoryState
// 发布岗位和个体招工 参考工资
const salary = [{
name: "2000元以下/月",
label: "2000元以下/月",
},
{
name: "2000-5000元/月",
label: "2000-5000元/月",
},
{
name: "5000-8000元/月",
label: "5000-8000元/月",
},
{
name: "8000-10000元/月",
label: "8000-10000元/月",
},
{
name: "10000-15000元/月",
label: "10000-15000元/月",
},
{
name: "15000-20000元/月",
label: "15000-20000元/月",
},
{
name: "20000-25000元/月",
label: "20000-25000元/月",
},
{
name: "25000-30000元/月",
label: "25000-30000元/月",
},
{
name: "30000元以上/月",
label: "30000元以上/月",
},
{
name: "面议、暂无要求",
label: "面议、暂无要求",
},
]
const taskSalary = [
[
"10-15元/小时",
"16-20元/小时",
"21-25元/小时",
"26-30元/小时",
"30元/小时以上",
"100-150元/天",
"151-200元/天",
"201-250元/天",
"251-300元/天",
"300元/天以上",
"30000元以上/月",
"面议、暂无要求"
]
]
const tradeArr = [
[{
"id": "1754327500065390596",
"name": "农、林、牧、渔业",
},
{
"id": "1754327500065390597",
"name": "采矿业",
},
{
"id": "1754327500065390598",
"name": "采矿业,制造业",
},
{
"id": "1754327500065390599",
"name": "制造业",
},
{
"id": "1754327500065390600",
"name": "电力、热力、燃气及水生产和供应业",
},
{
"id": "1754327500065390601",
"name": "建筑业",
},
{
"id": "1754327500065390602",
"name": "批发和零售业",
},
{
"id": "1754327500065390603",
"name": "交通运输、仓储和邮政业",
},
{
"id": "1754327500065390604",
"name": "住宿和餐饮业",
},
{
"id": "1754327500065390605",
"name": "信息传输、软件和信息技术服务业",
},
{
"id": "1754327500065390606",
"name": "金融业",
},
{
"id": "1754327500065390607",
"name": "房地产业",
},
{
"id": "1754327500065390608",
"name": "租赁和商务服务业",
},
{
"id": "1754327500065390609",
"name": "科学研究和技术服务业",
},
{
"id": "1754327500065390610",
"name": "水利、环境和公共设施管理业",
},
{
"id": "1754327500065390611",
"name": "居民服务、修理和其他服务业",
},
{
"id": "1754327500065390612",
"name": "教育",
},
{
"id": "1754327500065390613",
"name": "卫生和社会工作",
},
{
"id": "1754327500065390614",
"name": "文化、体育和娱乐业",
},
{
"id": "1754327500065390615",
"name": "公共管理、社会保障和社会组织",
},
{
"id": "1754327500065390616",
"name": "国际组织",
},
{
"id": "1754327500065390617",
"name": "其他",
},
// {
// "id": "1754327500065390890",
// "name": "111",
// },
// {
// "id": "1758061062381690882",
// "name": "11",
// },
{
"id": "1758102909546467329",
"name": "服务业",
}
]
]
const natureArr = [
['灵活用工']
]
const ageArr = [
[{
label: "不限年龄",
value: "不限年龄",
},
{
label: "30以下",
value: "30以下",
},
{
label: "35以下",
value: "35以下",
},
{
label: "40以下",
value: "40以下",
},
{
label: "45以下",
value: "45以下",
},
{
label: "50以下",
value: "50以下",
},
{
label: "55以下",
value: "55以下",
},
{
label: "60以下",
value: "60以下",
},
]
]
const eduArr = [
[{
label: "不限",
value: 8,
},
{
label: "初中及以下",
value: 7,
},
{
label: "中专/中技",
value: 6,
},
{
label: "高中",
value: 5,
},
{
label: "大专",
value: 4,
},
{
label: "本科",
value: 3,
},
{
label: "硕士",
value: 2,
},
{
label: "博士",
value: 1,
},
{
label: "MBA/EMBA",
value: 0,
},
]
]
const expeArr = [
[{
label: "不限经验",
value: "不限经验",
},
{
label: "1年以下",
value: "1年以下",
},
{
label: "1~3年",
value: "1~3年",
},
{
label: "3~5年",
value: "3~5年",
},
{
label: "5~10年",
value: "5~10年",
},
{
label: "10年以上",
value: "10年以上",
},
]
]
const companyEnum = [{
value: 1,
label: "机关/事业单位"
},
{
value: 2,
label: "国有企业"
},
{
value: 3,
label: "私营企业"
},
{
value: 4,
label: "外商及港澳台投资企业"
},
{
value: 5,
label: "股份制企业"
},
{
value: 6,
label: "学校/下级学院"
},
{
value: 7,
label: "医院"
},
{
value: 8,
label: "律师事务所"
},
{
value: 9,
label: "银行"
},
{
value: 10,
label: "非盈利社会组织"
},
{
value: 11,
label: "其它"
},
]
const wageUnitCategoryState = [
[{
id: 1,
label: "元/人·时",
disable: false
},
{
id: 2,
label: "元/人·天",
disable: false
},
{
id: 3,
label: "元/人·月",
disable: false
},
{
id: 4,
label: "其他",
disable: false
},
// { value: 0, label: "元/人·次", disable: true },
// { value: 4, label: "元/人·周", disable: true },
// { value: 5, label: "元/人·个", disable: true },
// { value: 6, label: "元/人·件", disable: true },
]
];
const workwageUnitCategoryState = [
[
// { id: 1, label: "元/人·时", disable: false },
// { id: 2, label: "元/人·天", disable: false },
{
id: 3,
label: "元/人·月",
disable: true
},
{
id: 4,
label: "其他",
disable: true
},
// { value: 0, label: "元/人·次", disable: true },
// { value: 4, label: "元/人·周", disable: true },
// { value: 5, label: "元/人·个", disable: true },
// { value: 6, label: "元/人·件", disable: true },
]
];
const addressColumn = [
[{
value: '95',
label: "绵竹市"
},
{
value: '185',
label: "绵竹市"
},
{
value: '143',
label: "旌阳区"
},
{
value: '150',
label: "罗江区"
},
{
value: '42',
label: "什邡市"
},
{
value: '156',
label: "中江县"
},
{
value: '44139628',
label: "经济技术开发区"
},
{
value: '79194151',
label: "德阳市开发区"
},
]
]
export default {
salary,
taskSalary,
tradeArr,
natureArr,
ageArr,
eduArr,
expeArr,
companyEnum,
wageUnitCategoryState,
workwageUnitCategoryState,
addressColumn
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,109 +1,126 @@
<template>
<view class="container">
<view class="select">用工单位发布招工</view>
<view class="select-text">提交申请资料通过认证后可快速发布招工信息</view>
<!-- <view class="block" @click="next(0)">
<img src="../../static/img/zhao_icon1.png" alt="" />
<view class="block-text">个体户招工</view>
</view> -->
<view class="block" @click="next(1)">
<img src="../../static/img/zhao_icon2.png" alt="" />
<view class="block-text" style="background-color: #4171F9;">我要招工</view>
</view>
</view>
</template>
<script>
import {seeIsHaveCodep} from '@/api/userrecruit.js'
import { mapState } from 'vuex'
export default {
data() {
return {
}
},
computed: {
...mapState({idNumber: (state) => state.auth.authInfo.idNumber}),
},
methods: {
next(type) {
switch (type){
case 0:
this.isHaveCode(this.idNumber).then(() => {
this.$store.commit('setEnterprise', type)
this.navTo('/pages/recruit/subPage/index?type=none')
})
break;
case 1:
this.isHaveCode(this.idNumber).then(() => {
this.$store.commit('setEnterprise', type)
this.navTo('/pages/recruit/subPage/index?type=enterprise')
})
break;
}
},
isHaveCode(idNumber) {
uni.showLoading({ title:'请求中' })
return new Promise(async(resolve, reject) => {
let resData = await seeIsHaveCodep({idNumber})
uni.hideLoading()
if(resData.data.code === 200) {
if (false && resData.data.data) {
resolve()
} else {
// this.$api.msg('您未申请开通该功能,请联系工作人员')
this.navTo('/pages/recruit/subPage/enterpriceCertification/enterpriceCertification')
}
} else {
reject()
}
})
}
}
}
</script>
<style lang="scss">
.container {
padding: 60rpx;
.select {
font-size: 36rpx;
color: #000;
}
.select-text {
font-size: 28rpx;
color: #999;
margin-top: 10rpx;
}
.block {
width: 100%;
height: 300rpx;
border-radius: 20rpx;
background-color: #f3f4f8;
margin: 40rpx auto;
position: relative;
display: flex;
align-items: center;
.block-text {
color: #fff;
font-size: 26rpx;
position: absolute;
width: 180rpx;
height: 60rpx;
border-radius: 30rpx;
background-color: #45D4B6;
text-align: center;
line-height: 60rpx;
right: 20rpx;
top: 50%;
margin-top: -30rpx;
}
img {
width: 300rpx;
margin-left: 50rpx;
}
}
}
</style>
<template>
<view class="container">
<view class="select">企业申请认证后</view>
<view class="select-text">即可发布零工任务或者发布正规岗位</view>
<!-- <view class="block" @click="next(0)">
<img src="../../static/img/zhao_icon1.png" alt="" />
<view class="block-text">个体户招工</view>
</view> -->
<view class="block" @click="next(1)">
<img src="../../static/img/zhao_icon2.png" alt="" />
<view class="block-text" style="background-color: #4171F9;">企业招工</view>
</view>
</view>
</template>
<script>
import {
seeIsHaveCodep
} from '@/api/userrecruit.js'
import {
mapState
} from 'vuex'
export default {
data() {
return {
}
},
computed: {
...mapState({
idNumber: (state) => state.auth.authInfo.idNumber
}),
},
methods: {
next(type) {
switch (type) {
case 0:
this.isHaveCode(this.idNumber).then(() => {
this.$store.commit('setEnterprise', type)
this.navTo('/pages/recruit/subPage/index?type=none')
})
break;
case 1:
this.isHaveCode(this.idNumber).then(() => {
this.$store.commit('setEnterprise', type)
this.navTo('/pages/recruit/subPage/index?type=enterprise')
})
break;
}
},
isHaveCode(idNumber) {
uni.showLoading({
title: '请求中'
})
return new Promise(async (resolve, reject) => {
let resData = await seeIsHaveCodep({
idNumber
})
uni.hideLoading()
if (resData.data.code === 200) {
if (false && resData.data.data) {
resolve()
} else {
// this.$api.msg('您未申请开通该功能,请联系工作人员')
this.navTo(
'/pages/recruit/subPage/enterpriceCertification/enterpriceCertification'
)
}
} else {
reject()
}
})
}
}
}
</script>
<style lang="scss">
.container {
padding: 60rpx;
.select {
font-size: 36rpx;
color: #000;
}
.select-text {
font-size: 28rpx;
color: #999;
margin-top: 10rpx;
}
.block {
width: 100%;
height: 300rpx;
border-radius: 20rpx;
background-color: #f3f4f8;
margin: 40rpx auto;
position: relative;
display: flex;
align-items: center;
.block-text {
color: #fff;
font-size: 26rpx;
position: absolute;
width: 180rpx;
height: 60rpx;
border-radius: 30rpx;
background-color: #45D4B6;
text-align: center;
line-height: 60rpx;
right: 20rpx;
top: 50%;
margin-top: -30rpx;
}
img {
width: 300rpx;
margin-left: 50rpx;
}
}
}
</style>

View File

@@ -1,54 +1,100 @@
<template>
<view class="">
<view class="content">
<u--form labelPosition="left" :model="model1" :rules="rules" ref="uForm">
<u-form-item label="企业名称" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="统一信用代码" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="法人姓名" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="法人身份证号" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="所在地区" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="详细地址" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="联系人" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="手机号码" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="企业性质" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="行业" labelWidth="100" prop="userInfo.name" borderBottom ref="item1">
<u--input v-model="formData.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="企业介绍" labelWidth="100" labelPosition="top" prop="userInfo.name" borderBottom
ref="item1">
<u--textarea v-model="formData.name" placeholder="请输入内容"></u--textarea>
</u-form-item>
<u--form labelPosition="left" :model="formData" :rules="rules" ref="uForm">
<view class="card">
<view class="card_title">企业信息</view>
<u-form-item label="企业名称" labelWidth="100" prop="comname" borderBottom ref="item1">
<u--input v-model="formData.comname" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="统一信用代码" labelWidth="100" prop="companyTid" borderBottom ref="item1">
<u--input v-model="formData.companyTid" placeholder="请输入统一信用代码"></u--input>
</u-form-item>
<u-form-item label="法人姓名" labelWidth="100" prop="masterName" borderBottom ref="item1">
<u--input v-model="formData.masterName" placeholder="请输入法人姓名"></u--input>
</u-form-item>
<u-form-item label="法人身份证号" labelWidth="100" prop="masterIdentity" borderBottom ref="item1">
<u--input v-model="formData.masterIdentity" placeholder="请输入法人身份证号"></u--input>
</u-form-item>
<u-form-item label="所在地区" labelWidth="100" prop="cityId" borderBottom ref="item1"
@click="showAddress = true; hideKeyboard()">
<PickerList placeholder="请选择所在地区" :columns="dic.addressColumn" :visibel="showAddress"
v-model="formData.cityId" @cancel="showAddress = false">
</PickerList>
</u-form-item>
<u-form-item label="详细地址" labelWidth="100" prop="companyAddress" borderBottom ref="item1">
<u--input v-model="formData.companyAddress" placeholder="请输入详细地址"></u--input>
</u-form-item>
<u-form-item label="企业性质" labelWidth="100" prop="nature" borderBottom ref="item1"
@click="showJobCompanyNature = true; hideKeyboard()">
<PickerList placeholder="请选择企业性质" :columns="[dic.companyEnum]" :visibel="showJobCompanyNature"
v-model="formData.nature" @cancel="showJobCompanyNature = false">
</PickerList>
</u-form-item>
<u-form-item label="行业" labelWidth="100" prop="tradeId" borderBottom ref="item1"
@click="showjobCompanyIndustry = true; hideKeyboard()">
<PickerList placeholder="请选择行业" :columns="dic.tradeArr" labelName="name" valueName="id"
:visibel="showjobCompanyIndustry" v-model="formData.tradeId"
@cancel="showjobCompanyIndustry = false">
</PickerList>
</u-form-item>
<u-form-item label="企业介绍" labelWidth="100" labelPosition="top" prop="companyDesc" borderBottom
ref="item1">
<u--textarea v-model="formData.companyDesc" placeholder="请输入内容"></u--textarea>
</u-form-item>
</view>
<view class="card">
<view class="card_title">用户信息</view>
<u-form-item label="联系人" labelWidth="100" prop="manager" borderBottom ref="item1">
<u--input v-model="formData.manager" placeholder="请输入联系人"></u--input>
</u-form-item>
<u-form-item label="手机号码" labelWidth="100" prop="telphone" borderBottom ref="item1">
<u--input v-model="formData.telphone" placeholder="请输入手机号码"></u--input>
</u-form-item>
</view>
<view class="card">
<view class="card_title">相关资料</view>
<view class="card_content">
<UploadIdNumber v-model="formData.identityUrl4Id" backImg="/static/img/idcard.png">
</UploadIdNumber>
<UploadIdNumber v-model="formData.identityUrl5Id" backImg="/static/img/backidcard1.png">
</UploadIdNumber>
<UploadIdNumber v-model="formData.authUrlId" backImg="/static/img/idcard.png"></UploadIdNumber>
</view>
</view>
<view class="card">
<u-button type="primary" text="提交" customStyle="margin-top: 50px" @click="submit"></u-button>
<u-button type="error" text="重置" customStyle="margin-top: 10px" @click="reset"></u-button>
</view>
</u--form>
</view>
</view>
</template>
<script>
import UploadIdNumber from './uploadIdNumber.vue';
import dic from '@/common/dic.js'
import PickerList from './pickerList.vue';
import {
addInviteCompanyAuth
} from '@/api/userrecruit.js'
const rules = []
import {
mapState
} from 'vuex'
export default {
components: {
UploadIdNumber,
PickerList
},
data() {
return {
showAddress: false,
showJobCompanyNature: false,
showjobCompanyIndustry: false,
dic,
formData: {},
rules
};
@@ -60,16 +106,60 @@
}),
},
created() {
this.formData.manager = this.authInfo.realName
this.formData.idNumber = this.authInfo.idNumber
console.log(this.authInfo)
console.log(this.userInfo)
},
methods: {
}
hideKeyboard() {
uni.hideKeyboard()
},
async submit() {
let data = {
...this.formData,
nature: Number(this.formData.nature),
cityId: Number(this.formData.cityId),
tradeId: Number(this.formData.tradeId),
}
let params = {
// auth: this.authInfo.authValue
}
let resData = await addInviteCompanyAuth({
params,
data
})
console.log(resData)
},
reset() {
const _this = this
uni.showModal({
content: '重置将清空表单,确定重置吗?',
success() {
_this.formData = {}
},
})
}
},
}
</script>
<style lang="scss" scoped>
.content {
padding: 24rpx;
.card {
.card_title {
font-weight: bold;
margin-top: 20rpx;
}
.card_content {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
}
}
</style>

View File

@@ -0,0 +1,72 @@
<template>
<view style="width: 100%">
<u--input :value="valueEnum[value]" disabledColor="#ffffff" :placeholder="placeholder"></u--input>
<u-picker :show="visibel" :keyName="labelName" :columns="columns" @confirm="skillConfirm" @cancel="skillClose"
@close="skillClose"></u-picker>
</view>
</template>
<script>
export default {
data() {
return {
valueEnum: {}
}
},
props: {
valueName: {
type: String,
default: 'value'
},
labelName: {
type: String,
default: 'label'
},
placeholder: {
type: String,
require: ''
},
visibel: {
type: Boolean,
default: false,
},
columns: {
type: Array,
require: true
},
value: {
type: String,
require: ''
},
cancel: {
type: Function
}
},
created() {
if (Array.isArray(this.columns)) {
this.columns.map((item) => {
item.map((child) => {
this.valueEnum[child[this.valueName]] = child[this.labelName]
})
})
}
},
methods: {
skillConfirm({
index,
value,
values
}) {
this.$emit("input", String(value[0][this.valueName]));
this.$emit("cancel");
},
skillClose() {
this.$emit("cancel");
}
},
}
</script>
<style>
</style>

View File

@@ -0,0 +1,53 @@
<template>
<view class="content">
<u-upload :fileList="ImgUrl" @afterRead="afterRead" :deletable="true" @delete="deletePic" name="6" :maxCount="1"
width="280" height="150">
<image :src="backImg" mode="widthFix" style="width: 280px;height: 150px;"></image>
</u-upload>
</view>
</template>
<script>
import {
uploadFile
} from '@/api/upload.js'
export default {
name: 'UploadIdNumber',
props: {
backImg: {
type: String,
require: true,
},
value: {
type: String,
default: null
}
},
computed: {
ImgUrl(val) {
return this.value ? [this.value] : []
}
},
methods: {
afterRead({
file,
index,
name
}) {
// this.$emit("input", file);
uploadFile(file).then((url) => {
this.$emit("input", url);
})
},
deletePic() {
this.$emit("input", null);
},
}
}
</script>
<style scoped>
.content {
margin: 20rpx 0 0 0;
}
</style>

Binary file not shown.

BIN
static/img/backidcard1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
static/img/idcard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,241 +1,244 @@
import {
isURL,
validatenull
} from '@/untils/validate.js'
import website from '@/config/website'
import {
loginByUsername,
getUserInfo,
logout,
refreshToken
} from '@/api/user'
import md5 from 'js-md5'
import {
getStore,
setStore
} from '@/untils/store.js'
import {
calcDate
} from '@/untils/date.js'
let refreshTimer = null;
function startRefreshToken(dispatch) {
refreshTimer = setInterval(() => {
const token =
getStore({
name: "token",
debug: true
}) || {};
const date = calcDate(token.datetime, new Date().getTime());
if (validatenull(date)) return;
if (date.seconds >= website.tokenTime) {
dispatch("refreshToken")
.then(() => {})
.catch(() => {});
}
}, 10000);
}
function stopRefreshToken() {
clearInterval(refreshTimer)
}
const user = {
state: {
tenantId: getStore({
name: 'tenantId'
}) || '',
userInfo: getStore({
name: 'userInfo'
}) || [],
token: getStore({
name: 'token'
}) || '',
refreshToken: getStore({
name: 'refreshToken'
}) || '',
userChecked:getStore({
name: 'setUserCheckValue'
}) || false,
sendTimes:getStore({//用户发送短信次数
name:'setUserSendTimes'
}) || 0,
seeEnterprise: getStore({//用户发送短信次数
name:'enterprise'
}) || 0, // 0 个体招工 企业招工
},
actions: {
//用户点击radio按钮
UserCheckedBtn({commit},val){
commit('SET_USER_CHECKED',val);
},
//根据用户名登录
LoginByUsername({
commit,
dispatch
}, userInfo) {
return new Promise((resolve, reject) => {
loginByUsername(userInfo.tenantId, userInfo.username, md5(userInfo.password), userInfo.type, userInfo.key,
userInfo.code, userInfo.token).then(res => {
const data = res.data;
if (data.error_description) {
uni.showToast({
icon: "none",
title: data.error_description,
})
} else {
commit('SET_TOKEN', data.access_token);
commit('SET_REFRESH_TOKEN', data.refresh_token);
commit('SET_TENANT_ID', data.tenant_id);
commit('SET_USER_INFO', data);
dispatch('refreshAuthState')
dispatch('startRefreshNewsTimer')
startRefreshToken();
}
resolve(res);
}).catch(error => {
reject(error);
})
})
},
//根据手机号登录
LoginByPhone({
commit
}, userInfo) {
return new Promise((resolve) => {
loginByUsername(userInfo.phone, userInfo.code).then(res => {
const data = res.data.data;
commit('SET_TOKEN', data);
resolve();
})
})
},
GetUserInfo({
commit
}) {
return new Promise((resolve, reject) => {
getUserInfo().then((res) => {
const data = res.data.data;
resolve(data);
}).catch(err => {
reject(err);
})
})
},
//刷新token
refreshToken({
state,
commit,
dispatch
}) {
return new Promise((resolve, reject) => {
refreshToken(state.refreshToken, state.tenantId).then(res => {
const data = res.data;
dispatch('refreshAuthState')
commit('SET_TOKEN', data.access_token);
commit('SET_REFRESH_TOKEN', data.refresh_token);
resolve();
}).catch(error => {
reject(error)
})
})
},
// 登出
LogOut({
dispatch,
commit
}) {
return new Promise((resolve, reject) => {
logout();
stopRefreshToken();
commit('SET_TOKEN', '');
commit('SET_VIPCODE', '0');
resolve();
})
},
//注销session
FedLogOut({
commit
}) {
return new Promise(resolve => {
commit('SET_TOKEN', '');
resolve();
})
},
startRefreshTokenTimer({
state,
commit,
dispatch
}) {
if (state.token) {
dispatch('refreshToken').then(() => {
startRefreshToken(dispatch);
})
}
},
//更新用户接收短信次数
UpdateUserSendTimes({
commit
}, data) {
commit('SET_USER_SENDTIMES',data);
},
},
mutations: {
setEnterprise(state, val) { // 0 个体招工 企业招工
state.seeEnterprise = val;
setStore({
name: 'enterprise',
content: val,
})
},
SET_TOKEN: (state, token) => {
state.token = token;
setStore({
name: 'token',
content: state.token,
type: 'session'
})
},
SET_REFRESH_TOKEN: (state, refreshToken) => {
state.refreshToken = refreshToken;
setStore({
name: 'refreshToken',
content: state.refreshToken,
type: 'session'
})
},
SET_TENANT_ID: (state, tenantId) => {
state.tenantId = tenantId;
setStore({
name: 'tenantId',
content: state.tenantId,
type: 'session'
})
},
SET_USER_INFO: (state, userInfo) => {
state.userInfo = userInfo;
setStore({
name: 'userInfo',
content: state.userInfo
})
},
SET_USER_CHECKED:(state,val)=>{
state.userChecked=val;
setStore({
name: 'setUserCheckValue',
content: state.userChecked
})
},
SET_USER_SENDTIMES:(state,val)=>{
state.sendTimes=val;
setStore({
name: 'setUserSendTimes',
content: state.sendTimes
})
},
}
}
export default user
import {
isURL,
validatenull
} from '@/untils/validate.js'
import website from '@/config/website'
import {
loginByUsername,
getUserInfo,
logout,
refreshToken
} from '@/api/user'
import md5 from 'js-md5'
import {
getStore,
setStore
} from '@/untils/store.js'
import {
calcDate
} from '@/untils/date.js'
let refreshTimer = null;
function startRefreshToken(dispatch) {
refreshTimer = setInterval(() => {
const token =
getStore({
name: "token",
debug: true
}) || {};
const date = calcDate(token.datetime, new Date().getTime());
if (validatenull(date)) return;
if (date.seconds >= website.tokenTime) {
dispatch("refreshToken")
.then(() => {})
.catch(() => {});
}
}, 10000);
}
function stopRefreshToken() {
clearInterval(refreshTimer)
}
const user = {
state: {
tenantId: getStore({
name: 'tenantId'
}) || '',
userInfo: getStore({
name: 'userInfo'
}) || [],
token: getStore({
name: 'token'
}) || '',
refreshToken: getStore({
name: 'refreshToken'
}) || '',
userChecked: getStore({
name: 'setUserCheckValue'
}) || false,
sendTimes: getStore({ //用户发送短信次数
name: 'setUserSendTimes'
}) || 0,
seeEnterprise: getStore({ //用户发送短信次数
name: 'enterprise'
}) || 0, // 0 个体招工 企业招工
},
actions: {
//用户点击radio按钮
UserCheckedBtn({
commit
}, val) {
commit('SET_USER_CHECKED', val);
},
//根据用户名登录
LoginByUsername({
commit,
dispatch
}, userInfo) {
return new Promise((resolve, reject) => {
loginByUsername(userInfo.tenantId, userInfo.username, md5(userInfo.password), userInfo.type,
userInfo.key,
userInfo.code, userInfo.token).then(res => {
const data = res.data;
if (data.error_description) {
uni.showToast({
icon: "none",
title: data.error_description,
})
} else {
commit('SET_TOKEN', data.access_token);
commit('SET_REFRESH_TOKEN', data.refresh_token);
commit('SET_TENANT_ID', data.tenant_id);
commit('SET_USER_INFO', data);
dispatch('refreshAuthState')
dispatch('startRefreshNewsTimer')
startRefreshToken();
}
resolve(res);
}).catch(error => {
reject(error);
})
})
},
//根据手机号登录
LoginByPhone({
commit
}, userInfo) {
return new Promise((resolve) => {
loginByUsername(userInfo.phone, userInfo.code).then(res => {
const data = res.data.data;
commit('SET_TOKEN', data);
resolve();
})
})
},
GetUserInfo({
commit
}) {
return new Promise((resolve, reject) => {
getUserInfo().then((res) => {
const data = res.data.data;
resolve(data);
}).catch(err => {
reject(err);
})
})
},
//刷新token
refreshToken({
state,
commit,
dispatch
}) {
return new Promise((resolve, reject) => {
refreshToken(state.refreshToken, state.tenantId).then(res => {
const data = res.data;
dispatch('refreshAuthState')
commit('SET_TOKEN', data.access_token);
commit('SET_REFRESH_TOKEN', data.refresh_token);
resolve();
}).catch(error => {
reject(error)
})
})
},
// 登出
LogOut({
dispatch,
commit
}) {
return new Promise((resolve, reject) => {
logout();
stopRefreshToken();
commit('SET_TOKEN', '');
commit('SET_VIPCODE', '0');
resolve();
})
},
//注销session
FedLogOut({
commit
}) {
return new Promise(resolve => {
commit('SET_TOKEN', '');
resolve();
})
},
startRefreshTokenTimer({
state,
commit,
dispatch
}) {
if (state.token) {
dispatch('refreshToken').then(() => {
startRefreshToken(dispatch);
})
}
},
//更新用户接收短信次数
UpdateUserSendTimes({
commit
}, data) {
commit('SET_USER_SENDTIMES', data);
},
},
mutations: {
setEnterprise(state, val) { // 0 个体招工 企业招工
state.seeEnterprise = val;
setStore({
name: 'enterprise',
content: val,
})
},
SET_TOKEN: (state, token) => {
state.token = token;
setStore({
name: 'token',
content: state.token,
type: 'session'
})
},
SET_REFRESH_TOKEN: (state, refreshToken) => {
state.refreshToken = refreshToken;
setStore({
name: 'refreshToken',
content: state.refreshToken,
type: 'session'
})
},
SET_TENANT_ID: (state, tenantId) => {
state.tenantId = tenantId;
setStore({
name: 'tenantId',
content: state.tenantId,
type: 'session'
})
},
SET_USER_INFO: (state, userInfo) => {
state.userInfo = userInfo;
setStore({
name: 'userInfo',
content: state.userInfo
})
},
SET_USER_CHECKED: (state, val) => {
state.userChecked = val;
setStore({
name: 'setUserCheckValue',
content: state.userChecked
})
},
SET_USER_SENDTIMES: (state, val) => {
state.sendTimes = val;
setStore({
name: 'setUserSendTimes',
content: state.sendTimes
})
},
}
}
export default user

View File

@@ -1,22 +1,22 @@
module.exports = {
devServer: {
port: 1887,
proxy: {
'/api': {
target: 'http://10.165.0.173:8000',
ws: true,
pathRewrite: {
'^/api': '/'
}
},
'/qq/map': {
//本地服务接口地址
target: 'https://apis.map.qq.com',
ws: true,
pathRewrite: {
'^/qq/map': '/'
}
}
}
}
};
module.exports = {
devServer: {
port: 1887,
proxy: {
'/api': {
target: 'http://192.168.1.106:8000',
ws: true,
pathRewrite: {
'^/api': '/'
}
},
'/qq/map': {
//本地服务接口地址
target: 'https://apis.map.qq.com',
ws: true,
pathRewrite: {
'^/qq/map': '/'
}
}
}
}
};