edit.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <div v-loading="loading">
  3. <div class="white-box">
  4. <el-form ref="form" :model="form" label-width="250px" class="form-page">
  5. <el-form-item :label="$t('ad.adTitle')">
  6. <el-input v-model="form.title" />
  7. </el-form-item>
  8. <el-form-item :label="$t('ad.adLocation')">
  9. <el-select v-model="form.lid" placeholder="Select Type"> <!-- 请选择广告类型 -->
  10. <el-option
  11. v-for="item in allLocation"
  12. :key="item.ID"
  13. :label="item.LOCATION_NAME"
  14. :value="item.ID"
  15. />
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item :label="$t('ad.type')"> <!-- 广告类型 -->
  19. <el-select v-model="form.type" placeholder="Select Type" style="width: 400px;"> <!-- 请选择广告类型 -->
  20. <el-option :key="1" label="External Link" value="1" /> <!-- 外链 -->
  21. <el-option :key="2" label="Article" value="2" /> <!-- 文章 -->
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item v-if="form.type==='1'" label="Url"> <!-- '链接地址' '文章ID' -->
  25. <el-input v-model="url" style="width: 400px;" />
  26. <span class="note" /> <!-- 注:外链请明确输入 http://或https://,文章则不需要输入 -->
  27. </el-form-item>
  28. <el-form-item :label="$t('ad.article')">
  29. <el-select v-model="article" placeholder="Select Article"> <!-- 请选择广告类型 -->
  30. <el-option
  31. v-for="item in allArticle"
  32. :key="item.ID"
  33. :label="item.TITLE"
  34. :value="item.ID"
  35. />
  36. </el-select>
  37. </el-form-item>
  38. <el-form-item :label="$t('ad.image')" prop="image">
  39. <Upload
  40. v-model="form.image"
  41. :request-route="'v1/ad/upload'"
  42. :default-image-url="defaultImageUrl"
  43. width="400px"
  44. height="160px"
  45. @on-success="handleSuccess"
  46. />
  47. </el-form-item>
  48. <el-form-item>
  49. <el-button type="primary" :loading="submitButtonStat" @click="onSubmit">{{ $t('common.save') }}</el-button>
  50. </el-form-item>
  51. </el-form-item></el-form>
  52. </div>
  53. </div>
  54. </template>
  55. <script>
  56. import { fetchDetail, fetchEdit, fetchAdd, fetchAddSelectList } from '@/api/ad'
  57. import tool from '@/utils/tool'
  58. import Upload from '@/components/Upload'
  59. import ElementUI from 'element-ui'
  60. export default {
  61. name: 'RoleAdd',
  62. components: { Upload },
  63. data() {
  64. return {
  65. allLocation: null,
  66. form: {
  67. content: '',
  68. image: '',
  69. lid: '',
  70. title: '',
  71. type: ''
  72. },
  73. url: '',
  74. article: '',
  75. allArticle: '',
  76. loading: false,
  77. submitButtonStat: false,
  78. defaultImageUrl: null
  79. }
  80. },
  81. watch: {
  82. 'form.type': {
  83. deep: true,
  84. handler: function handler(modern) {
  85. if (modern === '1') {
  86. this.article = ''
  87. } else {
  88. this.url = ''
  89. }
  90. }
  91. }
  92. },
  93. mounted() {
  94. console.log('roue.name--->'+this.$route.name)
  95. if (this.$route.name === 'ad-edit') {
  96. fetchDetail(this.$route.params.ID).then(response => {
  97. this.form.title = response.data.oneData.TITLE
  98. this.allLocation = response.data.allLocation
  99. this.form.lid = response.data.oneData.LID
  100. this.form.type = response.data.oneData.TYPE
  101. this.allArticle = response.data.allArticle
  102. this.form.image = response.data.oneData.IMAGE
  103. this.form.content = response.data.oneData.CONTENT
  104. this.defaultImageUrl = response.data.oneData.IMAGE
  105. if (response.data.oneData.TYPE === '1') {
  106. this.url = response.data.oneData.CONTENT
  107. } else {
  108. this.article = response.data.oneData.CONTENT
  109. }
  110. this.loading = false
  111. }).catch((error) => {
  112. ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
  113. })
  114. } else {
  115. fetchAddSelectList().then(response => {
  116. this.allLocation = response.data.allLocation
  117. this.allArticle = response.data.allArticle
  118. this.loading = false
  119. }).catch((error) => {
  120. ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
  121. this.loading = false
  122. })
  123. }
  124. },
  125. methods: {
  126. onSubmit() {
  127. this.form.content = this.form.type === '1' ? this.url : this.article
  128. this.submitButtonStat = true
  129. if (this.$route.name === 'ad-edit') {
  130. fetchEdit(this.$route.params.ID, this.form).then(response => {
  131. this.submitButtonStat = false
  132. this.$message({
  133. message: response.data,
  134. type: "$t('common.successfully')"
  135. })
  136. this.$router.go(-1)
  137. }).catch((error) => {
  138. ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
  139. })
  140. } else {
  141. //console.log(this.form)
  142. fetchAdd(this.form).then(response => {
  143. this.submitButtonStat = false
  144. this.$message({
  145. message: response.data,
  146. type: 'success'
  147. })
  148. this.$router.go(-1)
  149. }).catch((error) => {
  150. ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
  151. })
  152. }
  153. },
  154. handleSuccess(imageUrl) {
  155. this.imageAd = imageUrl
  156. this.form.image =imageUrl
  157. this.defaultImageUrl = tool.getArImage(imageUrl, '/files/')
  158. }
  159. }
  160. }
  161. </script>
  162. <style scoped>
  163. </style>