525 lines
12 KiB
Vue
525 lines
12 KiB
Vue
|
<template>
|
|||
|
<view class="my-sign">
|
|||
|
<view class="mySignItem">
|
|||
|
<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
|
|||
|
<view class="mySignIndex">
|
|||
|
<u--form labelWidth="150rpx" :model="dataUser" :rules="rules" ref="uForm" labelAlign="left">
|
|||
|
<u-form-item label="用户类型:" prop="personType" borderBottom @click="show = true">
|
|||
|
<!-- closeOnClickOverlay="true" -->
|
|||
|
<u-action-sheet @select="radioChanges" @close="show = false" closeOnClickAction="true"
|
|||
|
:actions="radiolist" :show="show"></u-action-sheet>
|
|||
|
<view class="dataUserunit" :style="{color: dataUser.personType ||'#c2cad2'}"
|
|||
|
v-model="dataUser.personType">{{dataUser.personType || "请输入用户类型"}}</view>
|
|||
|
<view class="HiddenEse">
|
|||
|
<text class="iconoscope"></text>
|
|||
|
</view>
|
|||
|
</u-form-item>
|
|||
|
<u-form-item label="姓名:" prop="name" borderBottom>
|
|||
|
<u--input clearable placeholder="请输入姓名" v-model="dataUser.name"></u--input>
|
|||
|
</u-form-item>
|
|||
|
<u-form-item @click="titleClick" label="部门:" prop="title" borderBottom v-if="showradio">
|
|||
|
<view class="dataUserunit" :style="{color: dataUser.title ||'#c2cad2'}" name="unit"
|
|||
|
v-model="dataUser.title">{{dataUser.title || "请输入部门"}}</view>
|
|||
|
<u-picker itemHeight="75" @confirm="titleConfrm" :show="showtitle" :columns="titleSelect"
|
|||
|
keyName="label" @cancel="showtitle = false" @close="showtitle = false"></u-picker>
|
|||
|
</u-form-item>
|
|||
|
|
|||
|
<u-form-item @click="showpickerClick" label="派出所:" prop="Localpolice" borderBottom v-if="showradio">
|
|||
|
<view class="dataUserunit" :style="{color: dataUser.Localpolice ||'#c2cad2'}" name="unit"
|
|||
|
v-model="dataUser.Localpolice">{{dataUser.Localpolice || "请输入派出所"}}</view>
|
|||
|
<u-picker itemHeight="75" @confirm="pickerConfrm" :show="showpicker" :columns="columns"
|
|||
|
keyName="label" @cancel="showpicker = false" @close="showpicker = false"></u-picker>
|
|||
|
</u-form-item>
|
|||
|
<u-form-item label="单位:" prop="unit" borderBottom v-if="showradio && Publicfalse"
|
|||
|
@click="unitClick">
|
|||
|
<view class="dataUserunit" :style="{color: dataUser.unit ||'#c2cad2'}" name="unit"
|
|||
|
v-model="dataUser.unit">{{dataUser.unit || "请输入所属单位"}}</view>
|
|||
|
<u-picker itemHeight="75" @confirm="pickerUnitClick" :show="showunit" :columns="unitColums"
|
|||
|
keyName="label" @cancel="showunit = false" @close="showunit = false"></u-picker>
|
|||
|
</u-form-item>
|
|||
|
</u--form>
|
|||
|
</view>
|
|||
|
<!-- 登录 -->
|
|||
|
<view class="anniu">
|
|||
|
<u-button @click="submit" v-if="showradio" class="butn" text="注册" color="#4e87ff"></u-button>
|
|||
|
<slot v-else>
|
|||
|
<u-button @click="submitLogin(dataUser)" class="butn" type="primary" text="登录"
|
|||
|
color="#4e87ff"></u-button>
|
|||
|
</slot>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import {
|
|||
|
mapMutations,
|
|||
|
mapGetters
|
|||
|
} from 'vuex';
|
|||
|
import {
|
|||
|
postAddLogin,
|
|||
|
postLogin,
|
|||
|
getBoroughList,
|
|||
|
getstationList,
|
|||
|
getstationbase
|
|||
|
} from '@/api/login';
|
|||
|
import {
|
|||
|
customTotast
|
|||
|
} from '@/utils/index';
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
dataUser: {
|
|||
|
personType: '',
|
|||
|
name: '',
|
|||
|
title: '',
|
|||
|
id: '',
|
|||
|
Localpolice: '',
|
|||
|
unit: ''
|
|||
|
},
|
|||
|
fields: [],
|
|||
|
columns: [], //派出所控制
|
|||
|
unitColums: [], //单位
|
|||
|
showradio: true,
|
|||
|
showpicker: false, //派出所控制
|
|||
|
showunit: false, //单位控制
|
|||
|
showPopup: false, // 弹层控制
|
|||
|
show: false,
|
|||
|
schoolInformation: {},
|
|||
|
radiolist: [{
|
|||
|
value: 'volunteer',
|
|||
|
name: '志愿者'
|
|||
|
}, {
|
|||
|
value: 'guarder',
|
|||
|
name: '保安人员'
|
|||
|
},
|
|||
|
// {
|
|||
|
// value: 'policeman',
|
|||
|
// name: '警务人员'
|
|||
|
// },
|
|||
|
{
|
|||
|
value: 'school.manager',
|
|||
|
name: '教育部门'
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'police.manager',
|
|||
|
name: '公安部门'
|
|||
|
}
|
|||
|
],
|
|||
|
Publicfalse: true,
|
|||
|
rules: {
|
|||
|
name: [{
|
|||
|
required: true,
|
|||
|
message: '请输入用户名',
|
|||
|
trigger: ['blur', 'change']
|
|||
|
}],
|
|||
|
Localpolice: [{
|
|||
|
required: true,
|
|||
|
message: '请选择派出所',
|
|||
|
trigger: ['blur', 'change']
|
|||
|
}],
|
|||
|
unit: [{
|
|||
|
required: true,
|
|||
|
message: '请选择学校单位',
|
|||
|
trigger: ['blur', 'change']
|
|||
|
}],
|
|||
|
id: [{
|
|||
|
required: true,
|
|||
|
message: '请输入账号',
|
|||
|
trigger: ['blur', 'change']
|
|||
|
}],
|
|||
|
},
|
|||
|
Public: undefined,
|
|||
|
showtitle: false,
|
|||
|
titleSection:[
|
|||
|
[ '公安分局','内保大队','派出所']
|
|||
|
],
|
|||
|
title2Section:[
|
|||
|
['区教育局','区教育局安保科','学校老师','学校保安']
|
|||
|
]
|
|||
|
};
|
|||
|
},
|
|||
|
|
|||
|
computed: {
|
|||
|
// 拿取vuex里的数据
|
|||
|
...mapGetters({
|
|||
|
getopenid: 'openid/getopenid'
|
|||
|
}),
|
|||
|
titleSelect(){
|
|||
|
return this.dataUser.personType === '公安部门'? this.titleSection:this.title2Section
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
created() {},
|
|||
|
onShow() {
|
|||
|
|
|||
|
},
|
|||
|
onLoad() {},
|
|||
|
methods: {
|
|||
|
...mapMutations({
|
|||
|
updateList: 'users/updateList',
|
|||
|
schoolList: 'users/schoolList',
|
|||
|
}),
|
|||
|
// 志愿者切换
|
|||
|
radioChanges(val) {
|
|||
|
if (val.value == 'police.manager') {
|
|||
|
this.Public = {
|
|||
|
remark: '公安机关',
|
|||
|
brigade: "长沙芙蓉区",
|
|||
|
level: "1",
|
|||
|
borough: '公安机关'
|
|||
|
}
|
|||
|
} else {
|
|||
|
this.Public = {
|
|||
|
remark: '教育局',
|
|||
|
brigade: "长沙芙蓉区",
|
|||
|
level: "1",
|
|||
|
borough: '教育局'
|
|||
|
}
|
|||
|
}
|
|||
|
this.BoroughList(); // 派出所列表数据
|
|||
|
this.dataUser.personType = val.value;
|
|||
|
if (this.dataUser.personType == 'school.manager') {
|
|||
|
this.showradio = true;
|
|||
|
this.dataUser = {
|
|||
|
personType: val.name,
|
|||
|
id: '',
|
|||
|
name: '',
|
|||
|
title:''
|
|||
|
};
|
|||
|
} else if (this.dataUser.personType == 'police.manager') {
|
|||
|
this.showradio = true;
|
|||
|
this.dataUser = {
|
|||
|
personType: val.name,
|
|||
|
id: '',
|
|||
|
name: '',
|
|||
|
title:''
|
|||
|
};
|
|||
|
} else if (this.dataUser.personType == 'guarder') {
|
|||
|
this.showradio = true;
|
|||
|
this.dataUser = {
|
|||
|
personType: val.name,
|
|||
|
id: '',
|
|||
|
name: '',
|
|||
|
title:''
|
|||
|
};
|
|||
|
} else {
|
|||
|
this.showradio = false;
|
|||
|
this.dataUser = {
|
|||
|
personType: val.name,
|
|||
|
id: '',
|
|||
|
name: '',
|
|||
|
title:''
|
|||
|
};
|
|||
|
}
|
|||
|
},
|
|||
|
onLogin() {
|
|||
|
// uni.navigateTo({
|
|||
|
// url: `/pages/login/index`
|
|||
|
// });
|
|||
|
// setTimeout(() => {
|
|||
|
// this.$refs.uForm.clearValidate();
|
|||
|
// }, 900);
|
|||
|
},
|
|||
|
// 部门
|
|||
|
titleClick() {
|
|||
|
if (this.dataUser.personType !== '') {
|
|||
|
this.showtitle = true
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
title: '请先选择用户类型'
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
titleConfrm(e){
|
|||
|
this.dataUser.title = e.value[0]
|
|||
|
this.showtitle = false
|
|||
|
},
|
|||
|
// 注册
|
|||
|
submit() {
|
|||
|
this.$refs.uForm
|
|||
|
.validate()
|
|||
|
.then((res) => {
|
|||
|
let TypeListArr = this.dataUser.personType == '教育部门' ? 'school.manager' : this.dataUser
|
|||
|
.personType == '公安部门' ?
|
|||
|
'police.manager' : this.dataUser.personType == '保安人员' ? 'guarder' : '';
|
|||
|
console.log(TypeListArr);
|
|||
|
const data = {
|
|||
|
personType: TypeListArr,
|
|||
|
name: this.dataUser.name,
|
|||
|
id: this.getopenid,
|
|||
|
title:this.dataUser.title,
|
|||
|
brigade: '长沙芙蓉区',
|
|||
|
borough: this.dataUser.Localpolice,
|
|||
|
station: this.dataUser.unit
|
|||
|
};
|
|||
|
postAddLogin(data).then((res) => {
|
|||
|
uni.showLoading({
|
|||
|
title: '正在注册中....'
|
|||
|
});
|
|||
|
this.updateList(res)
|
|||
|
setTimeout(() => {
|
|||
|
uni.showToast({
|
|||
|
title: '注册成功',
|
|||
|
icon: 'success'
|
|||
|
});
|
|||
|
uni.hideLoading();
|
|||
|
postLogin({
|
|||
|
id: this.getopenid,
|
|||
|
password: ''
|
|||
|
}).then((resopen) => {
|
|||
|
uni.showLoading({
|
|||
|
title: '正在登陆中...'
|
|||
|
});
|
|||
|
this.updateList(resopen.data)
|
|||
|
this.schoolList(this.schoolInformation)
|
|||
|
setTimeout(() => {
|
|||
|
uni.hideLoading();
|
|||
|
customTotast({
|
|||
|
title: '登录成功',
|
|||
|
icon: 'success'
|
|||
|
})();
|
|||
|
uni.switchTab({
|
|||
|
url: `/pages/index/index`
|
|||
|
});
|
|||
|
}, 1000);
|
|||
|
}).catch((error) => {
|
|||
|
uni.showToast({
|
|||
|
title: '注册成功账号待审核',
|
|||
|
icon: 'none',
|
|||
|
mask: true,
|
|||
|
success() {
|
|||
|
setTimeout(() => {
|
|||
|
uni.navigateTo({
|
|||
|
url: `/pages/login/index`
|
|||
|
});
|
|||
|
}, 500)
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
})
|
|||
|
}, 1000);
|
|||
|
}).catch((err) => {
|
|||
|
console.log(err);
|
|||
|
})
|
|||
|
})
|
|||
|
.catch((errors) => {
|
|||
|
uni.$u.toast('校验失败');
|
|||
|
});
|
|||
|
},
|
|||
|
// 志愿者不用掉接口 直接登录
|
|||
|
submitLogin(e) {
|
|||
|
const elist = {
|
|||
|
id: "",
|
|||
|
name: e.name,
|
|||
|
personType: e.personType == "志愿者" ? 'volunteer' : '',
|
|||
|
}
|
|||
|
this.updateList(elist);
|
|||
|
if (e.name !== '') {
|
|||
|
uni.switchTab({
|
|||
|
url: `/pages/index/index`
|
|||
|
});
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
title: '用户名不能为空'
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
// 获取派出所列表
|
|||
|
BoroughList() {
|
|||
|
const that = this;
|
|||
|
const dataLIst = {
|
|||
|
brigade: '长沙芙蓉区'
|
|||
|
};
|
|||
|
getBoroughList(dataLIst)
|
|||
|
.then((res) => {
|
|||
|
res.data.unshift(this.Public)
|
|||
|
console.log(res.data);
|
|||
|
let matter = res.data
|
|||
|
.filter((v) => v.remark && v.borough)
|
|||
|
.map((res) => ({
|
|||
|
id: res.borough,
|
|||
|
label: res.remark
|
|||
|
}));
|
|||
|
that.columns = [matter];
|
|||
|
console.log(that.columns);
|
|||
|
})
|
|||
|
.catch((error) => {});
|
|||
|
},
|
|||
|
// 派出所
|
|||
|
showpickerClick() {
|
|||
|
if (this.dataUser.personType !== '') {
|
|||
|
this.showpicker = true;
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
title: '请先选择用户类型'
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
// 触发点击事件
|
|||
|
pickerConfrm(e) {
|
|||
|
console.log(1121313121,e);
|
|||
|
if (e.value && e.value.length >= 1) {
|
|||
|
if (e.value[0].label === '公安机关' || e.value[0].label === '教育局') {
|
|||
|
this.Publicfalse = false
|
|||
|
} else {
|
|||
|
this.Publicfalse = true
|
|||
|
}
|
|||
|
this.dataUser.Localpolice = e.value[0].label;
|
|||
|
|
|||
|
}
|
|||
|
this.fields = e.value[0].label;
|
|||
|
this.showpicker = false;
|
|||
|
this.dataUser.unit = ''
|
|||
|
},
|
|||
|
// 单位
|
|||
|
unitClick() {
|
|||
|
console.log(this.dataUser.Localpolice);
|
|||
|
if (this.dataUser.Localpolice !== '') {
|
|||
|
this.stationList();
|
|||
|
this.showunit = true;
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
title: '请先选择派出所'
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
},
|
|||
|
// 单位
|
|||
|
stationList() {
|
|||
|
const that = this;
|
|||
|
const unitList = {
|
|||
|
brigade: '长沙芙蓉区',
|
|||
|
borough: that.fields
|
|||
|
};
|
|||
|
getstationList(unitList)
|
|||
|
.then((res) => {
|
|||
|
let matterunit = res.data
|
|||
|
.filter((v) => v.nickname && v.name)
|
|||
|
.map((res) => ({
|
|||
|
id: res.name,
|
|||
|
label: res.nickname
|
|||
|
}));
|
|||
|
that.unitColums = [matterunit];
|
|||
|
})
|
|||
|
.catch((error) => {});
|
|||
|
},
|
|||
|
|
|||
|
// 单位触发确定
|
|||
|
pickerUnitClick(e) {
|
|||
|
// if (this.dataUser.Localpolice !== '') {
|
|||
|
if (e.value.length > 0) {
|
|||
|
console.log(11111);
|
|||
|
this.dataUser.unit = e.value[0].label;
|
|||
|
getstationbase({
|
|||
|
name: this.dataUser.unit
|
|||
|
}).then((respone) => {
|
|||
|
this.schoolInformation = respone.data
|
|||
|
})
|
|||
|
}
|
|||
|
this.showunit = false;
|
|||
|
this.$refs.uForm.clearValidate();
|
|||
|
// }
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss">
|
|||
|
.mySignItem {
|
|||
|
padding: 0;
|
|||
|
margin: 0;
|
|||
|
background-color: #e9eef4;
|
|||
|
overflow: hidden;
|
|||
|
height: 100vh;
|
|||
|
|
|||
|
.mySignIndex {
|
|||
|
margin: 30rpx 0 0 0;
|
|||
|
position: relative;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.HiddenEse {
|
|||
|
position: absolute;
|
|||
|
top: 16px;
|
|||
|
right: -30px;
|
|||
|
width: 118rpx;
|
|||
|
height: 70rpx;
|
|||
|
|
|||
|
image {
|
|||
|
width: 40rpx;
|
|||
|
height: 40rpx;
|
|||
|
}
|
|||
|
|
|||
|
.iconoscope {
|
|||
|
width: 6px;
|
|||
|
height: 6px;
|
|||
|
display: inline-block;
|
|||
|
/* line-height: 20px; */
|
|||
|
border: solid 2px #c2c2c2;
|
|||
|
margin-left: 10px;
|
|||
|
transform: rotate(45deg);
|
|||
|
border-bottom: white;
|
|||
|
border-left: white;
|
|||
|
margin-bottom: 2px;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.anniu {
|
|||
|
overflow: hidden;
|
|||
|
margin: 50rpx 20rpx 20rpx;
|
|||
|
}
|
|||
|
|
|||
|
.annius {
|
|||
|
margin-top: 30rpx;
|
|||
|
overflow: hidden;
|
|||
|
}
|
|||
|
|
|||
|
.dataUserunit {
|
|||
|
padding-left: 16rpx;
|
|||
|
}
|
|||
|
|
|||
|
.acquire {
|
|||
|
position: relative;
|
|||
|
}
|
|||
|
|
|||
|
.button {
|
|||
|
position: absolute;
|
|||
|
top: 7px;
|
|||
|
right: -80px;
|
|||
|
width: 64px;
|
|||
|
height: 20px;
|
|||
|
line-height: 20px;
|
|||
|
font-size: 11px;
|
|||
|
border: none;
|
|||
|
color: #ccc;
|
|||
|
outline: none;
|
|||
|
background-color: transparent;
|
|||
|
border: 1px solid none;
|
|||
|
margin-left: 0;
|
|||
|
margin-right: 10px;
|
|||
|
padding-left: 0;
|
|||
|
padding-right: 0;
|
|||
|
}
|
|||
|
|
|||
|
/deep/.u-form-item {
|
|||
|
line-height: 70rpx;
|
|||
|
position: relative;
|
|||
|
}
|
|||
|
|
|||
|
/deep/.u-form-item__body__right {
|
|||
|
padding: 0rpx 150rpx 0 0;
|
|||
|
}
|
|||
|
|
|||
|
/deep/ .u-form-item__body__left {
|
|||
|
margin-left: 40rpx;
|
|||
|
}
|
|||
|
|
|||
|
/deep/.u-form-item__body__right__message {
|
|||
|
margin-left: 206rpx !important;
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|