图书馆综合管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

112 lines
3.3 KiB

<template>
<el-dialog class="export-dialog" append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="handleCloseForm" :visible="formExportVisible" title="导出数据">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px">
<el-radio-group v-model="form.exportRadio">
<el-radio :label="1">盘点统计表</el-radio>
<el-radio v-if="type === 3" :label="2">盘点明细表</el-radio>
<!-- <el-radio v-if="type === 3" :label="3">盘点差异表</el-radio> -->
</el-radio-group>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="handleCloseForm">取消</el-button>
<el-button :loading="saveLoading" type="primary" @click="handleComfiredExport">继续</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex'
import CRUD, { form } from '@crud/crud'
import { parseTime, saveAs, getBlob } from '@/utils/index'
import qs from 'qs'
const defaultForm = { exportRadio: 1 }
export default {
name: 'DataForm',
mixins: [
form(function() {
return Object.assign({ }, defaultForm)
})
],
props: {
exportType: {
type: String,
default: ''
}
},
data() {
return {
saveLoading: false,
formExportVisible: false,
type: 1,
rules: {
exportRadio: [
{ required: true, message: '请选择需要导出得数据', trigger: 'change' }
]
},
params: {}
}
},
computed: {
...mapGetters([
'user',
'baseApi'
])
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
},
handleCloseForm() {
this.$refs['form'].clearValidate()
this.$refs['form'].resetFields()
this.formExportVisible = false
},
handleComfiredExport() {
console.log(this.form.exportRadio)
this.$refs['form'].validate((valid) => {
if (valid) {
this.saveLoading = true
this.handleExport(this.params)
} else {
return false
}
})
},
handleExport(params) {
if (this.form.exportRadio === 1) {
// 导出盘点统计
this.exportStockCheck(params)
} else if (this.form.exportRadio === 2) {
// 导出盘点明细统计
this.exportStockDetailsCheck(params)
}
this.saveLoading = false
this.handleCloseForm()
},
exportStockCheck(params) {
const fileName = '盘点统计-' + parseTime(new Date()) + '.xlsx'
getBlob(this.baseApi + '/api/stocktask-task/exportStockCheck' + '?' + qs.stringify(params, { indices: false }), function(blob) {
saveAs(blob, fileName)
})
},
exportStockDetailsCheck(params) {
const fileName = '盘点明细统计-' + parseTime(new Date()) + '.xlsx'
getBlob(this.baseApi + '/api/stocktask-task/exportStockDetailsCheck' + '?' + qs.stringify(params, { indices: false }), function(blob) {
saveAs(blob, fileName)
})
}
}
}
</script>
<style lang="scss" scoped>
.export-dialog{
::v-deep .el-dialog{
width: 400px;
}
}
</style>