stjdydayou há 4 anos atrás
pai
commit
cdf5b232e7

+ 1 - 0
package.json

@@ -14,6 +14,7 @@
     "test:ci": "npm run lint && npm run test:unit"
   },
   "dependencies": {
+    "@amap/amap-jsapi-loader": "^1.0.1",
     "axios": "0.18.1",
     "core-js": "3.6.5",
     "element-ui": "2.13.2",

+ 25 - 0
src/api/bz/base/venue.js

@@ -7,3 +7,28 @@ export function findPage(data) {
     data
   })
 }
+
+export function save(data) {
+  return request({
+    url: '/bz/base/venue/save',
+    method: 'post',
+    data
+  })
+}
+
+export function updateById(id, data) {
+  return request({
+    url: '/bz/base/venue/updateById',
+    method: 'post',
+    params: { id },
+    data
+  })
+}
+
+export function deleteByIds(ids) {
+  return request({
+    url: '/bz/base/venue/deleteByIds',
+    method: 'post',
+    data: ids
+  })
+}

+ 70 - 26
src/views/bz/base/venue/DialogForm.vue

@@ -31,12 +31,6 @@
           <i slot="default" class="el-icon-plus"/>
         </el-upload>
       </el-form-item>
-      <el-form-item label="描述">
-        <el-input v-model="form.describe" type="textarea"/>
-      </el-form-item>
-      <el-form-item label="简介">
-        <el-input v-model="form.brief" type="textarea"/>
-      </el-form-item>
       <el-form-item label="地址">
         <el-input v-model="form.address"/>
       </el-form-item>
@@ -52,6 +46,13 @@
           </el-form-item>
         </el-col>
       </el-row>
+
+      <el-form-item label="简介">
+        <el-input v-model="form.brief" type="textarea" rows="10"/>
+      </el-form-item>
+
+      <div id="amapcontainer" style="width: 100%;height: 400px"/>
+
     </el-form>
     <div slot="footer" class="dialog-footer">
       <el-button @click="visible = false">取 消</el-button>
@@ -62,8 +63,9 @@
 
 <script>
 
-import { save, updateById } from '@/api/role'
 import { uploaderHandle } from '@/api/upload'
