DialogForm.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <el-dialog
  3. v-if="visible"
  4. :title="form.id?'编辑旅行社':'新建旅行社'"
  5. :visible.sync="visible"
  6. width="1200px"
  7. >
  8. <el-form v-loading="isLoading" :model="form" label-width="100px" label-position="top">
  9. <el-row :gutter="24">
  10. <el-col :span="12">
  11. <el-row :gutter="24">
  12. <el-col :span="12">
  13. <el-form-item label="名称">
  14. <el-input v-model="form.baseDataInfo.name" />
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="12">
  18. <el-form-item label="导游数量">
  19. <el-input-number v-model="form.totalTourGuidesCount" />
  20. </el-form-item>
  21. </el-col>
  22. </el-row>
  23. <el-form-item label="图片">
  24. <el-upload
  25. :file-list="fileList"
  26. action="#"
  27. list-type="picture-card"
  28. name="fileData"
  29. :http-request="uploaderHandle"
  30. :on-success="uploadSuccess"
  31. :on-remove="handleRemove"
  32. :auto-upload="true"
  33. >
  34. <i slot="default" class="el-icon-plus" />
  35. </el-upload>
  36. </el-form-item>
  37. <el-form-item label="地址">
  38. <el-input v-model="form.baseDataInfo.address" />
  39. </el-form-item>
  40. <el-row :gutter="24">
  41. <el-col :span="12">
  42. <el-form-item label="联系人">
  43. <el-input v-model="form.baseDataInfo.contacts" />
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="12">
  47. <el-form-item label="联系电话">
  48. <el-input v-model="form.baseDataInfo.contactNumber" />
  49. </el-form-item>
  50. </el-col>
  51. </el-row>
  52. </el-col>
  53. <el-col :span="12">
  54. <el-form-item label="标注位置">
  55. <tencent-map id="amapcontainer" :position="[lat,lng]" @click="mapClick" />
  56. </el-form-item>
  57. </el-col>
  58. </el-row>
  59. <el-form-item label="简介">
  60. <el-input v-model="form.baseDataInfo.brief" type="textarea" rows="10" />
  61. </el-form-item>
  62. </el-form>
  63. <div slot="footer" class="dialog-footer">
  64. <el-button @click="visible = false">取 消</el-button>
  65. <el-button type="primary" @click="handleSubmit">确 定</el-button>
  66. </div>
  67. </el-dialog>
  68. </template>
  69. <script>
  70. import { uploaderHandle } from '@/api/upload'
  71. import { save, updateById } from '@/api/bz/base/tourist'
  72. import TencentMap from '@/components/TencentMap'
  73. export default {
  74. components: { TencentMap },
  75. data() {
  76. return {
  77. visible: false,
  78. isLoading: false,
  79. listAllAuthorities: [],
  80. form: {},
  81. fileList: [],
  82. map: null,
  83. marker: null,
  84. lng: null,
  85. lat: null
  86. }
  87. },
  88. mounted() {
  89. },
  90. methods: {
  91. uploaderHandle,
  92. handleRemove(file, fileList) {
  93. this.fileList = fileList
  94. },
  95. uploadSuccess(res, file, fileList) {
  96. file.url = res.url
  97. this.fileList = fileList
  98. },
  99. open(data) {
  100. this.visible = true
  101. this.isLoading = false
  102. this.fileList = []
  103. this.form = {
  104. baseDataInfo: {}
  105. }
  106. if (data && data.baseDataInfo) {
  107. const baseDataInfo = data.baseDataInfo
  108. if (baseDataInfo.litpics) {
  109. baseDataInfo.litpics.forEach(o => {
  110. this.fileList.push({ url: o })
  111. })
  112. }
  113. this.lng = baseDataInfo?.lng
  114. this.lat = baseDataInfo?.lat
  115. this.form = Object.assign({}, data)
  116. }
  117. },
  118. mapClick(e) {
  119. this.lng = e.latLng.lng
  120. this.lat = e.latLng.lat
  121. },
  122. handleSubmit() {
  123. const litpics = []
  124. this.fileList.forEach(o => {
  125. litpics.push(o.url)
  126. })
  127. this.isLoading = true
  128. const param = { ...this.form, baseDataInfo: { ...this.form.baseDataInfo, lng: this.lng, lat: this.lat, litpics }}
  129. console.log(param)
  130. if (this.form.id) {
  131. updateById(this.form.id, param).then(() => {
  132. this.visible = false
  133. this.$emit('ok')
  134. }).finally(() => {
  135. this.isLoading = false
  136. })
  137. } else {
  138. save(param).then(res => {
  139. this.visible = false
  140. this.$emit('ok')
  141. }).finally(() => {
  142. this.isLoading = false
  143. })
  144. }
  145. }
  146. }
  147. }
  148. </script>