685 lines
15 KiB
Vue
685 lines
15 KiB
Vue
<template>
|
||
<div class="container">
|
||
<u-modal v-model="show" :content="content"></u-modal>
|
||
<u-popup v-model="popupshow" mode="bottom" border-radius="20" height="600px">
|
||
<view class="popup-father">
|
||
|
||
<view class="popup-title">
|
||
<view
|
||
style="display: flex; justify-content: center;align-items: center;height: 100rpx;width: 100%;position: relative;">
|
||
<view class="title-font">
|
||
请选择所在地区
|
||
</view>
|
||
<image class="title-imge" src="https://www.focusnu.com/media/directive/index/workjoin/x.png"
|
||
@click="popupshow=false" />
|
||
</view>
|
||
<view
|
||
style="height: 80rpx;width: 100%;display: flex; align-items: center;justify-content: space-between;position: relative;"
|
||
v-for="(item,index) in address">
|
||
<view style="margin-left: 60rpx;">
|
||
{{item.name}}
|
||
</view>
|
||
<image class="title-imge" style="width: 25rpx;height: 25rpx;"
|
||
src="https://www.focusnu.com/media/directive/index/workjoin/x.png"
|
||
@click="deleteUP(index)" />
|
||
</view>
|
||
</view>
|
||
<view style="height: 100rpx;width: 100%;">
|
||
|
||
</view>
|
||
<view style="height: 80rpx;width: 100%;" v-for="(item) in address">
|
||
|
||
</view>
|
||
<view class="other-title">
|
||
选择地区
|
||
</view>
|
||
<view v-for="(item,index) in list" :key="index" @click="clickcard(item)">
|
||
<view class="cards">
|
||
<view class="zimu">
|
||
{{item.firstLetter}}
|
||
</view>
|
||
<view class="font">
|
||
{{item.name}}
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
|
||
</u-popup>
|
||
<view class="title-back">
|
||
<view class="left-father" @click="goBack">
|
||
<image class="back-img" src="https://www.focusnu.com/media/directive/index/left.png" />
|
||
<view style="font-size: 30rpx;">企业加盟</view>
|
||
</view>
|
||
</view>
|
||
<view class="white-content">
|
||
<view class="content-title">
|
||
<view class="shu"></view>
|
||
<view class="content-weight">机构信息</view>
|
||
</view>
|
||
<view class="white-message">
|
||
<view @click="openpopupshow">
|
||
<view class="one" style="position: relative;">
|
||
<view class="one-left">机构位置</view>
|
||
<input disabled style="cursor: not-allowed;pointer-events: none;" class="one-right" type="text"
|
||
placeholder="请选择机构位置" v-model="form.address" />
|
||
<image class="triangle-down" src="https://www.focusnu.com/media/directive/login/xia.png" />
|
||
</view>
|
||
</view>
|
||
<view>
|
||
<view class="one" style="overflow: hidden;">
|
||
<view class="one-left">详细地址</view>
|
||
<input class="one-right" placeholder="请输入详细地址" v-model="form.orgAddress" />
|
||
</view>
|
||
</view>
|
||
<view>
|
||
<view class="one">
|
||
<view class="one-left">机构负责人</view>
|
||
<input class="one-right" type="text" placeholder="请输入机构负责人姓名" v-model="form.orgLeader" />
|
||
</view>
|
||
</view>
|
||
<view>
|
||
<view class="one">
|
||
<view class="one-left">机构负责人电话</view>
|
||
<input class="one-right" type="number" maxlength="11" placeholder="请输入机构负责人电话"
|
||
v-model="form.orgLeaderPhone" />
|
||
</view>
|
||
</view>
|
||
|
||
<view>
|
||
<view class="one" style="position: relative;" @click="showselect = true">
|
||
<view class="one-left">房屋性质</view>
|
||
<!-- <input class="one-right-select" type="select" placeholder="请输入房屋性质" v-model="form.orgPropertyType"
|
||
@click="showselect=true" /> -->
|
||
|
||
<input disabled style="cursor: not-allowed;pointer-events: none;" class="one-right" type="text"
|
||
placeholder="请输入房屋性质" v-model="form.orgPropertyType" />
|
||
<image class="triangle-down" src="https://www.focusnu.com/media/directive/login/xia.png" />
|
||
</view>
|
||
</view>
|
||
<u-select v-model="showselect" :list="showlist" @confirm="onSelect1"></u-select>
|
||
<view style="margin-bottom: 20rpx;">
|
||
<view class="one" style="position: relative;">
|
||
<view class="one-left">建筑面积</view>
|
||
<input class="one-right" type="digit" placeholder="请输入建筑面积(平方米)"
|
||
v-model="form.orgBuildingArea" />
|
||
<view class="triangle-down-mi">
|
||
㎡
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view style="display: flex;width: 100%;margin-top: 10rpx;padding: 0 20rpx;">
|
||
<view class="back-button" @click="goBack">
|
||
返回上一步
|
||
</view>
|
||
<view class="finish-button" @click="next">
|
||
确认并提交
|
||
</view>
|
||
</view>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup>
|
||
import {
|
||
ref,
|
||
reactive,
|
||
} from 'vue'
|
||
import {
|
||
onLoad,
|
||
onShow
|
||
} from '@dcloudio/uni-app';
|
||
|
||
import {
|
||
base_url
|
||
} from '@/request/index.js'
|
||
|
||
import {
|
||
changemessage,
|
||
getdate
|
||
} from './api/addjigou.js'
|
||
|
||
const address = ref([])
|
||
const show = ref(false);
|
||
const content = ref("");
|
||
const jigouweizhi = ref("");
|
||
const popupshow = ref(false);
|
||
const list = ref([]);
|
||
const showselect = ref(false);
|
||
const showlist = reactive(
|
||
// [{
|
||
// value: `租赁`,
|
||
// },
|
||
// {
|
||
// value: `自由产权`,
|
||
// },
|
||
// {
|
||
// value: `合作使用`,
|
||
// } ,{
|
||
// value: `其它`,
|
||
// }
|
||
// ]
|
||
[{
|
||
value: 1,
|
||
label: '租赁'
|
||
},
|
||
{
|
||
value: 2,
|
||
label: '自由产权'
|
||
},
|
||
{
|
||
value: 3,
|
||
label: '合作使用'
|
||
},
|
||
{
|
||
value: 4,
|
||
label: '其它'
|
||
}
|
||
]
|
||
|
||
|
||
)
|
||
|
||
function onSelect1(arr) {
|
||
form.orgPropertyType = arr[0].label
|
||
}
|
||
const form = reactive({
|
||
orgLeader: "",
|
||
orgLeaderPhone: "",
|
||
orgAddress: "",
|
||
orgPropertyType: "",
|
||
orgBuildingArea: "",
|
||
// orgAddress: "",
|
||
orgCoordinateLo: "",
|
||
orgCoordinateLa: "",
|
||
id: uni.getStorageSync('specicalid') || "",
|
||
tel: uni.getStorageSync('tel'),
|
||
status: "1"
|
||
})
|
||
// 本地保存的临时文件路径
|
||
const tempImagePath = ref('')
|
||
|
||
const headImge = ref("");
|
||
const backImge = ref("");
|
||
|
||
const openLook = (res) => {
|
||
if (res) {
|
||
content.value = res;
|
||
show.value = true
|
||
}
|
||
}
|
||
//配置删除逻辑
|
||
function takeFirst(arr, num) {
|
||
// 1. 安全裁剪:确保 num 在 [0, arr.length] 范围内
|
||
const count = Math.max(0, Math.min(num, arr.length));
|
||
// 2. slice(0, count) 会返回前 count 项,count=0 时即返回 []
|
||
return arr.slice(0, count);
|
||
}
|
||
const deleteUP = (index) => {
|
||
address.value = takeFirst(address.value, index);
|
||
if (index) {
|
||
clickcard(list.value[index - 1])
|
||
} else {
|
||
list.value = [];
|
||
getdate(`xzqhdm`).then(res => {
|
||
list.value = dedupeFirstLetter(res.result)
|
||
})
|
||
}
|
||
|
||
console.log("删除了", index)
|
||
}
|
||
const next = () => {
|
||
const allNonEmpty = form.orgLeader && form.orgLeaderPhone && form.orgAddress && form.orgPropertyType &&
|
||
form.orgBuildingArea
|
||
if (allNonEmpty) {
|
||
changemessage(form).then(res => {
|
||
if (res.success) {
|
||
if (res.message == `保存成功!`) {
|
||
uni.setStorageSync('specicalid', "");
|
||
uni.reLaunch({
|
||
url: `/pages/login/threeselectone`
|
||
});
|
||
} else {
|
||
uni.setStorageSync('specicalid', res.result.id);
|
||
uni.reLaunch({
|
||
url: `/pages/login/threeselectone`
|
||
});
|
||
}
|
||
|
||
} else {
|
||
uni.showToast({
|
||
title: res.message,
|
||
icon: 'error'
|
||
})
|
||
}
|
||
})
|
||
} else {
|
||
uni.showToast({
|
||
title: '请完善信息',
|
||
icon: 'error'
|
||
})
|
||
}
|
||
}
|
||
|
||
const goBack = () => {
|
||
if (form.address) {
|
||
let data = uni.getStorageSync('backhuancun')
|
||
// form.address = data.address
|
||
data.address = form.address
|
||
data.orgProvince = form.orgProvince
|
||
data.orgCity = form.orgCity
|
||
data.orgDistrict = form.orgDistrict
|
||
data.orgAddress = form.orgAddress
|
||
data.orgLeader = form.orgLeader
|
||
data.orgLeaderPhone = form.orgLeaderPhone
|
||
data.orgPropertyType = form.orgPropertyType
|
||
data.orgBuildingArea = form.orgBuildingArea
|
||
|
||
uni.setStorageSync("backhuancun", data)
|
||
}
|
||
uni.navigateBack()
|
||
}
|
||
const jumpToMap = () => {
|
||
uni.navigateTo({
|
||
url: "/pages/map/index"
|
||
});
|
||
}
|
||
|
||
const clickcard = (element) => {
|
||
if (address.value.length < 3) {
|
||
list.value = [];
|
||
address.value.push(element)
|
||
getdate(element.id).then(res => {
|
||
if (res.result.length) {
|
||
list.value = dedupeFirstLetter(res.result)
|
||
} else {
|
||
popupshow.value = false;
|
||
form.address = "";
|
||
address.value.forEach(res => {
|
||
form.address += res.name
|
||
})
|
||
const keys = ['orgProvince', 'orgCity', 'orgDistrict'];
|
||
|
||
keys.forEach((key, idx) => {
|
||
// 如果 address.value[idx] 存在就取它的 id,否则用空字符串
|
||
form[key] = address.value[idx]?.id ? address.value[idx]?.id : "";
|
||
});
|
||
address.value = [];
|
||
list.value = [];
|
||
getdate(`xzqhdm`).then(res => {
|
||
list.value = dedupeFirstLetter(res.result)
|
||
})
|
||
}
|
||
|
||
})
|
||
}
|
||
|
||
|
||
}
|
||
const openpopupshow = () => {
|
||
popupshow.value = true;
|
||
|
||
}
|
||
onShow(() => {
|
||
// 读取并立即清除,避免下次重复拿到
|
||
const data = uni.getStorageSync('dingwei')
|
||
if (data) {
|
||
console.log("data", data)
|
||
jigouweizhi.value = data.name
|
||
form.orgAddress = data.name
|
||
form.orgCoordinateLo = data.lng
|
||
form.orgCoordinateLa = data.lat
|
||
uni.removeStorageSync('dingwei')
|
||
}
|
||
})
|
||
//处理首字母
|
||
function dedupeFirstLetter(arr) {
|
||
const seen = new Set();
|
||
return arr.map(item => {
|
||
const letter = item.firstLetter;
|
||
if (!letter || seen.has(letter)) {
|
||
// 如果没 letter 或者已经出现过,则清空
|
||
return {
|
||
...item,
|
||
firstLetter: ''
|
||
};
|
||
} else {
|
||
// 第一次出现,保留并记录
|
||
seen.add(letter);
|
||
return item;
|
||
}
|
||
});
|
||
}
|
||
onLoad(() => {
|
||
getdate(`xzqhdm`).then(res => {
|
||
list.value = dedupeFirstLetter(res.result)
|
||
})
|
||
// form.orgAddress
|
||
if (uni.getStorageSync('backhuancun').address) {
|
||
let data = uni.getStorageSync('backhuancun');
|
||
// if (data.orgProvince_dictText) {
|
||
form.address = data.address
|
||
// }
|
||
form.orgProvince = data.orgProvince;
|
||
form.orgCity = data.orgCity;
|
||
form.orgDistrict = data.orgDistrict;
|
||
form.orgAddress = data.orgAddress;
|
||
form.orgLeader = data.orgLeader;
|
||
form.orgLeaderPhone = data.orgLeaderPhone;
|
||
form.orgPropertyType = data.orgPropertyType;
|
||
form.orgBuildingArea = data.orgBuildingArea;
|
||
} else if (uni.getStorageSync('baddata')) {
|
||
let data = uni.getStorageSync('baddata');
|
||
if (data.orgProvince_dictText) {
|
||
form.address = data.orgProvince_dictText + data.orgCity_dictText + data.orgDistrict_dictText;
|
||
}
|
||
form.orgProvince = data.orgProvince;
|
||
form.orgCity = data.orgCity;
|
||
form.orgDistrict = data.orgDistrict;
|
||
form.orgAddress = data.orgAddress;
|
||
form.orgLeader = data.orgLeader;
|
||
form.orgLeaderPhone = data.orgLeaderPhone;
|
||
form.orgPropertyType = data.orgPropertyType;
|
||
form.orgBuildingArea = data.orgBuildingArea;
|
||
}
|
||
})
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.container {
|
||
display: flex;
|
||
flex-direction: column;
|
||
min-height: 100vh;
|
||
width: 100%;
|
||
background-color: #F7F7F7;
|
||
position: relative;
|
||
// box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||
|
||
.white-content {
|
||
width: 100%;
|
||
// margin-left: 5%;
|
||
margin-top: 20rpx;
|
||
// height: 1200rpx;
|
||
border-radius: 35rpx;
|
||
// background-color: rgb(245, 251, 254);
|
||
|
||
.content-title {
|
||
display: flex;
|
||
align-items: center;
|
||
height: 70rpx;
|
||
position: relative;
|
||
|
||
.content-weight {
|
||
font-size: 32rpx;
|
||
font-weight: 600;
|
||
margin-left: 20rpx;
|
||
// margin-top: 20rpx;
|
||
}
|
||
|
||
.content-img {
|
||
position: absolute;
|
||
right: 0;
|
||
top: 0;
|
||
width: 400rpx;
|
||
height: 100%;
|
||
}
|
||
}
|
||
}
|
||
|
||
.white-photo {
|
||
width: 90%;
|
||
margin-left: 5%;
|
||
// margin-top: 30rpx;
|
||
height: 300rpx;
|
||
border-radius: 35rpx;
|
||
background-color: #fff;
|
||
// box-shadow: 4rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
|
||
justify-content: space-around;
|
||
align-items: center;
|
||
display: flex;
|
||
|
||
.photo {
|
||
width: 300rpx;
|
||
height: 200rpx;
|
||
}
|
||
}
|
||
|
||
.white-message {
|
||
width: 90%;
|
||
margin-left: 5%;
|
||
margin-top: 10rpx;
|
||
margin-bottom: 30rpx;
|
||
padding: 30rpx 0;
|
||
// height: 800rpx;
|
||
border-radius: 35rpx;
|
||
background-color: #fff;
|
||
// box-shadow: 4rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
|
||
justify-content: space-around;
|
||
// align-items: center;
|
||
display: flex;
|
||
flex-direction: column;
|
||
|
||
.message-title {
|
||
width: 100%;
|
||
height: 100rpx;
|
||
align-items: center;
|
||
display: flex;
|
||
|
||
|
||
|
||
.message-weight {
|
||
font-size: 30rpx;
|
||
// font-weight: 600;
|
||
}
|
||
}
|
||
|
||
.one {
|
||
width: 90%;
|
||
margin-left: 5%;
|
||
// border-bottom: 1rpx solid #F7F7F7;
|
||
height: 100rpx;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: 10rpx;
|
||
|
||
.one-left {
|
||
margin-left: 10rpx;
|
||
font-size: 30rpx;
|
||
}
|
||
|
||
.one-right {
|
||
font-size: 30rpx;
|
||
height: 100%;
|
||
color: #999999;
|
||
overflow: hidden;
|
||
/* 隐藏超出内容 */
|
||
white-space: nowrap;
|
||
/* 不换行 */
|
||
font-size: 25rpx;
|
||
text-overflow: ellipsis;
|
||
width: 350rpx;
|
||
display: flex;
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
.photo-left {
|
||
.photo-weight {
|
||
font-size: 26rpx;
|
||
font-weight: 600;
|
||
}
|
||
|
||
.photo-font {
|
||
font-size: 23rpx;
|
||
margin-top: 10rpx;
|
||
}
|
||
|
||
}
|
||
|
||
.finish-button {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
width: 45%;
|
||
height: 90rpx;
|
||
margin: 0rpx auto;
|
||
margin-bottom: 80rpx;
|
||
color: #fff;
|
||
background: linear-gradient(to right, #00C9FF, #0076FF);
|
||
border-radius: 50rpx;
|
||
font-size: 35rpx;
|
||
}
|
||
|
||
.one-img {
|
||
position: absolute;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
right: 10rpx;
|
||
width: 60rpx;
|
||
height: 50rpx;
|
||
// margin-right: 10rpx;
|
||
// margin-left: 35rpx;
|
||
}
|
||
|
||
.pingfangmi {
|
||
position: absolute;
|
||
top: 50%;
|
||
right: 5rpx;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
.special {
|
||
display: flex;
|
||
align-items: center;
|
||
width: 280rpx;
|
||
position: relative;
|
||
}
|
||
|
||
.popup-father {
|
||
width: 100%;
|
||
// height: 100%;
|
||
position: relative;
|
||
|
||
.popup-title {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
// background-color: red;
|
||
display: flex;
|
||
flex-direction: column;
|
||
width: 100%;
|
||
|
||
.title-font {
|
||
font-size: 35rpx;
|
||
font-weight: 600;
|
||
}
|
||
|
||
.title-imge {
|
||
width: 35rpx;
|
||
height: 35rpx;
|
||
position: absolute;
|
||
top: 50%;
|
||
right: 40rpx;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
background-color: #fff;
|
||
z-index: 1;
|
||
}
|
||
|
||
.other-title {
|
||
font-size: 32rpx;
|
||
font-weight: 600;
|
||
margin-left: 30rpx;
|
||
margin-top: 50rpx;
|
||
}
|
||
}
|
||
|
||
.cards {
|
||
width: 100%;
|
||
display: flex;
|
||
// justify-content: center;
|
||
align-items: center;
|
||
height: 100rpx;
|
||
|
||
.zimu {
|
||
margin: 0 30rpx;
|
||
color: #d7d7d7;
|
||
width: 28rpx;
|
||
}
|
||
|
||
.font {
|
||
font-size: 30rpx;
|
||
}
|
||
}
|
||
|
||
.title-back {
|
||
margin-top: 100rpx;
|
||
width: 100%;
|
||
height: 100rpx;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
|
||
.left-father {
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
.back-img {
|
||
width: 40rpx;
|
||
height: 40rpx;
|
||
margin-left: 40rpx;
|
||
margin-right: 15rpx;
|
||
}
|
||
}
|
||
}
|
||
|
||
.back-button {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
width: 44%;
|
||
height: 90rpx;
|
||
margin: 0rpx auto;
|
||
margin-bottom: 80rpx;
|
||
border: 2rpx solid #c3cacd;
|
||
background: linear-gradient(to bottom, #f3f3f5, #dee4e9);
|
||
border-radius: 50rpx;
|
||
font-size: 35rpx;
|
||
}
|
||
|
||
.shu {
|
||
width: 14rpx;
|
||
height: 36rpx;
|
||
background-color: #0097FF;
|
||
border-radius: 10rpx;
|
||
margin: 3rpx 5rpx 0 60rpx;
|
||
}
|
||
|
||
.triangle-down {
|
||
position: absolute;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
right: 26rpx;
|
||
width: 20rpx;
|
||
height: 20rpx;
|
||
}
|
||
.triangle-down-mi{
|
||
position: absolute;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
right: 26rpx;
|
||
font-size: 30rpx;
|
||
}
|
||
</style>
|
||
<style>
|
||
.uni-scroll-view {
|
||
height: auto;
|
||
}
|
||
</style> |