Browse Source

Merge branch 'master' of https://bitbucket.org/EthanYeh/gambleadmin

EthnaYeh 7 years ago
parent
commit
2ff8069fd6

+ 8 - 0
config/index.js

34
     // In our experience, they generally work as expected,
34
     // In our experience, they generally work as expected,
35
     // just be aware of this issue when enabling this option.
35
     // just be aware of this issue when enabling this option.
36
     cssSourceMap: false
36
     cssSourceMap: false
37
+  },
38
+  const: {
39
+    GambleMemberChipsLog: {
40
+      type: {
41
+        deposit: 0,
42
+        reward: 1,
43
+      },
44
+    },
37
   }
45
   }
38
 }
46
 }

+ 15 - 0
src/api/room.js

1
+import request from '@/utils/request'
2
+
3
+export function fetchWechatRooms(query) {
4
+  return request({
5
+    url: `/wechatRooms`,
6
+    method: 'get',
7
+    params: {
8
+      limit: query.limit,
9
+      offset: (query.page - 1) * query.limit,
10
+      startAt: query.startAt,
11
+      endAt: query.endAt,
12
+      name: query.name
13
+    }
14
+  })
15
+}

+ 4 - 4
src/router/index.js

53
       {
53
       {
54
         path: 'index',
54
         path: 'index',
55
         component: _import('room/index'),
55
         component: _import('room/index'),
56
-        name: 'Room',
56
+        name: 'room',
57
         // redirect: '/round/index/gambleMember/index',
57
         // redirect: '/round/index/gambleMember/index',
58
         meta: {
58
         meta: {
59
           title: '房間管理',
59
           title: '房間管理',
62
         },
62
         },
63
         children: [
63
         children: [
64
           {
64
           {
65
-            path: 'index',
65
+            path: '/room/index/gambleMember/index',
66
             name: 'GambleMember',
66
             name: 'GambleMember',
67
             component: _import('room/gambleMember/index'),
67
             component: _import('room/gambleMember/index'),
68
             hidden: true,
68
             hidden: true,
72
             },
72
             },
73
             children: [
73
             children: [
74
               {
74
               {
75
-                path: '/round/index/gambleMember/index/gameHistory',
75
+                path: '/room/index/gambleMember/index/gameHistory',
76
                 name: 'gameHistory',
76
                 name: 'gameHistory',
77
                 component: _import('room/gameHistory/index'),
77
                 component: _import('room/gameHistory/index'),
78
                 hidden: true,
78
                 hidden: true,
82
                 }
82
                 }
83
               },
83
               },
84
               {
84
               {
85
-                path: '/round/index/gambleMember/index/chipsHistory',
85
+                path: '/room/index/gambleMember/index/chipsHistory',
86
                 name: 'chipsHistory',
86
                 name: 'chipsHistory',
87
                 component: _import('room/chipsHistory/index'),
87
                 component: _import('room/chipsHistory/index'),
88
                 hidden: true,
88
                 hidden: true,

+ 29 - 2
src/store/modules/breadcrumb.js

1
+// TODO refactor better state mangement
1
 const breadcrumb = {
2
 const breadcrumb = {
2
   state: {
3
   state: {
3
-    visible: true
4
+    visible: {
5
+      firstLayer: true,
6
+      secondLayer: false,
7
+      thridLayer: false
8
+    }
4
   },
9
   },
5
   mutations: {
10
   mutations: {
6
     SET_VISIBLE: (state, visible) => {
11
     SET_VISIBLE: (state, visible) => {
7
-      state.visible = visible
12
+      switch (visible) {
13
+        case 1:
14
+          state.visible = {
15
+            firstLayer: true,
16
+            secondLayer: false,
17
+            thridLayer: false
18
+          }
19
+          break
20
+        case 2:
21
+          state.visible = {
22
+            firstLayer: false,
23
+            secondLayer: true,
24
+            thridLayer: false
25
+          }
26
+          break
27
+        case 3:
28
+          state.visible = {
29
+            firstLayer: false,
30
+            secondLayer: false,
31
+            thridLayer: true
32
+          }
33
+          break
34
+      }
8
     }
35
     }
9
   },
36
   },
10
   actions: {
37
   actions: {

+ 2 - 2
src/views/gambleGameBucket/detail/index.vue

173
         this.roundOptions.push({ label: `第 ${i} 關`, key: i })
173
         this.roundOptions.push({ label: `第 ${i} 關`, key: i })
174
       }
174
       }
175
     })
175
     })
176
-    this.SetVisible(false)
176
+    this.SetVisible(2)
177
     this.getList()
177
     this.getList()
178
     fetchList({ page: 1, limit: 9999999999, chipsSort: 'DESC' }).then(response => {
178
     fetchList({ page: 1, limit: 9999999999, chipsSort: 'DESC' }).then(response => {
179
       const { rows } = response.data
179
       const { rows } = response.data
350
     }
350
     }
351
   },
351
   },
352
   destroyed() {
352
   destroyed() {
353
-    this.SetVisible(true)
353
+    this.SetVisible(1)
354
   }
354
   }
355
 }
355
 }
356
 </script>
356
 </script>

+ 3 - 3
src/views/gambleGameBucket/index.vue

1
 <template>
1
 <template>
2
 <div class="app-container calendar-list-container">
2
 <div class="app-container calendar-list-container">
3
-  <div class="app-container" v-show="visible">
3
+  <div class="app-container" v-show="visible.firstLayer">
4
     <div class="app-container">
4
     <div class="app-container">
5
       <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="莊家" v-model="listQuery.bookie">
5
       <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="莊家" v-model="listQuery.bookie">
6
       </el-input>
6
       </el-input>
124
   },
124
   },
