This commit is contained in:
A1300399510
2023-07-07 19:38:21 +08:00
parent 93fb0c1c98
commit 444c6bb486
7 changed files with 347 additions and 93 deletions

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="24px" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter x="-50.00%" y="-50.00%" width="200.00%" height="200.00%" filterUnits="objectBoundingBox" id="filter932">
<feColorMatrix type="matrix" values="0 0 0 0 1.5 0 0 0 0 1.5 0 0 0 0 1.5 0 0 0 1 0 " in="SourceGraphic" />
</filter>
</defs>
<g transform="matrix(1 0 0 1 -98 -102 )">
<image preserveAspectRatio="none" style="overflow:visible" width="24" height="24" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAACdQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3RL5tQAAAAx0Uk5TACuA/Fws+1dUW1V3HjJy8AAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAABaSURBVDjLY2AYBeQCRlwSyg7YxZnOmGCXCDtzrACrBEcOLi1tZw470FXLmTMgjARMcEnAtGBKTMAhYYnV8mVwDaiAK2fANOCMKG4cGhgYNk/AIYEz+YwC3AAAbGZTGUeLECUAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDYtMDFUMTY6MTU6MTArMDg6MDACKzeuAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTA2LTAxVDE2OjE1OjEwKzA4OjAwc3aPEgAAAFF0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fd28zNGtkemFmcS90aWFvZ3VvLXJlZ3VsYXIuc3ZnQkQYtAAAAABJRU5ErkJggg==" x="98px" y="102px" filter="url(#filter932)" />
</g>
</svg>

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="460px" height="500px" xmlns="http://www.w3.org/2000/svg">
<defs>
<mask fill="white" id="clip1934">
<path d="M 0 478.213507625273 L 0 0 C 0 0 96.5238034983727 31.8584503828297 229.909090909091 31.2727272727261 C 354.120260509697 30.727289661274 460 0 460 0 L 460 478.213507625273 C 460 490.413943355121 451.904 500 441.6 500 L 18.4 500 C 8.096 500 0 490.413943355121 0 478.213507625273 Z " fill-rule="evenodd" />
</mask>
</defs>
<g transform="matrix(1 0 0 1 -361 -10634 )">
<path d="M 0 478.213507625273 L 0 0 C 0 0 96.5238034983727 31.8584503828297 229.909090909091 31.2727272727261 C 354.120260509697 30.727289661274 460 0 460 0 L 460 478.213507625273 C 460 490.413943355121 451.904 500 441.6 500 L 18.4 500 C 8.096 500 0 490.413943355121 0 478.213507625273 Z " fill-rule="nonzero" fill="#f6f6f6" stroke="none" transform="matrix(1 0 0 1 361 10634 )" />
<path d="M 0 478.213507625273 L 0 0 C 0 0 96.5238034983727 31.8584503828297 229.909090909091 31.2727272727261 C 354.120260509697 30.727289661274 460 0 460 0 L 460 478.213507625273 C 460 490.413943355121 451.904 500 441.6 500 L 18.4 500 C 8.096 500 0 490.413943355121 0 478.213507625273 Z " stroke-width="2" stroke="#ebebeb" fill="none" transform="matrix(1 0 0 1 361 10634 )" mask="url(#clip1934)" />
</g>
</svg>

View File

@@ -28,7 +28,6 @@ export default {
props: ['popState', "intermediary"], props: ['popState', "intermediary"],
setup(props) { setup(props) {
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const tabList = { const tabList = {
@@ -37,37 +36,27 @@ export default {
more: "更多说明", more: "更多说明",
}; };
const tab = ref("person"); // person intermediary more let tab = ref("person"); // person intermediary more
computed(() => {
if (props['intermediary'] == 1) tab = "intermediary"
else tab = "person"
})
if (props['intermediary'] == 1) tab.value = "intermediary"
else tab.value = "person"
const cutTabArray = reactive({}); const cutTabArray = reactive({});
// 监听 prop 变化 // 监听 prop 变化
watch(() => props.popState, (newValue) => { watch(() => props.popState, newValue => {
if (newValue && Object.keys(cutTabArray).length === 0) init(); if (newValue && Object.keys(cutTabArray).length === 0) init();
}); });
onMounted(() => {
});
const init = () => { const init = () => {
proxy.$post("/tenement/forum/about").then((res) => { proxy.$post("/tenement/forum/about").then(res => {
cutTabArray['person'] = res.data['person'] cutTabArray['person'] = res.data['person']
cutTabArray['intermediary'] = res.data['intermediary'] cutTabArray['intermediary'] = res.data['intermediary']
cutTabArray['more'] = res.data['more'] cutTabArray['more'] = res.data['more']
}); });
}; };
const cutTab = (tabvalue) => { const cutTab = tabvalue => tab.value = tabvalue;;
tab.value = tabvalue;
};
return { return {
tabList, tabList,
@@ -75,7 +64,6 @@ export default {
cutTabArray, cutTabArray,
init, init,
cutTab, cutTab,
// popState,
}; };
}, },
}; };

View File

@@ -0,0 +1,202 @@
<template>
<div class="pop-mask flexcenter">
<div class="pop-box">
<div v-if="popType == 'choice'">
<img class="close-icon" src="@/assets/img/edit/close-icon.svg" />
<div class="pop-header flexcenter">发布房源</div>
<div class="please-choose">请选择</div>
<div class="choice-box flexflex flex1">
<div v-for="(item, index) in identityList" :key="index">
<div v-if="index != identityList.length - 1" class="choice-item" @click="choiceItem(item.key)">
<div class="choice-name">{{ item.value }}</div>
<div class="choice-explain">{{ item.desc }}</div>
<div class="choice-arrows"></div>
</div>
<div v-else class="choice-long-item flexacenter" @click="choiceItem(item.key)">
<div class="choice-long-left">
<div class="choice-name">{{ item.value }}</div>
<div class="choice-explain">{{ item.desc }}</div>
</div>
<div class="choice-arrows"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'GterFangChoosingIdentity',
data() {
return {
visible: false,
choiceTypeState: true,
popType: "choice", //
identityList: [{
desc: "出租自有物业",
key: 3,
value: "我是房东",
}, {
desc: "持有房产代理牌照",
key: 1,
value: "我是中介",
}, {
desc: "我已租房,需要招室友",
key: 4,
value: "有房招室友",
}, {
desc: "二房东、物业租赁公司等",
key: 5,
value: "其他",
}, {
desc: "发布找房源的需求",
key: 6,
value: "求房源",
}]
};
},
mounted() {
},
methods: {
},
};
</script>
<style lang="less" scoped>
.pop-mask {
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.117647058823529);
}
.pop-box {
// position: fixed;
// top: 50%;
// left: 50%;
// transform: translate(-50%, -50%);
position: relative;
z-index: 1111;
box-sizing: border-box;
border-radius: 16px;
padding-top: 48px;
background-color: #ffffff;
width: 520px;
-moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.117647058823529);
-webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.117647058823529);
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.117647058823529);
}
.pop-header {
font-size: 24px;
font-weight: 650;
color: #000000;
margin-bottom: 35px;
}
.please-choose {
color: #555555;
font-size: 14px;
margin-bottom: 24px;
padding-left: 35px;
}
.choice-box {
justify-content: space-between;
flex-wrap: wrap;
padding: 0 35px 49px;
.choice-item,
.choice-long-item {
background-color: #f6f6f6;
height: 160px;
width: 220px;
border-radius: 16px;
margin-bottom: 10px;
box-sizing: border-box;
padding-top: 18px;
.choice-name {
font-weight: 650;
font-size: 18px;
color: #000000;
position: relative;
padding-left: 34px;
text-align: left;
&::after {
content: "";
position: absolute;
top: 50%;
left: 16px;
transform: translateY(-50%);
background-color: #50e3c2;
width: 6px;
height: 16px;
border-radius: 3px;
}
}
&:hover {
cursor: pointer;
background-color: rgb(242, 242, 242);
.choice-arrows {
background-color: #000;
background-image: url('@/assets/img/edit/selectArrow-white.svg');
}
}
}
.choice-long-item {
width: 450px;
justify-content: space-between;
height: 100px;
padding-right: 20px;
.choice-arrows {
margin: 0;
margin-top: -18px;
}
}
.choice-explain {
color: #555555;
font-size: 14px;
font-weight: 400;
margin-top: 10px;
margin-bottom: 21px;
padding-left: 34px;
text-align: left;
}
.choice-arrows {
width: 40px;
height: 40px;
background-color: #fddf6d;
border-radius: 50%;
margin: 0 auto;
background-image: url('@/assets/img/edit/selectArrow.png');
background-size: 24px;
background-repeat: no-repeat;
background-position: center;
}
}
.close-icon {
position: absolute;
top: 20px;
right: 14px;
width: 14px;
height: 14px;
cursor: pointer;
}
</style>

