rizhao.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875
  1. <template>
  2. <view class="rizhao">
  3. <!-- #ifdef MP-WEIXIN -->
  4. <!-- <web-view src="https://fangcan.hdlkeji.com/dist/index.html#/"></web-view> -->
  5. <web-view :src="`${url}/dist/index.html#/pages/h5/rizhao?id=${id}&token=${token}`"></web-view>
  6. <!-- #endif -->
  7. <!-- #ifdef H5 -->
  8. <view class="" id="objContaier" :style="{width:conWidth + 'px',height:conHeight + 'px'}"></view>
  9. <view class="rizhao-louhao u-flex u-flex-wrap">
  10. <view class="u-flex u-col-center u-row-center louhao-active" :style="{borderColor:louhao == index ? '#1F7EFF' : '#999999'}" v-for="(item,index) in louhaoList" :key="index" @click="changelou(index)">
  11. <text class="text1" :style="{color:louhao == index ? '#1F7EFF' : '#999999'}">{{item.build_num}}#</text>
  12. <text class="text2" v-if="louhao == index">✓</text>
  13. </view>
  14. <!-- <view class="u-flex u-col-center u-row-center louhao-active" @click="zhankai()">
  15. <text class="text1">展开</text>
  16. </view> -->
  17. </view>
  18. <view class="louceng-fangxiang u-flex u-row-between u-flex-wrap">
  19. <text :class="{text:fangxiang == index}" v-for="(item,index) in fangxianglist" :key="index" @click="changefangxiang(index)">{{item.orientation}}</text>
  20. </view>
  21. <view class="louceng-jieqi">
  22. <view class="jieqi-box u-flex u-row-between u-flex-wrap">
  23. <text v-for="(a,b) in jieqilist" :class="b == jieqi ? 'text' : ''" :key="b" @click="changejieqi(b)">{{a.solar_terms}}</text>
  24. </view>
  25. </view>
  26. <view class="time-box u-flex u-flex-wrap">
  27. <view class="u-flex time-item" v-for="(a,b) in timelist" :key="b">
  28. <text :style="{background:a.color}"></text>
  29. <text>{{a.name}}</text>
  30. </view>
  31. </view>
  32. <scroll-view class="louceng-time-table" scroll-x="true" v-if="list.length > 0">
  33. <view class="u-flex-col" :style="{width:getwidth() + 'rpx'}">
  34. <view class="table-header">
  35. {{louhaoList[louhao].build_num}}#{{fangxianglist[fangxiang] ? fangxianglist[fangxiang].orientation : ''}}{{jieqilist[jieqi] ? jieqilist[jieqi].solar_terms : ''}}
  36. </view>
  37. <view class="body-header u-flex">
  38. <view class="header-title u-flex-col u-row-between">
  39. <text class="text1">单元</text>
  40. <text class="text2">楼层</text>
  41. <image src="../../static/images/xiegang.png" mode=""></image>
  42. </view>
  43. <view class="danyuan-header" v-for="(a,b) in list[0].unit_info" :key="b">
  44. <view class="danyuan-title">
  45. 第{{a.unit}}单元
  46. </view>
  47. <view class="u-flex">
  48. <view class="house-title" v-for="(c,d) in a.house_info" :key="d">
  49. {{d + 1}}室
  50. </view>
  51. </view>
  52. </view>
  53. </view>
  54. <view class="body-item" v-for="(item,index) in list" :key="index">
  55. <view class="item-title">{{item.floor}}F</view>
  56. <view class="danyuan-item" v-for="(a,b) in item.unit_info" :key="b">
  57. <view class="house-item" v-for="(c,d) in a.house_info" :key="d" :style="{background:getcolor(c)}">
  58. <view class="house-room u-flex">
  59. <text>{{c.room_num}}</text>
  60. <text>室</text>
  61. </view>
  62. <view class="house-allprice">
  63. <text>{{c.sunlight_duration}}</text>
  64. <text></text>
  65. </view>
  66. <view class="house-price">
  67. <text></text>
  68. <text>{{c.sunlight_time}}</text>
  69. </view>
  70. </view>
  71. </view>
  72. </view>
  73. </view>
  74. </scroll-view>
  75. <view class="" style="padding: 24rpx;">
  76. <view v-html="sunshine"></view>
  77. </view>
  78. <view class="u-flex-col" style="font-size: 28rpx;color: #9DA3AB;padding: 0 24rpx;">
  79. <!-- <view class="u-flex" style="margin-bottom: 10rpx;" @click="showmianze1 = true">
  80. <text style="margin-right: 10rpx;">日照说明</text>
  81. <u-icon name="info-circle-fill"></u-icon>
  82. </view> -->
  83. <view class="u-flex" style="margin-bottom: 10rpx;" @click="showmianze2 = true">
  84. <text style="margin-right: 10rpx;">免责声明</text>
  85. <u-icon name="info-circle-fill"></u-icon>
  86. </view>
  87. </view>
  88. <view class="" style="height:170rpx"></view>
  89. <view class="rizhao-btn u-flex u-row-between">
  90. <text @click="showtocall = true">隐私电话</text>
  91. <text @click="tochat">在线咨询</text>
  92. </view>
  93. <u-popup v-model="showtocall" mode="center" background="rgba(0,0,0,0)">
  94. <view class="tocall-box u-flex-col u-col-center">
  95. <image class="tocall-img" src="../../static/images/popup1-1.png" mode=""></image>
  96. <view class="u-flex-col u-col-center tocall-text">您是否进行呼叫?</view>
  97. <view class="u-flex u-row-between tocall-btn">
  98. <text @click="showtocall = false">取消</text>
  99. <text @click="tocell">确定</text>
  100. </view>
  101. </view>
  102. </u-popup>
  103. <u-popup v-model="showlogin" mode="center" background="rgba(0,0,0,0)">
  104. <view class="tocall-box u-flex-col u-col-center">
  105. <image class="tocall-img" src="../../static/images/popup1-1.png" mode=""></image>
  106. <view class="u-flex-col u-col-center tocall-text">你目前处于未登录状态请前往登录</view>
  107. <view class="u-flex u-row-between tocall-btn">
  108. <text @click="showlogin = false">取消</text>
  109. <text @click="tologin">确定</text>
  110. </view>
  111. </view>
  112. </u-popup>
  113. <!-- <u-popup v-model="showmianze1" mode="bottom" height="900rpx">
  114. <view class="" style="padding: 24rpx;">
  115. <view v-html="sunshine"></view>
  116. </view>
  117. </u-popup> -->
  118. <u-popup v-model="showmianze2" mode="bottom" height="900rpx">
  119. <view class="" style="padding: 24rpx;">
  120. <view v-html="disclaimer"></view>
  121. </view>
  122. </u-popup>
  123. <!-- #endif -->
  124. </view>
  125. </template>
  126. <script>
  127. // #ifdef H5
  128. var modelUrl = '' //'https://fangcan.hdlkeji.com/dist/fixedly/兔女郎.obj'
  129. var modelUrl1 = '' //'https://fangcan.hdlkeji.com/dist/fixedly/兔女郎.mtl'
  130. var container
  131. var rotating = true;
  132. import {
  133. OBJLoader
  134. } from '../../platforms/h5/common/obj/OBJLoader.js'
  135. import {
  136. MTLLoader
  137. } from '../../platforms/h5/common/obj/MTLLoader.js'
  138. import {
  139. OrbitControls
  140. } from '../../platforms/h5/common/OrbitControls.js';
  141. import * as THREE from '../../platforms/h5/common/three.js';
  142. // 材质模型加载器,模型在服务器上
  143. const mtlLoader = new MTLLoader()
  144. const objLoader = new OBJLoader();
  145. export default {
  146. data() {
  147. return {
  148. scene: undefined,
  149. light: undefined,
  150. camera: undefined,
  151. controls: undefined,
  152. renderer: undefined,
  153. conWidth: uni.getSystemInfoSync().windowWidth,
  154. conHeight: uni.getSystemInfoSync().windowWidth - 50,
  155. showmianze1: false,
  156. showmianze2: false,
  157. showtocall: false,
  158. showlogin: false,
  159. id: '',
  160. louhaoList: [],
  161. louhao: 0,
  162. jieqilist: [],
  163. jieqi: 0,
  164. fangxianglist: [],
  165. fangxiang: 0,
  166. detail: {},
  167. list: [],
  168. timelist: [{
  169. name: '8h=日照',
  170. color: '#61C86A',
  171. value: ['08:00']
  172. }, {
  173. name: '8h>日照>=6h',
  174. color: '#9BD56D',
  175. value: ['08:00', '06:00']
  176. }, {
  177. name: '6h>日照>=4h',
  178. color: '#E7E2A6',
  179. value: ['06:00', '04:00']
  180. }, {
  181. name: '4h>日照>=2h',
  182. color: '#F4CE9E',
  183. value: ['04:00', '02:00']
  184. }, {
  185. name: '2h>日照>=0h',
  186. color: '#F5BBB1',
  187. value: ['02:00', '00:00']
  188. }],
  189. sunshine: '',
  190. disclaimer: ''
  191. }
  192. },
  193. onLoad(option) {
  194. this.id = option.id
  195. uni.setStorageSync("token", option.token || '')
  196. this.getdata()
  197. this.getlist()
  198. this.getconfig()
  199. },
  200. onShow() {
  201. },
  202. mounted() {
  203. },
  204. methods: {
  205. getconfig() {
  206. this.$u.post('/api/Index/platform_config').then(res => {
  207. const regex = new RegExp('<img', 'gi')
  208. this.sunshine = res.data.sunshine.replace(regex, `<img style="max-width: 100%; height: auto"`)
  209. this.disclaimer = res.data.disclaimer.replace(regex, `<img style="max-width: 100%; height: auto"`)
  210. })
  211. },
  212. changejieqi(index) {
  213. this.jieqi = index
  214. this.getdetail()
  215. },
  216. changefangxiang(index) {
  217. this.fangxiang = index
  218. this.getdetail()
  219. },
  220. getcolor(item) {
  221. for (let i = 0; i < this.timelist.length; i++) {
  222. if (this.timelist[i].value[0] == item.sunlight_duration) {
  223. return this.timelist[i].color
  224. }
  225. if (this.timelist[i].value[1]) {
  226. if (this.timelist[i].value[0] > item.sunlight_duration && this.timelist[i].value[1] <= item.sunlight_duration) {
  227. return this.timelist[i].color
  228. }
  229. }
  230. }
  231. },
  232. getwidth() {
  233. var width = 0
  234. this.list.forEach((item, index) => {
  235. if (index == 0) {
  236. width = width + 104
  237. item.unit_info.forEach(val => {
  238. width = width + val.house_info.length * 160
  239. })
  240. }
  241. })
  242. return width
  243. },
  244. getlist() {
  245. this.$u.get('/api/Property/sunshine_info', {
  246. id: this.id
  247. }).then(res => {
  248. this.louhaoList = res.data.build_info
  249. this.jieqilist = res.data.solar_terms_info
  250. this.fangxianglist = res.data.orientation_info
  251. this.getdetail()
  252. })
  253. },
  254. getdetail() {
  255. this.$u.get('/api/Property/sunshine_detail', {
  256. id: this.id,
  257. build_num: this.louhaoList[this.louhao] ? this.louhaoList[this.louhao].build_num : '',
  258. orientation: this.fangxianglist[this.fangxiang] ? this.fangxianglist[this.fangxiang].orientation : '',
  259. solar_terms: this.jieqilist[this.jieqi] ? this.jieqilist[this.jieqi].solar_terms : ''
  260. }).then(res => {
  261. this.list = res.data
  262. })
  263. },
  264. getdata() {
  265. this.$u.post('/api/Property/property_detail', {
  266. id: this.id
  267. }).then(res => {
  268. this.detail = res.data
  269. modelUrl = res.data.abbr_url
  270. uni.setNavigationBarTitle({
  271. title: res.data.name
  272. })
  273. if (modelUrl) {
  274. this.$nextTick(() => {
  275. this.setglb()
  276. this.animate();
  277. })
  278. }
  279. })
  280. },
  281. tologin() {
  282. wx1.miniProgram.switchTab({
  283. url: "/pages/mine/mine"
  284. })
  285. },
  286. tochat() {
  287. if (uni.getStorageSync("token")) {
  288. this.$u.post('/api/Member/consult_record', {
  289. type: 2
  290. })
  291. wx1.miniProgram.navigateTo({
  292. url: "/pages/index/chat?hx_username=" + this.detail.hx_username + "&worker_id=" + this.detail.worker_id
  293. })
  294. } else {
  295. this.showlogin = true
  296. }
  297. },
  298. tocell() {
  299. if (uni.getStorageSync("token")) {
  300. this.$u.post('/api/Member/consult_record', {
  301. type: 1
  302. })
  303. window.location.href = `tel:${this.detail.privacy_phone}`
  304. } else {
  305. this.showlogin = true
  306. }
  307. },
  308. zhankai() {
  309. },
  310. changelou(index) {
  311. this.louhao = index
  312. this.getdetail()
  313. },
  314. animate() {
  315. requestAnimationFrame(this.animate);
  316. if (rotating) {
  317. this.scene.rotation.y += -0.0008;
  318. } else {
  319. this.scene.rotation.y = this.scene.rotation.y;
  320. }
  321. this.renderer.render(this.scene, this.camera);
  322. },
  323. init() {
  324. // 创建场景
  325. this.scene = new THREE.Scene()
  326. this.scene.background = new THREE.Color('#B9D3FF')
  327. // 渲染
  328. container = document.getElementById('objContaier')
  329. this.renderer = new THREE.WebGLRenderer({
  330. antialias: false,
  331. alpha: true
  332. })
  333. this.renderer.outputEncoding = THREE.sRGBEncoding;
  334. this.renderer.setPixelRatio(window.devicePixelRatio);
  335. this.renderer.setSize(this.conWidth, this.conHeight);
  336. container.appendChild(this.renderer.domElement)
  337. // 相机
  338. this.camera = new THREE.PerspectiveCamera(45, this.conWidth / this.conHeight, 1, 1000000000)
  339. //设置视角离原点的位置(眼睛距离模型的距离)
  340. if (modelUrl1) {
  341. mtlLoader.load(modelUrl1, (mtl) => {
  342. // console.log(JSON.parse(JSON.stringify(mtl)));
  343. mtl.preload()
  344. for (const material of Object.values(mtl.materials)) {
  345. material.side = THREE.DoubleSide;
  346. }
  347. objLoader.setMaterials(mtl)
  348. this.setobj()
  349. })
  350. } else {
  351. this.setobj()
  352. }
  353. },
  354. setobj() {
  355. objLoader.load(modelUrl, (root) => {
  356. // console.log(JSON.parse(JSON.stringify(root.children)));
  357. // 设置旋转中心点
  358. const box = new THREE.Box3().setFromObject(root);
  359. const boxSize = box.getSize(new THREE.Vector3()).length();
  360. const boxCenter = box.getCenter(new THREE.Vector3());
  361. root.position.x = root.position.x - boxCenter.x
  362. root.position.y = root.position.y - boxCenter.y
  363. root.position.z = root.position.z - boxCenter.z
  364. var num = boxSize * 0.6
  365. this.root = root
  366. this.camera.position.set(num, num, num)
  367. this.camera.lookAt(new THREE.Vector3(0, 0, 0))
  368. // 轨道控制
  369. this.controls = new OrbitControls(this.camera, this.renderer.domElement)
  370. this.controls.target.set(0, 0, 0);
  371. this.controls.update();
  372. // 光源
  373. const skyColor = 0xB09595;
  374. const groundColor = 0x594C4B;
  375. const intensity = 0.5;
  376. const light = new THREE.HemisphereLight(skyColor, groundColor, intensity);
  377. this.scene.add(light);
  378. // 直射光
  379. const pivotPoint = window.pivotPoint = new THREE.Object3D();
  380. const dcolor = 0xffffff;
  381. const dlight = new THREE.DirectionalLight(dcolor);
  382. // 设置平行光源的产生阴影的范围参数
  383. dlight.shadow.camera.near = 0;
  384. dlight.shadow.camera.far = 50000;
  385. dlight.shadow.camera.left = -20000;
  386. dlight.shadow.camera.right = 20000;
  387. dlight.shadow.camera.top = 20000;
  388. dlight.shadow.camera.bottom = -20000;
  389. dlight.distance = 1110;
  390. dlight.intensity = 0.1;
  391. dlight.shadow.mapSize.height = 2560;
  392. dlight.shadow.mapSize.width = 2560;
  393. dlight.castShadow = true;
  394. let sphereLight = new THREE.SphereGeometry(5, 32, 32); // 创建一个球形mesh,用来存放点光源
  395. let sphereLightMaterial = new THREE.MeshBasicMaterial({
  396. color: 0xac6c25
  397. });
  398. let sphereLightMesh = window.sphereLightMesh = new THREE.Mesh(sphereLight, sphereLightMaterial);
  399. sphereLightMesh.castShadow = false; //将这个球形mesh的产生阴影和接收阴影参数打开
  400. sphereLightMesh.receiveShadow = false; //将这个球形mesh的产生阴影和接收阴影参数打开
  401. sphereLightMesh.position.set(-25000, 0, 0); // 设置此球形mesh的位置
  402. pivotPoint.add(sphereLightMesh); // 将球形mesh添加到点光源里
  403. pivotPoint.add(dlight); // 将平行光源添加到点光源里
  404. dlight.position.copy(sphereLightMesh.position);
  405. // dlight.position.set(num, num, num);
  406. this.scene.add(dlight);
  407. // 环境光
  408. // const ambient = new THREE.AmbientLight(0x333333, 1)
  409. // this.scene.add(ambient)
  410. // 点光源
  411. // const dian = new THREE.PointLight(0x333333, 1, 100);
  412. // dian.position.set(num, num, num);
  413. // this.scene.add(dian);
  414. // 辅助坐标线
  415. // var axesHelper = new THREE.AxesHelper(150);
  416. // this.scene.add(axesHelper);
  417. this.scene.add(this.root);
  418. // console.log(boxSize, boxCenter);
  419. }, (xhr) => {
  420. // console.log(xhr.loaded, xhr.total, 'objLoader');
  421. // console.log(xhr);
  422. // console.log((xhr.loaded / xhr.total * 100) + '% loaded');
  423. });
  424. },
  425. setglb() {
  426. this.init();
  427. var modelBorder = document.getElementById("objContaier");
  428. modelBorder.addEventListener("mouseenter", function(event) {
  429. rotating = false;
  430. });
  431. modelBorder.addEventListener("mouseleave", function(event) {
  432. rotating = true;
  433. });
  434. modelBorder.addEventListener('touchmove', function(e) {
  435. rotating = false;
  436. }, false);
  437. modelBorder.addEventListener('touchstart', function(e) {
  438. rotating = false;
  439. }, false);
  440. modelBorder.addEventListener('touchend', function(e) {
  441. rotating = true;
  442. }, false);
  443. }
  444. }
  445. }
  446. // #endif
  447. // #ifdef MP-WEIXIN
  448. export default {
  449. data() {
  450. return {
  451. id: '',
  452. token: uni.getStorageSync("token") || '',
  453. url: this.$url
  454. }
  455. },
  456. onLoad(option) {
  457. this.id = option.id
  458. },
  459. methods: {
  460. }
  461. }
  462. // #endif
  463. </script>
  464. <style lang="scss">
  465. page {
  466. background-color: #F5F5F5;
  467. }
  468. .rizhao {
  469. .tocall-box {
  470. position: relative;
  471. .tocall-img {
  472. width: 650rpx;
  473. height: 476rpx;
  474. }
  475. .tocall-btn {
  476. position: absolute;
  477. bottom: 70rpx;
  478. left: 0;
  479. width: 100%;
  480. padding: 0 48rpx;
  481. text:first-child {
  482. width: 254rpx;
  483. line-height: 80rpx;
  484. background: #FFA120;
  485. border-radius: 20rpx;
  486. text-align: center;
  487. font-size: 34rpx;
  488. font-family: PingFangSC-Medium, PingFang SC;
  489. font-weight: 500;
  490. color: #FFFFFF;
  491. }
  492. text:last-child {
  493. width: 254rpx;
  494. line-height: 80rpx;
  495. background: #1F7EFF;
  496. border-radius: 20rpx;
  497. text-align: center;
  498. font-size: 34rpx;
  499. font-family: PingFangSC-Medium, PingFang SC;
  500. font-weight: 500;
  501. color: #FFFFFF;
  502. text-decoration: none;
  503. }
  504. }
  505. .tocall-text {
  506. text-align: center;
  507. font-size: 24rpx;
  508. font-family: PingFangSC-Regular, PingFang SC;
  509. font-weight: 400;
  510. color: #999999;
  511. position: absolute;
  512. top: 244rpx;
  513. left: 0;
  514. z-index: 10;
  515. width: 100%;
  516. }
  517. }
  518. .rizhao-btn {
  519. position: fixed;
  520. bottom: 0;
  521. left: 0;
  522. z-index: 10;
  523. width: 750rpx;
  524. height: 166rpx;
  525. background: #FFFFFF;
  526. padding: 0 24rpx 54rpx 24rpx;
  527. text:first-child {
  528. width: 338rpx;
  529. line-height: 84rpx;
  530. background: #FFA120;
  531. border-radius: 20rpx;
  532. text-align: center;
  533. font-size: 28rpx;
  534. font-family: PingFangSC-Regular, PingFang SC;
  535. font-weight: 400;
  536. color: #FFFFFF;
  537. text-decoration: none;
  538. }
  539. text:last-child {
  540. width: 338rpx;
  541. line-height: 84rpx;
  542. background: #1F7EFF;
  543. border-radius: 20rpx;
  544. text-align: center;
  545. font-size: 28rpx;
  546. font-family: PingFangSC-Regular, PingFang SC;
  547. font-weight: 400;
  548. color: #FFFFFF;
  549. }
  550. }
  551. .louceng-time-table {
  552. width: 702rpx;
  553. margin: 20rpx auto;
  554. background-color: #fff;
  555. .body-header {
  556. height: 124rpx;
  557. white-space: nowrap;
  558. border-bottom: 1rpx solid #CCCCCC;
  559. .danyuan-header {
  560. .danyuan-title {
  561. height: 58rpx;
  562. line-height: 58rpx;
  563. text-align: center;
  564. border-bottom: 1rpx solid #CCCCCC;
  565. border-right: 1rpx solid #CCCCCC;
  566. }
  567. .house-title {
  568. width: 160rpx;
  569. height: 64rpx;
  570. line-height: 64rpx;
  571. font-size: 24rpx;
  572. font-family: PingFangSC-Regular, PingFang SC;
  573. font-weight: 400;
  574. color: #333333;
  575. text-align: center;
  576. border-right: 1rpx solid #CCCCCC;
  577. }
  578. }
  579. .header-title {
  580. width: 104rpx;
  581. height: 124rpx;
  582. border-right: 1rpx solid #CCCCCC;
  583. padding: 8rpx 12rpx;
  584. position: relative;
  585. image {
  586. position: absolute;
  587. top: 0;
  588. left: 0;
  589. width: 100%;
  590. height: 100%;
  591. }
  592. text {
  593. font-size: 24rpx;
  594. font-family: PingFangSC-Regular, PingFang SC;
  595. font-weight: 400;
  596. color: #333333;
  597. }
  598. .text1 {
  599. width: 100%;
  600. text-align: right;
  601. }
  602. .text2 {
  603. width: 100%;
  604. }
  605. }
  606. }
  607. .body-item {
  608. height: 160rpx;
  609. white-space: nowrap;
  610. border-bottom: 1rpx solid #CCCCCC;
  611. .danyuan-item {
  612. display: inline-block;
  613. white-space: nowrap;
  614. vertical-align: top;
  615. .house-item {
  616. display: inline-flex;
  617. flex-direction: column;
  618. justify-content: center;
  619. width: 160rpx;
  620. padding-left: 16rpx;
  621. border-right: 1rpx solid #CCCCCC;
  622. height: 160rpx;
  623. .house-mianji {
  624. text:first-child {
  625. font-size: 24rpx;
  626. color: #333333;
  627. }
  628. text:last-child {
  629. font-size: 18rpx;
  630. color: #999999;
  631. }
  632. }
  633. .house-price {
  634. text:first-child {
  635. font-size: 24rpx;
  636. color: #1F7EFF;
  637. }
  638. text:last-child {
  639. font-size: 18rpx;
  640. color: #999999;
  641. }
  642. }
  643. .house-allprice {
  644. text:first-child {
  645. font-size: 28rpx;
  646. color: #333333;
  647. }
  648. text:last-child {
  649. font-size: 18rpx;
  650. color: #999999;
  651. }
  652. }
  653. .house-room {
  654. text:first-child {
  655. font-size: 24rpx;
  656. color: #333333;
  657. }
  658. text:last-child {
  659. font-size: 18rpx;
  660. color: #999999;
  661. }
  662. }
  663. }
  664. }
  665. .item-title {
  666. vertical-align: top;
  667. width: 104rpx;
  668. text-align: center;
  669. line-height: 160rpx;
  670. font-size: 24rpx;
  671. font-family: PingFangSC-Regular, PingFang SC;
  672. font-weight: 400;
  673. color: #333333;
  674. border-right: 1rpx solid #CCCCCC;
  675. display: inline-block;
  676. min-width: 1rpx;
  677. }
  678. }
  679. .table-header {
  680. width: 100%;
  681. text-align: center;
  682. font-size: 24rpx;
  683. font-family: PingFangSC-Regular, PingFang SC;
  684. font-weight: 400;
  685. color: #333333;
  686. line-height: 110rpx;
  687. border-bottom: 1rpx solid #CCCCCC;
  688. }
  689. }
  690. .time-box {
  691. width: 702rpx;
  692. height: 138rpx;
  693. background: #FFFFFF;
  694. border-radius: 20rpx;
  695. margin: 20rpx auto;
  696. padding: 24rpx 20rpx 4rpx 20rpx;
  697. .time-item {
  698. margin-bottom: 20rpx;
  699. text:first-child {
  700. width: 32rpx;
  701. height: 32rpx;
  702. background: #61C86A;
  703. border-radius: 8rpx;
  704. margin-right: 20rpx;
  705. }
  706. text:last-child {
  707. font-size: 24rpx;
  708. font-family: PingFangSC-Regular, PingFang SC;
  709. font-weight: 400;
  710. color: #999999;
  711. margin-right: 40rpx;
  712. }
  713. }
  714. }
  715. .louceng-jieqi {
  716. background-color: #fff;
  717. padding-bottom: 24rpx;
  718. .jieqi-box {
  719. width: 662rpx;
  720. height: 164rpx;
  721. background: #F5F5F5;
  722. border-radius: 20rpx;
  723. margin: 0 auto;
  724. padding: 24rpx 20rpx 4rpx 20rpx;
  725. text {
  726. margin-bottom: 20rpx;
  727. width: 194rpx;
  728. line-height: 48rpx;
  729. background: #FFFFFF;
  730. border-radius: 8rpx;
  731. border: 2rpx solid #999999;
  732. text-align: center;
  733. font-size: 24rpx;
  734. font-family: PingFangSC-Regular, PingFang SC;
  735. font-weight: 400;
  736. color: #999999;
  737. }
  738. .text {
  739. color: #1F7EFF;
  740. border-color: #1F7EFF;
  741. }
  742. }
  743. }
  744. .louceng-fangxiang {
  745. padding: 24rpx 44rpx;
  746. background-color: #FFFFFF;
  747. text {
  748. width: 318rpx;
  749. line-height: 84rpx;
  750. background: #FFFFFF;
  751. border-radius: 20rpx;
  752. border: 2rpx solid #999999;
  753. text-align: center;
  754. font-size: 28rpx;
  755. font-family: PingFangSC-Regular, PingFang SC;
  756. font-weight: 400;
  757. color: #999999;
  758. }
  759. .text {
  760. color: #1F7EFF;
  761. border-color: #1F7EFF;
  762. }
  763. }
  764. .rizhao-louhao {
  765. position: sticky;
  766. top: 0;
  767. left: 0;
  768. z-index: 10;
  769. width: 750rpx;
  770. background: #FFFFFF;
  771. border-radius: 20rpx;
  772. padding: 0 18rpx 24rpx 18rpx;
  773. border-bottom: 2rpx solid #F5F5F5;
  774. .louhao-active {
  775. margin: 0 25rpx;
  776. width: 92rpx;
  777. height: 40rpx;
  778. background: #FFFFFF;
  779. border-radius: 8rpx;
  780. border: 1rpx solid #999999;
  781. position: relative;
  782. margin-top: 24rpx;
  783. .text1 {
  784. font-size: 24rpx;
  785. font-family: PingFangSC-Regular, PingFang SC;
  786. font-weight: 400;
  787. color: #999999;
  788. }
  789. .text2 {
  790. width: 20rpx;
  791. line-height: 20rpx;
  792. background: #1F7EFF;
  793. border-radius: 8rpx 0px 8rpx 0px;
  794. text-align: center;
  795. position: absolute;
  796. bottom: 0;
  797. right: 0;
  798. z-index: 1;
  799. color: #fff;
  800. font-size: 18rpx;
  801. }
  802. }
  803. }
  804. }
  805. </style>