Browse Source

deposit chips

Unknown 7 years ago
parent
commit
6ffa6000b2
2 changed files with 86 additions and 2 deletions
  1. 10 0
      src/api/gambleMember.js
  2. 76 2
      src/views/gambleMember/index.vue

+ 10 - 0
src/api/gambleMember.js

@@ -10,3 +10,13 @@ export function fetchList(query) {
10 10
     }
11 11
   })
12 12
 }
13
+
14
+export function updateChips(data) {
15
+  return request({
16
+    url: `/gambleMembers/${data.id}/deposit`,
17
+    method: 'put',
18
+    data: {
19
+      chips: data.depositChips
20
+    }
21
+  })
22
+}

+ 76 - 2
src/views/gambleMember/index.vue

@@ -18,7 +18,7 @@
18 18
       </el-table-column>
19 19
       <el-table-column align="center" label="操作">
20 20
         <template slot-scope="scope">
21
-          <!-- <span>{{scope.row.display_time}}</span> -->
21
+            <el-button type="primary" size="mini" @click="handleDeposit(scope.row)">儲值</el-button>
22 22
         </template>
23 23
       </el-table-column>
24 24
     </el-table>
@@ -28,11 +28,34 @@
28 28
         :page-sizes="[10,20,30, 50]" :page-size="listQuery.limit" layout="total, sizes, prev, pager, next, jumper" :total="total">
29 29
       </el-pagination>
30 30
     </div>
31
+
32
+    <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
33
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="100px" style='width: 400px; margin-left:50px;'>
34
+        <el-form-item label="ID" prop="id">
35
+          <el-input v-model="temp.id" :disabled="true"></el-input>
36
+        </el-form-item>
37
+        <el-form-item label="名稱" prop="name">
38
+          <el-input v-model="temp.name" :disabled="true"></el-input>
39
+        </el-form-item>
40
+        <el-form-item label="點數" prop="chips">
41
+          <el-input v-model="temp.chips" :disabled="true"></el-input>
42
+        </el-form-item>
43
+        <el-form-item label="加值點數" prop="depositChips">
44
+          <el-input placeholder="請輸入加值金額" v-model="temp.depositChips">
45
+          </el-input>
46
+        </el-form-item>
47
+      </el-form>
48
+      <div slot="footer" class="dialog-footer">
49
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
50
+        <el-button v-if="dialogStatus=='create'" type="primary" @click="createData">確 定</el-button>
51
+        <el-button v-if="dialogStatus=='deposit'" type="primary" @click="depositChips">確 定</el-button>
52
+      </div>
53
+    </el-dialog>
31 54
   </div>
32 55
 </template>
33 56
 
34 57
 <script>
35
-import { fetchList } from '@/api/gambleMember'
58
+import { fetchList, updateChips } from '@/api/gambleMember'
36 59
 
37 60
 export default {
38 61
   data() {
@@ -47,6 +70,24 @@ export default {
47 70
         title: undefined,
48 71
         type: undefined,
49 72
         sort: '+id'
73
+      },
74
+      temp: {
75
+        id: undefined,
76
+        importance: 1,
77
+        remark: '',
78
+        timestamp: new Date(),
79
+        title: '',
80
+        type: '',
81
+        status: 'published'
82
+      },
83
+      dialogFormVisible: false,
84
+      dialogStatus: '',
85
+      textMap: {
86
+        deposit: '儲值',
87
+        create: '新增'
88
+      },
89
+      rules: {
90
+        depositChips: [{pattern: /^\+?[1-9][0-9]*$/, required: true, message: '只能儲值整數', trigger: 'change' }],
50 91
       }
51 92
     }
52 93
   },
@@ -62,6 +103,39 @@ export default {
62 103
         this.listLoading = false
63 104
       })
64 105
     },
106
+    handleDeposit(row) {
107
+      this.temp = Object.assign({}, row) // copy obj
108
+      this.temp.timestamp = new Date(this.temp.timestamp)
109
+      this.dialogStatus = 'deposit'
110
+      this.dialogFormVisible = true
111
+      this.$nextTick(() => {
112
+        this.$refs['dataForm'].clearValidate()
113
+      })
114
+    },
115
+    depositChips() {
116
+      this.$refs['dataForm'].validate((valid) => {
117
+        if (valid) {
118
+          const tempData = Object.assign({}, this.temp)
119
+          updateChips(tempData).then(() => {
120
+            for (const v of this.list) {
121
+              if (v.id === this.temp.id) {
122
+                const index = this.list.indexOf(v)
123
+                this.list.splice(index, 1, this.temp)
124
+                break
125
+              }
126
+            }
127
+            this.dialogFormVisible = false
128
+            this.$notify({
129
+              title: '成功',
130
+              message: '儲值成功',
131
+              type: 'success',
132
+              duration: 2000
133
+            })
134
+            this.getList()
135
+          })
136
+        }
137
+      })
138
+    },
65 139
     handleSizeChange(val) {
66 140
       this.listQuery.limit = val
67 141
       this.getList()