125
   created() {
125
   created() {
126
     this.getList()
126
     this.getList()
127
-    this.SetVisible(true)
127
+    this.SetVisible(1)
128
   },
128
   },
129
   computed: {
129
   computed: {
130
     ...mapGetters([
130
     ...mapGetters([
148
       fetchGameBid(row).then(response => {
148
       fetchGameBid(row).then(response => {
149
         this.temp.bidChips = response.data
149
         this.temp.bidChips = response.data
150
       })
150
       })
151
-      this.SetVisible(false)
151
+      this.SetVisible(2)
152
       this.bucket = this.temp
152
       this.bucket = this.temp
153
       // fetchMemberRecords(row).then(response => {
153
       // fetchMemberRecords(row).then(response => {
154
       //   console.log(response.data)
154
       //   console.log(response.data)

+ 25 - 6
src/views/room/chipsHistory/index.vue

1
 <template>
1
 <template>
2
-  <div class="app-container">
3
-    <div class="app-container">
2
+  <div   class="app-container">
3
+    <div v-show="visible.thirdLayer" class="app-container">
4
         <div class="block">
4
         <div class="block">
5
             <!-- <span class="demonstration">時間篩選</span> -->
5
             <!-- <span class="demonstration">時間篩選</span> -->
6
             <el-date-picker
6
             <el-date-picker
22
             {{scope.row.admin}}
22
             {{scope.row.admin}}
23
           </template>
23
           </template>
24
         </el-table-column>
24
         </el-table-column>
25
-        <el-table-column label="上下分" align="center">
25
+        <el-table-column label="操作" align="center">
26
+          <template slot-scope="scope">
27
+            {{typeName(scope.row.type)}}
28
+          </template>
29
+        </el-table-column>
30
+        <el-table-column label="點數" align="center">
26
           <template slot-scope="scope">
31
           <template slot-scope="scope">
27
             <span :style="moneyColor(scope.row.chips)">{{scope.row.chips}}</span>
32
             <span :style="moneyColor(scope.row.chips)">{{scope.row.chips}}</span>
28
           </template>
33
           </template>
51
 
56
 
52
 <script>
57
 <script>
53
 
58
 
54
-import { mapActions } from 'vuex'
59
+import { mapActions, mapGetters } from 'vuex'
55
 import { fetchChipsHistory } from '@/api/gambleMember'
60
 import { fetchChipsHistory } from '@/api/gambleMember'
56
 import waves from '@/directive/waves' // 水波纹指令
61
 import waves from '@/directive/waves' // 水波纹指令
57
 import moment from 'moment-timezone'
62
 import moment from 'moment-timezone'
63
+import config from '../../../../config' 
58
 
64
 
59
 export default {
65
 export default {
60
   directives: {
66
   directives: {
121
     }
127
     }
122
   },
128
   },
123
   created() {
129
   created() {
124
-    this.SetVisible(false)
130
+    this.SetVisible(3)
125
     this.getList()
131
     this.getList()
126
   },
132
   },
127
   props: ['member'],
133
   props: ['member'],
134
+  computed: {
135
+    ...mapGetters([
136
+      'visible'
137
+    ])
138
+  },
128
   methods: {
139
   methods: {
129
     ...mapActions([
140
     ...mapActions([
130
       'SetVisible'
141
       'SetVisible'
161
     },
172
     },
162
     moneyColor(money) {
173
     moneyColor(money) {
163
       return money >= 0 ? { color: '#67C23A' } : { color: '#FA5555' }
174
       return money >= 0 ? { color: '#67C23A' } : { color: '#FA5555' }
175
+    },
176
+    typeName(type) {
177
+      if(type === config.const.GambleMemberChipsLog.type.deposit) {
178
+        return `上 / 下 分`
179
+      }
180
+      if(type === config.const.GambleMemberChipsLog.type.reward) {
181
+        return `獎勵 / 懲罰`
182
+      }
164
     }
183
     }
165
   },
184
   },
166
   destroyed() {
185
   destroyed() {
167
-    this.SetVisible(true)
186
+    this.SetVisible(2)
168
   }
187
   }
169
 }
188
 }
170
 </script>
189
 </script>

+ 11 - 7
src/views/room/gambleMember/index.vue

1
 <template>
1
 <template>
2
 <div class="app-container calendar-list-container">
2
 <div class="app-container calendar-list-container">
3
-  <div  v-show="visible">
3
+  <div  v-show="visible.secondLayer">
4
     <div class="app-container">
4
     <div class="app-container">
5
       <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="名稱" v-model="listQuery.name">
5
       <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="名稱" v-model="listQuery.name">
6
       </el-input>
6
       </el-input>
35
       <el-table-column align="center" label="操作" width="350">
35
       <el-table-column align="center" label="操作" width="350">
36
         <template slot-scope="scope">
36
         <template slot-scope="scope">
37
             <el-button type="primary" size="mini" icon="el-icon-edit" @click="handleDeposit(scope.row)">上下分</el-button>
37
             <el-button type="primary" size="mini" icon="el-icon-edit" @click="handleDeposit(scope.row)">上下分</el-button>
38
-            <router-link to="/gambleMember/index/chipsHistory">
38
+            <router-link to="/room/index/gambleMember/index/chipsHistory">
39
               <el-button type="primary" size="mini" icon="el-icon-tickets" @click="handleLog(scope.row)">上下分紀錄</el-button>            
39
               <el-button type="primary" size="mini" icon="el-icon-tickets" @click="handleLog(scope.row)">上下分紀錄</el-button>            
40
             </router-link>
40
             </router-link>
41
-            <router-link to="/gambleMember/index/gameHistory">
41
+            <router-link to="/room/index/gambleMember/index/gameHistory">
42
               <el-button type="primary" size="mini" icon="el-icon-tickets" @click="handlePage(scope.row)">歷史查詢</el-button>
42
               <el-button type="primary" size="mini" icon="el-icon-tickets" @click="handlePage(scope.row)">歷史查詢</el-button>
43
             </router-link>       
43
             </router-link>       
44
         </template>
44
         </template>
51
       </el-pagination>
51
       </el-pagination>
52
     </div>
52
     </div>
53
 
53
 
54
-    <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
54
+    <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" center>
55
       <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="100px" style='width: 400px; margin-left:50px;'>
55
       <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="100px" style='width: 400px; margin-left:50px;'>
56
         <el-form-item v-if="dialogStatus=='deposit'" label="ID" prop="id">
56
         <el-form-item v-if="dialogStatus=='deposit'" label="ID" prop="id">
57
           <el-input v-model="temp.id" :disabled="true"></el-input>
57
           <el-input v-model="temp.id" :disabled="true"></el-input>
83
 <script>
83
 <script>
84
 
84
 
85
 import { mapGetters, mapActions } from 'vuex'
85
 import { mapGetters, mapActions } from 'vuex'
86
+// TODO 需更改抓取此房間人員
86
 import { fetchList, updateChips, createGambleMember } from '@/api/gambleMember'
87
 import { fetchList, updateChips, createGambleMember } from '@/api/gambleMember'
87
 import waves from '@/directive/waves' // 水波纹指令
88
 import waves from '@/directive/waves' // 水波纹指令
88
 
89
 
125
     }
126
     }
126
   },
127
   },
127
   created() {
128
   created() {
128
-    this.SetVisible(true)
129
+    this.SetVisible(2)
129
     this.getList()
130
     this.getList()
130
   },
131
   },
132
+  destroyed() {
133
+    this.SetVisible(1)
134
+  },
131
   computed: {
135
   computed: {
132
     ...mapGetters([
136
     ...mapGetters([
133
       'visible'
137
       'visible'
211
     },
215
     },
212
     handlePage(row) {
216
     handlePage(row) {
213
       const temp = Object.assign({}, row) // copy obj
217
       const temp = Object.assign({}, row) // copy obj
214
-      this.SetVisible(false)
218
+      this.SetVisible(3)
215
       this.member = temp
219
       this.member = temp
216
     },
220
     },
217
     handleLog(row) {
221
     handleLog(row) {
218
       const temp = Object.assign({}, row) // copy obj
222
       const temp = Object.assign({}, row) // copy obj
219
-      this.SetVisible(false)
223
+      this.SetVisible(3)
220
       this.member = temp
224
       this.member = temp
221
     },
225
     },
222
     handleFilter() {
226
     handleFilter() {

+ 10 - 5
src/views/room/gameHistory/index.vue

1
 <template>
1
 <template>
2
-  <div class="app-container">
3
-    <div class="app-container">
2
+  <div  class="app-container">
3
+    <div v-show="visible.thirdLayer" class="app-container">
4
         <div class="block">
4
         <div class="block">
5
             <!-- <span class="demonstration">時間篩選</span> -->
5
             <!-- <span class="demonstration">時間篩選</span> -->
6
             <el-date-picker
6
             <el-date-picker
91
 
91
 
92
 <script>
92
 <script>
93
 
93
 
94
-import { mapActions } from 'vuex'
94
+import { mapActions, mapGetters } from 'vuex'
95
 import { fetchGameHistory, fetchPersonGameDetail } from '@/api/gambleMember'
95
 import { fetchGameHistory, fetchPersonGameDetail } from '@/api/gambleMember'
96
 import waves from '@/directive/waves' // 水波纹指令
96
 import waves from '@/directive/waves' // 水波纹指令
97
 import moment from 'moment-timezone'
97
 import moment from 'moment-timezone'
161
     }
161
     }
162
   },
162
   },
163
   created() {
163
   created() {
164
-    this.SetVisible(false)
164
+    this.SetVisible(3)
165
     this.getList()
165
     this.getList()
166
   },
166
   },
167
+  computed: {
168
+    ...mapGetters([
169
+      'visible'
170
+    ])
171
+  },
167
   props: ['member'],
172
   props: ['member'],
168
   methods: {
173
   methods: {
169
     ...mapActions([
174
     ...mapActions([
234
     }
239
     }
235
   },
240
   },
236
   destroyed() {
241
   destroyed() {
237
-    this.SetVisible(true)
242
+    this.SetVisible(2)
238
   }
243
   }
239
 }
244
 }
240
 </script>
245
 </script>

+ 20 - 134
src/views/room/index.vue

1
 <!-- TODO select -->
1
 <!-- TODO select -->
2
 <template>
2
 <template>
3
 <div class="app-container calendar-list-container">
3
 <div class="app-container calendar-list-container">
4
-  <div  v-show="visible">
4
+  <div  v-show="visible.firstLayer">
5
     <div class="app-container">
5
     <div class="app-container">
6
-      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="名" v-model="listQuery.name">
6
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="房間名" v-model="listQuery.name">
7
       </el-input>
7
       </el-input>
8
-      <el-select clearable @change='handleFilter' style="width: 120px" class="filter-item" v-model="listQuery.chipsSort" placeholder="點數">
9
-        <el-option v-for="item in chipsSortOptions" :key="item.label" :label="item.label" :value="item.key">
10
-        </el-option>
11
-      </el-select>
12
-      <el-select clearable @change='handleFilter' style="width: 120px" class="filter-item" v-model="listQuery.updatedSort" placeholder="更新時間">
13
-        <el-option v-for="item in updatedSortOptions" :key="item.label" :label="item.label" :value="item.key">
14
-        </el-option>
15
-      </el-select>
16
       <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">搜尋</el-button>
8
       <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">搜尋</el-button>
17
       <el-button class="filter-item" @click="handleCreate" type="primary" icon="el-icon-edit">創建</el-button>
9
       <el-button class="filter-item" @click="handleCreate" type="primary" icon="el-icon-edit">創建</el-button>
18
     </div>
10
     </div>
23
           {{scope.row.id}}
15
           {{scope.row.id}}
24
         </template>
16
         </template>
25
       </el-table-column>
17
       </el-table-column>
26
-      <el-table-column label="名稱" align="center">
18
+      <el-table-column label="房間" align="center">
27
         <template slot-scope="scope">
19
         <template slot-scope="scope">
28
           {{scope.row.name}}
20
           {{scope.row.name}}
29
         </template>
21
         </template>
30
       </el-table-column>
22
       </el-table-column>
31
-      <el-table-column label="點數" align="center">
23
+      <el-table-column label="時間" align="center">
32
         <template slot-scope="scope">
24
         <template slot-scope="scope">
33
-          <span>{{scope.row.chips}}</span>
25
+          <span>{{moment(scope.row.createdAt)}}</span>
34
         </template>
26
         </template>
35
       </el-table-column>
27
       </el-table-column>
36
       <el-table-column align="center" label="操作" width="350">
28
       <el-table-column align="center" label="操作" width="350">
37
         <template slot-scope="scope">
29
         <template slot-scope="scope">
38
-            <el-button type="primary" size="mini" icon="el-icon-edit" @click="handleDeposit(scope.row)">上下分</el-button>
39
-            <router-link to="/gambleMember/index/chipsHistory">
40
-              <el-button type="primary" size="mini" icon="el-icon-tickets" @click="handleLog(scope.row)">上下分紀錄</el-button>            
41
-            </router-link>
42
-            <router-link to="/gambleMember/index/gameHistory">
43
-              <el-button type="primary" size="mini" icon="el-icon-tickets" @click="handlePage(scope.row)">歷史查詢</el-button>
30
+            <router-link to="/room/index/gambleMember/index">
31
+              <el-button type="primary" size="mini" icon="el-icon-tickets" @click="handlePage(scope.row)">會員管理</el-button>
44
             </router-link>       
32
             </router-link>       
45
         </template>
33
         </template>
46
       </el-table-column>
34
       </el-table-column>
52
       </el-pagination>
40
       </el-pagination>
53
     </div>
41
     </div>
54
 
42
 
55
-    <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
56
-      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="100px" style='width: 400px; margin-left:50px;'>
57
-        <el-form-item v-if="dialogStatus=='deposit'" label="ID" prop="id">
58
-          <el-input v-model="temp.id" :disabled="true"></el-input>
59
-        </el-form-item>
60
-        <el-form-item label="名稱" prop="name">
61
-          <el-input v-if="dialogStatus=='deposit'" v-model="temp.name" :disabled="true"></el-input>
62
-          <el-input v-if="dialogStatus=='create'" v-model="temp.name"></el-input>          
63
-        </el-form-item>
64
-        <el-form-item label="點數" prop="chips">
65
-          <el-input v-if="dialogStatus=='deposit'" v-model="temp.chips" :disabled="true"></el-input>
66
-          <el-input v-if="dialogStatus=='create'" v-model="temp.chips"></el-input>          
67
-        </el-form-item>
68
-        <el-form-item v-if="dialogStatus=='deposit'" label="上下分" prop="depositChips">
69
-          <el-input placeholder="請輸入上下分" v-model="temp.depositChips">
70
-          </el-input>
71
-        </el-form-item>
72
-      </el-form>
73
-      <div slot="footer" class="dialog-footer">
74
-        <el-button @click="dialogFormVisible = false">取 消</el-button>
75
-        <el-button v-if="dialogStatus=='create'" type="primary" @click="createData">確 定</el-button>
76
-        <el-button v-if="dialogStatus=='deposit'" type="primary" @click="depositChips">確 定</el-button>
77
-      </div>
78
-    </el-dialog>
79
   </div>
43
   </div>
80
     <router-view :member="member"></router-view>
44
     <router-view :member="member"></router-view>
81
   </div>
45
   </div>
84
 <script>
48
 <script>
85
 
49
 
86
 import { mapGetters, mapActions } from 'vuex'
50
 import { mapGetters, mapActions } from 'vuex'
87
-import { fetchList, updateChips, createGambleMember } from '@/api/gambleMember'
51
+import { fetchWechatRooms } from '@/api/room'
88
 import waves from '@/directive/waves' // 水波纹指令
52
 import waves from '@/directive/waves' // 水波纹指令
53
+import moment from 'moment-timezone'
89
 
54
 
90
 export default {
55
 export default {
91
   name: 'gambleMemberTable',
56
   name: 'gambleMemberTable',
100
       listQuery: {
65
       listQuery: {
101
         page: 1,
66
         page: 1,
102
         limit: 20,
67
         limit: 20,
103
-        chipsSort: '',
104
-        updatedSort: ''
105
       },
68
       },
106
       temp: {
69
       temp: {
107
         id: '',
70
         id: '',
108
         name: '',
71
         name: '',
109
         chips: '',
72
         chips: '',
110
-        depositChips: ''
111
-      },
112
-      dialogFormVisible: false,
113
-      dialogStatus: '',
114
-      textMap: {
115
-        deposit: '儲值',
116
-        create: '新增'
117
       },
73
       },
118
       member: {},
74
       member: {},
119
-      chipsSortOptions: [{ label: '多 -> 少', key: 'DESC' }, { label: '少 -> 多', key: 'ASC' }],
120
-      updatedSortOptions: [{ label: '新 -> 舊', key: 'DESC' }, { label: '舊 -> 新', key: 'ASC' }],
121
-      rules: {
122
-        depositChips: [{ pattern: /^-?\d+$/, required: true, message: '請輸入整數', trigger: 'change' }],
123
-        chips: [{ pattern: /^(0|[1-9][0-9]*)$/, required: true, message: '請輸入整數', trigger: 'change' }],
124
-        name: [{ type: 'string', required: true, message: '必填', trigger: 'change' }]
125
-      }
126
     }
75
     }
127
   },
76
   },
128
   created() {
77
   created() {
129
-    this.SetVisible(true)
78
+    this.SetVisible(1)
130
     this.getList()
79
     this.getList()
131
   },
80
   },
132
   computed: {
81
   computed: {
140
     ]),
89
     ]),
