|
@@ -4,38 +4,23 @@
|
|
|
<s-header :name="$t('register.header')" :noback="false"></s-header>
|
|
|
<div class="registerFormBox">
|
|
|
<van-form @submit="registerSubmit">
|
|
|
- <van-field v-model="userName" name="userName" :label="$t('register.usernameLabel')"
|
|
|
- :placeholder="$t('register.usernamePlaceholder')"
|
|
|
+ <!-- 账号昵称 -->
|
|
|
+ <van-field v-model="userName" name="userName" label="账号昵称" :placeholder="$t('register.usernamePlaceholder')"
|
|
|
:rules="[{ pattern: /^[a-zA-Z0-9]+$/, message: $t('register.usernameRequired') }]" />
|
|
|
<br>
|
|
|
<!-- <van-field v-model="actualName" name="actualName" :label="$t('register.nameLabel')" placeholder="请输入真实姓名"
|
|
|
:rules="[{ required: true, message: '请输入真实姓名' }]" />
|
|
|
<br> -->
|
|
|
- <van-field v-model="password" name="password" type="password" :label="$t('register.passwordLabel')"
|
|
|
- :placeholder="$t('register.passwordPlaceholder')"
|
|
|
- :rules="[{ required: true, message: $t('register.passwordRequired') }]" />
|
|
|
- <br>
|
|
|
- <van-field v-model="passwordCheck" name="passwordCheck" type="password"
|
|
|
- :label="$t('register.passwordCheckLabel')" :placeholder="$t('register.passwordCheckPlaceholder')"
|
|
|
- :rules="[{ required: true, message: $t('register.passwordCheckRequired') }]" />
|
|
|
- <br>
|
|
|
- <van-field v-model="identityCard" name="identityCard" label="身份证号" placeholder="请输入身份证号码"
|
|
|
- :rules="[{ validator, message: '请输入合法的身份证号码' }]" /><br />
|
|
|
- <!-- 收款账号 payeeCode 不可修改 -->
|
|
|
- <van-field v-model="payeeCode" name="payeeCode" label="收款账号" placeholder="请输入支付宝账户(不可修改)"
|
|
|
- :rules="[{ required: true, message: '请输入支付宝账户' }]" />
|
|
|
- <br />
|
|
|
<div>
|
|
|
<!-- 国内手机 -->
|
|
|
- <van-field v-model="phone" name="phone" type="tel" :label="$t('register.phoneLabel')"
|
|
|
- :placeholder="$t('register.phonePlaceholder')"
|
|
|
+ <van-field v-model="phone" name="phone" type="tel" label="登录手机" :placeholder="$t('register.phonePlaceholder')"
|
|
|
:rules="[{ required: true, pattern: /^1[3456789]\d{9}$/, message: $t('register.phoneRequired') }]" />
|
|
|
<br />
|
|
|
<!-- 短信验证码 -->
|
|
|
<!-- <van-field v-model="code" name="code" :label="$t('register.codeLabel')"
|
|
|
:placeholder="$t('register.codePlaceholder')"
|
|
|
:rules="[{ required: true, message: $t('register.codeRequired') }]"> -->
|
|
|
- <van-field v-model="code" name="code" :label="$t('register.codeLabel')"
|
|
|
+ <van-field v-model="code" name="code" :label="$t('register.codeLabel')"
|
|
|
:placeholder="$t('register.codePlaceholder')">
|
|
|
<template #button>
|
|
|
<van-button size="small" type="primary" @click="seedVerCode()"
|
|
@@ -47,6 +32,25 @@
|
|
|
</template>
|
|
|
</van-field>
|
|
|
</div><br />
|
|
|
+ <van-field v-model="password" name="password" type="password" :label="$t('register.passwordLabel')"
|
|
|
+ :placeholder="$t('register.passwordPlaceholder')"
|
|
|
+ :rules="[{ required: true, message: $t('register.passwordRequired') }]" />
|
|
|
+ <br>
|
|
|
+ <van-field v-model="passwordCheck" name="passwordCheck" type="password"
|
|
|
+ :label="$t('register.passwordCheckLabel')" :placeholder="$t('register.passwordCheckPlaceholder')"
|
|
|
+ :rules="[{ required: true, message: $t('register.passwordCheckRequired') }]" />
|
|
|
+ <br>
|
|
|
+ <van-field v-model="identityCard" name="identityCard" label="身份证号" placeholder="请输入身份证号码"
|
|
|
+ :rules="[{ validator, message: '请输入合法的身份证号码' }]" /><br />
|
|
|
+ <!-- 支付宝账号 payeeCode 不可修改 -->
|
|
|
+ <van-field v-model="payeeCode" name="payeeCode" label="支付宝账号" placeholder="请输入支付宝账号(不可修改)"
|
|
|
+ :rules="[{ required: true, message: '请输入支付宝账号' }]" />
|
|
|
+ <br />
|
|
|
+ <!-- 银行卡号 cardNo 不可修改 -->
|
|
|
+ <van-field v-model="cardNo" name="cardNo" label="银行卡号" placeholder="请输入银行卡号(不可修改)"
|
|
|
+ :rules="[{ required: true, message: '请输入银行卡号' }]" />
|
|
|
+ <br />
|
|
|
+
|
|
|
<!-- 邮箱地址 -->
|
|
|
<van-field v-model="email" name="email" label="邮箱地址" placeholder="请输入邮箱地址"
|
|
|
:rules="[{ required: true, message: '请输入邮箱地址' }]" /><br />
|
|
@@ -58,19 +62,12 @@
|
|
|
<van-date-picker @confirm="onConfirm" @cancel="showPicker = false"></van-date-picker>
|
|
|
</van-popup>
|
|
|
<br />
|
|
|
- <!-- 部门id deptName -->
|
|
|
- <van-field v-model="deptName" is-link readonly name="deptName" label="部门名称" placeholder="点击选择部门名称"
|
|
|
- @click="showDeptPicker = true" />
|
|
|
- <van-popup v-model:show="showDeptPicker" position="bottom">
|
|
|
- <van-picker :columns="deptColumns" @confirm="onDeptConfirm" @cancel="showDeptPicker = false" />
|
|
|
- </van-popup>
|
|
|
-
|
|
|
- <!-- 岗位id jobName -->
|
|
|
- <van-field v-model="jobName" is-link readonly name="jobName" label="岗位名称" placeholder="点击选择岗位名称"
|
|
|
- @click="showJobPicker = true" />
|
|
|
- <van-popup v-model:show="showJobPicker" position="bottom">
|
|
|
- <van-picker :columns="jobColumns" @confirm="onJobConfirm" @cancel="showJobPicker = false" />
|
|
|
- </van-popup>
|
|
|
+ <!-- 部门dept-岗位job -->
|
|
|
+ <van-field v-model="deptName" is-link readonly label="部门岗位" placeholder="请选择部门-岗位" @click="show = true" />
|
|
|
+ <van-popup v-model:show="show" round position="bottom">
|
|
|
+ <van-cascader v-model="jobName" title="请选择部门-岗位" :options="options" @close="show = false"
|
|
|
+ @finish="onFinish" />
|
|
|
+ </van-popup><br />
|
|
|
|
|
|
<!-- 提交验证信息 -->
|
|
|
<van-button round type="primary" class="register" native-type="submit">{{
|
|
@@ -107,6 +104,7 @@ export default {
|
|
|
const passwordCheck = ref('');
|
|
|
const identityCard = ref('');
|
|
|
const payeeCode = ref('');
|
|
|
+ const cardNo = ref('');
|
|
|
const phone = ref('');
|
|
|
const code = ref('');
|
|
|
const email = ref('');
|
|
@@ -117,37 +115,136 @@ export default {
|
|
|
});
|
|
|
|
|
|
const deptId = ref('');
|
|
|
+ const jobId = ref('');
|
|
|
+ const show = ref(false);
|
|
|
const deptName = ref('');
|
|
|
- const showDeptPicker = ref(false);
|
|
|
- const deptColumns = [
|
|
|
- { text: '研发部', value: '1' },
|
|
|
- { text: '生产部', value: '2' },
|
|
|
- { text: '营销部', value: '3' },
|
|
|
- { text: '售后', value: '4' },
|
|
|
- { text: '行政部', value: '5' },
|
|
|
+ // 选项列表,children 代表子选项,支持多级嵌套
|
|
|
+ const options = [
|
|
|
+ {
|
|
|
+ text: '营销部',
|
|
|
+ value: '1',
|
|
|
+ children: [
|
|
|
+ { text: '营销业务员', value: '3' },
|
|
|
+ { text: '营销助理', value: '4' },
|
|
|
+ { text: '营销其他', value: '6' },
|
|
|
+ { text: '营销运维', value: '5' },
|
|
|
+ { text: '营销部长', value: '2' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: '采购部',
|
|
|
+ value: '10',
|
|
|
+ children: [
|
|
|
+ { text: '采购主管', value: '41' },
|
|
|
+ { text: '采购工程师', value: '42' },
|
|
|
+ { text: '采购文员', value: '43' },
|
|
|
+ { text: '采购其他', value: '44' },
|
|
|
+ ],
|
|
|
+ }, {
|
|
|
+ text: '人事部',
|
|
|
+ value: '11',
|
|
|
+ children: [
|
|
|
+ { text: '人事专员', value: '47' },
|
|
|
+ { text: '人事主管', value: '45' },
|
|
|
+ { text: '人事其他', value: '46' },
|
|
|
+ ],
|
|
|
+ }, {
|
|
|
+ text: '总经办',
|
|
|
+ value: '12',
|
|
|
+ children: [
|
|
|
+ { text: '总经理', value: '48' },
|
|
|
+ { text: '副总经理', value: '49' },
|
|
|
+ { text: '总经理助理', value: '50' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: '推广部',
|
|
|
+ value: '2',
|
|
|
+ children: [
|
|
|
+ { text: '推广运营', value: '7' },
|
|
|
+ { text: '推广美工', value: '8' },
|
|
|
+ { text: '推广其他', value: '9' },
|
|
|
+ { text: '推广部长', value: '1' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: '市场部',
|
|
|
+ value: '3',
|
|
|
+ children: [
|
|
|
+ { text: '市场部长', value: '10' },
|
|
|
+ { text: '市场专员', value: '11' },
|
|
|
+ { text: '市场其他', value: '12' },
|
|
|
+ ],
|
|
|
+ }, {
|
|
|
+ text: '售后部',
|
|
|
+ value: '4',
|
|
|
+ children: [
|
|
|
+ { text: '售后部长', value: '13' },
|
|
|
+ { text: '售后文员', value: '14' },
|
|
|
+ { text: '售后工程师', value: '15' },
|
|
|
+ { text: '售后其他', value: '16' },
|
|
|
+ ],
|
|
|
+ }, {
|
|
|
+ text: '研发部',
|
|
|
+ value: '5',
|
|
|
+ children: [
|
|
|
+ { text: '研发主管', value: '17' },
|
|
|
+ { text: '研发组长', value: '18' },
|
|
|
+ { text: '研发项目经理', value: '19' },
|
|
|
+ { text: '研发工程师', value: '20' },
|
|
|
+ { text: '研发助理工程师', value: '21' },
|
|
|
+ { text: '研发其他', value: '22' },
|
|
|
+ ],
|
|
|
+ }, {
|
|
|
+ text: '生产部',
|
|
|
+ value: '6',
|
|
|
+ children: [
|
|
|
+ { text: '生产工程师', value: '25' },
|
|
|
+ { text: '生产部长', value: '23' },
|
|
|
+ { text: '生产组长', value: '24' },
|
|
|
+ { text: '生产助理', value: '28' },
|
|
|
+ { text: '生产助理工程师', value: '26' },
|
|
|
+ { text: '生产专员', value: '27' },
|
|
|
+ { text: '生产其他', value: '29' },
|
|
|
+ ],
|
|
|
+ }, {
|
|
|
+ text: '品质部',
|
|
|
+ value: '7',
|
|
|
+ children: [
|
|
|
+ { text: '品质其他', value: '32' },
|
|
|
+ { text: '品质质检员', value: '31' },
|
|
|
+ { text: '品质部长', value: '30' },
|
|
|
+ ],
|
|
|
+ }, {
|
|
|
+ text: '财务部',
|
|
|
+ value: '8',
|
|
|
+ children: [
|
|
|
+ { text: '财务其他', value: '37' },
|
|
|
+ { text: '财务助理', value: '36' },
|
|
|
+ { text: '财务出纳', value: '35' },
|
|
|
+ { text: '财务会计', value: '34' },
|
|
|
+ { text: '财务主管', value: '33' },
|
|
|
+ ],
|
|
|
+ }, {
|
|
|
+ text: '行政后勤',
|
|
|
+ value: '9',
|
|
|
+ children: [
|
|
|
+ { text: '行政后勤其他', value: '40' },
|
|
|
+ { text: '行政文员', value: '39' },
|
|
|
+ { text: '行政主管', value: '38' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
];
|
|
|
- const onDeptConfirm = ({ selectedOptions }) => {
|
|
|
- deptName.value = selectedOptions[0]?.text;
|
|
|
- deptId.value = selectedOptions[0]?.value;
|
|
|
- showDeptPicker.value = false;
|
|
|
- };
|
|
|
+ // 全部选项选择完毕后,会触发 finish 事件
|
|
|
+ const onFinish = ({ selectedOptions }) => {
|
|
|
+ show.value = false;
|
|
|
+ deptName.value = selectedOptions.map((option) => option.text).join('-');
|
|
|
|
|
|
- const jobId = ref('');
|
|
|
- const jobName = ref('');
|
|
|
- const showJobPicker = ref(false);
|
|
|
- const jobColumns = [
|
|
|
- { text: '电器工程师', value: '1' },
|
|
|
- { text: '结构工程师', value: '2' },
|
|
|
- { text: '软件工程师', value: '3' },
|
|
|
- { text: '售后', value: '4' },
|
|
|
- { text: '财务', value: '5' },
|
|
|
- ];
|
|
|
- const onJobConfirm = ({ selectedOptions }) => {
|
|
|
- jobName.value = selectedOptions[0]?.text;
|
|
|
- jobId.value = selectedOptions[0]?.value;
|
|
|
- showJobPicker.value = false;
|
|
|
+ deptId.value = selectedOptions[0].value;
|
|
|
+ jobId.value = selectedOptions[1].value;
|
|
|
};
|
|
|
|
|
|
+
|
|
|
const router = useRouter();
|
|
|
const reqApi = ref(false);
|
|
|
|
|
@@ -156,7 +253,7 @@ export default {
|
|
|
|
|
|
const showPicker = ref(false);
|
|
|
const onConfirm = ({ selectedValues }) => {
|
|
|
- hireDate.value = selectedValues.join('/');
|
|
|
+ hireDate.value = selectedValues.join('-');
|
|
|
showPicker.value = false;
|
|
|
}
|
|
|
// 注册点击
|
|
@@ -165,13 +262,13 @@ export default {
|
|
|
showFailToast(t('register.twoTypedDiff'));
|
|
|
return false;
|
|
|
}
|
|
|
- console.log(jobId.value, '哈哈哈', deptId.value);
|
|
|
const { data } = await addUserApply({
|
|
|
userName: userName.value,
|
|
|
// actualName: actualName.value,
|
|
|
password: md5(password.value),
|
|
|
identityCard: identityCard.value,
|
|
|
payeeCode: payeeCode.value,
|
|
|
+ cardNo: cardNo.value,
|
|
|
phone: phone.value,
|
|
|
code: code.value,
|
|
|
email: email.value,
|
|
@@ -259,17 +356,14 @@ export default {
|
|
|
showPicker,
|
|
|
identityCard,
|
|
|
payeeCode,
|
|
|
+ cardNo,
|
|
|
hireDate,
|
|
|
deptId,
|
|
|
deptName,
|
|
|
jobId,
|
|
|
- jobName,
|
|
|
- showDeptPicker,
|
|
|
- deptColumns,
|
|
|
- onDeptConfirm,
|
|
|
- showJobPicker,
|
|
|
- jobColumns,
|
|
|
- onJobConfirm
|
|
|
+ show,
|
|
|
+ options,
|
|
|
+ onFinish,
|
|
|
}
|
|
|
},
|
|
|
components: { sHeader }
|