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

525 lines
12 KiB
Vue
Raw Normal View History

2024-07-25 16:03:08 +08:00
<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>