许成详 6 jaren geleden
bovenliggende
commit
361aac6ea2
3 gewijzigde bestanden met toevoegingen van 132 en 107 verwijderingen
  1. 47
    106
      src/pages/system/cardAndCouponManager/cardManager/edit.vue
  2. 68
    0
      src/store/card/card.js
  3. 17
    1
      src/util/api.js

+ 47
- 106
src/pages/system/cardAndCouponManager/cardManager/edit.vue Bestand weergeven

@@ -7,7 +7,7 @@
7 7
           <span>选择案场:</span>
8 8
           <div class="flex-item">
9 9
             <div style="width:50%">
10
-              <el-select v-model="postData.CaseId" placeholder="请选择">
10
+              <el-select v-model="cardInfo.CaseId" placeholder="请选择">
11 11
                 <el-option
12 12
                   v-for="item in cases"
13 13
                   :key="item.CaseId"
@@ -27,7 +27,7 @@
27 27
                 :action='$api.file.image.url'
28 28
                 :show-file-list="false"
29 29
                 :on-success="handleAvatarSuccess">
30
-                <img v-if="postData.Img" :src="postData.Img" class="avatar">
30
+                <img v-if="cardInfo.Images[0].CardImageUrl" :src="cardInfo.Images[0].CardImageUrl" class="avatar">
31 31
                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
32 32
               </el-upload>
33 33
             </div>
@@ -39,34 +39,19 @@
39 39
             <div style="width:200px;">
40 40
               <el-input
41 41
                 placeholder="请输入"
42
-                v-model="postData.Name"
42
+                v-model="cardInfo.CardName"
43 43
                 clearable>
44 44
               </el-input>
45 45
             </div>
46 46
           </div>
47 47
         </li>
48
-        <li class="flex-h">
49
-          <span>卡类型:</span>
50
-          <div class="flex-item">
51
-            <div style="width:50%">
52
-              <el-select v-model="postData.Type" placeholder="请选择">
53
-                <el-option
54
-                  v-for="item in TypeList"
55
-                  :key="item.id"
56
-                  :label="item.name"
57
-                  :value="item.id">
58
-                </el-option>
59
-              </el-select>
60
-            </div>
61
-          </div>
62
-        </li>
63 48
         <li class="flex-h">
64 49
           <span>卡价格:</span>
65 50
           <div class="flex-item">
66 51
             <div style="width:200px;">
67 52
               <el-input
68 53
                 placeholder="请输入"
69
-                v-model="postData.Price"
54
+                v-model="cardInfo.Price"
70 55
                 clearable>
71 56
               </el-input>
72 57
             </div>
@@ -78,7 +63,7 @@
78 63
             <div style="width:200px;">
79 64
               <el-input
80 65
                 placeholder="请输入"
81
-                v-model="postData.TotalNum"
66
+                v-model="cardInfo.TotalCount"
82 67
                 clearable>
83 68
               </el-input>
84 69
             </div>
@@ -88,32 +73,17 @@
88 73
           <span>发送类型:</span>
89 74
           <div class="flex-item">
90 75
             <div>
91
-              <el-radio v-model="postData.SendType" label="1">渠道</el-radio>
92
-              <el-radio v-model="postData.SendType" label="3">案场</el-radio>
93
-              <el-radio v-model="postData.SendType" label="2">系统</el-radio>
94
-            </div>
95
-          </div>
96
-        </li>
97
-        <li class="flex-h" v-if="type === 'bodybuilding'">
98
-          <span>选择渠道:</span>
99
-          <div class="flex-item">
100
-            <div style="width:50%">
101
-              <el-select v-model="postData.ChannelId" placeholder="请选择">
102
-                <el-option
103
-                  v-for="item in ChannelList"
104
-                  :key="item.id"
105
-                  :label="item.name"
106
-                  :value="item.id">
107
-                </el-option>
108
-              </el-select>
76
+              <el-radio v-model="cardInfo.SendType" label="channel">渠道</el-radio>
77
+              <el-radio v-model="cardInfo.SendType" label="case">案场</el-radio>
78
+              <el-radio v-model="cardInfo.SendType" label="system">系统</el-radio>
109 79
             </div>
110 80
           </div>
111 81
         </li>
112
-        <li class="flex-h" v-if="type === 'course'">
82
+        <li class="flex-h">
113 83
           <span>目标商品:</span>
114 84
           <div class="flex-item">
115 85
             <div>
