detail.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <template>
  2. <div class="app-container goods-add">
  3. <el-divider content-position="left">基础信息</el-divider>
  4. <el-form ref="addItem" :model="addData" label-width="120px">
  5. <el-row :gutter="40" style="width: 600px">
  6. <el-col :span="23">
  7. <el-form-item label="活动名称:" prop="title">
  8. <el-input v-model="addData.title" placeholder="输入活动名称" readonly />
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="23">
  12. <el-form-item label="活动封面:" >
  13. <el-image
  14. style="width: 110px;"
  15. :src="addData && addData.picUrl"
  16. :preview-src-list="[addData && addData.picUrl]"
  17. />
  18. </el-form-item>
  19. </el-col>
  20. <el-col>
  21. <el-form-item label="活动日期:" prop="dateValue">
  22. <el-date-picker value-format="timestamp" v-model="addData.dateValue" type="datetimerange" readonly
  23. range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"/>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :span="16">
  27. <el-form-item label="初始用户数:">
  28. <el-input v-model="addData.fakeNum" readonly />
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="16">
  32. <el-form-item label="是否可无条件参与:" label-width="140px">
  33. <div v-if="addData.codeType == 1">是</div>
  34. <div v-else>否</div>
  35. </el-form-item>
  36. </el-col>
  37. </el-row>
  38. <el-divider content-position="left">奖品设置</el-divider>
  39. <el-row>
  40. <el-col :span="22">
  41. <el-form-item label="">
  42. <!-- 奖级列表 -->
  43. <div class="prize" v-for="(item, index) in awardsList" :key="index">
  44. <div class="prize-top">
  45. <div>奖级:{{ item.name }}</div>
  46. <div>名额:{{item.quantity}}</div>
  47. <div>内部名额:{{item.insideNum}}</div>
  48. </div>
  49. <div class="prize-table">
  50. <el-table :data="item.prizeList" class="el-table">
  51. <el-table-column label="奖品图片" align="center">
  52. <template slot-scope="scope">
  53. <el-image
  54. style="width: 70px; height: 70px"
  55. :src="scope.row.picUrl"
  56. :preview-src-list="[scope.row.picUrl]"
  57. >
  58. </el-image>
  59. </template>
  60. </el-table-column>
  61. <el-table-column label="奖品名称" prop="title" align="center" >
  62. <template slot-scope="scope">
  63. <div v-if="scope.row.prizeType == 'coin'">盲豆 x{{scope.row.value}}</div>
  64. <div v-else>{{scope.row.title}}</div>
  65. </template>
  66. </el-table-column>
  67. <el-table-column label="奖品类型" align="center">
  68. <template slot-scope="scope">
  69. <div v-if="scope.row.prizeType == 'goods'">商品</div>
  70. <div v-if="scope.row.prizeType == 'coupon'">券</div>
  71. <div v-if="scope.row.prizeType == 'coupon_pkg'">券包</div>
  72. <div v-if="scope.row.prizeType == 'coin'">盲豆</div>
  73. </template>
  74. </el-table-column>
  75. </el-table>
  76. </div>
  77. </div>
  78. </el-form-item>
  79. </el-col>
  80. </el-row>
  81. <el-divider content-position="left">活动详情</el-divider>
  82. <el-row>
  83. <el-col :span="22">
  84. <el-form-item label="" prop="description">
  85. <div v-html="addData.description"></div>
  86. </el-form-item>
  87. </el-col>
  88. </el-row>
  89. </el-form>
  90. <el-row>
  91. <el-col :span="24" style="text-align: center">
  92. <el-button type="info" @click="$router.replace('/marketing/marketing')">取消</el-button>
  93. </el-col>
  94. </el-row>
  95. </div>
  96. </template>
  97. <script>
  98. import { publicFileGetUrl } from "@/api/common";
  99. import {getMarketingDetail, addMarketing} from '@/api/business/marketing'
  100. import Upload from '@/components/DragImageUpload'
  101. import WangEditor from '@/components/WangEditor'
  102. export default {
  103. name: "add",
  104. components: {
  105. Upload,
  106. WangEditor,
  107. },
  108. data() {
  109. return {
  110. id: this.$route.query.id,
  111. addData: {
  112. picUrl: '',//活动主图
  113. startTime: '',//开始时间
  114. endTime: '',//结束时间
  115. fakeNum: 0,//初始用户数
  116. description: '',//活动详情
  117. awardsList: [],//奖级列表
  118. codeType: '',
  119. },
  120. labelRadio: 1,//单选框
  121. // 奖级列表
  122. awardsList: [],
  123. dateValue: [],//开始与结束日期
  124. }
  125. },
  126. computed: {
  127. },
  128. created() {
  129. if (this.id) {
  130. getMarketingDetail(this.id).then(res => {
  131. const { startTime, endTime, description, fakeNum,picUrl, codeType, realNum, title, awardsList, id } = res.data
  132. this.addData = { title, dateValue:[startTime,endTime], picUrl: publicFileGetUrl + picUrl, fakeNum, codeType, realNum, description, awardsList, id }
  133. if(awardsList){
  134. awardsList.forEach((item) => {
  135. item.prizeList.forEach((ele) => {
  136. (ele.picUrl = publicFileGetUrl + ele.picUrl.split(',')[0]),
  137. (ele.prizeType = JSON.parse(ele.prizeType).value);
  138. });
  139. });
  140. this.awardsList = awardsList
  141. }
  142. })
  143. }
  144. }
  145. }
  146. </script>
  147. <style scoped lang="scss">
  148. .goods-add {
  149. .tip {
  150. font-size: 12px;
  151. color: #999;
  152. }
  153. .el-divider {
  154. .is-left {
  155. color: #409EFF;
  156. font-size: 20px;
  157. font-weight: bolder;
  158. left: 10px;
  159. }
  160. }
  161. }
  162. .prize {
  163. width: 1000px;
  164. margin-bottom: 50px;
  165. background: #f9f9f9;
  166. border: 1px solid #bbbbbb;
  167. font-size: 14px;
  168. &-top {
  169. padding: 10px 20px;
  170. margin-bottom: 10px;
  171. display: flex;
  172. align-content: center;
  173. justify-content: space-around;
  174. border-bottom: 1px solid #bbbbbb;
  175. div {
  176. line-height: 36px;
  177. }
  178. }
  179. &-btn {
  180. border-top: 1px solid #bbbbbb;
  181. padding: 10px;
  182. }
  183. }
  184. </style>