From a5845873604f6d038c1cf2441b20173c3a4dfcb5 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 18 七月 2024 14:36:42 +0800
Subject: [PATCH] 提交

---
 admin/src/components/business/OperaShopWindow.vue |  334 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 211 insertions(+), 123 deletions(-)

diff --git a/admin/src/components/business/OperaShopWindow.vue b/admin/src/components/business/OperaShopWindow.vue
index 33fe966..aacc499 100644
--- a/admin/src/components/business/OperaShopWindow.vue
+++ b/admin/src/components/business/OperaShopWindow.vue
@@ -1,114 +1,65 @@
 <template>
   <GlobalWindow
     :title="title"
+    width="70%"
     :visible.sync="visible"
     :confirm-working="isWorking"
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      <div>
+        <el-form-item label="鎵�灞炲尯鍩�" prop="provinceCode" label-width="100px">
+          <div class="address-plus">
+            <el-select v-model="form.provinceCode" placeholder="璇烽�夋嫨鐪佷唤"  @change="selectProvince" style="width:150px; margin-right: 25px" >
+              <el-option
+                  v-for="item in provinces"
+                  :key="item.id"
+                  :value="item.id"
+                  :label="item.name"
+              ></el-option>
+            </el-select>
+            <el-select v-model="form.cityCode" placeholder="璇烽�夋嫨鍩庡競" @change="selectCity"  style="width:150px; margin-right: 25px">
+              <el-option
+                  v-for="item in cities"
+                  :key="item.id"
+                  :value="item.id"
+                  :label="item.name"
+              ></el-option>
+            </el-select>
+            <el-select v-model="form.areaCode" placeholder="璇烽�夋嫨鍘垮尯" @change="selectArea" style="width:150px; margin-right: 22px">
+              <el-option
+                  v-for="item in areas"
+                  :key="item.id"
+                  :value="item.id"
+                  :label="item.name"
+              ></el-option>
+            </el-select>
+          </div>
+        </el-form-item>
+      </div>
+      <el-form-item label="鑱旂郴浜�" prop="linkerName" label-width="100px">
+        <el-input v-model="form.linkerName" placeholder="璇疯緭鍏ヨ仈绯讳汉" v-trim style="width:500px; "/>
       </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      <el-form-item label="鑱旂郴鐢佃瘽" prop="linkPhone"  label-width="100px">
+        <el-input v-model="form.linkPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-trim style="width:500px; "/>
       </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      <el-form-item label="璇︾粏鍦板潃" prop="address"  label-width="100px">
+        <el-input v-model="form.address" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" v-trim style="width:500px; " @blur="changeMapCenter"/>
       </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="閮ㄩ棬id" prop="orgId">