View File

@@ -26,7 +26,6 @@ axios.interceptors.request.use( //响应拦截
// 响应拦截器 // 响应拦截器
axios.interceptors.response.use( axios.interceptors.response.use(
response => { response => {
console.log("response", response);
if (response.status === 200) return Promise.resolve(response); //进行中 if (response.status === 200) return Promise.resolve(response); //进行中
else return Promise.reject(response); //失败 else return Promise.reject(response); //失败

View File

@@ -1,7 +1,7 @@
<template> <template>
<!-- <div id="container"></div> --> <!-- <div id="container"></div> -->
<map-component v-if="mapComponentState" :info="info" @choosingLocation="choosingLocation" /> <map-component v-if="mapComponentState" :info="info" @choosingLocation="choosingLocation" />
<choosing-identity v-if="false"></choosing-identity>
<div class="content-box flexflex"> <div class="content-box flexflex">
<div class="user-box shadow radius16 flexflex"> <div class="user-box shadow radius16 flexflex">
<img class="user-img" :src="user.avatar"> <img class="user-img" :src="user.avatar">
@@ -15,13 +15,13 @@
<img v-if="false" class="housing-info-certifying" src="@/assets/img/edit/certifying-agent.png"> <img v-if="false" class="housing-info-certifying" src="@/assets/img/edit/certifying-agent.png">
<div v-else class="housing-info-identity flexcenter">{{ intermediaryObj[intermediary] }}</div> <div v-else class="housing-info-identity flexcenter">{{ intermediaryObj[intermediary] }}</div>
</div> </div>
<div class="housing-info-list" v-if="status != 0 && type != 'plus'"> <div class="housing-info-list" v-if="type != 'plus'">
<div class="housing-info-item flexacenter" v-if="id"> <div class="housing-info-item flexacenter" v-if="id">
<div class="housing-info-head flexcenter">房源ID</div> <div class="housing-info-head flexcenter">房源ID</div>
<div class="longString"></div> <div class="longString"></div>
<div class="housing-info-trail">{{ id }}</div> <div class="housing-info-trail">{{ id }}</div>
</div> </div>
<div class="housing-info-item flexacenter" v-if="status"> <div class="housing-info-item flexacenter">
<div class="housing-info-head flexcenter">状态</div> <div class="housing-info-head flexcenter">状态</div>
<div class="longString"></div> <div class="longString"></div>
<div class="housing-info-trail">{{ stateObj[status] }}</div> <div class="housing-info-trail">{{ stateObj[status] }}</div>
@@ -43,7 +43,7 @@
</div> </div>
</div> </div>
<!-- 房源已认证 --> <!-- 房源已认证 -->
<div class="listing-verified flexacenter" v-if="false"> <div class="listing-verified flexacenter" v-if="verified == 1">
<img class="listing-verified-tick" src="@/assets/img/edit/tick.svg" /> <img class="listing-verified-tick" src="@/assets/img/edit/tick.svg" />
房源已认证 房源已认证
</div> </div>
@@ -66,12 +66,12 @@
<div class="asterisk" v-if="item.required === 1">*</div> <div class="asterisk" v-if="item.required === 1">*</div>
</div> </div>
<!-- <!--
方式一 两个选择框的 点击弹出 弹窗 方式一 两个选择框的 点击弹出 弹窗
方式二 两个选择框 但是第一个是居中 并且没有图标 现在只有 起租日期 方式二 两个选择框 但是第一个是居中 并且没有图标 现在只有 起租日期
方式三 三列选择框 多个 本页面操作 方式三 三列选择框 多个 本页面操作
方式四 一条长长的款 点击弹窗 方式四 一条长长的款 点击弹窗
方式五 单行输入框 单位 方式五 单行输入框 单位
--> -->
<!-- 出租方式 --> <!-- 出租方式 -->
<div v-if="item.field === 'type'" class="form-option modeOne flexacenter"> <div v-if="item.field === 'type'" class="form-option modeOne flexacenter">
<div ref="type" class="modeOne-item flexacenter" :class="{ 'pitch': typeValue == index }" <div ref="type" class="modeOne-item flexacenter" :class="{ 'pitch': typeValue == index }"
@@ -167,17 +167,19 @@
<div class="modeSeven-unlimited flexacenter"> <div class="modeSeven-unlimited flexacenter">
<div class="modeSeven-unlimited-item flexacenter" <div class="modeSeven-unlimited-item flexacenter"
@click="setValueMultiple('property', [], true)"> @click="setValueMultiple('property', [], true)">
<img v-if="info.property.length == 0" class="modeSeven-unlimited-circle-pitch" <img v-show="info.property.length == 0" class="modeSeven-unlimited-circle-pitch"
src="@/assets/img/edit/circle-pitch.svg" alt=""> src="@/assets/img/edit/circle-pitch.svg" alt="">
<div v-else class="modeSeven-unlimited-circle"></div> <div v-show="info.property.length != 0" class="modeSeven-unlimited-circle"></div>
不限 不限
</div> </div>
</div> </div>
<div class="modeSeven-option-box flexflex"> <div class="modeSeven-option-box flexflex">
<div class="modeSeven-option-item flexacenter" v-for="(item, index) in item.choices" <div class="modeSeven-option-item flexacenter" v-for="(item, index) in item.choices"
:key="index" @click="setValueMultiple('property', item.key)"> :key="index" @click="setValueMultiple('property', item.key)">
<img class="modeSeven-option-icon" <img v-show="info.property.includes(item.key)" class="modeSeven-option-icon"
:src="info.property.includes(item.key) ? require('@/assets/img/edit/diamond-selected.svg') : require('@/assets/img/edit/diamond-unselected.svg')" /> src="@/assets/img/edit/diamond-selected.svg" />
<img v-show="!info.property.includes(item.key)" class="modeSeven-option-icon"
src="@/assets/img/edit/diamond-unselected.svg" />
{{ item.value }} {{ item.value }}
</div> </div>
</div> </div>
@@ -202,17 +204,19 @@
class="form-option modeSeven flexflex"> class="form-option modeSeven flexflex">
<div class="modeSeven-unlimited flexacenter"> <div class="modeSeven-unlimited flexacenter">
<div class="modeSeven-unlimited-item flexacenter" @click="setValueMultiple('floor', [], true)"> <div class="modeSeven-unlimited-item flexacenter" @click="setValueMultiple('floor', [], true)">
<img v-if="info.floor.length == 0" class="modeSeven-unlimited-circle-pitch" <img v-show="info.floor.length == 0" class="modeSeven-unlimited-circle-pitch"
src="@/assets/img/edit/circle-pitch.svg" alt=""> src="@/assets/img/edit/circle-pitch.svg" alt="">
<div v-else class="modeSeven-unlimited-circle"></div> <div v-show="info.floor.length != 0" class="modeSeven-unlimited-circle"></div>
不限 不限
</div> </div>
</div> </div>
<div class="modeSeven-option-box flexflex"> <div class="modeSeven-option-box flexflex">
<div class="modeSeven-option-item flexacenter" v-for="(item, index) in item.choices" <div class="modeSeven-option-item flexacenter" v-for="(item, index) in item.choices"
:key="index" @click="setValueMultiple('floor', item.key)"> :key="index" @click="setValueMultiple('floor', item.key)">
<img class="modeSeven-option-icon" <img v-show="info.floor.includes(item.key)" class="modeSeven-option-icon"
:src="info.floor.includes(item.key) ? require('@/assets/img/edit/diamond-selected.svg') : require('@/assets/img/edit/diamond-unselected.svg')" /> src="@/assets/img/edit/diamond-selected.svg" />
<img v-show="!info.floor.includes(item.key)" class="modeSeven-option-icon"
src="@/assets/img/edit/diamond-unselected.svg" />
{{ item.value }} {{ item.value }}
</div> </div>
</div> </div>
@@ -237,17 +241,19 @@
<div class="modeSeven-unlimited flexacenter"> <div class="modeSeven-unlimited flexacenter">
<div class="modeSeven-unlimited-item flexacenter" <div class="modeSeven-unlimited-item flexacenter"
@click="setValueMultiple('sunshinearea', [], true)"> @click="setValueMultiple('sunshinearea', [], true)">
<img v-if="info.sunshinearea.length == 0" class="modeSeven-unlimited-circle-pitch" <img v-show="info.sunshinearea.length == 0" class="modeSeven-unlimited-circle-pitch"
src="@/assets/img/edit/circle-pitch.svg" alt=""> src="@/assets/img/edit/circle-pitch.svg" alt="">
<div v-else class="modeSeven-unlimited-circle"></div> <div v-show="info.sunshinearea.length != 0" class="modeSeven-unlimited-circle"></div>
不限 不限
</div> </div>
</div> </div>
<div class="modeSeven-option-box flexflex"> <div class="modeSeven-option-box flexflex">
<div class="modeSeven-option-item flexacenter" v-for="(item, i) in item.choices" :key="i" <div class="modeSeven-option-item flexacenter" v-for="(item, i) in item.choices" :key="i"
@click="setValueMultiple('sunshinearea', item.key)"> @click="setValueMultiple('sunshinearea', item.key)">
<img class="modeSeven-option-icon" <img v-show="info.sunshinearea.includes(item.key)" class="modeSeven-option-icon"
:src="info.sunshinearea.includes(item.key) ? require('@/assets/img/edit/diamond-selected.svg') : require('@/assets/img/edit/diamond-unselected.svg')" /> src="@/assets/img/edit/diamond-selected.svg" />
<img v-show="!info.sunshinearea.includes(item.key)" class="modeSeven-option-icon"
src="@/assets/img/edit/diamond-unselected.svg" />
{{ item.value }} {{ item.value }}
</div> </div>
</div> </div>
@@ -318,7 +324,8 @@
</div> </div>
<div class="modeOne-text flexacenter" style="color: #AAAAAA;" v-else>请选择</div> <div class="modeOne-text flexacenter" style="color: #AAAAAA;" v-else>请选择</div>
<img class="arrows-icon" src="@/assets/img/edit/arrows.svg" /> <img class="arrows-icon" src="@/assets/img/edit/arrows.svg" />
<img class="arrows-icon arrows-disabled-icon" src="@/assets/img/edit/disabled-icon.svg" /> <img class="arrows-icon arrows-disabled-icon" style="transform: rotate(0);"
src="@/assets/img/edit/disabled-icon.svg" />
<img class="arrows-icon-pitch" src="@/assets/img/edit/blue-arrow.svg" /> <img class="arrows-icon-pitch" src="@/assets/img/edit/blue-arrow.svg" />
<!-- 弹窗 --> <!-- 弹窗 -->
<div class="pop area-pop-box radius16" style="position: absolute;top: 58px;height: 614px;" <div class="pop area-pop-box radius16" style="position: absolute;top: 58px;height: 614px;"
@@ -349,11 +356,17 @@
<!-- 地址 --> <!-- 地址 -->
<div class="form-option modeOne flexacenter" <div class="form-option modeOne flexacenter"
v-if="intermediary != 6 && (item.field == 'address' && info['location'])"> v-if="intermediary != 6 && (item.field == 'address' && info['location'])">
<div class="modeOne-item flexacenter" style="width: 640px;border-color: rgba(170, 170, 170, 1);" <div class="modeOne-item flexacenter"
@click="handleLocationData"> :class="{ 'pitch': info['address'], 'disabled': verified == 1 && info['address'] }"
<div class="modeOne-text flexacenter" style="color: #AAAAAA;">{{ info['address'] ? info['address'] : "请选择"}}</div> style="width: 640px;border-color: rgba(170, 170, 170, 1);"
<img class="arrows-icon" src="@/assets/img/edit/arrows.svg" /> @click="verified == 1 && info['address'] ? '' : handleLocationData()">
<img class="arrows-icon-pitch" src="@/assets/img/edit/blue-arrow.svg" /> <div class="modeOne-text flexacenter" v-if="info['address']">{{ info['address'] }}</div>
<div class="modeOne-text flexacenter" v-else style="color: #AAAAAA;">请选择</div>
<img class="arrows-icon" src="@/assets/img/edit/arrows.svg" style="transform: rotate(0);" />
<img class="arrows-icon-pitch" src="@/assets/img/edit/blue-arrow.svg"
style="transform: rotate(0);" />
<img class="arrows-icon arrows-disabled-icon" style="transform: rotate(0);"
src="@/assets/img/edit/disabled-icon.svg" />
</div> </div>
</div> </div>
@@ -380,15 +393,14 @@
</div> </div>
<!-- 所属小区 --> <!-- 所属小区 -->
<div class="form-item" v-if="info['address']"> <div class="form-item" v-if="info['address'] && verified == 0">
<div class="form-title flexacenter">所属小区 <div class="form-title flexacenter">所属小区
</div> </div>
<div class="form-option modeOne flexacenter"> <div class="form-option modeOne flexacenter">
<div v-if="info['communityid'] != null" ref="communityname" class="modeOne-item flexacenter" <div v-if="info['communityid'] !== 0" ref="communityname" class="modeOne-item flexacenter"
:class="{ 'pitch': info['communityname'], 'disabled': verified == 1 }" :class="{ 'pitch': info['communityname'], 'disabled': verified == 1 }"
style="width: 640px;border-color: rgb(170, 170, 170);" @click="handleResidentialArea()"> style="width: 640px;border-color: rgb(170, 170, 170);" @click="handleResidentialArea()">
<div class="modeOne-text flexacenter" v-if="info['communityname']"> <div class="modeOne-text flexacenter" v-if="info['communityname']">{{ info.communityname }}
{{ info.communityname }}
</div> </div>
<div class="modeOne-text flexacenter" style="color: #AAAAAA;" v-else>请选择</div> <div class="modeOne-text flexacenter" style="color: #AAAAAA;" v-else>请选择</div>
<img class="arrows-icon" src="@/assets/img/edit/arrows.svg" /> <img class="arrows-icon" src="@/assets/img/edit/arrows.svg" />
@@ -404,7 +416,8 @@
<div class="residential-item flexacenter" v-for="item in communityList" :key="item.id" <div class="residential-item flexacenter" v-for="item in communityList" :key="item.id"
@click="clickResidentialArea(item.id, item.name)"> @click="clickResidentialArea(item.id, item.name)">
<div class="residential-dot"></div> <div class="residential-dot"></div>
<div class="residential-text flex1 flexacenter" :class="{ 'pitchpitch': item.id == info['communityid'] }">{{ item.name }}</div> <div class="residential-text flex1 flexacenter"
:class="{ 'pitchpitch': item.id == info['communityid'] }">{{ item.name }}</div>
</div> </div>
</div> </div>
</div> </div>
@@ -604,7 +617,7 @@
<!-- 如何获取微信二维码 --> <!-- 如何获取微信二维码 -->
<div class="flexcenter pop-mask" @click="howBoxState = false" v-if="howBoxState"> <div class="flexcenter pop-mask" @click="howBoxState = false" v-if="howBoxState">
<div class="pop how-box shadow radius16"> <div class="pop how-box shadow radius16" @click.stop="">
<img class="pop-close" @click.stop="howBoxState = false" src="@/assets/img/edit/close-icon.svg" /> <img class="pop-close" @click.stop="howBoxState = false" src="@/assets/img/edit/close-icon.svg" />
<div class="how-title">如何获取微信二维码</div> <div class="how-title">如何获取微信二维码</div>
<img class="how-img" src="@/assets/img/edit/how-img.svg" /> <img class="how-img" src="@/assets/img/edit/how-img.svg" />
@@ -613,9 +626,9 @@
<!-- 发布成功 --> <!-- 发布成功 -->
<div class="flexcenter pop-mask" @click="succeedPopState = 0" v-if="succeedPopState == 1"> <div class="flexcenter pop-mask" @click="succeedPopState = 0" v-if="succeedPopState == 1">
<div class="pop succeed-box shadow radius16 flexflex" <div class="pop succeed-box shadow radius16 flexflex"
style="background-image: url(@/assets/img/edit/succeed-pop-bj1.svg);"> :style="{ backgroundImage: `url(${require('@/assets/img/edit/succeed-pop-bj2.svg')})` }" @click.stop="">
<img class="pop-close" src="@/assets/img/edit/close-icon.svg" /> <img class="pop-close" src="@/assets/img/edit/close-icon.svg" />
<div class="succeed-title flexacenter" style="margin-bottom: 105px;"> <div class="succeed-title flexacenter" style="margin-bottom: 95px;">
<img class="succeed-icon" src="@/assets/img/edit/successfully-ticked.png" />发布成功 <img class="succeed-icon" src="@/assets/img/edit/successfully-ticked.png" />发布成功
</div> </div>
@@ -637,7 +650,7 @@
</div> </div>
</div> </div>
<div class="flexcenter pop-mask" @click="succeedPopState = 0" v-if="succeedPopState == 2"> <div class="flexcenter pop-mask" @click="succeedPopState = 0" v-if="succeedPopState == 2">
<div class="pop succeed-box shadow radius16 flexflex" style="padding-bottom: 99px;"> <div class="pop succeed-box shadow radius16 flexflex" style="padding-bottom: 99px;" @click.stop="">
<img class="pop-close" src="@/assets/img/edit/close-icon.svg" /> <img class="pop-close" src="@/assets/img/edit/close-icon.svg" />
<div class="succeed-title flexacenter"> <div class="succeed-title flexacenter">
<img class="succeed-icon" src="@/assets/img/edit/successfully-ticked.png" />发布成功 <img class="succeed-icon" src="@/assets/img/edit/successfully-ticked.png" />发布成功
@@ -653,8 +666,10 @@
</div> </div>
</div> </div>
<div class="flexcenter pop-mask" @click="succeedPopState = 0" v-if="succeedPopState == 3"> <div class="flexcenter pop-mask" @click="succeedPopState = 0" v-if="succeedPopState == 3">
<div class="pop succeed-box shadow radius16 flexflex" <div class="pop succeed-box shadow radius16 flexflex" style="padding-bottom: 58px;"
style="padding-bottom: 58px; background-image: url(@/assets/img/edit/succeed-pop-bj1.svg);"> :style="{ backgroundImage: `url(${require('@/assets/img/edit/succeed-pop-bj1.svg')})` }" @click.stop="">
<img class="pop-close" src="@/assets/img/edit/close-icon.svg" /> <img class="pop-close" src="@/assets/img/edit/close-icon.svg" />
<div class="succeed-title flexacenter"> <div class="succeed-title flexacenter">
<img class="succeed-icon" src="@/assets/img/edit/successfully-ticked.png" />发布成功 <img class="succeed-icon" src="@/assets/img/edit/successfully-ticked.png" />发布成功
@@ -671,7 +686,7 @@
<div class="personage-hint-item">一键切换房源上架/下架状态</div> <div class="personage-hint-item">一键切换房源上架/下架状态</div>
<div class="personage-hint-item">做房源认证不占用普通房源发布数</div> <div class="personage-hint-item">做房源认证不占用普通房源发布数</div>
</div> </div>
<a class="succeed-examine" :href="skipUrl">查看刚刚发布的房源</a> <a class="succeed-examine" :href="skipUrl">查看刚刚发布的{{ intermediary == 6 ? '求' : '' }}房源</a>
</div> </div>
</div> </div>
@@ -696,10 +711,9 @@
import aboutPop from '@/components/edit/about-pop.vue' import aboutPop from '@/components/edit/about-pop.vue'
import mapComponent from '@/components/edit/map.vue' import mapComponent from '@/components/edit/map.vue'
import choosingIdentity from '@/components/edit/choosingIdentity.vue'
export default { export default {
setup() {
},
name: 'ZufangEdit', name: 'ZufangEdit',
data() { data() {
return { return {
@@ -729,7 +743,7 @@ export default {
uniqid: "", uniqid: "",
token: "", token: "",
status: 0, // 发布 状态 status: 0, // 发布 状态
intermediary: 3, intermediary: 1,
type: "", // 编辑类型 type: "", // 编辑类型
locationData: [], locationData: [],
locationValue: 1, locationValue: 1,
@@ -763,7 +777,6 @@ export default {
acreage_min: null, acreage_min: null,
acreage_max: null, acreage_max: null,
targetAreaState: false, // 目标区域弹窗的状态 targetAreaState: false, // 目标区域弹窗的状态
howBoxState: false, // 如何获取微信二维码弹窗状态 howBoxState: false, // 如何获取微信二维码弹窗状态
@@ -834,12 +847,14 @@ export default {
const urlParams = new URLSearchParams(queryString); const urlParams = new URLSearchParams(queryString);
this.uniqid = urlParams.get('uniqid'); this.uniqid = urlParams.get('uniqid');
this.token = urlParams.get('token'); this.token = urlParams.get('token');
this.verified = urlParams.get('verified') || 0;
this.init(); this.init();
}, },
components: { components: {
aboutPop, aboutPop,
mapComponent mapComponent,
choosingIdentity,
}, },
methods: { methods: {
@@ -851,6 +866,13 @@ export default {
return require(url) return require(url)
}, },
init() { init() {
this.loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$post('/tenement/forum', { this.$post('/tenement/forum', {
intermediary: this.intermediary, intermediary: this.intermediary,
token: this.token, token: this.token,
@@ -916,6 +938,8 @@ export default {
// communityid: "" // communityid: ""
// communityname: "" // communityname: ""
if (info['type']) this.typeValue = info['type'] >>> 0
if (!info['leasetime']) info['leasetime'] = null if (!info['leasetime']) info['leasetime'] = null
let intermediary = data.intermediary let intermediary = data.intermediary
@@ -934,7 +958,13 @@ export default {
if (info["rentalduration"]) info['rentalduration'] = Number(info['rentalduration']) if (info["rentalduration"]) info['rentalduration'] = Number(info['rentalduration'])
let arr = ["property", "floor", "sunshinearea"] let arr = ["property", "floor", "sunshinearea"]
arr.forEach(element => { arr.forEach(element => {
if (info[element] && info[element].length == 1 && info[element][0] == 0) {
info[element] = []
}
if (info[element] && info[element].length != 0) { if (info[element] && info[element].length != 0) {
info[element].forEach((ele, i) => { info[element].forEach((ele, i) => {
info[element][i] = Number(ele) info[element][i] = Number(ele)
@@ -982,13 +1012,14 @@ export default {
this.offshelftime = data.offshelftime this.offshelftime = data.offshelftime
this.updatetime = data.updatetime this.updatetime = data.updatetime
}).finally(() => {
this.loading.close()
}) })
}, },
// 处理出租方式 // 处理出租方式
handleType(key, value) { handleType(key, value) {
// this.typePopState = !this.typePopState
if (key >>> 0 == key) { if (key >>> 0 == key) {
this.typeValue = key this.typeValue = key
this.info['type'] = null this.info['type'] = null
@@ -1178,7 +1209,17 @@ export default {
// 提交 // 提交
submit(status = 0) { submit(status = 0) {
// /tenement/forum/submit let info = { ...this.info }
if (info['images'] && info['images'].length > 1 && !info['aid']) {
this.$message.error("请选择封面");
return
}
if (this.acreage_min) info['acreage'] = [this.acreage_min, this.acreage_max]
if (this.submitState) return if (this.submitState) return
this.submitState = true this.submitState = true
@@ -1190,7 +1231,6 @@ export default {
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });
let info = { ...this.info }
let intermediary = this.intermediary let intermediary = this.intermediary
@@ -1214,7 +1254,7 @@ export default {
status, status,
}).then(res => { }).then(res => {
if (res.code != 200) { if (res.code != 200) {
let data = res.data let data = res.data || []
let rule = data['rule'] || 0 let rule = data['rule'] || 0
if (rule == 3) { if (rule == 3) {
this.failPopState = true this.failPopState = true
@@ -1226,35 +1266,36 @@ export default {
let targetElement = this.$refs[data.field] let targetElement = this.$refs[data.field]
if (!targetElement) return if (!targetElement) return
console.log("targetElement", this.$refs[data.field]);
if (Array.isArray(targetElement)) { if (Array.isArray(targetElement)) {
targetElement.forEach(element => { targetElement.forEach(element => {
console.log("element", element);
element.style.borderColor = "rgba(249, 93, 93, 1)"; element.style.borderColor = "rgba(249, 93, 93, 1)";
}) })
} else targetElement.style.borderColor = "rgba(249, 93, 93, 1)"; } else targetElement.style.borderColor = "rgba(249, 93, 93, 1)";
// targetElement.style.borderColor = "rgba(249, 93, 93, 1)";
this.$watch(`info.${data.field}`, (newVal, oldVal) => { this.$watch(`info.${data.field}`, (newVal, oldVal) => {
if (newVal != null && newVal != undefined) { if (newVal != null && newVal != undefined) {
if (Array.isArray(targetElement)) { if (Array.isArray(targetElement)) {
targetElement.forEach(element => { targetElement.forEach(element => {
console.log("element", element);
element.style.borderColor = "#aaaaaa"; element.style.borderColor = "#aaaaaa";
}) })
} else targetElement.style.borderColor = "#aaaaaa"; } else targetElement.style.borderColor = "#aaaaaa";
// targetElement.style.borderColor = "#aaaaaa";
} }
}) })
// 设置滚动距离 // 设置滚动距离
const top = targetElement.offsetTop - 150 || 300; let top = 0
if (Array.isArray(targetElement)) targetElement[0].offsetTop - 150 || 300; if (Array.isArray(targetElement)) top = targetElement[0].getBoundingClientRect().top + window.pageYOffset;
else targetElement.offsetTop - 150 || 300; else top = targetElement.getBoundingClientRect().top + window.pageYOffsetp;
document.body.scrollTop = document.documentElement.scrollTop = top; if (top) top -= 150
else top = 300
// document.body.scrollTop = document.documentElement.scrollTop = top;
window.scrollTo({
top,
behavior: "smooth"
})
return return
} else { } else {
@@ -1337,12 +1378,6 @@ export default {
// 点击选择地址弹窗 处理经纬度 // 点击选择地址弹窗 处理经纬度
handleLocationData() { handleLocationData() {
let info = this.info
console.log(info);
// console.log(info['location'], info['latitude'], info['longitude']);
this.mapComponentState = true this.mapComponentState = true
}, },
@@ -1388,7 +1423,7 @@ export default {
let info = this.info let info = this.info
if (!id) { if (!id) {
info['communityid'] = null info['communityid'] = 0
info['communityname'] = null info['communityname'] = null
} else { } else {
info['communityid'] = id info['communityid'] = id
@@ -1413,8 +1448,9 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
.content-box { .content-box {
max-width: 1200px; max-width: 1200px;
margin: 0 auto 50px; margin: -36px auto 50px;
align-items: flex-start; align-items: flex-start;
position: relative;
.user-box { .user-box {
flex-direction: column; flex-direction: column;
@@ -1578,9 +1614,10 @@ export default {
color: #000; color: #000;
font-size: 20px; font-size: 20px;
font-weight: 650; font-weight: 650;
padding-top: 36px; // padding-top: 36px;
padding-left: 47px; // padding-left: 47px;
padding-bottom: 20px; // padding-bottom: 25px;
padding: 36px 47px 25px;
border-bottom: 1px solid #ebebeb; border-bottom: 1px solid #ebebeb;
} }
@@ -1704,6 +1741,7 @@ export default {
color: #AAAAAA !important; color: #AAAAAA !important;
border-color: rgba(170, 170, 170, 1) !important; border-color: rgba(170, 170, 170, 1) !important;
background-color: rgba(246, 246, 246, 1) !important; background-color: rgba(246, 246, 246, 1) !important;
cursor: no-drop;
.form-arrows { .form-arrows {
display: none; display: none;
@@ -1796,6 +1834,7 @@ export default {
} }
&.noChoice { &.noChoice {
cursor: no-drop;
color: #d7d7d7; color: #d7d7d7;
border: 1px solid rgba(235, 235, 235, 1); border: 1px solid rgba(235, 235, 235, 1);
} }
@@ -2095,7 +2134,7 @@ export default {
-moz-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.0784313725490196); -moz-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.0784313725490196);
-webkit-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.0784313725490196); -webkit-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.0784313725490196);
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.0784313725490196); box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.0784313725490196);
z-index: 1; z-index: 101;
padding: 10px 30px; padding: 10px 30px;
overflow: auto; overflow: auto;
@@ -2464,6 +2503,7 @@ export default {
} }
&.how-box { &.how-box {
position: relative;
padding: 40px 45px 40px; padding: 40px 45px 40px;
.how-title { .how-title {
@@ -2500,7 +2540,8 @@ export default {
margin-right: 12px; margin-right: 12px;
} }
margin: 0 auto 93px; // margin: 0 auto 93px;
margin: 0 auto 110px;
color: #333; color: #333;
font-weight: 650; font-weight: 650;
font-size: 24px; font-size: 24px;
@@ -2540,6 +2581,7 @@ export default {
font-size: 14px; font-size: 14px;
.personage-hint-item { .personage-hint-item {
text-align: center;
&:not(:last-of-type) { &:not(:last-of-type) {
margin-bottom: 11px; margin-bottom: 11px;
@@ -2687,7 +2729,7 @@ export default {
} }
.area-box { .area-box {
// height: calc(100% - 98px); height: calc(100% - 98px);
.area-left { .area-left {
// padding-top: 16px; // padding-top: 16px;