| | |
| | | <el-dialog v-model="dialogVisible" width="75%" top="50vh" align-center @close="closeDialog"> |
| | | <template #header> |
| | | <div style="display:flex;font-size: 1.2rem;font-weight: bolder"> |
| | | 机构注册 |
| | | {{state.title}} |
| | | <div style="font-size: 0.9rem;display:flex;align-items: center;font-weight: normal;margin-left: 6px"><Warning style="color:#EF4444;width: 0.9rem; height: 0.9rem;margin-right: 2px" />请认真填写注册信息,带 <span style="color:#EF4444;vertical-align: middle">*</span> 为必填项</div> |
| | | </div> |
| | | </template> |
| | |
| | | <el-col :span="8"> |
| | | <el-form-item prop="agency.attribute" label="机构属性"> |
| | | <el-radio-group v-model="registerForm.agency.attribute" style="width: 50%" @change="changeAttr()"> |
| | | <el-radio :label="0" size="large">疆内</el-radio> |
| | | <el-radio :label="1" size="large">疆外</el-radio> |
| | | <el-radio :label="0" size="large" border>疆内</el-radio> |
| | | <el-radio :label="1" size="large" border>疆外</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item prop="username" label="登录用户名(字母+数字,长度在5-16之间)"> |
| | | <el-input |
| | | v-model="registerForm.username" |
| | | v-model.trim="registerForm.username" |
| | | size="large" |
| | | placeholder="请输入登录用户名" |
| | | /> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item prop="phone" label="用户电话"> |
| | | <el-input |
| | | v-model="registerForm.phone" |
| | | v-model.trim="registerForm.phone" |
| | | size="large" |
| | | placeholder="请输入用户电话" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-row :gutter="30" v-if="state.title == '新增/注册'"> |
| | | <el-col :span="12"> |
| | | <el-form-item prop="password" label="密码"> |
| | | <el-input |
| | | v-model="registerForm.password" |
| | | v-model.trim="registerForm.password" |
| | | type="password" |
| | | size="large" |
| | | placeholder="请输入密码" |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item prop="confirmPassword" label="确认密码"> |
| | | <el-input |
| | | v-model="registerForm.confirmPassword" |
| | | v-model.trim="registerForm.confirmPassword" |
| | | type="password" |
| | | size="large" |
| | | auto-complete="off" |
| | |
| | | style="width:40%;margin: 0 auto" |
| | | @click.prevent="handleRegister" |
| | | > |
| | | <span v-if="!loading">注 册</span> |
| | | <span v-else>注 册 中...</span> |
| | | <div v-if="state.title == '新增/注册'"> |
| | | <span v-if="!loading">注 册</span> |
| | | <span v-else>注 册 中...</span> |
| | | </div> |
| | | <div v-else> |
| | | <span v-if="!loading">确定</span> |
| | | <span v-else>编 辑 中...</span> |
| | | </div> |
| | | </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import {ref, watch, defineExpose, onMounted, reactive} from "vue" |
| | | import {ref, watch, defineExpose, onMounted, reactive, toRefs, watchEffect} from "vue" |
| | | import {ElMessage, ElMessageBox} from "element-plus" |
| | | import { register,delPic,getDict,checkUserName, checkPhone } from "@/api/login" |
| | | import { getRegionTree } from "@/api/area" |
| | |
| | | import {verifyPhone, verifyUsername, verifyPwd} from "../../../utils/validate"; |
| | | let { proxy } = getCurrentInstance() |
| | | import { Base64 } from 'js-base64' |
| | | const registerForm = ref({ |
| | | agency:{ |
| | | name: "", |
| | | creditCode: "", |
| | | attribute: 0, |
| | | area: [], |
| | | province: '', |
| | | city: '', |
| | | district: '', |
| | | address: '', |
| | | legalPerson: '', |
| | | legalPhone: '', |
| | | manager: '', |
| | | managerPhone: '', |
| | | certNumber: '', |
| | | issueDate: '', |
| | | validDate: '', |
| | | assetValue: '', |
| | | workArea: '', |
| | | archiveArea: '', |
| | | regAddress: '', |
| | | business: '', |
| | | reportPath: '', |
| | | }, |
| | | username: '', |
| | | phone: '', |
| | | password: '', |
| | | confirmPassword: '' |
| | | }); |
| | | import {getAgencyById} from "../../../api/sysUsers"; |
| | | |
| | | const props = { |
| | | expandTrigger: 'hover', |
| | |
| | | } |
| | | |
| | | const state = reactive({ |
| | | title: '', |
| | | areaList: [], |
| | | busList: [], |
| | | fileList: [], |
| | |
| | | Authorization: 'Bearer ' + getToken() |
| | | }, |
| | | dialogImageUrl: '', |
| | | dialogImg: false |
| | | dialogImg: false, |
| | | isView: false, |
| | | registerForm:{ |
| | | agency:{ |
| | | name: "", |
| | | creditCode: "", |
| | | attribute: 0, |
| | | area: [], |
| | | province: '', |
| | | city: '', |
| | | district: '', |
| | | address: '', |
| | | legalPerson: '', |
| | | legalPhone: '', |
| | | manager: '', |
| | | managerPhone: '', |
| | | certNumber: '', |
| | | issueDate: '', |
| | | validDate: '', |
| | | assetValue: '', |
| | | workArea: '', |
| | | archiveArea: '', |
| | | regAddress: '', |
| | | business: '', |
| | | reportPath: '', |
| | | }, |
| | | username: '', |
| | | phone: '', |
| | | password: '', |
| | | confirmPassword: '' |
| | | } |
| | | }) |
| | | |
| | | |
| | | const {registerForm} = toRefs(state); |
| | | const equalToPassword = (rule, value, callback) => { |
| | | if (registerForm.value.password !== value) { |
| | | if (state.registerForm.password !== value) { |
| | | callback(new Error("两次输入的密码不一致")); |
| | | } else { |
| | | callback(); |
| | |
| | | callback(new Error('手机号格式有误')) |
| | | }else{ |
| | | checkPhone({phone:value}).then((res)=>{ |
| | | if(res == false){ |
| | | if(res.data == false){ |
| | | callback(new Error('该手机号已被绑定用户,请更换其他手机号')) |
| | | }else{ |
| | | callback() |
| | |
| | | callback(new Error('用户名须使用字母+数字,长度在5-16之间')) |
| | | }else{ |
| | | checkUserName({username:value}).then((res)=>{ |
| | | if(res == false){ |
| | | if(res.data == false){ |
| | | callback(new Error('用户名已被占用,请更换其他用户名')) |
| | | }else{ |
| | | callback() |
| | |
| | | |
| | | onMounted(()=>{ |
| | | getBusiness() |
| | | getArea() |
| | | watchEffect(() => { |
| | | // 在副作用中调用 getArea() |
| | | getArea(); |
| | | }); |
| | | }) |
| | | |
| | | const openDialog=(type, value)=>{ |
| | | state.title = type === 'add' ? '新增/注册' : type ==='edit' ? '编辑' : '查看' ; |
| | | if(type === 'edit' || type == 'view') { |
| | | state.registerForm.id = value.id |
| | | state.registerForm.username = value.username |
| | | state.registerForm.phone = value.phone |
| | | getAgencyById({agencyId: value.agencyId}).then((res)=>{ |
| | | if(res.code == 200){ |
| | | const info = JSON.parse(JSON.stringify(res.data)) |
| | | for(let i in state.registerForm.agency){ |
| | | if(validKey(i,info)){ |
| | | state.registerForm.agency[i] = info[i] |
| | | } |
| | | } |
| | | state.registerForm.agency.business = info.business.split(',').map(Number) |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | if(type == 'view'){ |
| | | state.isView = true |
| | | } |
| | | } |
| | | dialogVisible.value = true |
| | | } |
| | | |
| | | const validKey=(key,obj)=>{ |
| | | return key in obj |
| | | } |
| | | |
| | | const handleChange = (value) => { |
| | | if(registerForm.value.agency.attribute == 0){ |
| | | registerForm.value.agency.province = '新疆维吾尔自治区' |
| | | registerForm.value.agency.city = value[0]?value[0]:'' |
| | | registerForm.value.agency.district = value[1]?value[1]:'' |
| | | if(state.registerForm.agency.attribute == 0){ |
| | | state.registerForm.agency.province = '新疆维吾尔自治区' |
| | | state.registerForm.agency.city = value[0]?value[0]:'' |
| | | state.registerForm.agency.district = value[1]?value[1]:'' |
| | | }else{ |
| | | registerForm.value.agency.province = value[0]?value[0]:'' |
| | | registerForm.value.agency.city = value[1]?value[1]:'' |
| | | registerForm.value.agency.district = value[2]?value[2]:'' |
| | | state.registerForm.agency.province = value[0]?value[0]:'' |
| | | state.registerForm.agency.city = value[1]?value[1]:'' |
| | | state.registerForm.agency.district = value[2]?value[2]:'' |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | const getArea = async ()=>{ |
| | | const type = registerForm.value.agency.attribute |
| | | const type = state.registerForm.agency.attribute |
| | | const res = await getRegionTree({name: '',parentId: null,regionType: type}) |
| | | if(res.code == 200){ |
| | | state.areaList = res.data |
| | |
| | | |
| | | const handleAvatarSuccess = (res, uploadFile) => { |
| | | if(res.code == 200){ |
| | | registerForm.value.agency.reportPath = res.data.path |
| | | state.registerForm.agency.reportPath = res.data.path |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | } |
| | | |
| | | const handleRemove = async (file, uploadFiles) => { |
| | | const res = await delPic({path: registerForm.value.agency.reportPath}) |
| | | const res = await delPic({path: state.registerForm.agency.reportPath}) |
| | | if(res.code == 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | proxy.$refs.registerRef.validate(valid => { |
| | | if (valid) { |
| | | loading.value = true; |
| | | const {confirmPassword, ...data} = registerForm.value |
| | | data.password = Base64.encode(data.password) |
| | | data.agency.business = data.agency.business.join(',') |
| | | delete data.agency.area |
| | | register(data).then(res => { |
| | | if(res.code == 200){ |
| | | const username = registerForm.value.username |
| | | ElMessageBox.alert("<font color='red'>恭喜,您的账号 " + username + " 注册成功!</font>", "系统提示", { |
| | | dangerouslyUseHTMLString: true, |
| | | type: "success", |
| | | }).then(() => { |
| | | dialogVisible.value = false |
| | | proxy.$refs.registerRef.resetFields() |
| | | proxy.$refs.registerRef.clearValidate() |
| | | state.fileList = [] |
| | | // router.push("/homePage") |
| | | }).catch(() => {}) |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.message |
| | | }) |
| | | } |
| | | }).catch(() => { |
| | | loading.value = false |
| | | }) |
| | | if(state.title == '新增/注册'){ |
| | | const {confirmPassword, ...data} = state.registerForm |
| | | data.password = Base64.encode(data.password) |
| | | data.agency.business = data.agency.business.join(',') |
| | | delete data.agency.area |
| | | register(data).then(res => { |
| | | if(res.code == 200){ |
| | | const username = state.registerForm.username |
| | | ElMessageBox.alert("<font color='red'>恭喜,您的账号 " + username + " 注册成功!</font>", "系统提示", { |
| | | dangerouslyUseHTMLString: true, |
| | | type: "success", |
| | | }).then(() => { |
| | | dialogVisible.value = false |
| | | proxy.$refs.registerRef.resetFields() |
| | | proxy.$refs.registerRef.clearValidate() |
| | | state.fileList = [] |
| | | // router.push("/homePage") |
| | | }).catch(() => {}) |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.message |
| | | }) |
| | | } |
| | | }).catch(() => { |
| | | loading.value = false |
| | | }) |
| | | } |
| | | } |
| | | }); |
| | | } |
| | |
| | | } |
| | | |
| | | defineExpose({ |
| | | dialogVisible, |
| | | openDialog |
| | | }) |
| | | |
| | | </script> |