图书馆综合管理系统
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

6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
  1. <template>
  2. <el-dialog class="export-dialog" append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="handleCloseForm" :visible="formExportVisible" title="导出数据">
  3. <span class="dialog-right-top" />
  4. <span class="dialog-left-bottom" />
  5. <div class="setting-dialog">
  6. <el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px">
  7. <el-radio-group v-model="form.exportRadio">
  8. <el-radio :label="1">盘点统计表</el-radio>
  9. <el-radio v-if="type === 3" :label="2">盘点明细表</el-radio>
  10. <!-- <el-radio v-if="type === 3" :label="3">盘点差异表</el-radio> -->
  11. </el-radio-group>
  12. </el-form>
  13. <div slot="footer" class="dialog-footer">
  14. <el-button type="text" @click="handleCloseForm">取消</el-button>
  15. <el-button :loading="saveLoading" type="primary" @click="handleComfiredExport">继续</el-button>
  16. </div>
  17. </div>
  18. </el-dialog>
  19. </template>
  20. <script>
  21. import { mapGetters } from 'vuex'
  22. import CRUD, { form } from '@crud/crud'
  23. import { parseTime, saveAs, getBlob } from '@/utils/index'
  24. import qs from 'qs'
  25. const defaultForm = { exportRadio: 1 }
  26. export default {
  27. name: 'DataForm',
  28. mixins: [
  29. form(function() {
  30. return Object.assign({ }, defaultForm)
  31. })
  32. ],
  33. props: {
  34. exportType: {
  35. type: String,
  36. default: ''
  37. }
  38. },
  39. data() {
  40. return {
  41. saveLoading: false,
  42. formExportVisible: false,
  43. type: 1,
  44. rules: {
  45. exportRadio: [
  46. { required: true, message: '请选择需要导出得数据', trigger: 'change' }
  47. ]
  48. },
  49. params: {}
  50. }
  51. },
  52. computed: {
  53. ...mapGetters([
  54. 'user',
  55. 'baseApi'
  56. ])
  57. },
  58. methods: {
  59. [CRUD.HOOK.beforeRefresh]() {
  60. },
  61. handleCloseForm() {
  62. this.$refs['form'].clearValidate()
  63. this.$refs['form'].resetFields()
  64. this.formExportVisible = false
  65. },
  66. handleComfiredExport() {
  67. console.log(this.form.exportRadio)
  68. this.$refs['form'].validate((valid) => {
  69. if (valid) {
  70. this.saveLoading = true
  71. this.handleExport(this.params)
  72. } else {
  73. return false
  74. }
  75. })
  76. },
  77. handleExport(params) {
  78. if (this.form.exportRadio === 1) {
  79. // 导出盘点统计
  80. this.exportStockCheck(params)
  81. } else if (this.form.exportRadio === 2) {
  82. // 导出盘点明细统计
  83. this.exportStockDetailsCheck(params)
  84. }
  85. this.saveLoading = false
  86. this.handleCloseForm()
  87. },
  88. exportStockCheck(params) {
  89. const fileName = '盘点统计-' + parseTime(new Date()) + '.xlsx'
  90. getBlob(this.baseApi + '/api/stocktask-task/exportStockCheck' + '?' + qs.stringify(params, { indices: false }), function(blob) {
  91. saveAs(blob, fileName)
  92. })
  93. },
  94. exportStockDetailsCheck(params) {
  95. const fileName = '盘点明细统计-' + parseTime(new Date()) + '.xlsx'
  96. getBlob(this.baseApi + '/api/stocktask-task/exportStockDetailsCheck' + '?' + qs.stringify(params, { indices: false }), function(blob) {
  97. saveAs(blob, fileName)
  98. })
  99. }
  100. }
  101. }
  102. </script>
  103. <style lang="scss" scoped>
  104. .export-dialog{
  105. ::v-deep .el-dialog{
  106. width: 400px;
  107. }
  108. }
  109. </style>