-        <el-input v-model="form.orgId" placeholder="璇疯緭鍏ラ儴闂╥d" v-trim/>
-      </el-form-item>
-      <el-form-item label="閮ㄩ棬鍚嶇О" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="閮ㄩ棬U瀹㈢粍缁噄d" prop="orgOldId">
-        <el-input v-model="form.orgOldId" placeholder="璇疯緭鍏ラ儴闂║瀹㈢粍缁噄d" v-trim/>
-      </el-form-item>
-      <el-form-item label="涓婄骇缁勭粐Id" prop="parentId">
-        <el-input v-model="form.parentId" placeholder="璇疯緭鍏ヤ笂绾х粍缁嘔d" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎺掑簭鐮�" prop="orderNum">
-        <el-input v-model="form.orderNum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="缁勭粐SF瀛樻斁鐮�" prop="sourceCode">
-        <el-input v-model="form.sourceCode" placeholder="璇疯緭鍏ョ粍缁嘢F瀛樻斁鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="缁勭粐缂栫爜" prop="code">
-        <el-input v-model="form.code" placeholder="璇疯緭鍏ョ粍缁囩紪鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="缁勭粐绫诲瀷1:涓�浣撳晢 ,2:鍔犵洘鍟�,3:搴楅潰锛�4:閮ㄩ棬(HR/鍔�)锛�5:铏氭嫙搴楅潰(鍔�/铏�)" prop="type">
-        <el-input v-model="form.type" placeholder="璇疯緭鍏ョ粍缁囩被鍨�1:涓�浣撳晢 ,2:鍔犵洘鍟�,3:搴楅潰锛�4:閮ㄩ棬(HR/鍔�)锛�5:铏氭嫙搴楅潰(鍔�/铏�)" v-trim/>
-      </el-form-item>
-      <el-form-item label="閮ㄩ棬灞炴�э紙1:瀹炰綋搴楅潰銆�2:铏氭嫙搴楅潰銆�3:鐢靛晢閮ㄣ��4:娓犻亾閮ㄣ��5:璐㈠姟閮級" prop="attribute">
-        <el-input v-model="form.attribute" placeholder="璇疯緭鍏ラ儴闂ㄥ睘鎬э紙1:瀹炰綋搴楅潰銆�2:铏氭嫙搴楅潰銆�3:鐢靛晢閮ㄣ��4:娓犻亾閮ㄣ��5:璐㈠姟閮級" v-trim/>
-      </el-form-item>
-      <el-form-item label="浼佷笟寰俊缁勭粐ID" prop="weixinId">
-        <el-input v-model="form.weixinId" placeholder="璇疯緭鍏ヤ紒涓氬井淇$粍缁嘔D" v-trim/>
-      </el-form-item>
-      <el-form-item label="閽夐拤閮ㄩ棬ID" prop="dingdingId">
-        <el-input v-model="form.dingdingId" placeholder="璇疯緭鍏ラ拤閽夐儴闂↖D" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏈�杩戝悓姝ユ椂闂�" prop="syncDate">
-        <el-date-picker v-model="form.syncDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶杩戝悓姝ユ椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏈�杩戝悓姝ュ娉�" prop="syncInfo">
-        <el-input v-model="form.syncInfo" placeholder="璇疯緭鍏ユ渶杩戝悓姝ュ娉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎵�灞炲叧鑱擣鐮�" prop="fcode">
-        <el-input v-model="form.fcode" placeholder="璇疯緭鍏ユ墍灞炲叧鑱擣鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎵�灞炲叧鑱擲鐮�" prop="scode">
-        <el-input v-model="form.scode" placeholder="璇疯緭鍏ユ墍灞炲叧鑱擲鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="ZCODE" prop="zcode">
-        <el-input v-model="form.zcode" placeholder="璇疯緭鍏CODE" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍏宠仈S鐮�" prop="glCode">
-        <el-input v-model="form.glCode" placeholder="璇疯緭鍏ュ叧鑱擲鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍏宠仈S鐮佸悕绉�" prop="glName">
-        <el-input v-model="form.glName" placeholder="璇疯緭鍏ュ叧鑱擲鐮佸悕绉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍥藉" prop="country">
-        <el-input v-model="form.country" placeholder="璇疯緭鍏ュ浗瀹�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐪佷唤缂栫爜" prop="provinceCode">
-        <el-input v-model="form.provinceCode" placeholder="璇疯緭鍏ョ渷浠界紪鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐪佷唤鍚嶇О" prop="provinceName">
-        <el-input v-model="form.provinceName" placeholder="璇疯緭鍏ョ渷浠藉悕绉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍩庡競鐮�" prop="cityCode">
-        <el-input v-model="form.cityCode" placeholder="璇疯緭鍏ュ煄甯傜爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍩庡競鍚嶇О" prop="cityName">
-        <el-input v-model="form.cityName" placeholder="璇疯緭鍏ュ煄甯傚悕绉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍖哄幙缂栫爜" prop="areaCode">
-        <el-input v-model="form.areaCode" placeholder="璇疯緭鍏ュ尯鍘跨紪鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍖哄幙鍚嶇О" prop="areaName">
-        <el-input v-model="form.areaName" placeholder="璇疯緭鍏ュ尯鍘垮悕绉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍝佺被缂栫爜" prop="unitCode">
-        <el-input v-model="form.unitCode" placeholder="璇疯緭鍏ュ搧绫荤紪鐮�" v-trim/>
+      <el-form-item label="缁忕含搴�" prop="posInfo"  label-width="100px">
+        <el-input v-model="form.longitude"  clearable  placeholder="鐐瑰嚮鍦板浘鑾峰彇缁忓害" v-trim style="width:245px; "/>-
+        <el-input v-model="form.latitude"  clearable  placeholder="鐐瑰嚮鍦板浘鑾峰彇缁村害" v-trim style="width:245px; "/>
       </el-form-item>
     </el-form>
+    <div class="map-box">
+      <div id="mapContainer" ref="mapContainer" style="width:80%;margin-left:10%;height:400px;overflow: hidden;" ></div>
+      <div class="map-search">
+        <el-input v-model="searchValue" placeholder="璇疯緭鍏ヨ妫�绱㈢殑浣嶇疆淇℃伅" />
+        <el-button @click="searchAddress(searchValue)" type="primary">鎼滅储</el-button>
+      </div>
+    </div>
   </GlobalWindow>
 </template>
-
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
@@ -118,43 +69,33 @@
   components: { GlobalWindow },
   data () {
     return {
+      geocoder: null,
+      map: [],
+      searchValue:'',
+      marker:null,
       // 琛ㄥ崟鏁版嵁
+      provinces: [],
+      cities: [],
+      areas: [],
       form: {
         id: null,
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        remark: '',
-        orgId: '',
-        name: '',
-        orgOldId: '',
-        parentId: '',
-        status: '',
-        orderNum: '',
-        sourceCode: '',
-        code: '',
-        type: '',
-        attribute: '',
-        weixinId: '',
-        dingdingId: '',
-        syncDate: '',
-        syncInfo: '',
-        fcode: '',
-        scode: '',
-        zcode: '',
-        glCode: '',
-        glName: '',
-        country: '',
+        provinceId: '',
         provinceCode: '',
         provinceName: '',
         cityCode: '',
+        cityId: '',
         cityName: '',
+        areaId: '',
         areaCode: '',
         areaName: '',
-        unitCode: ''
+        longitude: '',
+        latitude: '',
+        address: '',
+        linkPhone: '',
+        posInfo: '',
+        linkerName: ''
       },
+      geolocation: null,
       // 楠岃瘉瑙勫垯
       rules: {
       }
@@ -165,6 +106,153 @@
       api: '/business/shop',
       'field.id': 'id'
     })