116
-              <el-select v-model="postData.GoodsId" placeholder="请选择">
86
+              <el-select v-model="cardInfo.Targets[0].TargetId" placeholder="请选择">
117 87
                 <el-option
118 88
                   v-for="item in GoodsList"
119 89
                   :key="item.id"
@@ -124,83 +94,23 @@
124 94
             </div>
125 95
           </div>
126 96
         </li>
127
-        <li class="flex-h" v-if="postData.Assign === '2'">
128
-          <div class="flex-item">
129
-            <div style="border: 1px solid #eee;">
130
-              <el-table
131
-                :data="currentList"
132
-                stripe
133
-                style="width: 100%">
134
-                <el-table-column
135
-                  prop="Name"
136
-                  label="商品">
137
-                </el-table-column>
138
-                <el-table-column
139
-                  prop="Type"
140
-                  label="分类">
141
-                </el-table-column>
142
-                <el-table-column label="操作">
143
-                  <template slot-scope="scope">
144
-                    <el-button
145
-                      size="mini"
146
-                      type="warning"
147
-                      @click="deleteGoodsItem(scope.$index, scope.row)">删除</el-button>
148
-                  </template>
149
-                </el-table-column>
150
-              </el-table>
151
-              <div style="text-align:center;padding:10px 0;">
152
-                <el-button type="success" size="mini" @click="addGoods">添加商品</el-button>
153
-              </div>
154
-            </div>
155
-          </div>
156
-        </li>
157
-        <li class="flex-h" v-if="type === 'drink'">
97
+        <li class="flex-h">
158 98
           <span>卡有效时间:</span>
159 99
           <div class="flex-item">
160 100
             <div>
161 101
               <div class="addLine flex-h" style="align-item:center;margin-bottom:20px;">
162
-                <el-radio v-model="postData.TimeType" label="1">固定时间</el-radio>
163 102
                 <el-date-picker
164
-                  v-model="postData.StartDate"
103
+                  v-model="cardInfo.StartDate"
165 104
                   type="date"
166 105
                   placeholder="选择起始日期">
167 106
                 </el-date-picker>
168 107
                 <span style="line-height:40px;">至</span>
169 108
                 <el-date-picker
170
-                  v-model="postData.EndDate"
109
+                  v-model="cardInfo.EndDate"
171 110
                   type="date"
172 111
                   placeholder="选择截止日期">
173 112
                 </el-date-picker>
174 113
               </div>
175
-              <div class="addLine flex-h" style="align-item:center;">
176
-                <el-radio v-model="postData.TimeType" label="2">领取后</el-radio>
177
-                <span style="width:100px;">
178
-                  <el-input
179
-                    placeholder="请输入"
180
-                    v-model="postData.Days"
181
-                    clearable>
182
-                  </el-input>
183
-                </span>
184
-                <span style="line-height:40px;">天</span>
185
-              </div>
186
-            </div>
187
-          </div>
188
-        </li>
189
-        <li class="flex-h" v-if="type === 'course'">
190
-          <span>卡有效时间:</span>
191
-          <div class="flex-item">
192
-            <div>
193
-              <el-date-picker
194
-                v-model="postData.StartDate"
195
-                type="date"
196
-                placeholder="选择起始日期">
197
-              </el-date-picker>
198
-              <span style="line-height:40px;">至</span>
199
-              <el-date-picker
200
-                v-model="postData.EndDate"
201
-                type="date"
202
-                placeholder="选择截止日期">
203
-              </el-date-picker>
204 114
             </div>
205 115
           </div>
206 116
         </li>
@@ -218,7 +128,7 @@
218 128
                 type="textarea"
219 129
                 :rows="2"
220 130
                 placeholder="请输入"
221
-                v-model="postData.ShareDesc">
131
+                v-model="cardInfo.Share.CardShareInfo">
222 132
               </el-input>
223 133
             </div>
224 134
           </div>
@@ -231,7 +141,7 @@
231 141
                 type="textarea"
232 142
                 :rows="2"
233 143
                 placeholder="请输入"
234
-                v-model="postData.RuleDesc">
144
+                v-model="cardInfo.Share.CardUseRule">
235 145
               </el-input>
236 146
             </div>
237 147
           </div>
@@ -244,7 +154,7 @@
244 154
                 type="textarea"
245 155
                 :rows="2"
246 156
                 placeholder="请输入"
