Ver Fonte

试验数据页面

duy há 2 anos atrás
pai
commit
f7e272bc91

+ 77 - 0
src/api/modules/gauge/testdata.js

@@ -0,0 +1,77 @@
+import { httpApi } from '../../request/httpApi'
+
+export default {
+
+    //获取数据原材
+    async queryListData(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-manager/rawMaterials/page',
+            method: 'get',
+            params: form,
+        }, msg)
+    },
+    //新增
+    async addSave(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-manager/rawMaterials/save',
+            method: 'post',
+            data: form,
+        }, msg)
+    },
+    //编辑
+    async updateSave(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-manager/rawMaterials/update',
+            method: 'post',
+            data: form,
+        }, msg)
+    },
+      //删除
+    async delData(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-manager/rawMaterials/remove',
+            method: 'get',
+            params: form,
+        }, msg)
+   },
+  //导入
+  async importRawMaterialsInfo(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-manager/rawMaterials/importRawMaterialsInfo',
+            method: 'post',
+            data: form,
+        }, msg)
+  },
+  //配比分页
+  async queryListProp(form, msg = true) {
+    return httpApi({
+        url: '/api/blade-manager/mixProportion/page',
+        method: 'get',
+        params: form,
+    }, msg)
+  },
+      //配合比新增
+  async matchaddSave(form, msg = true) {
+    return httpApi({
+        url: '/api/blade-manager/mixProportion/save',
+        method: 'post',
+        data: form,
+    }, msg)
+},
+//配合比编辑
+async matchupdateSave(form, msg = true) {
+    return httpApi({
+        url: '/api/blade-manager/mixProportion/update',
+        method: 'post',
+        data: form,
+    }, msg)
+},
+    //配合比删除
+ async matchdelData(form, msg = true) {
+    return httpApi({
+        url: '/api/blade-manager/mixProportion/remove',
+        method: 'get',
+        params: form,
+    }, msg)
+   },
+}

+ 6 - 0
src/router/modules/base.js

