|
|
@@ -0,0 +1,172 @@
|
|
|
+<template>
|
|
|
+ <el-dialog
|
|
|
+ v-if="visible"
|
|
|
+ :title="form.id?'编辑场馆':'新建场馆'"
|
|
|
+ :visible.sync="visible"
|
|
|
+ >
|
|
|
+ <el-form v-loading="isLoading" :model="form" label-width="100px" label-position="top">
|
|
|
+ <el-tabs v-model="activeTabPaneName">
|
|
|
+ <el-tab-pane label="基本信息" name="base">
|
|
|
+ <el-row :gutter="16">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="场所类型">
|
|
|
+ <el-select v-model="form.dataTypeId" placeholder="请选择场所类型" clearable @change="changeDataType">
|
|
|
+ <el-option v-for="item in listDataType" :key="item.id" :label="item.name" :value="item.id"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="场所名称">
|
|
|
+ <el-input v-model="form.name"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item label="地址">
|
|
|
+ <el-input v-model="form.address"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="联系人">
|
|
|
+ <el-input v-model="form.contacts"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="联系电话">
|
|
|
+ <el-input v-model="form.contactNumber"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="扩展信息" name="extend">
|
|
|
+ <el-form-item v-for="item in listExtendColumn" :key="item.id" :label="item.fieldLabel">
|
|
|
+ <extend-column :extend-column-info="item" :form="form"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="简介">
|
|
|
+ <el-input v-model="form.brief" type="textarea" rows="10"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="图片" name="image">
|
|
|
+ <el-form-item label="图片">
|
|
|
+ <el-upload
|
|
|
+ :file-list="fileList"
|
|
|
+ action="#"
|
|
|
+ list-type="picture-card"
|
|
|
+ name="fileData"
|
|
|
+ :http-request="uploaderHandle"
|
|
|
+ :on-success="uploadSuccess"
|
|
|
+ :on-remove="handleRemove"
|
|
|
+ :auto-upload="true"
|
|
|
+ >
|
|
|
+ <i slot="default" class="el-icon-plus"/>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="地图标记" name="map">
|
|
|
+ <tencent-map v-if="activeTabPaneName==='map'" id="amapcontainer" :position="[lat,lng]" @click="mapClick"/>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="visible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="handleSubmit">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+
|
|
|
+import { uploaderHandle } from '@/api/upload'
|
|
|
+import { save, updateById } from '@/api/base/data_info'
|
|
|
+import TencentMap from '@/components/TencentMap'
|
|
|
+import { findAllDataType, findDataTypeExtendColumn } from '@/api/base/data_info'
|
|
|
+import ExtendColumn from '@/components/ExtendColumn'
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: { TencentMap, ExtendColumn },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ activeTabPaneName: 'base',
|
|
|
+ visible: false,
|
|
|
+ isLoading: false,
|
|
|
+ listDataType: [],
|
|
|
+ listExtendColumn: [],
|
|
|
+ form: {
|
|
|
+ checkbox: []
|
|
|
+ },
|
|
|
+ fileList: [],
|
|
|
+ lng: null,
|
|
|
+ lat: null
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ uploaderHandle,
|
|
|
+ handleRemove(file, fileList) {
|
|
|
+ this.fileList = fileList
|
|
|
+ },
|
|
|
+ uploadSuccess(res, file, fileList) {
|
|
|
+ file.url = res.url
|
|
|
+ this.fileList = fileList
|
|
|
+ },
|
|
|
+ changeDataType(dataTypeId) {
|
|
|
+ console.log(dataTypeId)
|
|
|
+ findDataTypeExtendColumn(dataTypeId).then(listExtendColumn => {
|
|
|
+ listExtendColumn.forEach(v => {
|
|
|
+ v.fieldType = v.fieldType.name
|
|
|
+ })
|
|
|
+ this.listExtendColumn = listExtendColumn
|
|
|
+ })
|
|
|
+ },
|
|
|
+ open(data) {
|
|
|
+ this.visible = true
|
|
|
+ this.isLoading = false
|
|
|
+ this.fileList = []
|
|
|
+ this.form = {}
|
|
|
+ findAllDataType().then(listDataType => {
|
|
|
+ this.listDataType = listDataType
|
|
|
+ })
|
|
|
+ // if (data && data.id) {
|
|
|
+ // if (data.litpics) {
|
|
|
+ // data.litpics.forEach(o => {
|
|
|
+ // this.fileList.push({ url: o })
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // this.lng = data?.lng
|
|
|
+ // this.lat = data?.lat
|
|
|
+ //
|
|
|
+ // this.form = Object.assign({}, data)
|
|
|
+ // }
|
|
|
+ },
|
|
|
+ mapClick(e) {
|
|
|
+ this.lng = e.latLng.lng
|
|
|
+ this.lat = e.latLng.lat
|
|
|
+ },
|
|
|
+ handleSubmit() {
|
|
|
+ const litpics = []
|
|
|
+ this.fileList.forEach(o => {
|
|
|
+ litpics.push(o.url)
|
|
|
+ })
|
|
|
+ const param = { ...this.form, listExtends: this.listExtendColumn, lng: this.lng, lat: this.lat, litpics }
|
|
|
+
|
|
|
+ console.log(param.listExtends)
|
|
|
+ if (this.form.id) {
|
|
|
+ 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
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|