230320a303 2 år sedan
förälder
incheckning
1b9fa7bccf

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/index.html


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/css/chunk-788f000f.6a39a36b.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/app.a83011a9.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-788f000f.3c2a4bc8.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-79ff548c.322fb6ae.js


+ 162 - 70
src/views/map/dtl.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <div class="scoped-top-tips">洪楼plus小程序提示:点击图中区域、楼盘、学校可查看更多</div>
+    <div class="scoped-top-tips">洪楼plus小程序</div>
     <div class="scoped-bg"></div>
     <div v-if="$route.query.id === '95542fdc-b542-4582-9be2-9ab8005728d3' || $route.query.id === '95542ff1-8176-4267-8344-2aa7f1034ac5'" class="scoped-tab">
       <div @click="linkChange('95542fdc-b542-4582-9be2-9ab8005728d3')" :class="$route.query.id === '95542fdc-b542-4582-9be2-9ab8005728d3' ? 'op cur' : 'op'">小学</div>
@@ -51,11 +51,9 @@
           :offset="marker.offset"
           :extData="{index}"
           :icon="marker.icon"
-          :title="marker.text"
           :events="markersEvents">
-          <div class="scoped-marker-text" v-if="!marker.icon" :style="`color: ${marker.color}`">{{marker.text}}</div>
+          <div class="scoped-marker-text" v-if="!marker.icon" :style="`color: ${marker.color}`">{{marker.content}}</div>
         </el-amap-marker>
-          <!-- :label="{content: marker.text}" -->
       </template>
       <template v-else>
         <template v-if="mapDiyObj.isAreaShow === '1'">
@@ -84,6 +82,7 @@
         :strokeColor="polygon.strokeColor"
         :strokeWeight="polygon.strokeWeight"
         :strokeOpacity="polygon.strokeOpacity"
+        :strokeStyle="polygon.strokeStyle"
         :extData="{index}"
         :events="polygonEvents">
       </el-amap-polygon>
@@ -96,10 +95,13 @@
         :strokeColor="polyline.strokeColor"
         :strokeWeight="polyline.strokeWeight"
         :strokeOpacity="polyline.strokeOpacity"
+        :strokeStyle="polyline.strokeStyle"
         :extData="{index}"
         :events="polylineEvents"
         :path="polyline.path">
       </el-amap-polyline>
+      <!-- closeWhenClickMap="true"  -->
+      <el-amap-info-window :isCustom="true" :position="winObj.position" :content="winObj.content"></el-amap-info-window>
     </el-amap>
   </div>
 </template>
