flat:暂存

This commit is contained in:
史典卓
2025-08-05 18:28:07 +08:00
parent e698f0624f
commit 1cd5363723
7 changed files with 1406 additions and 1144 deletions

View File

@@ -1,310 +1,364 @@
<template>
<view class="">
<view class="content">
<u--form labelPosition="left" :model="formData" :rules="rules" ref="formOne">
<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="[xzDic]" :visibel="showJobCompanyNature"
labelName="dictValue" valueName="dictKey" 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="请输入用工单位介绍" count
maxlength="200"></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">
<u-form-item labelWidth="100" prop="identityUrl4Id">
<UploadIdNumber v-model="formData.identityUrl4Id" contentStyle="marginTop: 30rpx"
backImg="/static/img/idcard.png">
</UploadIdNumber>
</u-form-item>
<u-form-item labelWidth="100" prop="identityUrl5Id">
<UploadIdNumber v-model="formData.identityUrl5Id" backImg="/static/img/backidcard1.png">
</UploadIdNumber>
</u-form-item>
<u-form-item labelWidth="100" prop="authUrlId">
<UploadIdNumber v-model="formData.authUrlId" backImg="/static/img/businessLicense.jpg">
</UploadIdNumber>
</u-form-item>
</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,
getInviteCompanyAuthInfo,
getDictionary2
} from '@/api/userrecruit.js'
import {
mapState
} from 'vuex'
const rules = {
comname: {
type: 'string',
required: true,
message: '请输入用工单位',
trigger: ['change']
},
companyTid: {
type: 'string',
required: true,
max: 18,
min: 18,
message: '请输入18位统一信用代码',
trigger: ['change']
},
masterName: {
type: 'string',
required: true,
message: '请输入法人姓名',
trigger: ['change']
},
masterIdentity: {
type: 'string',
required: true,
pattern: /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[Xx\d]$/,
message: '请输入法人身份证号',
trigger: ['change']
},
cityId: {
type: 'string',
required: true,
message: '请选择所在地区',
trigger: ['change']
},
companyAddress: {
type: 'string',
required: true,
message: '请输入详细地址',
trigger: ['change']
},
nature: {
type: 'string',
required: true,
message: '请选择企业性质',
trigger: ['change']
},
tradeId: {
type: 'string',
required: true,
message: '请选择行业',
trigger: ['change']
},
companyDesc: {
type: 'string',
min: 20,
required: true,
message: '请输入企业介绍最少20个字符',
trigger: ['change']
},
manager: {
type: 'string',
required: true,
message: '请输入联系人',
trigger: ['change']
},
telphone: {
type: 'string',
required: true,
pattern: /^1[3-9]{1}[0-9]{9}$/,
message: '请输入手机号码',
trigger: ['change']
},
identityUrl4Id: {
type: 'string',
required: true,
message: '请上传法人身份证(人像)',
trigger: ['change']
},
identityUrl5Id: {
type: 'string',
required: true,
message: '请上传法人身份证(国徽)',
trigger: ['change']
},
authUrlId: {
type: 'string',
required: true,
message: '请上传企业营业执照',
trigger: ['change']
},
}
export default {
components: {
UploadIdNumber,
PickerList
},
data() {
return {
showAddress: false,
showJobCompanyNature: false,
showjobCompanyIndustry: false,
dic,
xzDic: [],
formData: {},
rules
};
},
onLoad(options) {
if (options.reviewStatus === '9') {
this.getInfo()
}
this.getDictInfo()
},
computed: {
...mapState({
authInfo: (state) => state.auth.authInfo,
userInfo: (state) => state.user.userInfo
}),
},
created() {
this.formData.manager = this.authInfo.realName
this.formData.idNumber = this.authInfo.idNumber
},
methods: {
hideKeyboard() {
uni.hideKeyboard()
},
async submit() {
let params = {
...this.formData,
nature: Number(this.formData.nature),
cityId: Number(this.formData.cityId),
tradeId: Number(this.formData.tradeId),
}
const _this = this
this.$refs.formOne.validate().then(async (res) => {
let params = {
..._this.formData,
nature: Number(_this.formData.nature),
cityId: Number(_this.formData.cityId),
tradeId: Number(_this.formData.tradeId),
manager: _this.authInfo.realName,
idNumber: _this.authInfo.idNumber,
companyName: dic.addressColumn[0].filter((item) => item.value == _this
.formData.cityId)[0].label
}
console.log(params)
let resData = await addInviteCompanyAuth(params)
if (resData.data.code === 200) {
uni.navigateBack(1)
_this.$api.sleep(1000).then(() => {
_this.$api.msg('已完成企业信息认证')
})
}
}).catch(errors => {
if (/[\u4e00-\u9fff]/.test(errors.message)) {
_this.$api.msg(errors.message)
}
})
},
async getInfo() {
let params = {
idNumber: this.authInfo.idNumber
}
let resData = await getInviteCompanyAuthInfo(params)
if (resData.data.code === 200) {
console.log(resData.data.data)
this.formData = {
...resData.data.data,
nature: String(resData.data.data.nature),
cityId: String(resData.data.data.cityId),
tradeId: String(resData.data.data.tradeId),
}
}
},
reset() {
const _this = this
uni.showModal({
content: '重置将清空表单,确定重置吗?',
success() {
_this.formData = {}
},
})
},
async getDictInfo() {
let resData = await getDictionary2()
if (resData.data.code === 200) {
this.xzDic = resData.data.data
}
}
},
}
</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>
<template>
<view class="">
<view class="content">
<u--form labelPosition="left" :model="formData" :rules="rules" ref="formOne">
<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="[xzDic]"
:visibel="showJobCompanyNature"
labelName="dictValue"
valueName="dictKey"
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="请输入用工单位介绍"
count
maxlength="200"
></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">
<u-form-item labelWidth="100" prop="identityUrl4Id">
<UploadIdNumber
v-model="formData.identityUrl4Id"
contentStyle="marginTop: 30rpx"
backImg="/static/img/idcard.png"
></UploadIdNumber>
</u-form-item>
<u-form-item labelWidth="100" prop="identityUrl5Id">
<UploadIdNumber
v-model="formData.identityUrl5Id"
backImg="/static/img/backidcard1.png"
></UploadIdNumber>
</u-form-item>
<u-form-item labelWidth="100" prop="authUrlId">
<UploadIdNumber
v-model="formData.authUrlId"
backImg="/static/img/businessLicense.jpg"
></UploadIdNumber>
</u-form-item>
</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, getInviteCompanyAuthInfo, getDictionary2 } from '@/api/userrecruit.js';
import { mapState } from 'vuex';
const rules = {
comname: {
type: 'string',
required: true,
message: '请输入用工单位',
trigger: ['change'],
},
companyTid: {
type: 'string',
required: true,
max: 18,
min: 18,
message: '请输入18位统一信用代码',
trigger: ['change'],
},
masterName: {
type: 'string',
required: true,
message: '请输入法人姓名',
trigger: ['change'],
},
masterIdentity: {
type: 'string',
required: true,
pattern: /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[Xx\d]$/,
message: '请输入法人身份证号',
trigger: ['change'],
},
cityId: {
type: 'string',
required: true,
message: '请选择所在地区',
trigger: ['change'],
},
companyAddress: {
type: 'string',
required: true,
message: '请输入详细地址',
trigger: ['change'],
},
nature: {
type: 'string',
required: true,
message: '请选择企业性质',
trigger: ['change'],
},
tradeId: {
type: 'string',
required: true,
message: '请选择行业',
trigger: ['change'],
},
companyDesc: {
type: 'string',
min: 20,
required: true,
message: '请输入企业介绍最少20个字符',
trigger: ['change'],
},
manager: {
type: 'string',
required: true,
message: '请输入联系人',
trigger: ['change'],
},
telphone: {
type: 'string',
required: true,
pattern: /^1[3-9]{1}[0-9]{9}$/,
message: '请输入手机号码',
trigger: ['change'],
},
identityUrl4Id: {
type: 'string',
required: true,
message: '请上传法人身份证(人像)',
trigger: ['change'],
},
identityUrl5Id: {
type: 'string',
required: true,
message: '请上传法人身份证(国徽)',
trigger: ['change'],
},
authUrlId: {
type: 'string',
required: true,
message: '请上传企业营业执照',
trigger: ['change'],
},
};
export default {
components: {
UploadIdNumber,
PickerList,
},
data() {
return {
showAddress: false,
showJobCompanyNature: false,
showjobCompanyIndustry: false,
dic,
xzDic: [],
formData: {},
rules,
};
},
onLoad(options) {
if (options.reviewStatus === '9') {
this.getInfo();
}
this.getDictInfo();
},
computed: {
...mapState({
authInfo: (state) => state.auth.authInfo,
userInfo: (state) => state.user.userInfo,
}),
},
created() {
this.formData.manager = this.authInfo.realName;
this.formData.idNumber = this.authInfo.idNumber;
},
methods: {
hideKeyboard() {
uni.hideKeyboard();
},
async submit() {
let params = {
...this.formData,
nature: Number(this.formData.nature),
cityId: Number(this.formData.cityId),
tradeId: Number(this.formData.tradeId),
};
const _this = this;
this.$refs.formOne
.validate()
.then(async (res) => {
let params = {
..._this.formData,
nature: Number(_this.formData.nature),
cityId: Number(_this.formData.cityId),
tradeId: Number(_this.formData.tradeId),
manager: _this.authInfo.realName,
idNumber: _this.authInfo.idNumber,
companyName: dic.addressColumn[0].filter((item) => item.value == _this.formData.cityId)[0]
.label,
};
console.log(params);
let resData = await addInviteCompanyAuth(params);
if (resData.data.code === 200) {
uni.navigateBack(1);
_this.$api.sleep(1000).then(() => {
_this.$api.msg('已完成企业信息认证');
});
}
})
.catch((errors) => {
if (/[\u4e00-\u9fff]/.test(errors.message)) {
_this.$api.msg(errors.message);
}
});
},
async getInfo() {
let params = {
idNumber: this.authInfo.idNumber,
};
let resData = await getInviteCompanyAuthInfo(params);
if (resData.data.code === 200) {
console.log(resData.data.data);
this.formData = {
...resData.data.data,
nature: String(resData.data.data.nature),
cityId: String(resData.data.data.cityId),
tradeId: String(resData.data.data.tradeId),
};
}
},
reset() {
const _this = this;
uni.showModal({
content: '重置将清空表单,确定重置吗?',
success() {
_this.formData = {};
},
});
},
async getDictInfo() {
let resData = await getDictionary2();
if (resData.data.code === 200) {
this.xzDic = resData.data.data;
}
},
},
};
</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