+  },
+  methods: {
+    searchAddress( ){
+      if(this.geocoder && this.searchValue){
+        this.geocoder.getLocation(this.searchValue)
+      }
+    },
+    initMap (lat, long) {
+      const that = this
+      var center = new qq.maps.LatLng(lat || 39.916527, long || 116.397128)// 榛樿鍖椾含澶╁畨闂�
+      this.map = new qq.maps.Map(document.getElementById('mapContainer'), {
+        center: center,
+        zoom: 17
+      })
+      this.changePostion(long,lat)
+      qq.maps.event.addListener(this.map, 'click',
+        function (event) {
+          that.changePostion(event.latLng.lng, event.latLng.lat)
+        }
+      )
+      this.geocoder = new qq.maps.Geocoder()
+      this.geocoder.setComplete(function (result) {
+        that.changePostion(result.detail.location.lng,result.detail.location.lat)
+      })
+      // 鑻ユ湇鍔¤姹傚け璐ワ紝鍒欒繍琛屼互涓嬪嚱鏁�
+      this.geocoder.setError(function () {
+        console.log('閫嗚В鏋愬け璐�')
+      })
+    },
+    open (title, target) {
+      this.title = title
+      this.visible = true
+      this.form.provinceId = ''
+      this.form.cityId = ''
+      this.searchValue = ''
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+          this.loadProvince(this.form.provinceId, true)
+        })
+        return
+      }
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        this.loadProvince(this.form.provinceId, true)
+        const mapContainer = this.$refs.mapContainer // 鑾峰彇鍦板浘瀹瑰櫒
+        if (mapContainer) {
+          // 鍒濆鍖栧湴鍥句箣鍓嶆鏌ュ鍣ㄦ槸鍚﹀瓨鍦�
+          this.initMap(this.form.latitude,this.form.longitude)
+          // 鍒濆鍖栬吘璁湴鍥�
+        }
+      })
+    },
+    loadProvince () {
+      this.api.areaList({ pid: '1' })
+        .then(res => {
+          this.provinces = res
+        })
+    },
+    // 閫夋嫨鐪佷唤
+    selectProvince (val) {
+      this.provinces.forEach(item => {
+        if (item.id == val) {
+          this.form.provinceName = item.name
+        }
+      })
+      this.cities = []
+      this.areas = []
+      this.form.cityName = ''
+      this.form.areaCode = ''
+      this.form.cityCode = ''
+      this.form.areaName = ''
+      if(!val || val ==''){
+        return
+      }
+      this.api.areaList({ pid: val })
+        .then(res => {
+          this.cities = res
+          this.selectCity(this.form.cityId)
+        })
+    },
+    // 閫夋嫨鍩庡競
+    selectCity (val) {
+      this.cities.forEach(item => {
+        if (item.id == val) {
+          this.form.cityName = item.name
+        }
+      })
+      this.areas = []
+      this.form.areaCode = ''
+      this.form.areaName = ''
+      if(!val || val ==''){
+        return
+      }
+      this.api.areaList({ pid: val })
+        .then(res => {
+          this.areas = res
+        })
+    },
+    selectArea (val) {
+      this.areas.forEach(item => {
+        if (item.id == val) {
+          this.form.areaName = item.name
+        }
+      })
+    },
+    changeMapCenter(){
+       this.searchValue = (this.form.provinceName||'')+(this.form.cityName||'')+(this.form.areaName||'')+(this.form.address||'')
+      this.searchAddress()
+    },
+    changePostion (lng, lat) {
+      if (lng || lat) {
+        this.form.longitude = lng
+        this.form.latitude = lat
+        if(this.map){
+          if(this.marker){
+            this.marker.setMap(null)
+          }
+          var pos =new qq.maps.LatLng(lat,lng);
+          this.map.setCenter(pos)
+          this.marker= new qq.maps.Marker({
+            position: pos,
+            animation:qq.maps.MarkerAnimation.DROP,
+            map:this.map
+          })
+        }
+      }
+    }
   }
 }
 </script>
+<style scoped>
+.map-box {
+  position: relative;
+}
+.map-search {
+  z-index: 1000;
+  display: flex;
+  position: absolute;
+  top: 20px;
+  left: 120px;
+  width: 350px;
+}
+button {
+  border-radius: 0;
+}
+</style>

--
Gitblit v1.9.3