@@ -113,6 +115,7 @@ export default {
   data() {
     const that = this
     return {
+      isImgShow: false,
       polylines: [],
       estateList: [],
       schoolList: [],
@@ -129,6 +132,10 @@ export default {
         zooms: [15, 19],
       },
       amapManager,
+      winObj: {
+        position: [115.852386, 28.684076],
+        content: '',
+      },
       polygons: [
         // {
         //   path: [[115.823481,28.702359],[115.861933,28.672241],[115.812838,28.629609],[115.793784,28.657179]],
@@ -155,23 +162,23 @@ export default {
             var layerControl = new BasicControl.LayerSwitcher({
               baseLayers: [
                 {
-                  id: 'basic',//图层id,需唯一
+                  id: 'Satellite',//图层id,需唯一
                   enable: true, //是否启用
-                  name: '基础地图',//显示名称,html
-                  layer: new AMap.TileLayer()
+                  name: '卫星图',//显示名称,html
+                  layer: new AMap.TileLayer.Satellite()
                 },
                 {
-                  id: 'Satellite',//图层id,需唯一
+                  id: 'basic',//图层id,需唯一
                   enable: false, //是否启用
-                  name: '卫星图',//显示名称,html
-                  layer: new AMap.TileLayer.Satellite()
+                  name: '基础地图',//显示名称,html
+                  layer: new AMap.TileLayer()
                 },
               ],
               overlayLayers:[
               ],
               position: {
-                bottom:'50px',
-                right:'30px',
+                left:'230px',
+                top:'2px',
               },
             });
             map.addControl(layerControl);
@@ -191,6 +198,8 @@ export default {
       },
       markersEvents: {
         dragend(e) {
+          const eData = e.target.getExtData()
+          that.curMarkersIndex = eData.index
           const { lng, lat } = e.lnglat
           let markerData = JSON.parse(JSON.stringify(that.markerData))
           markerData[that.curMarkersIndex].position = [lng, lat]
@@ -205,7 +214,85 @@ export default {
         click(e) {
           const eData = e.target.getExtData()
           that.polygonIndex = eData.index
-          // wx.miniProgram.navigateTo({url: '/pagesSchool/indexDtl?id=25'})
+          const lnglatObj = e.lnglat
+          const cObj = that.polygons[that.polygonIndex]
+          const estateObj = cObj.estateObj ? JSON.parse(cObj.estateObj) : {}
+          const schoolObj = cObj.schoolObj ? JSON.parse(cObj.schoolObj) : {}
+          const typeObj = {
+            '#fb6557': '专本科',
+            '#ff9149': '幼儿园',
+            '#ff0': '新楼盘',
+            '#9f7df4': '二手房',
+            '#ff7fbf': '教育用地',
+            '#ff003f': '商业用地',
+            '#007299': '公用设施',
+            '#00ff3f': '公园用地',
+            '#4da4ee': '医院用地',
+          }
+          that.winObj.position = [lnglatObj.lng, lnglatObj.lat]
+          if (estateObj.id) {
+            const ptObj = {
+              bs: "别墅",
+              cgc: "超高层",
+              dc: "低层",
+              dpc: "大平层",
+              ds: "叠墅",
+              gc: "高层",
+              gy: "公寓",
+              other: "其它",
+              ptyf: "普通洋房",
+              ttyf: "退台洋房",
+              xgc: "小高层",
+              xsdyf: "新时代洋房"
+            }
+            const ptArr = estateObj.product_type.split(',')
+            let ptStrArr = []
+            ptArr.forEach(n => {
+              ptStrArr.push(ptObj[n])
+            })
+            const productTypeStr = ptStrArr.join(',')
+            that.winObj.content = `
+              <div style="border-radius: 6px;overflow:hidden;background:#fff;box-shadow: 0 0 3px #ccc;">
+                <div style="font-weight: bold;color:#fff;padding: 10px 10px;background:#409eff;user-select: none;margin-bottom: 10px;text-align: left;">${cObj.text}</div>
+                <div style="display: flex;padding-left: 10px;">
+                  <div style="width: 100px;">
+                    <img style="width: 100px;height: auto;" src="${estateObj.pri_image}_xs" />
+                  </div>
+                  <div style="width: 160px;">
+                    <div style="padding: 0 10px 6px;color: #999;font-size: 12px;color: #f00;font-weight: bold;">价格:¥${estateObj.price_range}</div>
+                    <div style="padding: 0 10px 6px;color: #999;font-size: 12px;">类型:${typeObj[cObj.fillColor] || '其它'}</div>
+                    <div style="padding: 0 10px 6px;color: #999;font-size: 12px;">物业:${estateObj.property_type}</div>
+                    <div style="padding: 0 10px 6px;color: #999;font-size: 12px;">产品:${productTypeStr}</div>
+                  </div>
+                </div>
+              </div>
+            `
+          } else if (schoolObj.id) {
+            const saObj = arrToObj(that.$dictData.school_attrib)
+            const stObj = arrToObj(that.$dictData.school_type)
+            that.winObj.content = `
+              <div style="border-radius: 6px;overflow:hidden;background:#fff;box-shadow: 0 0 3px #ccc;">
+                <div style="font-weight: bold;color:#fff;padding: 10px 10px;background:#409eff;user-select: none;margin-bottom: 10px;text-align: left;">${cObj.text}</div>
+                <div style="display: flex;padding-left: 10px;">
+                  <div style="width: 100px;">
+                    <img style="width: 100px;height: auto;" src="${schoolObj.pri_image}_xs" />
+                  </div>
+                  <div style="width: 260px;">
+                    <div style="padding: 0 10px 6px;color: #999;font-size: 12px;color: #f00;font-weight: bold;">${saObj[schoolObj.school_attrib]}、${stObj[schoolObj.school_type]}</div>
+                    <div style="padding: 0 10px 6px;color: #999;font-size: 12px;">备注:${schoolObj.remarked}</div>
+                  </div>
+                </div>
+              </div>
+            `
+          } else {
+            that.winObj.content = `
+              <div style="border-radius: 6px;overflow:hidden;background:#fff;box-shadow: 0 0 3px #ccc;">
+                <div style="font-weight: bold;color:#fff;padding: 10px 10px;background:#409eff;user-select: none;margin-bottom: 10px;text-align: center;">${cObj.text}</div>
+                <div style="padding: 0 10px 10px;color: #999;">类型:${typeObj[cObj.fillColor] || '其它'}</div>
+                <div style="padding: 0 10px 10px;color: #999;">状态:${cObj.strokeStyle === 'dashed' ? '规划中' : '已规划'}</div>
+              </div>
+            `
+          }
         },
       },
       polylineEvents: {
@@ -240,7 +327,7 @@ export default {
       }],
       mteStr: 'polygonAdd',
       mteObj: {},
-    dictData: {
+      dictData: {
         sys_yesno: [
           {key: '是', val: '1'},
           {key: '否', val: '2'},
@@ -421,63 +508,63 @@ export default {
   computed: {},
   created() {
     this.getData()
-    this.$api.base.apiareainfolist().then(areaArr => {
-      const arr = areaArr.map((a, aIndex) => {
-        return {
-          key: aIndex,
-          val: a.option1,
-          longitude: a.longitude,
-          latitude: a.latitude,
-          areaName: a.area_name,
-        }
-      })
-      this.$api.base.admmapcoordinall().then(res => {
-        let estateList = res.estate_list || []
-        estateList.map(item => {
-          item.position = [item.longitude, item.latitude]
-        })
-        this.estateList = [...estateList]
+    // this.$api.base.apiareainfolist().then(areaArr => {
+    //   const arr = areaArr.map((a, aIndex) => {
+    //     return {
+    //       key: aIndex,
+    //       val: a.option1,
+    //       longitude: a.longitude,
+    //       latitude: a.latitude,
+    //       areaName: a.area_name,
+    //     }
+    //   })
+      // this.$api.base.admmapcoordinall().then(res => {
+      //   let estateList = res.estate_list || []
+      //   estateList.map(item => {
+      //     item.position = [item.longitude, item.latitude]
+      //   })
+      //   this.estateList = [...estateList]
 
-        const query = this.$route.query
-        if (query.id === '95542fdc-b542-4582-9be2-9ab8005728d3') {
-          let small_school_list = res.small_school_list || []
-          small_school_list.map(item => {
-            item.position = [item.longitude, item.latitude]
-          })
-          this.schoolList = [...small_school_list]
-        } else if (query.id === '95542ff1-8176-4267-8344-2aa7f1034ac5') {
-          let medium_school_list = res.medium_school_list || []
-          medium_school_list.map(item => {
-            item.position = [item.longitude, item.latitude]
-          })
-          this.schoolList = [...medium_school_list]
-        } else {
-          let schoolList = res.school_list || []
-          schoolList.map(item => {
-            item.position = [item.longitude, item.latitude]
-          })
-          this.schoolList = [...schoolList]
-        }
+      //   const query = this.$route.query
+      //   if (query.id === '95542fdc-b542-4582-9be2-9ab8005728d3') {
+      //     let small_school_list = res.small_school_list || []
+      //     small_school_list.map(item => {
+      //       item.position = [item.longitude, item.latitude]
+      //     })
+      //     this.schoolList = [...small_school_list]
+      //   } else if (query.id === '95542ff1-8176-4267-8344-2aa7f1034ac5') {
+      //     let medium_school_list = res.medium_school_list || []
+      //     medium_school_list.map(item => {
+      //       item.position = [item.longitude, item.latitude]
+      //     })
+      //     this.schoolList = [...medium_school_list]
+      //   } else {
+      //     let schoolList = res.school_list || []
+      //     schoolList.map(item => {
+      //       item.position = [item.longitude, item.latitude]
+      //     })
+      //     this.schoolList = [...schoolList]
+      //   }
 
 
-        let areaList = res.area_total || []
-        let newAreaList = []
-        areaList.forEach(item => {
-          // let lnglatArr = arrToObj(this.dictData.map_area_lnglat)[item.area_type].split(',')
-          // item.position = [lnglatArr[0], lnglatArr[1]]
-          // item.areaName = arrToObj(this.dictData.area_type)[item.area_type]
-          const areaIndex = arrToObj(arr)[item.area_type]
-          if (arr[areaIndex] && arr[areaIndex].longitude) {
-            newAreaList.push({
-              ...item,
-              position: [arr[areaIndex].longitude, arr[areaIndex].latitude],
-              areaName: arr[areaIndex].areaName
-            })
-          }
-        })
-        this.areaList = [...newAreaList]
-      })
-    })
+      //   let areaList = res.area_total || []
+      //   let newAreaList = []
+      //   areaList.forEach(item => {
+      //     // let lnglatArr = arrToObj(this.dictData.map_area_lnglat)[item.area_type].split(',')
+      //     // item.position = [lnglatArr[0], lnglatArr[1]]
+      //     // item.areaName = arrToObj(this.dictData.area_type)[item.area_type]
+      //     const areaIndex = arrToObj(arr)[item.area_type]
+      //     if (arr[areaIndex] && arr[areaIndex].longitude) {
+      //       newAreaList.push({
+      //         ...item,
+      //         position: [arr[areaIndex].longitude, arr[areaIndex].latitude],
+      //         areaName: arr[areaIndex].areaName
+      //       })
+      //     }
+      //   })
+      //   this.areaList = [...newAreaList]
+      // })
+    // })
   },
   mounted() {},
   methods: {
@@ -501,6 +588,12 @@ export default {
       }).then(res => {
         if (res.data) {
           const data = JSON.parse(res.data)
+          this.winObj = {
+            content: `
+            <div style="font-weight: bold;color:#409eff;padding: 10px 10px;background:#fff;border-radius: 6px;user-select: none;">${data.mapDiyObj.title}</div>
+            `,
+            position: [data.mapDiyObj.center[0], data.mapDiyObj.center[1]],
+          }
           this.polylines = data.polylines && data.polylines.length > 0 ? [...data.polylines] : []
           this.polygons = [...data.polygons]
           this.markerData = [...data.markerData]
@@ -522,10 +615,9 @@ export default {
           }
         }
         document.title = res.title || '洪楼地图1'
-        // this.getDef()
       })
     },
-    
+
   }
 }
 </script>

Vissa filer visades inte eftersom för många filer har ändrats