attractionInfoBeas.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <div
  3. style="padding: 40px;"
  4. v-loading="loading"
  5. :element-loading-text="loadingText"
  6. element-loading-spinner="el-icon-loading"
  7. element-loading-background="rgba(0, 0, 0, 0.8)"
  8. >
  9. <el-form :model="form" ref="form" size="small" :rules="rules" label-width="120px">
  10. <el-form-item label="景区名称" prop="scenicName">
  11. <el-input
  12. v-model="form.scenicName"
  13. placeholder="请输入景区名称"
  14. clearable
  15. style="width: 300px"
  16. />
  17. </el-form-item>
  18. <el-form-item label="开放时间" prop="developDate">
  19. <el-input
  20. v-model="form.developDate"
  21. placeholder="请输入开放时间"
  22. clearable
  23. style="width: 300px"
  24. maxlength="200"
  25. show-word-limit
  26. />
  27. </el-form-item>
  28. <el-form-item label="联系电话" prop="scenicPhone">
  29. <el-input
  30. v-model="form.scenicPhone"
  31. placeholder="请输入联系电话"
  32. clearable
  33. style="width: 300px"
  34. />
  35. </el-form-item>
  36. <el-form-item label="景区地址" prop="scenicAddress">
  37. <el-input
  38. v-model="form.scenicAddress"
  39. placeholder="请输入景区地址"
  40. clearable
  41. style="width: 300px"
  42. />
  43. </el-form-item>
  44. <div style="display: flex;">
  45. <el-form-item label="经度" prop="longitude">
  46. <el-input
  47. v-model="form.longitude"
  48. placeholder="请输入经度"
  49. clearable
  50. style="width: 300px"
  51. readonly
  52. />
  53. </el-form-item>
  54. <el-form-item label="纬度" prop="latitude">
  55. <el-input
  56. v-model="form.latitude"
  57. placeholder="请输入纬度"
  58. clearable
  59. style="width: 300px"
  60. readonly
  61. />
  62. </el-form-item>
  63. </div>
  64. <div style="width: 100%;height: 300px;">
  65. <qqMapBox ref="qqMapBox" @setDot="setDot" />
  66. </div>
  67. <el-form-item style="margin-top: 15px;">
  68. <el-button
  69. type="primary"
  70. @click="submitForm"
  71. :loading="loading"
  72. element-loading-text="提交中..."
  73. element-loading-spinner="el-icon-loading"
  74. element-loading-background="rgba(0, 0, 0, 0.8)"
  75. v-hasPermi="configPermi.save"
  76. >
  77. {{ loading ? '提交中...' : '保存' }}
  78. </el-button>
  79. </el-form-item>
  80. </el-form>
  81. </div>
  82. </template>
  83. <script>
  84. import {
  85. getTableDeatilsByIdApi,
  86. updateTableApi,
  87. } from '@/api/CURD'
  88. import qqMapBox from '@/myComponents/qqMap.vue'
  89. export default {
  90. name: "AttractionInfoBeas",
  91. dicts: [],
  92. components: {qqMapBox},
  93. data() {
  94. return {
  95. title: "基本信息",// 通用标题
  96. loading: false,
  97. loadingText: "拼命加载数据中...",
  98. configPermi: {
  99. save: ['contentManagement:attractionInfoBeas:save'], // 保存
  100. },
  101. configUrl: {
  102. details: '/merchant/merchantInfo/getMerchantInfo', // 详情地址
  103. edit: '/merchant/merchantInfo/updateScenic', // 编辑地址
  104. },
  105. form: {},
  106. rules: {
  107. scenicName: [{ required: true, message: "请输入标题名称", trigger: ["change","blur"] }],
  108. developDate: [{ required: true, message: "请选择开放时间", trigger: ["change","blur"] }],
  109. scenicPhone: [{ required: true, message: "请输入联系电话", trigger: ["change","blur"] }],
  110. scenicAddress: [{ required: true, message: "请输入景区地址", trigger: ["change","blur"] }],
  111. longitude: [{ required: true, message: "请输入经度", trigger: ["change","blur"] }],
  112. latitude: [{ required: true, message: "请输入纬度", trigger: ["change","blur"] }],
  113. },
  114. }
  115. },
  116. methods: {
  117. /** 初始化 */
  118. initData() {
  119. this.loadingText = "拼命加载数据中..."
  120. this.loading = true
  121. this.getTableDeatilsFun()
  122. },
  123. /** 获取详情 */
  124. async getTableDeatilsFun(row) {
  125. this.loading = true
  126. try {
  127. let res = await getTableDeatilsByIdApi(this.configUrl.details,{})
  128. if(res.code == 200) {
  129. let obj = {
  130. ...res.data
  131. }
  132. this.$set(this,'form',JSON.parse(JSON.stringify(obj)))
  133. this.formStatus = 1
  134. this.$nextTick(()=>{
  135. if(this.form.longitude&&this.form.latitude){
  136. console.log("dsfasfdasdfasdfadsfads")
  137. this.$refs.qqMapBox.setMakerLayer({
  138. height: 0,
  139. lat: this.form.latitude,
  140. lng: this.form.longitude,
  141. },true)
  142. }
  143. })
  144. }else {
  145. this.$message.error('获取详情失败!!!');
  146. this.formStatus = 2
  147. this.loading = false
  148. this.open = false;
  149. }
  150. this.$nextTick(()=>{
  151. this.reset()
  152. })
  153. this.loading = false
  154. } catch (error) {
  155. console.error('获取详情失败!!!!',error)
  156. this.formStatus = 2
  157. this.loading = false
  158. this.open = false;
  159. }
  160. },
  161. /**
  162. * 保存
  163. * @date 2023-11-22
  164. * @returns {any}
  165. */
  166. submitForm() {
  167. this.$refs["form"].validate(valid => {
  168. if (valid) {
  169. this.loadingText = "提交数据中..."
  170. this.loading = true
  171. updateTableApi(
  172. this.configUrl.edit,{
  173. ...this.form
  174. }).then(response => {
  175. this.$modal.msgSuccess("修改成功");
  176. this.loading = false
  177. this.initData()
  178. }).catch(()=>{
  179. this.$message.error("修改失败!!!");
  180. this.loading = false
  181. })
  182. }
  183. });
  184. },
  185. /**
  186. * 重置
  187. * @date 2023-11-22
  188. * @returns {any}
  189. */
  190. reset() {
  191. if(this.$refs["form"]) {
  192. this.$refs["form"].clearValidate();
  193. }
  194. },
  195. setDot(params){
  196. this.$set(this.form,'longitude',params.lng)
  197. this.$set(this.form,'latitude',params.lat)
  198. }
  199. },
  200. }
  201. </script>
  202. <style lang="scss" scoped>
  203. </style>