+import AMapLoader from '@amap/amap-jsapi-loader'
+import { save, updateById } from '@/api/bz/base/venue'
 
 export default {
   data() {
@@ -72,10 +74,14 @@ export default {
       isLoading: false,
       listAllAuthorities: [],
       form: {},
-      fileList: []
+      fileList: [],
+      map: null,
+      marker: null,
+      lng: null,
+      lat: null
     }
   },
-  created() {
+  mounted() {
   },
   methods: {
     uploaderHandle,
@@ -85,27 +91,65 @@ export default {
     },
     open(data) {
       this.visible = true
-      // this.fileList = [{ url: 'http://127.0.0.1:9800/src/2022/01/25/2ce4b244c380c7e178f982bad02d844c.png' }]
+      this.isLoading = false
       this.form = Object.assign({}, data)
+      this.initMap()
+    },
+    initMap() {
+      const _this = this
+      AMapLoader.load({
+        key: '173fa0186964179b9c6f43d59f72172f',
+        version: '2.0',
+        plugins: ['AMap.ToolBar', 'AMap.Scale']
+      }).then((AMap) => {
+        this.map = new AMap.Map('amapcontainer', {
+          zoom: 15
+        })
+
+        _this.map.on('click', function(e) {
+          _this.lng = e.lnglat.lng
+          _this.lat = e.lnglat.lat
+          if (_this.marker) {
+            _this.marker.setPosition([e.lnglat.lng, e.lnglat.lat])
+          } else {
+            _this.marker = new AMap.Marker({
+              position: [e.lnglat.lng, e.lnglat.lat],
+              clickable: true,
+              map: _this.map
+            })
+          }
+        })
+      }).catch(e => {
+        console.log(e)
+      })
     },
     handleSubmit() {
+      console.log(this.fileList)
+      console.log(this.lng)
+      console.log(this.lat)
       console.log(this.form)
-      // this.isLoading = true
-      // if (this.form.id) {
-      //   updateById(this.form.id, this.form).then(() => {
-      //     this.visible = false
-      //     this.$emit('ok')
-      //   }).finally(() => {
-      //     this.isLoading = false
-      //   })
-      // } else {
-      //   save(this.form).then(res => {
-      //     this.visible = false
-      //     this.$emit('ok')
-      //   }).finally(() => {
-      //     this.isLoading = false
-      //   })
-      // }
+      const litpics = []
+      this.fileList.forEach(o => {
+        litpics.push(o.url)
+      })
+      this.isLoading = true
+      const param = { ...this.form, lng: this.lng, lat: this.lat, litpics }
+      if (this.form.id) {
+        console.log(param)
+        updateById(this.form.id, param).then(() => {
+          this.visible = false
+          this.$emit('ok')
+        }).finally(() => {
+          this.isLoading = false
+        })
+      } else {
+        save(param).then(res => {
+          this.visible = false
+          this.$emit('ok')
+        }).finally(() => {
+          this.isLoading = false
+        })
+      }
     }
   }
 }

+ 39 - 11
src/views/bz/base/venue/index.vue

@@ -2,10 +2,10 @@
   <div class="app-container">
     <el-form :model="queryForm" inline size="small">
       <el-form-item label="关键词">
-        <el-input v-model="queryForm.appKey" placeholder="关键词"/>
+        <el-input v-model="queryForm.keyword" placeholder="关键词"/>
       </el-form-item>
       <el-form-item label="联系电话">
-        <el-input v-model="queryForm.method" placeholder="联系电话"/>
+        <el-input v-model="queryForm.contactNumber" placeholder="联系电话"/>
       </el-form-item>
 
     </el-form>
@@ -26,15 +26,25 @@
       border
       fit
       highlight-current-row
+      @selection-change="selectionChange"
     >
-      <el-table-column label="名称" prop="appKey" width="150"/>
-      <el-table-column label="缩略图" prop="method" width="150"/>
-      <el-table-column label="描述" prop="version" width="150"/>
-      <el-table-column label="简介" prop="clientIp" width="150"/>
-      <el-table-column label="地址" prop="serviceBeginTime" :formatter="dateTimeFormatter" width="160"/>
-      <el-table-column label="联系人" prop="serviceEndTime" :formatter="dateTimeFormatter" width="160"/>
-      <el-table-column label="联系电话" prop="requestBody" min-width="300"/>
-      <el-table-column label="位置信息" prop="responseData" min-width="300"/>
+      <el-table-column type="selection" width="55"/>
+      <el-table-column label="ID" prop="id" width="150"/>
+      <el-table-column label="名称" prop="name"/>
+      <el-table-column label="缩略图">
+        <template slot-scope="scope">
+          {{ scope.row.litpics.length }}张
+        </template>
+      </el-table-column>
+      <el-table-column label="简介" prop="brief"/>
+      <el-table-column label="地址" prop="address"/>
+      <el-table-column label="联系人" prop="contacts"/>
+      <el-table-column label="联系电话" prop="contactNumber"/>
+      <el-table-column label="位置信息">
+        <template slot-scope="scope">
+          [ {{ scope.row.lng }}, {{ scope.row.lat }} ]
+        </template>
+      </el-table-column>
     </el-table>
     <el-pagination
       class="pagination-container"
@@ -49,7 +59,7 @@
 </template>
 
 <script>
-import { findPage } from '@/api/bz/base/venue'
+import { findPage, deleteByIds } from '@/api/bz/base/venue'
 import { dateTimeFormatter } from '@/utils/formater'
 import DialogForm from './DialogForm'
 
@@ -69,6 +79,24 @@ export default {
   },
   methods: {
     dateTimeFormatter,
+    selectionChange(val) {
+      const temp = []
+      val.forEach(o => {
+        temp.push(o.id)
+      })
+      this.multipleSelection = temp
+    },
+    deleteByIds(ids) {
+      this.$confirm('确认要删除吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        deleteByIds(ids).then(() => {
+          this.fetchData()
+        })
+      })
+    },
     paginationChange(val) {
       this.currentPage = val
       this.fetchData()