an_xiao/police_uniapp/pages/my-sign/my-sign.vue

525 lines
12 KiB
Vue
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>