@@ -166,6 +166,12 @@ export default [
         meta: { title: '综合管理' },
         component: Layout,
         children: [
+            {
+                path: '/gauge/testdata',
+                name: 'gauge-testdata',
+                meta: { title: '试验数据' },
+                component: () => import('~src/views/gauge/testdata.vue'),
+            },
             {
                 path: '/gauge/station',
                 name: 'gauge-station',

+ 689 - 0
src/views/gauge/testdata.vue

@@ -0,0 +1,689 @@
+<!--  -->
+<template>
+    <div class="hc-layout-box">
+        <HcCard :scrollbar="false" action-size="lg">
+            <template #header>
+                <HcTooltip keys="gauge-station-add">
+                    <el-button hc-btn type="primary" @click="AddRowClick">
+                        <HcIcon name="add-box" />
+                        <span>新增</span>
+                    </el-button>
+                </HcTooltip>
+        
+                <HcTooltip keys="gauge-station-import">
+                    <el-button hc-btn @click="importModalClick">
+                        <HcIcon name="upload-cloud" />
+                        <span>导入</span>
+                    </el-button>
+                </HcTooltip>
+                <div class="w-60 ml-6">
+                    <el-input
+                        v-model="searchForm.searchValue" clearable :placeholder="placeTitle"
+                        size="large" @keyup="keyUpEvent"
+                    />
+                </div>
+                <div class="ml-2">
+                    <el-button size="large" type="primary" @click="searchClick">
+                        <HcIcon name="search-2" />
+                        <span>搜索</span>
+                    </el-button>
+                </div>
+            </template>
+            <template #extra>
+                <HcNewSwitch :datas="tabsTypeData" :keys="tabsTypeKey" @change="tabsTypeChange" />
+            </template>
+            <HcTable v-if="tabsTypeKey === '0'" :column="tableColumn" :datas="tableData" :laoding="tableLoading">
+                <template #action="{ row }">
+                    <HcTooltip keys="gauge-station-edit">
+                        <el-button size="small" text type="primary" @click="handleLevelEdit(row)">编辑</el-button>
+                    </HcTooltip>
+                    <HcTooltip keys="gauge-station-del">
+                        <el-button size="small" text type="danger" @click="handleLevelDelete(row)">删除</el-button>
+                    </HcTooltip>
+                </template>
+            </HcTable>
+            <HcTable v-if="tabsTypeKey === '1'" :column="matchTableColumn" :datas="matchData" :laoding="matchtableLoading">
+                <template #action="{ row }">
+                    <HcTooltip keys="gauge-station-edit">
+                        <el-button size="small" text type="primary" @click="handmatchEdit(row)">编辑</el-button>
+                    </HcTooltip>
+                    <HcTooltip keys="gauge-station-del">
+                        <el-button size="small" text type="danger" @click="handmathDelete(row)">删除</el-button>
+                    </HcTooltip>
+                </template>
+            </HcTable>
+            <template #action>
+                <HcPages :pages="searchForm" @change="pageChange" />
+            </template>
+
+            <!-- 新增/编辑 弹框 -->
+            <HcDialog
+                is-to-body 
+                :show="testModal" 
+                :title="`${formRowValue?.id || matchformRowValue?.id ? '编辑' : '新增'}${tabsTypeKey === '0' ? '原材' : '配合比'}`"
+                widths="47rem"
+                :is-table="tabsTypeKey === '1'"
+                @close="testModalClose"
+            >
+                <el-form v-if="tabsTypeKey === '0'" ref="formRowRef" :model="formRowValue" :rules="rulesRow" label-width="auto" size="large">
+                    <el-form-item label="材料名称" prop="name">
+                        <el-input v-model="formRowValue.name" placeholder="请输入材料名称" />
+                    </el-form-item>
+                    <el-form-item label="规格型号" prop="specification">
+                        <el-input v-model="formRowValue.specification" placeholder="请输入规格型号" />
+                    </el-form-item>
+                    <el-form-item label="生产厂商" prop="manufacturers">
+                        <el-input v-model="formRowValue.manufacturers" placeholder="请输入生产厂商" />
+                    </el-form-item>
+                    <el-form-item label="存放地点或料厂号" prop="storageSite">
+                        <el-input
+                            v-model="formRowValue.storageSite" placeholder="请输入存放地点或料厂号"
+                        />
+                    </el-form-item>
+                    <el-form-item label="准备数量" prop="total">
+                        <el-input
+                            v-model="formRowValue.total" placeholder="请输入准备数量"
+                        />
+                    </el-form-item>
+                </el-form>
+                <el-form v-if="tabsTypeKey === '1'" ref="matchformRowRef" :model="matchformRowValue" :rules="matchrulesRow" label-width="auto" size="large">
+                    <el-form-item label="配合比报告编号" prop="name">
+                        <el-input v-model="matchformRowValue.reportNumber" placeholder="请输入" />
+                    </el-form-item>
+                    <el-form-item label="设计强度" prop="designStrength">
+                        <el-input v-model="matchformRowValue.designStrength" placeholder="请输入" />
+                    </el-form-item>
+                    <el-form-item label="水胶比" prop="waterBinderRatio">
+                        <el-input v-model="matchformRowValue.waterBinderRatio" placeholder="请输入" />
+                    </el-form-item>
+                    <el-form-item label="水泥" prop="cement">
+                        <el-input
+                            v-model="matchformRowValue.cement" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="砂" prop="total">
+                        <el-input
+                            v-model="matchformRowValue.sand" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="碎石1" prop="macadamOne">
+                        <el-input
+                            v-model="matchformRowValue.macadamOne" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="碎石2" prop="macadamTwo">
+                        <el-input
+                            v-model="matchformRowValue.macadamTwo" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="碎石3" prop="macadamThree">
+                        <el-input
+                            v-model="matchformRowValue.macadamThree" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="水" prop="water">
+                        <el-input
+                            v-model="matchformRowValue.water" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="掺加剂" prop="admixture">
+                        <el-input
+                            v-model="matchformRowValue.admixture" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="粉煤灰" prop="coalAsh">
+                        <el-input
+                            v-model="matchformRowValue.coalAsh" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="矿渣粉" prop="slagPowder">
+                        <el-input
+                            v-model="matchformRowValue.slagPowder" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="坍落度" prop="slumps">
+                        <el-input
+                            v-model="matchformRowValue.slumps" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="坍落度" prop="slumps">
+                        <el-input
+                            v-model="matchformRowValue.slumps" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="单位体积重" prop="bulkDensity">
+                        <el-input
+                            v-model="matchformRowValue.bulkDensity	" placeholder="请输入"
+                        />
+                    </el-form-item>
+                    <el-form-item label="28天抗压强度" prop="compressiveStrength">
+                        <el-input
+                            v-model="matchformRowValue.compressiveStrength	" placeholder="请输入"
+                        />
+                    </el-form-item>
+                </el-form>
+                <template #footer>
+                    <div class="dialog-footer">
+                        <el-button size="large" @click="testModal = false">取消</el-button>
+                        <el-button v-if="tabsTypeKey === '0'" :loading="saveFormLoading" hc-btn type="primary" @click="saveFormClick">提交</el-button>
+                        <el-button v-if="tabsTypeKey === '1'" :loading="saveFormLoading" hc-btn type="primary" @click="matchsaveFormClick">提交</el-button>
+                    </div>
+                </template>
+            </HcDialog>
+
+            <!-- 导入 弹框 -->
+
+            <HcDialog is-to-body :show="importModal" :title="tabsTypeKey === '0' ? '导入原材' : '导入配合比'" @close="importModalClose">
+                <div class="hc-import-modal-box">
+                    <div class="tip-box">
+                        <span>请先下载导入模板(</span>
+                        <a
+                            v-if="tabsTypeKey === '0'"
+                            class="text-link"
+                            href="https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload/20230821/d9ac14618c04b91b03c5746a24867e54.xlsx"
+                            target="_blank"
+                        >原材导入模板</a>
+                        <a
+                            v-if="tabsTypeKey === '1'"
+                            class="text-link"
+                            href="https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload/20230821/cdc62c130027dafa575dfb478cedba61.xlsx"
+                            target="_blank"
+                        >配合比导入模板</a>
+                        <span> ),按模板样式编辑后,再点击"选择文件"按钮选择编辑好的文件,并点击底部的"确认导入"按钮即可导入成功!</span>
+                    </div>
+                    <div class="upload-box">
+                        <el-upload
+                            ref="uploadRef" v-model:file-list="fileList" :accept="accept" :action="action"
+                            :auto-upload="false" :data="addition" :headers="getTokenHeader()" :limit="1"
+                            :on-error="handleUploadError" :on-exceed="handleUploadExceed"
+                            :on-progress="handleUploadProgress" :on-success="handleUploadFinish"
+                        >
+                            <template #trigger>
+                                <el-button :loading="importLoading" type="primary">选择文件</el-button>
+                            </template>
+                        </el-upload>
+                    </div>
+                </div>
+                <template #footer>
+                    <div class="dialog-footer">
+                        <el-button size="large" @click="showImportModal = false">取消</el-button>
+                        <el-button
+                            :disabled="fileList.length <= 0" :loading="importLoading" hc-btn type="primary"
+                            @click="handleImportClick"
+                        >
+                            确认导入
+                        </el-button>
+                    </div>
+                </template>
+            </HcDialog>
+        </HcCard>
+    </div>
+</template>
+
+<script setup>
+import { onMounted, ref, watch } from 'vue'
+import testApi from '~api/gauge/testdata'
+import { deepClone, downloadBlob, formValidate, getArrValue } from 'js-fast-way'
+import { delMessageV2 } from '~com/message/index.js'
+import { useAppStore } from '~src/store/index'
+import { genFileId } from 'element-plus'
+import { getTokenHeader } from '~src/api/request/header'
+const useAppState = useAppStore()
+//全局变量
+const projectId = ref(useAppState.getProjectId)
+const contractId = ref(useAppState.getContractId)
+//渲染完成
+onMounted(() => {
+    // searchForm.value.type = typeName
+    getDataBytype()
+})
+//类型tab数据和相关处理
+const placeTitle = ref('请输入批准文号进行查询')
+const tabsTypeKey = ref('0')
+const tabsTypeData = ref([
+    { key: '0', name: '原材' },
+    { key: '1', name: '配合比' },
+])
+const tableColumn = [
+    { key: 'name', name: '材料名称' },
+    { key: 'specification', name: '规格型号' },
+    { key: 'manufacturers', name: '生产厂商' },
+    { key: 'storageSite', name: '存放地点或厂号' },
+    { key: 'batchNumber', name: '试验批准文号' },
+    { key: 'total', name: '准备数量' },
+    { key: 'action', name: '操作', width: '130' },
+]
+//原材
+const tableData = ref([])
+//配比
+const matchData = ref([])
+const matchTableColumn = [
+    { key: 'reportNumber', name: '配合比报告编号' },
+    { key: 'designStrength', name: '设计强度' },
+    { key: 'waterBinderRatio', name: '水胶比' },
+    { key: 'cement', name: '水泥' },
+    { key: 'sand', name: '砂' },
+    { key: 'macadamOne', name: '碎石1' },
+    { macadamTwo: 'name', name: '碎石2' },
+    { key: 'macadamThree', name: '碎石3' },
+    { key: 'water', name: '水' },
+    { key: 'admixture', name: '掺加剂' },
+    { key: 'coalAsh', name: '粉煤灰' },
+    { key: 'slagPowder', name: '矿渣粉' },
+    { key: 'slumps', name: '坍落度' },
+    { key: 'bulkDensity', name: '单位体积重' },
+    { key: 'compressiveStrength', name: '28天抗压强度' },
+    { key: 'action', name: '操作', width: '130' },
+]
+const matchtableLoading = ref(false)
+const tabsTypeChange = (item) => {
+    tabsTypeKey.value = item?.key
+    searchForm.value.type = item?.key
+    searchForm.value.current = 1
+    getDataBytype()
+    if (item?.key === '0') {
+        placeTitle.value = '请输入批准文号进行查询'
+        action.value = '/api/blade-manager/rawMaterials/importRawMaterialsInfo'
+    } else {
+        placeTitle.value = '请输入报告编号进行查询'
+        action.value = '/api//blade-manager/mixProportion/importMixProportionInfo'
+    }
+
+}
+//获取原材数据
+
+const getMatchTableData = async () => {
+    matchtableLoading.value = true
+    const { error, code, data } = await testApi.queryListProp({
+        ...searchForm.value,
+        projectId:projectId.value,
+        contractId:contractId.value,
+    })
+    //处理数据
+    matchtableLoading.value = false
+    if (!error && code === 200) {
+        let records = getArrValue(data['records'])
+        if (tabsTypeKey.value === '1') {
+            matchData.value = records
+        } 
+        searchForm.value.total = data.total || 0
+    } else {
+        matchData.value = []
+        searchForm.value.total = 0
+    }
+}
+//获取配合比数据
+const tableLoading = ref(false)
+const getTableData = async () => {
+    tableLoading.value = true
+    const { error, code, data } = await testApi.queryListData({
+        ...searchForm.value,
+        projectId:projectId.value,
+        contractId:contractId.value,
+    })
+    //处理数据
+    tableLoading.value = false
+    if (!error && code === 200) {
+        let records = getArrValue(data['records'])
+        if (tabsTypeKey.value === '0') {
+            tableData.value = records
+        } 
+        searchForm.value.total = data.total || 0
+    } else {
+        tableData.value = []
+        searchForm.value.total = 0
+    }
+}
+const getDataBytype = ()=>{
+    if (tabsTypeKey.value === '0') {
+        getTableData()
+    } else {
+        getMatchTableData()
+    }
+}
+//搜索表单
+const searchForm = ref({
+    searchValue:'',
+    current: 1, size: 20, total: 0,
+})
+//分页被点击
+const pageChange = ({ current, size }) => {
+    searchForm.value.current = current
+    searchForm.value.size = size
+    getDataBytype()
+}
+
+const AddRowClick = ()=>{
+    testModal.value = true
+    formRowValue.value = {}
+    matchformRowValue.value = {}
+}
+
+
+const searchClick = ()=>{
+    searchForm.value.current = 1
+    getDataBytype()
+
+  
+}
+const keyUpEvent = (e)=>{
+    if (e.key === 'Enter') {
+        searchForm.value.current = 1
+        getDataBytype()
+    }
+}
+//新增编辑弹窗
+const testModal = ref (false)
+const formRowValue = ref({})
+const formRowRef = ref(null)
+const rulesRow = {
+    name: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入材料名称',
+    },
+    specification: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入规格型号',
+    },
+    manufacturers: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入生产厂商',
+    },
+    storageSite: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入存放地点或厂号',
+    },
+    batchNumber: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入试验批准文号',
+    },
+    total: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入准备数量',
+    },
+}
+const matchformRowRef = ref(null)
+const matchrulesRow = {
+    reportNumber: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    designStrength: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    waterBinderRatio: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    cement: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    sand: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    macadamOne: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    macadamTwo: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    macadamThree: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    water: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    admixture: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    coalAsh: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    slagPowder: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    slumps: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    bulkDensity: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+    compressiveStrength: {
+        required: false,
+        trigger: 'blur',
+        message: '请输入',
+    },
+}
+const matchformRowValue = ref({})
+const testModalClose = ()=>{
+    testModal.value = false
+}
+const handleLevelEdit = (row)=>{
+    console.log(row, '编辑')
+    testModal.value = true
+    const rows = deepClone(row)
+    formRowValue.value = rows
+}
+const handleLevelDelete = (row)=>{
+    console.log(row, '删除')
+    delMessageV2(async (action, instance, done) => {
+            if (action === 'confirm') {
+                instance.confirmButtonLoading = true
+                delData(row.id)
+                instance.confirmButtonLoading = false
+                done()
+            } else {
+                done()
+            }
+    })
+}
+//原材删除请求
+const delData = async (id) => {
+    const { error, code } = await testApi.delData({ ids: id }, false)
+    //判断状态
+    if (!error && code === 200) {
+        window?.$message?.success('删除成功')
+        getDataBytype()
+    } else {
+        window?.$message?.error('删除失败')
+    }
+}
+//配合比删除请求
+const matchdelData = async (id) => {
+    const { error, code } = await testApi.matchdelData({ ids: id }, false)
+    //判断状态
+    if (!error && code === 200) {
+        window?.$message?.success('删除成功')
+        getDataBytype()
+    } else {
+        window?.$message?.error('删除失败')
+    }
+}
+//配合比
+const handmatchEdit = (row)=>{
+    console.log(row, '编辑')
+    testModal.value = true
+    const rows = deepClone(row)
+    matchformRowValue.value = rows
+}
+const handmathDelete = (row)=>{
+    console.log(row, '删除')
+    delMessageV2(async (action, instance, done) => {
+            if (action === 'confirm') {
+                instance.confirmButtonLoading = true
+                matchdelData(row.id)
+                instance.confirmButtonLoading = false
+                done()
+            } else {
+                done()
+            }
+    })
+    
+}
+const saveFormLoading = ref(false)
+const saveFormClick = async ()=>{
+    console.log('提交')
+    const validate = await formValidate(formRowRef.value)
+    if (validate) {
+        const form = formRowValue.value
+        form.projectId = projectId.value
+        form.contractId = contractId.value
+        if (form.id) {
+            saveFormLoading.value = true
+            const { error, code } = await testApi.updateSave(form, false)
+            //判断状态
+            saveFormLoading.value = false
+            if (!error && code === 200) {
+                testModal.value = false
+                window?.$message?.success('保存成功')
+                getDataBytype()
+            } else {
+                window?.$message?.error('保存失败')
+            }
+        } else {
+            saveFormLoading.value = true
+            const { error, code } = await testApi.addSave(form, false)
+            //判断状态
+            saveFormLoading.value = false
+            if (!error && code === 200) {
+                testModal.value = false
+                window?.$message?.success('新增成功')
+                getDataBytype()
+            } else {
+                window?.$message?.error('新增失败')
+            }
+        }
+    }
+}
+const matchsaveFormClick = async ()=>{
+    console.log('提交配合比')
+    const validate = await formValidate(matchformRowRef.value)
+    if (validate) {
+        const form = matchformRowValue.value
+        form.projectId = projectId.value
+        form.contractId = contractId.value
+        if (form.id) {
+            saveFormLoading.value = true
+            
+            const { error, code } = await testApi.matchupdateSave(form, false)
+            //判断状态
+            saveFormLoading.value = false
+            if (!error && code === 200) {
+                testModal.value = false
+                window?.$message?.success('保存成功')
+                getDataBytype()
+            } else {
+                window?.$message?.error('保存失败')
+            }
+        } else {
+            saveFormLoading.value = true
+            const { error, code } = await testApi.matchaddSave(form, false)
+            //判断状态
+            saveFormLoading.value = false
+            if (!error && code === 200) {
+                testModal.value = false
+                window?.$message?.success('新增成功')
+                getDataBytype()
+            } else {
+                window?.$message?.error('新增失败')
+            }
+        }
+    }
+}
+//导入弹窗
+const importModal = ref(false)
+const importModalClose = ()=>{
+    importModal.value = false
+}
+// const importModalClick = ()=>{
+//     importModal.value = true
+// }
+
+//上传配置
+const uploadRef = ref(null)
+const addition = ref({})
+const fileList = ref([])
+const action = ref('/api/blade-manager/rawMaterials/importRawMaterialsInfo')
+const accept = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'
+
+//导入
+const importLoading = ref(false)
+const importModalClick = () => {
+    addition.value = {
+        projectId: projectId.value,
+        contractId: contractId.value,
+       
+    }
+    importLoading.value = false
+    importModal.value = true
+}
+
+//上传一个文件时,重置
+const handleUploadExceed = (files) => {
+    uploadRef.value?.clearFiles()
+    const file = files[0]
+    file.uid = genFileId()
+    uploadRef.value?.handleStart(file)
+}
+
+//确认导入
+const handleImportClick = () => {
+    uploadRef.value?.submit()
+}
+//上传中
+const handleUploadProgress = () => {
+    importLoading.value = true
+}
+//上传完成
+const handleUploadFinish = () => {
+    importLoading.value = false
+    importModal.value = false
+    window?.$message?.success('导入成功')
+    uploadRef.value?.clearFiles()
+    getDataBytype()
+}
+//上传失败
+const handleUploadError = () => {
+    importLoading.value = false
+    window?.$message?.error('导入失败')
+}
+</script>
+
+<style lang='scss' scoped>
+.hc-layout-box {
+    position: relative;
+    height: 100%;
+}
+</style>