247
-                v-model="postData.UsedDesc">
157
+                v-model="cardInfo.Share.CardUseInstruction">
248 158
               </el-input>
249 159
             </div>
250 160
           </div>
@@ -275,6 +185,37 @@ export default {
275 185
         Name: 'ccc',
276 186
         Type: 'xxx'
277 187
       }], // 指定商品数据
188
+      cardInfo: {
189
+        CardId: '',
190
+        CardName: '',
191
+        SendType: '',
192
+        VideoUrl: '',
193
+        Price: '',
194
+        StartDate: '',
195
+        EndDate: '',
196
+        TotalCount: '',
197
+        SentCount: '',
198
+        UsedCount: '',
199
+        Status: '',
200
+        CaseId: '',
201
+        OrgId: '',
202
+        CreateDate: '',
203
+        CreateUser: '',
204
+        IsOver: '',
205
+        Share: {
206
+          CardShareInfo: '',
207
+          CardUseRule: '',
208
+          CardUseInstruction: '',
209
+        },
210
+        Images: [{
211
+          CardImageUrl: '',
212
+        }],
213
+        Targets: [{
214
+          TargetType: '',
215
+          TargetId: '',
216
+          TargetName: ''
217
+        }],
218
+      },
278 219
       postData: {
279 220
         page: 1,
280 221
         pagesize: 10,

+ 68
- 0
src/store/card/card.js Bestand weergeven

@@ -0,0 +1,68 @@
1
+import ajax from '../../util/ajax'
2
+import api from '../../util/api'
3
+
4
+export default {
5
+  namespaced: true,
6
+  state: {
7
+    cardList: [],
8
+  },
9
+  mutations: {
10
+    updateList (state, payload) {
11
+      state.cardList = payload || []
12
+    },
13
+  },
14
+  actions: {
15
+    GetCardList ({ commit }, payload) { // 获取卡列表
16
+      return new Promise((resolve, reject) => {
17
+        ajax(api.cardManager.cardList.url, {
18
+          method: api.cardManager.cardList.method,
19
+          queryData: {
20
+            ...payload,
21
+          }
22
+        }).then(res => {
23
+          commit('updateList', res)
24
+          resolve(res)
25
+        }).catch(reject)
26
+      })
27
+    },
28
+    addCard ({ commit }, payload) { // 新增卡
29
+      return new Promise((resolve, reject) => {
30
+        ajax(api.cardManager.addCard.url, {
31
+          method: api.cardManager.addCard.method,
32
+          data: {
33
+            info: JSON.stringify(payload)
34
+          }
35
+        }).then(res => {
36
+          resolve(res)
37
+        }).catch(reject)
38
+      })
39
+    },
40
+    getCardById ({ commit }, { id }) { // 获取卡详情
41
+      return new Promise((resolve, reject) => {
42
+        ajax(api.cardManager.getCardById.url, {
43
+          method: api.cardManager.getCardById.method,
44
+          urlData: {
45
+            id,
46
+          }
47
+        }).then(res => {
48
+          resolve(res)
49
+        }).catch(reject)
50
+      })
51
+    },
52
+    editCard ({ commit }, payload) { // 编辑更新卡
53
+      return new Promise((resolve, reject) => {
54
+        ajax(api.cardManager.editCard.url, {
55
+          method: api.cardManager.editCard.method,
56
+          data: {
57
+            info: JSON.stringify(payload)
58
+          },
59
+          urlData: {
60
+            id: payload.CardId
61
+          },
62
+        }).then(res => {
63
+          resolve(res)
64
+        }).catch(reject)
65
+      })
66
+    },
67
+  }
68
+}

+ 17
- 1
src/util/api.js Bestand weergeven

@@ -588,7 +588,23 @@ const $api = {
588 588
     vipbycode: {
589 589
       method: 'get',
590 590
       url: `${baseUrl}${common}/vipcard/:code`
591
-    }
591
+    },
592
+    cardList: {
593
+      method: 'get',
594
+      url: `${baseUrl}${common}/card`
595
+    },
596
+    addCard: {
597
+      method: 'post',
598
+      url: `${baseUrl}${common}/card`
599
+    },
600
+    editCard: {
601
+      method: 'put',
602
+      url: `${baseUrl}${common}/card/:id`
603
+    },
604
+    getCardById: {
605
+      method: 'get',
606
+      url: `${baseUrl}${common}/card/:id`
607
+    },
592 608
   },
593 609
   couponManager: {
594 610
     couponList: {