|
@@ -19,6 +19,25 @@
|
|
|
</uni-forms-item>
|
|
|
</uni-forms>
|
|
|
</uni-section>
|
|
|
+ <uni-section title="地址信息" type="line">
|
|
|
+ <uni-forms ref="addrForm" :modelValue="formData" :label-width="90">
|
|
|
+ <uni-forms-item label="小区选择">
|
|
|
+ <uni-data-picker v-model="formData.estateId" :map="pickerMap" :localdata="items" placeholder="请选择地址" popup-title="请选择地址" @change="onchange"></uni-data-picker>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="楼栋选择">
|
|
|
+ <uni-data-picker v-model="formData.buildingId" :localdata="range" placeholder="请选择小区" popup-title="请选择小区" @change="selectChange"></uni-data-picker>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="单元选择" v-if="house.unit && house.unit.length > 0">
|
|
|
+ <uni-data-picker v-model="formData.unit" :localdata="house.unit" placeholder="请选择单元" popup-title="请选择单元" @change="unitChange"></uni-data-picker>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="楼层选择" v-if="house.floor && house.unit.length > 0">
|
|
|
+ <uni-data-picker v-model="formData.floor" :localdata="house.floor" placeholder="请选择楼层" popup-title="请选择楼层" @change="floorChange"></uni-data-picker>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="门牌选择" v-if="house.number && house.number !== ''">
|
|
|
+ <uni-data-picker v-model="formData.houseId" :localdata="house.number" placeholder="请选择门牌" popup-title="请选择门牌" @change="houseChange"></uni-data-picker>
|
|
|
+ </uni-forms-item>
|
|
|
+ </uni-forms>
|
|
|
+ </uni-section>
|
|
|
<button class="btn" type="primary" @click="submit('infoForm')">提交</button>
|
|
|
</view>
|
|
|
</template>
|
|
@@ -37,6 +56,15 @@
|
|
|
{ text: '男', value: 1 },
|
|
|
{ text: '女', value: 0 },
|
|
|
],
|
|
|
+ items: [],
|
|
|
+ pickerMap: {
|
|
|
+ text: 'label',
|
|
|
+ value: 'interId'
|
|
|
+ },
|
|
|
+ range: [],
|
|
|
+ house: {},
|
|
|
+ building: [],
|
|
|
+ unit: '',
|
|
|
// 校验规则
|
|
|
rules: {
|
|
|
name: {
|
|
@@ -61,30 +89,131 @@
|
|
|
}
|
|
|
},
|
|
|
async mounted() {
|
|
|
+ const res = await request.addrTreeSelect();
|
|
|
+ this.items = res.data;
|
|
|
this.role = uni.getStorageSync('role');
|
|
|
if (this.role !== 'guest') this.queryInfo();
|
|
|
},
|
|
|
methods: {
|
|
|
async queryInfo() {
|
|
|
- const userinfo = await request.getUser();
|
|
|
- // const userinfo = uni.getStorageSync('userinfo');
|
|
|
- this.formData = userinfo.data;
|
|
|
+ // const userinfo = await request.getUser();
|
|
|
+ const userinfo = uni.getStorageSync('userinfo');
|
|
|
+ this.formData = userinfo;
|
|
|
+ this.setAddr(userinfo);
|
|
|
+ },
|
|
|
+ // 设置地址
|
|
|
+ async setAddr(data) {
|
|
|
+ // 小区存在
|
|
|
+ if (data.estateId && data.estateId !== null) {
|
|
|
+ const res = await request.buildingList({ estateId: data.estateId });
|
|
|
+ this.range = res.rows.map(e => ({ ...e, text: `${e.number}栋`, value: e.buildingId }));
|
|
|
+ }
|
|
|
+ // 楼栋存在
|
|
|
+ if(data.buildingId && data.buildingId !== null) {
|
|
|
+ await this.selectChange({ detail: { value: [{ value: data.buildingId }] } });
|
|
|
+ }
|
|
|
+ // 单元存在
|
|
|
+ if(data.unit && data.unit !== null) {
|
|
|
+ await this.unitChange({ detail: { value: [{ value: data.unit }] } });
|
|
|
+ }
|
|
|
+ // 楼层存在
|
|
|
+ if(data.floor && data.floor !== null) {
|
|
|
+ await this.floorChange({ detail: { value: [{ value: data.floor }] } });
|
|
|
+ }
|
|
|
+ // 门牌存在
|
|
|
+ if(data.houseId && data.houseId !== null) {
|
|
|
+ await this.houseChange({ detail: { value: [{ value: data.houseId }] } });
|
|
|
+ }
|
|
|
},
|
|
|
// 获取手机号
|
|
|
async decryptPhoneNumber(e) {
|
|
|
const res = await requestLogin.getPhone({ code: e.detail.code, appid: appid });
|
|
|
this.$set(this.formData, 'phone', res.phone_info.phoneNumber);
|
|
|
},
|
|
|
+ // 小区选择
|
|
|
+ async onchange(e) {
|
|
|
+ if (!e || e == '' || e.detail.value.length <= 0) return;
|
|
|
+ const val = e.detail.value[e.detail.value.length - 1].value;
|
|
|
+ const res = await request.buildingList({ estateId: val });
|
|
|
+ this.range = res.rows.map(e => ({ ...e, text: `${e.number}栋`, value: e.buildingId }));
|
|
|
+ },
|
|
|
+ // 楼栋选择
|
|
|
+ async selectChange(e) {
|
|
|
+ if (!e || e == '' || e.detail.value.length <= 0) return;
|
|
|
+ const res = await request.houseList({ buildingId: e.detail.value[0].value });
|
|
|
+ this.building = res.rows;
|
|
|
+ const list = [];
|
|
|
+ const numList = [];
|
|
|
+ const unit = res.rows.filter(j => j.unit !== null).map(j => ({ ...j, text: `${j.unit}单元`, value: j.unit }));
|
|
|
+ const number = res.rows.filter(j => j.number !== null).map(j => ({ ...j, text: `${j.number}号`, value: j.houseId }));
|
|
|
+ unit.forEach(k => {
|
|
|
+ const isunit = list.find(j => j.unit == k.unit);
|
|
|
+ if (!isunit) list.push(k);
|
|
|
+ });
|
|
|
+ this.$set(this.house, 'unit', list);
|
|
|
+ number.forEach(k => {
|
|
|
+ const isunit = numList.find(j => j.number == k.number);
|
|
|
+ if (!isunit) numList.push(k);
|
|
|
+ });
|
|
|
+ this.$set(this.house, 'number', numList);
|
|
|
+
|
|
|
+ },
|
|
|
+ // 单元选择
|
|
|
+ unitChange(e) {
|
|
|
+ if (!e || e == '' || e.detail.value.length <= 0) return;
|
|
|
+ this.unit = e.detail.value[0].value;
|
|
|
+ const list = [];
|
|
|
+ const floor = this.building.filter(j => j.unit == e.detail.value[0].value).map(j => ({ ...j, text: `${j.floor}层`, value: j.floor }));
|
|
|
+ floor.forEach(k => {
|
|
|
+ const isunit = list.find(j => j.floor == k.floor);
|
|
|
+ if (!isunit) list.push(k);
|
|
|
+ });
|
|
|
+ this.$set(this.house, 'floor', list);
|
|
|
+ },
|
|
|
+ // 楼层选择
|
|
|
+ floorChange(e) {
|
|
|
+ if (!e || e == '' || e.detail.value.length <= 0) return;
|
|
|
+ const list = [];
|
|
|
+ const number = this.building.filter(j => j.floor == e.detail.value[0].value && j.unit == this.unit).map(j => ({ ...j, text: `${j.number}号`, value: j.houseId }));
|
|
|
+ number.forEach(k => {
|
|
|
+ const isunit = list.find(j => j.number == k.number);
|
|
|
+ if (!isunit) list.push(k);
|
|
|
+ });
|
|
|
+ this.$set(this.house, 'number', list);
|
|
|
+ },
|
|
|
+ // 门牌选择
|
|
|
+ houseChange(e) {
|
|
|
+ if (!e || e == '' || e.detail.value.length <= 0) return;
|
|
|
+ const dept = this.house.number.find(j => j.houseId == e.detail.value[0].value);
|
|
|
+ this.formData.deptId = dept.deptId;
|
|
|
+ },
|
|
|
// 提交
|
|
|
async submit(ref) {
|
|
|
this.$refs[ref].validate(async (err, formdata) => {
|
|
|
if (!err) {
|
|
|
- // 修改用户
|
|
|
- const res = await request.updateUser(this.formData);
|
|
|
- uni.showToast({
|
|
|
- title: '修改成功',
|
|
|
- duration: 2000,
|
|
|
- });
|
|
|
+ if (this.role == 'guest') {
|
|
|
+ // 添加用户
|
|
|
+ const res = await request.addUser(this.formData);
|
|
|
+ uni.setStorageSync('token', res.data.token);
|
|
|
+ uni.setStorageSync('userinfo', res.data.user);
|
|
|
+ uni.setStorageSync('role', res.data.role);
|
|
|
+ uni.showToast({
|
|
|
+ title: '添加成功',
|
|
|
+ duration: 2000,
|
|
|
+ });
|
|
|
+ if (this.path && this.path !== null) {
|
|
|
+ uni.redirectTo({
|
|
|
+ url: this.path
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 修改用户
|
|
|
+ const res = await request.updateUser(this.formData);
|
|
|
+ uni.showToast({
|
|
|
+ title: '修改成功',
|
|
|
+ duration: 2000,
|
|
|
+ });
|
|
|
+ }
|
|
|
uni.navigateBack()
|
|
|
}
|
|
|
})
|
|
@@ -101,6 +230,9 @@
|
|
|
padding-bottom: 10px;
|
|
|
margin-bottom: 10px;
|
|
|
}
|
|
|
+ .uni-select__selector {
|
|
|
+ z-index: 999 !important;
|
|
|
+ }
|
|
|
.uni-forms, .btn {
|
|
|
width: 90%;
|
|
|
margin: 10px auto;
|