linwe
2024-05-15 7c174c20d3a431a9d66f7c0a635a3facf05cd891
Merge remote-tracking branch 'origin/master'
1 files modified
134 ■■■■■ changed files
src/views/place/index.vue 134 ●●●●● patch | view | raw | blame | history
src/views/place/index.vue
@@ -5,6 +5,18 @@
            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
            @refresh-change="refreshChange" @on-load="onLoad">
            <template slot="menuLeft">
                <el-button type="danger" size="small" plain icon="el-icon-delete" v-if="permission.place_delete"
                    @click="handleDelete">删 除
                </el-button>
                <el-button type="success" size="small" plain v-if="permission.place_import" icon="el-icon-upload2"
                    @click="handleImport">导入
                </el-button>
                <el-button type="warning" size="small" plain v-if="permission.place_export" icon="el-icon-download"
                    @click="handleExport">导出
                </el-button>
            </template>
            <template slot-scope="{row}" slot="location">
                <span v-text="showLocation(row.location)"></span>
            </template>
@@ -26,12 +38,6 @@
            <template slot-scope="{row, size}" slot="source">
                <el-tag :size="size" :type="showSource(row.source).type">{{ showSource(row.source).text
                    }}</el-tag>
            </template>
            <template slot="menuLeft">
                <el-button size="small" icon="el-icon-delete" plain v-if="permission.place_delete"
                    @click="handleDelete">删 除
                </el-button>
            </template>
            <template slot-scope="{row, size}" slot="menu">
@@ -62,6 +68,15 @@
            width="30%">
            <auditBase></auditBase>
        </el-dialog>
        <el-dialog title="场所数据导入" append-to-body :visible.sync="excelBox" width="555px">
            <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
                <template slot="excelTemplate">
                    <el-button size="small" type="primary" @click="handleTemplate">
                        点击下载<i class="el-icon-download el-icon--right"></i>
                    </el-button>
                </template>
            </avue-form>
        </el-dialog>
    </basic-container>
</template>
@@ -77,7 +92,22 @@
import {
    mapGetters
} from "vuex"
import {
  exportBlob
} from "@/api/common"
import {
  getToken
} from '@/util/auth'
import {
  downloadXls,
} from "@/util/util"
import {
  dateNow
} from "@/util/date"
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import Qs from "qs"
import website from '@/config/website'
import auditBase from './components/auditBase'
@@ -99,6 +129,55 @@
        }
        return {
            excelOption: {
                submitBtn: false,
                emptyBtn: false,
                column: [{
                    label: '模板上传',
                    prop: 'excelFile',
                    type: 'upload',
                    drag: true,
                    loadText: '模板上传中,请稍等',
                    span: 24,
                    propsHttp: {
                        res: 'data'
                    },
                    tip: '请上传 .xls,.xlsx 标准格式文件',
                    action: "/api/blade-household/household/import-household"
                },
                {
                    label: "数据覆盖",
                    prop: "isCovered",
                    type: "switch",
                    align: "center",
                    width: 80,
                    dicData: [{
                        label: "否",
                        value: 0
                    },
                    {
                        label: "是",
                        value: 1
                    }
                    ],
                    value: 0,
                    slot: true,
                    rules: [{
                        required: true,
                        message: "请选择是否覆盖",
                        trigger: "blur"
                    }]
                },
                {
                    label: '模板下载',
                    prop: 'excelTemplate',
                    formslot: true,
                    span: 24,
                }
                ]
            },
            excelForm: {},
            excelBox: false,
            form: {},
            query: {},
            loading: true,
@@ -590,6 +669,12 @@
                }
            },
        },
        'excelForm.isCovered'() {
            if (this.excelForm.isCovered !== '') {
                const column = this.findObject(this.excelOption.column, "excelFile")
                column.action = `/api/blade-place/place/import-place?isCovered=${this.excelForm.isCovered}`
            }
        }
    },
    computed: {
@@ -841,6 +926,43 @@
                this.$refs.crud && this.$refs.crud.toggleSelection()
            })
        },
        handleImport() {
            this.excelBox = true
        },
        uploadAfter(res, done, loading, column) {
            this.excelBox = false
            this.onLoad(this.page)
            this.$message({
                type: "success",
                message: res
            })
            this.$refs.crud.toggleSelection()
            done()
        },
        handleExport() {
            this.$confirm("是否导出场所数据?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning"
            }).then(() => {
                NProgress.start()
                var data = {
                    ...this.query
                }
                data = Qs.stringify(data)
                exportBlob(
                    `/api/blade-place/place/export-place?${this.website.tokenHeader}=${getToken()}&` + data
                ).then(res => {
                    downloadXls(res.data, `场所数据表${dateNow()}.xlsx`)
                    NProgress.done()
                })
            })
        },
        handleTemplate() {
            exportBlob(`/api/blade-place/place/export-template?${this.website.tokenHeader}=${getToken()}`).then(res => {
                downloadXls(res.data, "场所数据模板.xlsx")
            })
        },
        handleDelete() {
            if (this.selectionList.length === 0) {
                this.$message.warning("请选择至少一条数据")