zaikudaochu

master
lion 2 weeks ago
parent da0ab68457
commit c1052046fd

@ -32,7 +32,8 @@
"vue-count-to": "^1.0.13",
"vue-resource": "^1.5.3",
"vue-router": "3.0.6",
"vuex": "3.1.0"
"vuex": "3.1.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.4",

@ -16,6 +16,16 @@ export function list(params) {
})
}
export function exportList(params) {
return request({
url: '/api/admin/book_detail/index',
method: 'get',
params,
timeout: 60000,
isLoading: false
})
}
export function show(params) {
return request({
url: '/api/admin/book_detail/show',

@ -0,0 +1,8 @@
import * as XLSX from 'xlsx'
export function exportJsonToXlsx(rows, sheetName, filename) {
const worksheet = XLSX.utils.json_to_sheet(rows)
const workbook = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(workbook, worksheet, sheetName)
XLSX.writeFile(workbook, filename)
}

@ -22,6 +22,7 @@
<Button style="margin-left: 10px" type="primary" @click="select={page:1,keyword:''}">
</Button>
<Button style="margin-left: 10px" type="primary" @click="doSearch"></Button>
<Button style="margin-left: 10px" type="primary" @click="doExport" :loading="exportLoading">导出</Button>
<Button style="margin-left: 10px" type="primary" @click="doPrint"></Button>
</div>
</slot>
@ -40,10 +41,14 @@
<script>
import {
list as index,
exportList,
save,
del,
show
} from "@/api/bookStore/storeList";
import {
exportJsonToXlsx
} from '@/utils/exportExcel'
import putIn from '@/views/bookStore/components/putIn'
export default {
@ -72,6 +77,7 @@
],
total: 0,
list: [],
exportLoading: false,
table: [{
prop: 'no',
label: '库存编号',
@ -184,6 +190,52 @@
let baseUrl = process.env.VUE_APP_BASE_API + "/print";
window.open(baseUrl)
},
buildExportParams() {
const params = {
page: 1,
page_size: 99999,
keyword: this.select.keyword
}
if (this.select.borrow_status !== '' && this.select.borrow_status !== null && this.select.borrow_status !== undefined) {
params.borrow_status = this.select.borrow_status
}
return params
},
formatLocation(row) {
if (row.bookshelf && row.line && row.rows) {
return `书架:${row.bookshelf}${row.line}列 第${row.rows}`
}
return ''
},
async doExport() {
this.exportLoading = true
try {
const res = await exportList(this.buildExportParams())
const rows = (res.data || []).map(item => ({
'库存编号': item.no || '',
'图书分类': item.book?.type?.name || '',
'图书': item.book?.name || item.book_name || '',
'作者': item.book?.author || '',
'装订方式': item.book?.bind_way || '',
'所在位置': this.formatLocation(item),
'入库日期': item.enter_date || '',
'借阅状态': item.borrow_status == 1 ? '借出' : '在库',
'备注': item.remark || '',
'创建时间': item.created_at || ''
}))
if (!rows.length) {
this.$Message.warning('暂无可导出数据')
return
}
const filename = `库存记录_${this.$moment().format('YYYYMMDDHHmmss')}.xlsx`
exportJsonToXlsx(rows, '库存记录', filename)
this.$Message.success(`导出成功,共 ${rows.length}`)
} catch (error) {
this.$Message.error('导出失败,请稍后重试')
} finally {
this.exportLoading = false
}
},
pageChange(e) {
this.select.page = e
this.load();

@ -15,6 +15,9 @@ const name = defaultSettings.title // page title
// port = 9528 npm run dev OR npm run dev --port = 9528
const port = process.env.port || process.env.npm_config_port || 8014 // dev port
/** 生产构建输出到 Laravel 后端 public/admin */
const adminOutputDir = path.resolve(__dirname, '../book-sqhj/public/admin')
/** 本地开发接口代理目标(来自 .env.development勿提交敏感信息 */
const devProxyTarget =
process.env.DEV_PROXY_TARGET || 'http://book-sqhj.ali251.langye.net'
@ -41,7 +44,7 @@ module.exports = {
* Detail: https://cli.vuejs.org/config/#publicpath
*/
publicPath: '/admin/',
outputDir: './dist',
outputDir: adminOutputDir,
assetsDir: 'static',
css: {
loaderOptions: { // 向 CSS 相关的 loader 传递选项

Loading…
Cancel
Save