许成详 6 years ago
parent
commit
a7da22e1cb

+ 19
- 14
src/pages/system/library/books/detail.vue View File

14
           <el-input v-model="formData.BookBarcode" :style="{ width: '200px' }" :disabled="true"></el-input>
14
           <el-input v-model="formData.BookBarcode" :style="{ width: '200px' }" :disabled="true"></el-input>
15
         </el-form-item>
15
         </el-form-item>
16
         <el-form-item label="案场" prop="CaseId">
16
         <el-form-item label="案场" prop="CaseId">
17
-          <el-select v-model="formData.CaseId" placeholder="请选择案场">
17
+          <el-select v-model="formData.CaseId" placeholder="请选择案场" @change="filterTypes">
18
             <el-option
18
             <el-option
19
               v-for="item in cases"
19
               v-for="item in cases"
20
               :key="item.CaseId"
20
               :key="item.CaseId"
21
               :label="item.CaseName"
21
               :label="item.CaseName"
22
               :value="item.CaseId"
22
               :value="item.CaseId"
23
-              @change="filterTypes"
24
             ></el-option>
23
             ></el-option>
25
           </el-select>
24
           </el-select>
26
         </el-form-item>
25
         </el-form-item>
109
     if (id) {
108
     if (id) {
110
       this.active = 1
109
       this.active = 1
111
 
110
 
112
-      this.getInfo({
113
-        BookId: id
111
+      this.getInfo({ id }).then((x) => {
112
+        this.filterTypes(x.CaseId)
114
       }).catch(err => {
113
       }).catch(err => {
115
         this.$message({
114
         this.$message({
116
           showClose: true,
115
           showClose: true,
136
   watch: {
135
   watch: {
137
     detail: {
136
     detail: {
138
       handler (nv, ov) {
137
       handler (nv, ov) {
138
+        console.log(nv)
139
         if (nv.BookId === this.formData.BookId) {
139
         if (nv.BookId === this.formData.BookId) {
140
           return
140
           return
141
         }
141
         }
150
       },
150
       },
151
       immediate: true,
151
       immediate: true,
152
     },
152
     },
153
-    formData: {
154
-      handler (nv) {
155
-        this.mergeDetail(nv)
156
-      },
157
-      deep: true,
158
-    },
153
+    // formData: {
154
+    //   handler (nv) {
155
+    //     console.log('----------', nv)
156
+    //     this.bookImg = nv.BookImg
157
+    //   },
158
+    //   deep: true,
159
+    // },
159
   },
160
   },
160
   methods: {
161
   methods: {
161
     ...mapMutations({
162
     ...mapMutations({
189
     },
190
     },
190
 
191
 
191
     uploadSuccess(res) {
192
     uploadSuccess(res) {
192
-      this.formData.BookImg = res.result.url
193
+      this.$set(this.formData, 'BookImg', res.result.url)
194
+      // this.formData.BookImg = res.result.url
193
     },
195
     },
194
 
196
 
195
     filterTypes(val) {
197
     filterTypes(val) {
196
-      const CaseId = val
197
-      this.getTypeList({ page: 0, CaseId, pagesize: 10000 })
198
+      this.getTypeList({ page: 0, caseid: val, pagesize: 10000 })
198
     },
199
     },
199
 
200
 
200
     submit() {
201
     submit() {
201
       this.$refs.ruleForm.validate(valid => {
202
       this.$refs.ruleForm.validate(valid => {
202
         if (valid) {
203
         if (valid) {
203
-          this.updateDetail()
204
+          if (!this.formData.Price) {
205
+            this.formData.Price = 0
206
+          }
207
+
208
+          this.updateDetail(this.formData)
204
             .then(() => {
209
             .then(() => {
205
               this.$message({
210
               this.$message({
206
                 showClose: true,
211
                 showClose: true,

+ 62
- 14
src/pages/system/library/books/list.vue View File

3
     <div>
3
     <div>
4
       <el-form inline>
4
       <el-form inline>
5
         <el-form-item label="案场">
5
         <el-form-item label="案场">
6
-          <el-select v-model="caseId" size="medium" placeholder="请选择案场" @change="filterList">
6
+          <el-select v-model="caseId" size="medium" placeholder="请选择案场">
7
             <el-option
7
             <el-option
8
               v-for="item in cases"
8
               v-for="item in cases"
9
               :key="item.CaseId"
9
               :key="item.CaseId"
19
           <el-input v-model="bookName"></el-input>
19
           <el-input v-model="bookName"></el-input>
20
         </el-form-item>
20
         </el-form-item>
21
         <el-form-item :style="{ float: 'right' }">
21
         <el-form-item :style="{ float: 'right' }">
22
-          <el-button type="primary" size="medium">搜索</el-button>
22
+          <el-button type="primary" size="medium" @click="filterList">搜索</el-button>
23
         </el-form-item>
23
         </el-form-item>
24
       </el-form>
24
       </el-form>
25
     </div>
25
     </div>
26
     <div>
26
     <div>
27
       <el-button plain @click="editBook()" size="medium">图书录入</el-button>
27
       <el-button plain @click="editBook()" size="medium">图书录入</el-button>
28
-      <el-button plain @click="showBatchInput()" size="medium">批量导入</el-button>
29
-      <el-button type="text" size="medium">点击下载导入模板</el-button>
28
+      <el-button plain @click="showDialog = true" size="medium">批量导入</el-button>
30
       <div :style="{ margin: '10px 0' }">
29
       <div :style="{ margin: '10px 0' }">
31
         <el-table :data="list" border style="width: 100%">
30
         <el-table :data="list" border style="width: 100%">
32
-          <el-table-column label="图片" width="250">
31
+          <el-table-column label="图片" width="128">
33
             <template slot-scope="scope">
32
             <template slot-scope="scope">
34
-              <img width="150" :src="scope.row.BookImg" alt>
33
+              <img width="64" :src="scope.row.BookImg" alt>
35
             </template>
34
             </template>
36
           </el-table-column>
35
           </el-table-column>
37
           <el-table-column prop="BookBarcode" label="条码"></el-table-column>
36
           <el-table-column prop="BookBarcode" label="条码"></el-table-column>
85
         ></el-pagination>
84
         ></el-pagination>
86
       </div>
85
       </div>
87
     </div>
86
     </div>
87
+    <el-dialog
88
+      title="批量导入"
89
+      :visible.sync="showDialog"
90
+      width="50%">
91
+      <div :style="{ margin: 'auto', width: '80%' }">
92
+        <div><el-button @click="showBatchInput" :style="{ width: '100%' }">上传文件</el-button></div>
93
+        <div><el-button type="text" size="medium" :style="{ float: 'right' }">下载导入模板</el-button></div>
94
+      </div>
95
+      <span slot="footer" class="dialog-footer">
96
+        <el-button type="primary" @click="showDialog = false">确 定</el-button>
97
+        <el-button @click="showDialog = false">取 消</el-button>
98
+      </span>
99
+    </el-dialog>
88
   </div>
100
   </div>
89
 </template>
101
 </template>
90
 
102
 
100
       caseId: '',
112
       caseId: '',
101
       bookBarcode: '',
113
       bookBarcode: '',
102
       bookName: '',
114
       bookName: '',
103
-      inputRef: window.document.createElement('input')
115
+      inputRef: window.document.createElement('input'),
116
+      showDialog: false,
104
     }
117
     }
105
   },
118
   },
106
   computed: {
119
   computed: {
128
       getList: 'getBookList',
141
       getList: 'getBookList',
129
       getTypeList: 'getTypeList',
142
       getTypeList: 'getTypeList',
130
       deleteBook: 'deleteBook',
143
       deleteBook: 'deleteBook',
131
-      setBookRecommend: 'setBookRecommend'
144
+      setBookRecommend: 'updateBookDetail',
145
+      batchImport: 'batchImport',
132
     }),
146
     }),
133
 
147
 
134
     // 查询过滤
148
     // 查询过滤
135
     filterList({ page = 0 } = {}) {
149
     filterList({ page = 0 } = {}) {
136
       const caseId = this.caseId || this.defaultCase
150
       const caseId = this.caseId || this.defaultCase
137
-      this.getTypeList({ page: 0, pagesize: 1000, CaseId: caseId })
151
+      this.getTypeList({ page: 0, pagesize: 1000, caseid: caseId })
138
 
152
 
139
       this.getList({
153
       this.getList({
140
         page,
154
         page,
141
-        CaseId: caseId,
142
-        BookBarcode: this.bookBarcode,
143
-        BookName: this.bookName
155
+        caseid: caseId,
156
+        barcode: this.bookBarcode,
157
+        name: this.bookName
144
       }).catch(err => {
158
       }).catch(err => {
145
         this.$message({
159
         this.$message({
146
           showClose: true,
160
           showClose: true,
192
     // 设为/取消推荐
206
     // 设为/取消推荐
193
     setRecommend(book) {
207
     setRecommend(book) {
194
       const tipMsg = book.IsRecommend === 1 ? '确定取消推荐?' : '确认设置为推荐?'
208
       const tipMsg = book.IsRecommend === 1 ? '确定取消推荐?' : '确认设置为推荐?'
209
+      book.IsRecommend = Math.abs(book.IsRecommend - 1)
195
 
210
 
196
       this.$confirm(tipMsg, '提示', {
211
       this.$confirm(tipMsg, '提示', {
197
         confirmButtonText: '是',
212
         confirmButtonText: '是',
241
     importBatch(e) {
256
     importBatch(e) {
242
       // 需要指定案场
257
       // 需要指定案场
243
       const caseName = this.getCaseName(this.caseId)
258
       const caseName = this.getCaseName(this.caseId)
259
+      const file = e.target.files[0]
260
+      if (!file) {
261
+        this.$message({
262
+          showClose: true,
263
+          message: '请选择导入文件',
264
+          type: 'error'
265
+        })
266
+      }
244
 
267
 
245
       this.$confirm(`数据将被导入至【${caseName}】案场, 是否继续?`, '提示', {
268
       this.$confirm(`数据将被导入至【${caseName}】案场, 是否继续?`, '提示', {
246
         confirmButtonText: '确定',
269
         confirmButtonText: '确定',
248
         type: 'warning'
271
         type: 'warning'
249
       })
272
       })
250
         .then(() => {
273
         .then(() => {
251
-          // TODO
252
-          // const file = e.target.files[0];
274
+          const data = {
275
+            caseId: this.caseId,
276
+            excel: file,
277
+          }
278
+
279
+          this.batchImport(data).then(() => {
280
+            this.$confirm(`数据导入完成, 点击【确定】刷新页面`, '提示', {
281
+              confirmButtonText: '确定',
282
+              cancelButtonText: '取消',
283
+              type: 'warning'
284
+            }).then(() => {
285
+              window.location.reload()
286
+            })
287
+          }).catch((err) => {
288
+            this.$message({
289
+              showClose: true,
290
+              message: err,
291
+              type: 'error'
292
+            })
293
+          })
294
+
295
+          // const loading = this.$loading({
296
+          //   lock: true,
297
+          //   text: '数据导入中, 可能耗时较长, 请稍后 ...',
298
+          // })
299
+
300
+          // window.setTimeout(() => loading.close(), 2000)
253
         })
301
         })
254
         .catch(x => x)
302
         .catch(x => x)
255
     },
303
     },

+ 11
- 33
src/pages/system/library/books/types/detail.vue View File

28
         <el-input v-model="formData.BookTypeName" :style="{ width: '200px' }"></el-input>
28
         <el-input v-model="formData.BookTypeName" :style="{ width: '200px' }"></el-input>
29
       </el-form-item>
29
       </el-form-item>
30
       <el-form-item :style="{ paddingTop: '40px' }">
30
       <el-form-item :style="{ paddingTop: '40px' }">
31
-        <el-button type="primary" @click="submit()">立即创建</el-button>
31
+        <el-button type="primary" @click="submit()">保存</el-button>
32
         <el-button @click="$router.back()">取消</el-button>
32
         <el-button @click="$router.back()">取消</el-button>
33
       </el-form-item>
33
       </el-form-item>
34
     </el-form>
34
     </el-form>
62
   created() {
62
   created() {
63
     const id = this.$route.params.id
63
     const id = this.$route.params.id
64
     if (id) {
64
     if (id) {
65
-      this.getInfo({
66
-        BookTypeId: id
67
-      }).catch(err => {
65
+      this.getInfo({ id }).catch(err => {
68
         this.$message({
66
         this.$message({
69
           showClose: true,
67
           showClose: true,
70
           message: err,
68
           message: err,
82
     ...mapLibSate({
80
     ...mapLibSate({
83
       detail: s => s.type.detail,
81
       detail: s => s.type.detail,
84
     }),
82
     }),
85
-    // formData: {
86
-    //   get: function() {
87
-    //     if (this.detail && this.detail.BookTypeId) {
88
-    //       return this.detail
89
-    //     }
90
-
91
-    //     return {
92
-    //       BookTypeId: '',
93
-    //       BookTypeName: '',
94
-    //       BookTypeImg: '',
95
-    //       CaseId: this.defaultCase,
96
-    //       OrgId: this.orgid,
97
-    //       Status: 1,
98
-    //       CreateDate: new Date()
99
-    //     }
100
-    //   },
101
-    //   set: function(val) {
102
-    //     console.log(val)
103
-    //     this.mergeDetail(val)
104
-    //   }
105
-    // }
106
   },
83
   },
107
   watch: {
84
   watch: {
108
     detail: {
85
     detail: {
121
       },
98
       },
122
       immediate: true,
99
       immediate: true,
123
     },
100
     },
124
-    formData: {
125
-      handler (nv) {
126
-        this.mergeDetail(nv)
127
-      },
128
-      deep: true,
129
-    },
101
+    // formData: {
102
+    //   handler (nv) {
103
+    //     this.mergeDetail(nv)
104
+    //   },
105
+    //   deep: true,
106
+    // },
130
   },
107
   },
131
   methods: {
108
   methods: {
132
     ...mapMutations({
109
     ...mapMutations({
138
     }),
115
     }),
139
 
116
 
140
     uploadSuccess(res) {
117
     uploadSuccess(res) {
141
-      this.formData.BookTypeImg = res.result.url
118
+      this.$set(this.formData, 'BookTypeImg', res.result.url)
119
+      // this.formData.BookTypeImg = res.result.url
142
     },
120
     },
143
 
121
 
144
     submit() {
122
     submit() {
145
       this.$refs.ruleForm.validate(valid => {
123
       this.$refs.ruleForm.validate(valid => {
146
         if (valid) {
124
         if (valid) {
147
-          this.updateDetail()
125
+          this.updateDetail(this.formData)
148
             .then(() => {
126
             .then(() => {
149
               this.$message({
127
               this.$message({
150
                 showClose: true,
128
                 showClose: true,

+ 11
- 7
src/pages/system/library/books/types/list.vue View File

3
     <div>
3
     <div>
4
       <el-form inline>
4
       <el-form inline>
5
         <el-form-item label="案场">
5
         <el-form-item label="案场">
6
-          <el-select v-model="caseId" size="medium" placeholder="请选择案场" @change="filterList">
6
+          <el-select v-model="caseId" size="medium" placeholder="请选择案场">
7
             <el-option
7
             <el-option
8
               v-for="item in cases"
8
               v-for="item in cases"
9
               :key="item.CaseId"
9
               :key="item.CaseId"
13
           </el-select>
13
           </el-select>
14
         </el-form-item>
14
         </el-form-item>
15
         <el-form-item :style="{ float: 'right' }">
15
         <el-form-item :style="{ float: 'right' }">
16
-          <el-button type="primary" size="medium">搜索</el-button>
16
+          <el-button type="primary" size="medium" @click="filterList">搜索</el-button>
17
         </el-form-item>
17
         </el-form-item>
18
       </el-form>
18
       </el-form>
19
     </div>
19
     </div>
21
       <el-button plain @click="editType()" size="medium">新增分类</el-button>
21
       <el-button plain @click="editType()" size="medium">新增分类</el-button>
22
       <div :style="{ margin: '10px 0' }">
22
       <div :style="{ margin: '10px 0' }">
23
         <el-table :data="list" border style="width: 100%">
23
         <el-table :data="list" border style="width: 100%">
24
-          <el-table-column label="图片" width="250">
24
+          <el-table-column label="图片" width="128">
25
             <template slot-scope="scope">
25
             <template slot-scope="scope">
26
-              <img width="150" :src="scope.row.BookTypeImg" alt>
26
+              <img width="64" :src="scope.row.BookTypeImg" alt>
27
             </template>
27
             </template>
28
           </el-table-column>
28
           </el-table-column>
29
           <el-table-column prop="BookTypeName" label="名称"></el-table-column>
29
           <el-table-column prop="BookTypeName" label="名称"></el-table-column>
43
         <el-pagination
43
         <el-pagination
44
           layout="prev, pager, next"
44
           layout="prev, pager, next"
45
           :current-page="page"
45
           :current-page="page"
46
-          :total="1000"
46
+          :total="pagenum"
47
           @current-change="pageChange">
47
           @current-change="pageChange">
48
         </el-pagination>
48
         </el-pagination>
49
       </div>
49
       </div>
75
     ...mapLibSate({
75
     ...mapLibSate({
76
       list: s => s.type.list,
76
       list: s => s.type.list,
77
       page: s => s.type.page,
77
       page: s => s.type.page,
78
+      pagenum: s => s.type.pagenum,
78
     })
79
     })
79
   },
80
   },
80
   created() {
81
   created() {
83
   methods: {
84
   methods: {
84
     ...mapActions({
85
     ...mapActions({
85
       getList: 'getTypeList',
86
       getList: 'getTypeList',
86
-      deleteType: 'deleteType'
87
+      deleteType: 'deleteType',
87
     }),
88
     }),
88
 
89
 
89
     filterList({ page = 0 } = {}) {
90
     filterList({ page = 0 } = {}) {
91
+      const caseId = this.caseId || this.defaultCase
92
+      if (!caseId) return
93
+
90
       this.getList({
94
       this.getList({
91
         page,
95
         page,
92
-        CaseId: this.caseId || this.defaultCase
96
+        caseid: caseId,
93
       }).catch(err => {
97
       }).catch(err => {
94
         this.$message({
98
         this.$message({
95
           showClose: true,
99
           showClose: true,

+ 116
- 16
src/store/library/index.js View File

6
 
6
 
7
   state: {
7
   state: {
8
     page: 0,
8
     page: 0,
9
+    pagenum: 0,
9
     list: [
10
     list: [
10
       {
11
       {
11
         BookId: '1',
12
         BookId: '1',
31
     detail: {},
32
     detail: {},
32
     type: {
33
     type: {
33
       page: 0,
34
       page: 0,
35
+      pagenum: 0,
34
       list: [
36
       list: [
35
         {
37
         {
36
           BookTypeId: '1',
38
           BookTypeId: '1',
54
       },
56
       },
55
     },
57
     },
56
     stock: {
58
     stock: {
59
+      page: 0,
60
+      pagenum: 0,
57
       list: [
61
       list: [
58
         {
62
         {
59
           RecordId: '1',
63
           RecordId: '1',
96
     },
100
     },
97
     setBorrowList (state, payload) { // 更新借阅记录
101
     setBorrowList (state, payload) { // 更新借阅记录
98
       state.borrow.list = payload
102
       state.borrow.list = payload
99
-    }
103
+    },
104
+    setTypeList (state, payload) {
105
+      const { list, pagenum } = payload || {}
106
+      if (!!list) { // eslint-disable-line
107
+        state.type.list = list
108
+        state.type.pagenum = pagenum
109
+      } else {
110
+        state.type.list = []
111
+        state.type.pagenum = 0
112
+      }
113
+    },
114
+    deleteTypeList (state, payload = {}) {
115
+      state.type.list = state.type.list.filter(x => x.BookTypeId !== payload.BookTypeId)
116
+    },
117
+    setBookList (state, payload) {
118
+      const { list, pagenum } = payload || {}
119
+      if (!!list) { // eslint-disable-line
120
+        state.list = list
121
+        state.pagenum = pagenum
122
+      } else {
123
+        state.list = []
124
+        state.pagenum = 0
125
+      }
126
+    },
127
+    deleteBookList (state, payload = {}) {
128
+      state.list = state.list.filter(x => x.BookId !== payload.BookId)
129
+    },
100
   },
130
   },
101
   actions: {
131
   actions: {
102
     cancelBorrow ({ commit }, payload) { // 取消预约
132
     cancelBorrow ({ commit }, payload) { // 取消预约
124
     },
154
     },
125
     getTypeList ({ commit }, payload) {
155
     getTypeList ({ commit }, payload) {
126
       return new Promise((resolve, reject) => {
156
       return new Promise((resolve, reject) => {
127
-
157
+        ajax({
158
+          ...api.bookType.list,
159
+          queryData: payload,
160
+        }).then((x) => {
161
+          commit('setTypeList', x)
162
+          resolve(x)
163
+        })
164
+          .catch(({ message }) => reject(message))
128
       })
165
       })
129
     },
166
     },
130
-    getTypeDetail ({ commit }, payload) {
167
+    getTypeDetail ({ commit }, payload = {}) {
131
       return new Promise((resolve, reject) => {
168
       return new Promise((resolve, reject) => {
132
-
169
+        ajax({
170
+          ...api.bookType.detail,
171
+          urlData: { ...payload },
172
+        }).then((x) => {
173
+          commit('mergeTypeDetail', x)
174
+          resolve(x)
175
+        })
176
+          .catch(({ message }) => reject(message))
133
       })
177
       })
134
     },
178
     },
135
-    updateTypeDetail ({ commit }, payload) {
179
+    updateTypeDetail ({ commit }, payload = {}) {
136
       return new Promise((resolve, reject) => {
180
       return new Promise((resolve, reject) => {
181
+        const id = payload.BookTypeId
182
+        payload.CreateDate = ''
137
 
183
 
184
+        const apiConf = !id ? api.bookType.save : api.bookType.update
185
+        ajax({
186
+          ...apiConf,
187
+          data: payload,
188
+        }).then((x) => {
189
+          commit('mergeTypeDetail', x)
190
+          resolve(x)
191
+        })
192
+          .catch(({ message }) => reject(message))
138
       })
193
       })
139
     },
194
     },
140
     deleteType ({ commit }, payload) {
195
     deleteType ({ commit }, payload) {
141
       return new Promise((resolve, reject) => {
196
       return new Promise((resolve, reject) => {
142
-
197
+        ajax({
198
+          ...api.bookType.delete,
199
+          urlData: { id: payload.BookTypeId },
200
+        }).then(() => {
201
+          commit('deleteTypeList', payload)
202
+          resolve()
203
+        })
204
+          .catch(({ message }) => reject(message))
143
       })
205
       })
144
     },
206
     },
145
     getBookList ({ commit }, payload) {
207
     getBookList ({ commit }, payload) {
146
       return new Promise((resolve, reject) => {
208
       return new Promise((resolve, reject) => {
147
-
209
+        ajax({
210
+          ...api.book.list,
211
+          queryData: payload,
212
+        }).then((x) => {
213
+          console.log(x)
214
+          commit('setBookList', x)
215
+          resolve(x)
216
+        })
217
+          .catch((err) => console.log(err) && reject(err.message))
148
       })
218
       })
149
     },
219
     },
150
-    getBookDetail ({ commit }, payload) {
220
+    getBookDetail ({ commit }, payload = {}) {
151
       return new Promise((resolve, reject) => {
221
       return new Promise((resolve, reject) => {
152
-
222
+        ajax({
223
+          ...api.book.detail,
224
+          urlData: { ...payload },
225
+        }).then((x) => {
226
+          commit('mergeBookDetail', x)
227
+          resolve(x)
228
+        })
229
+          .catch(({ message }) => reject(message))
153
       })
230
       })
154
     },
231
     },
155
-    updateBookDetail ({ commit }, payload) {
232
+    updateBookDetail ({ commit }, payload = {}) {
156
       return new Promise((resolve, reject) => {
233
       return new Promise((resolve, reject) => {
234
+        const id = payload.BookId
157
 
235
 
236
+        const apiConf = !id ? api.book.save : api.book.update
237
+        ajax({
238
+          ...apiConf,
239
+          data: payload,
240
+        }).then((x) => {
241
+          commit('mergeBookDetail', x)
242
+          resolve(x)
243
+        })
244
+          .catch(({ message }) => reject(message))
158
       })
245
       })
159
     },
246
     },
160
-    deleteBook ({ commit }, payload) {
247
+    deleteBook ({ commit }, payload = {}) {
161
       return new Promise((resolve, reject) => {
248
       return new Promise((resolve, reject) => {
162
-
249
+        ajax({
250
+          ...api.book.delete,
251
+          urlData: { id: payload.BookId },
252
+        }).then((x) => {
253
+          commit('deleteBookList', payload)
254
+          resolve(x)
255
+        })
256
+          .catch(({ message }) => reject(message))
163
       })
257
       })
164
     },
258
     },
165
-    setBookRecommend ({ commit }, payload) {
259
+    getStockList ({ commit }, payload) {
166
       return new Promise((resolve, reject) => {
260
       return new Promise((resolve, reject) => {
167
 
261
 
168
       })
262
       })
169
     },
263
     },
170
-    getStockList ({ commit }, payload) {
264
+    batchImport(_, payload) {
171
       return new Promise((resolve, reject) => {
265
       return new Promise((resolve, reject) => {
172
-
266
+        ajax({
267
+          ...api.book.import,
268
+          data: payload,
269
+        }).then(() => {
270
+          resolve()
271
+        })
272
+          .catch(({ message }) => reject(message))
173
       })
273
       })
174
-    },
274
+    }
175
   },
275
   },
176
 }
276
 }

+ 30
- 0
src/util/api.js View File

975
       method: 'post',
975
       method: 'post',
976
       url: `${baseUrl}${common}/booktype`
976
       url: `${baseUrl}${common}/booktype`
977
     },
977
     },
978
+    delete: {
979
+      method: 'delete',
980
+      url: `${baseUrl}${common}/booktype/:id`
981
+    },
982
+  },
983
+  book: {
984
+    list: {
985
+      method: 'get',
986
+      url: `${baseUrl}${common}/book`
987
+    },
988
+    detail: {
989
+      method: 'get',
990
+      url: `${baseUrl}${common}/book/:id`
991
+    },
992
+    save: {
993
+      method: 'post',
994
+      url: `${baseUrl}${common}/book`
995
+    },
996
+    update: {
997
+      method: 'put',
998
+      url: `${baseUrl}${common}/book`
999
+    },
1000
+    delete: {
1001
+      method: 'delete',
1002
+      url: `${baseUrl}${common}/book/:id`
1003
+    },
1004
+    import: {
1005
+      method: 'post',
1006
+      url: `${baseUrl}${common}/book/excel`
1007
+    },
978
   },
1008
   },
979
 }
1009
 }
980
 export default $api
1010
 export default $api