@@ -1,77 +1,86 @@
<template>
<view class="content_upload" :style="contentStyle">
<u-upload :fileList="ImgUrl" @afterRead="afterRead" :deletable="true" @delete="deletePic" name="6" :maxCount="1"
:width="width" :height="height">
<image :src="backImg" :style="`width: ${width}px;height: ${height}px;`"></image>
<image class="iconimg" src="/static/img/Takingpictures.png"
:style="`width: ${width/4}px;height: ${width/4}px;`"></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
},
width: {
type: Number,
default: 280
},
height: {
type: Number,
default: 150
},
contentStyle: {
type: String,
default: ''
}
},
computed: {
ImgUrl(val) {
return this.value ? [{
name: 'img.jpg',
url: 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_upload {
position: relative;
}
.iconimg {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
</style>
<template>
<view class="content_upload" :style="contentStyle">
<u-upload
:fileList="ImgUrl"
@afterRead="afterRead"
:deletable="true"
@delete="deletePic"
name="6"
:maxCount="1"
:width="width"
:height="height"
>
<image :src="backImg" :style="{ width: width + 'px', height: height + 'px' }"></image>
<image
class="iconimg"
src="/static/img/Takingpictures.png"
:style="{ width: width / 4 + 'px', height: height / 4 + 'px' }"
></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,
},
width: {
type: Number,
default: 280,
},
height: {
type: Number,
default: 150,
},
contentStyle: {
type: String,
default: '',
},
},
computed: {
ImgUrl(val) {
return this.value
? [
{
name: 'img.jpg',
url: 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_upload {
position: relative;
}
.iconimg {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -308,7 +308,7 @@
<view
class="addressinfo"
@click="selectMap"
:style="`fontSize: 15px;color: ${info.address ? '#333333' : '#c0c4cc'}`"
:style="{ fontSize: '15px', color: info.address ? '#333333' : '#c0c4cc' }"
>
{{ info.address || '请选择' }}
</view>