addBanner.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <template>
  2. <div class="addBanner app-container">
  3. <el-form
  4. :model="setQuery"
  5. ref="setQuery"
  6. :rules="rules"
  7. label-width="130px"
  8. >
  9. <el-form-item label="名称:" prop="bannerName">
  10. <el-input
  11. v-model="setQuery.bannerName"
  12. class="item-width-300"
  13. ></el-input>
  14. </el-form-item>
  15. <el-form-item label="所属平台" prop="platformType">
  16. <el-select
  17. v-model="setQuery.platformType"
  18. size="small"
  19. clearable
  20. class="item-width-300"
  21. placeholder="请选择主商户"
  22. >
  23. <el-option
  24. v-for="item in masterShopOptions"
  25. :key="item.value"
  26. :label="item.label"
  27. :value="item.value"
  28. >
  29. </el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="banner图:" prop="bannerImg">
  33. <Upload
  34. type="bannerImg"
  35. id="bannerImg"
  36. width="300px"
  37. height="200px"
  38. uploadType="SHOP_INFO"
  39. :imgUrl="setQuery.bannerImg"
  40. @uploadEnd="uploadEnd"
  41. ></Upload>
  42. </el-form-item>
  43. <el-form-item label="栏目:" prop="menuId">
  44. <el-select
  45. v-model="setQuery.menuId"
  46. clearable
  47. class="item-width-200"
  48. placeholder="请选择栏目"
  49. >
  50. <el-option
  51. v-for="item in options"
  52. :key="item.value"
  53. :label="item.label"
  54. :value="item.value"
  55. >
  56. </el-option>
  57. </el-select>
  58. </el-form-item>
  59. <el-form-item label="跳转链接:" prop="jumpUrl">
  60. <el-radio-group v-model="setQuery.jumpSet">
  61. <el-radio :label="1">不跳转</el-radio>
  62. <el-radio :label="2">跳转</el-radio>
  63. </el-radio-group>
  64. <div v-if="setQuery.jumpSet == 2">
  65. <el-input
  66. v-model="setQuery.jumpUrl"
  67. class="item-width-300"
  68. placeholder="请输入跳转链接"
  69. ></el-input>
  70. </div>
  71. </el-form-item>
  72. <el-form-item label="权重排序:" prop="sort">
  73. <el-input
  74. v-model.number="setQuery.sort"
  75. class="item-width-300"
  76. ></el-input>
  77. </el-form-item>
  78. </el-form>
  79. <div class="btn-group">
  80. <el-button>取 消</el-button>
  81. <el-button type="primary" :loading="loading" @click="save">确 定</el-button>
  82. </div>
  83. </div>
  84. </template>
  85. <script>
  86. import Upload from '@/components/Upload'
  87. import {addOrUpdateBanner,getMenuName} from '@/api/appConfig'
  88. export default {
  89. components: {
  90. Upload,
  91. },
  92. data() {
  93. return {
  94. loading:false,
  95. setQuery: {
  96. platformType:'',
  97. "bannerImg": "",
  98. "bannerName": "",
  99. "id": 0,
  100. "jumpSet": 1,
  101. "jumpUrl": "",
  102. "menuId": '',
  103. "colour": '',
  104. "type": '1',
  105. "sort": 0
  106. },
  107. options:[]
  108. };
  109. },
  110. computed: {
  111. rules() {
  112. if(this.setQuery.jumpSet == 1){
  113. return {
  114. platformType: [{ required: true, message: "请选择所属平台", trigger: "change" }],
  115. bannerImg: [{ required: true, message: "请上传banner图", trigger: "change" }],
  116. bannerName: [{ required: true, message: "请输入banner名称", trigger: "blur" }],
  117. colour: [{ required: true, message: "请输入banner主题色", trigger: "blur" }],
  118. menuId: [{ required: true, message: "请选择栏目", trigger: "change" }],
  119. sort: [{ required: true, message: "请输入排序", trigger: "blur" }],
  120. }
  121. }else{
  122. return {
  123. platformType: [{ required: true, message: "请选择所属平台", trigger: "change" }],
  124. bannerImg: [{ required: true, message: "请上传banner图", trigger: "change" }],
  125. bannerName: [{ required: true, message: "请输入banner名称", trigger: "blur" }],
  126. colour: [{ required: true, message: "请输入banner主题色", trigger: "blur" }],
  127. jumpUrl: [{ required: true, message: "请输入跳转链接", trigger: "blur" }],
  128. menuId: [{ required: true, message: "请选择栏目", trigger: "change" }],
  129. sort: [{ required: true, message: "请输入排序", trigger: "blur" }],
  130. }
  131. }
  132. }
  133. },
  134. methods: {
  135. uploadEnd(val){
  136. this.setQuery.bannerImg = val.url
  137. },
  138. getMenuName(){
  139. getMenuName({}).then(res=>{
  140. if(res.state == 'Success'){
  141. for (const key in res.content) {
  142. if (res.content.hasOwnProperty.call(res.content, key)) {
  143. this.options.push({
  144. label:res.content[key],
  145. value:Number(key)
  146. })
  147. }
  148. }
  149. }
  150. })
  151. },
  152. save() {
  153. this.$refs.setQuery.validate((v) => {
  154. if (v) {
  155. this.loading = true
  156. addOrUpdateBanner(this.setQuery).then(res=>{
  157. this.loading = false
  158. if(res.state == 'Success'){
  159. this.$notify({
  160. title: '成功',
  161. message: '操作成功',
  162. type: 'success'
  163. });
  164. this.$router.push('/operationManage/bannerManage/index')
  165. }
  166. })
  167. }
  168. });
  169. },
  170. },
  171. created () {
  172. this.getMenuName()
  173. if(this.$route.query.title == '编辑banner'){
  174. this.setQuery = JSON.parse(sessionStorage.getItem('bannerItem'))
  175. }
  176. },
  177. };
  178. </script>
  179. <style lang="scss" scoped>
  180. .addBanner {
  181. padding-bottom: 40px;
  182. .btn-group{
  183. display: flex;
  184. align-items: center;
  185. justify-content: center;
  186. }
  187. }
  188. </style>