123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. import ajax from '../../util/ajax'
  2. import api from '../../util/api'
  3. export default {
  4. namespaced: true,
  5. state: {
  6. page: 0,
  7. pagenum: 0,
  8. list: [
  9. {
  10. BookId: '1',
  11. BookTypeId: '1',
  12. BookName: '遮天',
  13. BookBarcode: '123456',
  14. BookImg: 'http://jingcheng-resourceplat.oss-cn-shanghai.aliyuncs.com/upload/135230460466.png',
  15. Author: '辰东',
  16. Publisher: '南京出版社',
  17. Price: 90.00,
  18. InStock: 10,
  19. LeftNum: 2,
  20. BorrowNum: 5,
  21. BorrowDays: 7,
  22. BookDescription: '《遮天》是一部古典仙侠类型的网络小说',
  23. CaseId: '1',
  24. OrgId: '1',
  25. CreateDate: new Date(),
  26. IsRecommend: 1,
  27. Status: 1,
  28. },
  29. ],
  30. detail: {},
  31. type: {
  32. page: 0,
  33. pagenum: 0,
  34. list: [
  35. {
  36. BookTypeId: '1',
  37. BookTypeName: '测试',
  38. BookTypeImg: 'http://jingcheng-resourceplat.oss-cn-shanghai.aliyuncs.com/upload/135230460466.png',
  39. CaseId: '1',
  40. OrgId: '1',
  41. Nums: 100,
  42. Status: 1,
  43. CreateDate: new Date()
  44. }
  45. ],
  46. detail: {
  47. BookTypeId: '',
  48. BookTypeName: '',
  49. BookTypeImg: '',
  50. CaseId: '',
  51. OrgId: '1',
  52. Status: 1,
  53. CreateDate: new Date()
  54. },
  55. },
  56. stock: {
  57. page: 0,
  58. pagenum: 0,
  59. list: [
  60. {
  61. RecordId: '1',
  62. BookId: '1',
  63. InStockTotal: 20,
  64. InStockBefore: 8,
  65. InStockAfter: 10,
  66. ChangeReason: '补库存',
  67. ChangeDate: new Date(),
  68. ChangeUser: '1',
  69. ChangeUserName: 'admin',
  70. CaseId: '1',
  71. OrgId: '1',
  72. }
  73. ],
  74. detail: {},
  75. },
  76. borrow: {
  77. list: [],
  78. history: {},
  79. },
  80. bookReturn: {
  81. list: [],
  82. },
  83. },
  84. mutations: {
  85. mergeTypeDetail (state, payload) {
  86. state.type.detail = payload || {}
  87. if (payload && payload.BookTypeId) {
  88. state.type.list = (state.type.list || []).map(x => x.BookTypeId === payload.BookTypeId ? payload : x)
  89. }
  90. },
  91. mergeBookDetail (state, payload) {
  92. state.detail = payload || {}
  93. if (payload && payload.BookId) {
  94. state.list = (state.list || []).map(x => x.BookId === payload.BookId ? payload : x)
  95. }
  96. },
  97. mergeHistory (state, payload) {
  98. state.borrow.history = payload
  99. },
  100. setBorrowList (state, payload) { // 更新借阅记录
  101. state.borrow.list = payload
  102. },
  103. setTypeList (state, payload) {
  104. const { list, pagenum } = payload || {}
  105. if (!!list) { // eslint-disable-line
  106. state.type.list = list
  107. state.type.pagenum = pagenum
  108. } else {
  109. state.type.list = []
  110. state.type.pagenum = 0
  111. }
  112. },
  113. deleteTypeList (state, payload = {}) {
  114. state.type.list = state.type.list.filter(x => x.BookTypeId !== payload.BookTypeId)
  115. },
  116. setBookList (state, payload) {
  117. const { list, pagenum } = payload || {}
  118. if (!!list) { // eslint-disable-line
  119. state.list = list
  120. state.pagenum = pagenum
  121. } else {
  122. state.list = []
  123. state.pagenum = 0
  124. }
  125. },
  126. deleteBookList (state, payload = {}) {
  127. state.list = state.list.filter(x => x.BookId !== payload.BookId)
  128. },
  129. setStockList (state, payload = []) {
  130. const { list, pagenum } = payload || {}
  131. if (!!list) { // eslint-disable-line
  132. state.stock.list = list
  133. state.stock.pagenum = pagenum
  134. } else {
  135. state.stock.list = []
  136. state.stock.pagenum = 0
  137. }
  138. },
  139. setUserReturn (state, payload = {}) {
  140. state.bookReturn = payload
  141. }
  142. },
  143. actions: {
  144. cancelBorrow ({ commit }, payload) { // 取消预约
  145. return new Promise((resolve, reject) => {
  146. ajax(api.borrow.cancelBorrow.url, {
  147. method: api.borrow.cancelBorrow.method,
  148. urlData: { id: payload }
  149. }).then(res => {
  150. resolve(res)
  151. }).catch(({ message }) => reject(message))
  152. })
  153. },
  154. getBorrowList ({ commit }, payload) { // 获取借阅记录
  155. return new Promise((resolve, reject) => {
  156. ajax(api.borrow.getBorrowList.url, {
  157. method: api.borrow.getBorrowList.method,
  158. queryData: {
  159. ...payload,
  160. }
  161. }).then(res => {
  162. commit('setBorrowList', res.list)
  163. resolve(res)
  164. }).catch(({ message }) => reject(message))
  165. })
  166. },
  167. getTypeList ({ commit }, payload) {
  168. return new Promise((resolve, reject) => {
  169. ajax({
  170. ...api.bookType.list,
  171. queryData: payload,
  172. }).then((x) => {
  173. commit('setTypeList', x)
  174. resolve(x)
  175. })
  176. .catch(({ message }) => reject(message))
  177. })
  178. },
  179. getTypeDetail ({ commit }, payload = {}) {
  180. return new Promise((resolve, reject) => {
  181. ajax({
  182. ...api.bookType.detail,
  183. urlData: { ...payload },
  184. }).then((x) => {
  185. commit('mergeTypeDetail', x)
  186. resolve(x)
  187. })
  188. .catch(({ message }) => reject(message))
  189. })
  190. },
  191. updateTypeDetail ({ commit }, payload = {}) {
  192. return new Promise((resolve, reject) => {
  193. const id = payload.BookTypeId
  194. payload.CreateDate = ''
  195. const apiConf = !id ? api.bookType.save : api.bookType.update
  196. ajax({
  197. ...apiConf,
  198. data: payload,
  199. }).then((x) => {
  200. commit('mergeTypeDetail', x)
  201. resolve(x)
  202. })
  203. .catch(({ message }) => reject(message))
  204. })
  205. },
  206. deleteType ({ commit }, payload) {
  207. return new Promise((resolve, reject) => {
  208. ajax({
  209. ...api.bookType.delete,
  210. urlData: { id: payload.BookTypeId },
  211. }).then(() => {
  212. commit('deleteTypeList', payload)
  213. resolve()
  214. })
  215. .catch(({ message }) => reject(message))
  216. })
  217. },
  218. getBookList ({ commit }, payload) {
  219. return new Promise((resolve, reject) => {
  220. ajax({
  221. ...api.book.list,
  222. queryData: payload,
  223. }).then((x) => {
  224. commit('setBookList', x)
  225. resolve(x)
  226. })
  227. .catch((err) => console.log(err) && reject(err.message))
  228. })
  229. },
  230. getBookDetail ({ commit }, payload = {}) {
  231. return new Promise((resolve, reject) => {
  232. ajax({
  233. ...api.book.detail,
  234. urlData: { ...payload },
  235. }).then((x) => {
  236. commit('mergeBookDetail', x)
  237. resolve(x)
  238. })
  239. .catch(({ message }) => reject(message))
  240. })
  241. },
  242. updateBookDetail ({ commit }, payload = {}) {
  243. return new Promise((resolve, reject) => {
  244. const id = payload.BookId
  245. const apiConf = !id ? api.book.save : api.book.update
  246. ajax({
  247. ...apiConf,
  248. data: payload,
  249. }).then((x) => {
  250. commit('mergeBookDetail', x)
  251. resolve(x)
  252. })
  253. .catch(({ message }) => reject(message))
  254. })
  255. },
  256. deleteBook ({ commit }, payload = {}) {
  257. return new Promise((resolve, reject) => {
  258. ajax({
  259. ...api.book.delete,
  260. urlData: { id: payload.BookId },
  261. }).then((x) => {
  262. commit('deleteBookList', payload)
  263. resolve(x)
  264. })
  265. .catch(({ message }) => reject(message))
  266. })
  267. },
  268. getStockList ({ commit }, payload = {}) {
  269. const { bookId, ...queryData } = payload
  270. return new Promise((resolve, reject) => {
  271. ajax({
  272. ...api.book.inStock,
  273. urlData: { bookId },
  274. queryData,
  275. }).then((x) => {
  276. commit('setStockList', x)
  277. resolve(x)
  278. })
  279. .catch(({ message }) => reject(message))
  280. })
  281. },
  282. setStockChange ({ commit }, payload = {}) {
  283. return new Promise((resolve, reject) => {
  284. ajax({
  285. ...api.book.changeStock,
  286. data: payload,
  287. }).then(() => {
  288. resolve()
  289. })
  290. .catch(({ message }) => reject(message))
  291. })
  292. },
  293. batchImport(_, payload) {
  294. return new Promise((resolve, reject) => {
  295. ajax({
  296. ...api.book.import,
  297. data: payload,
  298. }).then(() => {
  299. resolve()
  300. })
  301. .catch(({ message }) => reject(message))
  302. })
  303. },
  304. getBorrowHistory({ commit }, payload) {
  305. return new Promise((resolve, reject) => {
  306. ajax({
  307. ...api.book.history,
  308. urlData: payload,
  309. }).then((res) => {
  310. if (!!res) { // eslint-disable-line
  311. commit('mergeHistory', res)
  312. resolve(res)
  313. } else {
  314. reject('未检索到数据') // eslint-disable-line
  315. }
  316. })
  317. .catch(({ message }) => reject(message))
  318. })
  319. },
  320. borrowBooks (_, payload) {
  321. return new Promise((resolve, reject) => {
  322. ajax({
  323. ...api.book.borrow,
  324. urlData: payload,
  325. }).then(() => {
  326. resolve()
  327. })
  328. .catch(({ message }) => reject(message))
  329. })
  330. },
  331. getUserReturn ({ commit }, payload) {
  332. return new Promise((resolve, reject) => {
  333. ajax({
  334. ...api.book.getUserReturn,
  335. urlData: { ...payload },
  336. queryData: payload,
  337. }).then((res) => {
  338. commit('setUserReturn', res)
  339. resolve(res)
  340. })
  341. .catch(({ message }) => reject(message))
  342. })
  343. },
  344. returnBook ({ commit }, payload) {
  345. return new Promise((resolve, reject) => {
  346. ajax({
  347. ...api.book.returnBook,
  348. urlData: { ...payload },
  349. }).then((res) => {
  350. resolve(res)
  351. })
  352. .catch(({ message }) => reject(message))
  353. })
  354. }
  355. },
  356. }