141
     getList() {
90
     getList() {
142
       this.listLoading = true
91
       this.listLoading = true
143
-      fetchList(this.listQuery).then(response => {
144
-        this.list = response.data.rows
145
-        this.total = response.data.count
92
+      fetchWechatRooms(this.listQuery).then(response => {
93
+        this.list = response.data
94
+        this.total = response.data.length
146
         this.listLoading = false
95
         this.listLoading = false
147
       })
96
       })
148
     },
97
     },
149
-    handleDeposit(row) {
150
-      this.temp = Object.assign({}, row) // copy obj
151
-      this.dialogStatus = 'deposit'
152
-      this.dialogFormVisible = true
153
-      this.$nextTick(() => {
154
-        this.$refs['dataForm'].clearValidate()
155
-      })
156
-    },
157
-    depositChips() {
158
-      this.$refs['dataForm'].validate((valid) => {
159
-        if (valid) {
160
-          const tempData = Object.assign({}, this.temp)
161
-          updateChips(tempData).then(() => {
162
-            for (const v of this.list) {
163
-              if (v.id === this.temp.id) {
164
-                const index = this.list.indexOf(v)
165
-                this.list.splice(index, 1, this.temp)
166
-                break
167
-              }
168
-            }
169
-            this.dialogFormVisible = false
170
-            this.$notify({
171
-              title: '成功',
172
-              message: '操作成功',
173
-              type: 'success',
174
-              duration: 2000
175
-            })
176
-            this.getList()
177
-          })
178
-        }
179
-      })
180
-    },
181
-    resetTemp() {
182
-      this.temp = {
183
-        id: undefined,
184
-        name: '',
185
-        chips: '',
186
-        depositChips: ''
187
-      }
188
-    },
189
-    handleCreate() {
190
-      this.resetTemp()
191
-      this.dialogStatus = 'create'
192
-      this.dialogFormVisible = true
193
-      this.$nextTick(() => {
194
-        this.$refs['dataForm'].clearValidate()
195
-      })
196
-    },
197
-    createData() {
198
-      this.$refs['dataForm'].validate((valid) => {
199
-        if (valid) {
200
-          createGambleMember(this.temp).then((response) => {
201
-            this.list.unshift(response.data)
202
-            this.dialogFormVisible = false
203
-            this.$notify({
204
-              title: '成功',
205
-              message: '創建成功',
206
-              type: 'success',
207
-              duration: 2000
208
-            })
209
-          })
210
-        }
211
-      })
212
-    },
213
     handlePage(row) {
98
     handlePage(row) {
214
       const temp = Object.assign({}, row) // copy obj
99
       const temp = Object.assign({}, row) // copy obj
215
-      this.SetVisible(false)
100
+      this.SetVisible(2)
216
       this.member = temp
101
       this.member = temp
217
     },
102
     },
218
-    handleLog(row) {
219
-      const temp = Object.assign({}, row) // copy obj
220
-      this.SetVisible(false)
221
-      this.member = temp
103
+    handleCreate() {
104
+      //TODO 了解wechat 的 room 關聯
222
     },
105
     },
223
     handleFilter() {
106
     handleFilter() {
224
       this.listQuery.page = 1
107
       this.listQuery.page = 1
231
     handleCurrentChange(val) {
114
     handleCurrentChange(val) {
232
       this.listQuery.page = val
115
       this.listQuery.page = val
233
       this.getList()
116
       this.getList()
234
-    }
117
+    },
118
+    moment(time) {
119
+      return moment(time).tz('Asia/Taipei').format('YYYY-MM-DD HH:mm:ss')
120
+    },
235
   }
121
   }
236
 }
122
 }
237
 </script>
123
 </script>