You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

333 lines
7.4 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<my-card title="内控标准">
<template #right>
<n-button class="mr-5px ml-5px" type="info" size="small" @click="uploadShow = true">
<ArrowUpCircleOutline class="mr-2px text-25px w-20px" />
导入标准
</n-button>
<n-button :loading="exportLoading" size="small" type="warning" class="mr-5px ml-5px" @click="exportList">
<ArrowDownCircleOutline class="mr-2px text-25px w-20px" />
导出标准
</n-button>
</template>
<n-data-table :data="data" :columns="columns" :max-height="dataTableConfig.maxHeight"></n-data-table>
</my-card>
<my-dialog
:show="uploadShow"
:title="'导入内控标准'"
width="400px"
@cancel="uploadShow = false"
@submit="submitUpload"
>
<template #content>
<div>
<n-form ref="formModel" style="width: 600px" label-placement="left" label-align="left" :label-width="130">
<n-form-item class="mr-5px ml-190px">
<n-upload
:show-file-list="true"
:style="{ width: formItemWidth }"
:default-upload="true"
:accept="'.xls,.xlsx'"
:directory-dnd="true"
:max="5"
@change="changeUpload"
>
<n-button :style="{ width: formItemWidth }">选择文件</n-button>
<n-upload-dragger>
<div style="margin-bottom: 1px">
<n-icon size="48" :depth="3">
<ArchiveOutline />
</n-icon>
</div>
<n-text style="font-size: 16px">点击或者拖动文件到该区域来上传</n-text>
<n-p depth="3" style="margin: 8px 0 0 0">提示仅允许导入xlsxlsx格式文件</n-p>
</n-upload-dragger>
</n-upload>
</n-form-item>
<n-button class="ml-260px mt-10px" type="primary" dashed @click="importTemplate()"></n-button>
</n-form>
</div>
</template>
</my-dialog>
</div>
</template>
<script setup lang="ts">
import type { Ref } from 'vue';
import { ref, onMounted } from 'vue';
import type { DataTableColumns } from 'naive-ui';
import { useMessage } from 'naive-ui';
import { ArrowUpCircleOutline, ArrowDownCircleOutline, ArchiveOutline } from '@vicons/ionicons5';
import { download } from '@/service/request/helpers';
import { getInternalControlStandard, uploadInternalControlStandard } from '@/service/api/technology/technologyStandard';
import { dataTableConfig } from '@/config/dataTableConfig';
type DataType = {
id?: number;
plantName: string;
};
const message = useMessage();
const exportLoading = ref<boolean>(false);
const formItemWidth = ref<string>('220px');
const uploadShow = ref<boolean>(false);
const uploadFormData = ref<any | null>(null);
function exportList() {
exportLoading.value = true;
download('mes/mesProcessStandard/export', null, `内控标准.xlsx`, undefined)
.then(() => {
exportLoading.value = false;
})
.catch(() => {
exportLoading.value = false;
});
}
function importTemplate() {
exportLoading.value = true;
download('mes/mesProcessStandard/importTemplate', null, `标准模板.xlsx`, undefined)
.then(() => {
exportLoading.value = false;
})
.catch(() => {
exportLoading.value = false;
});
}
const data = ref<DataType[]>([]);
const columns: Ref<DataTableColumns<DataType>> = ref([
{
title: '序号',
key: 'index',
width: 50,
align: 'center',
render: (_row, index) => index + 1
},
{
title: '导体标称直径',
align: 'center',
width: 80,
key: 'standardDiameter'
},
{
title: '漆包线最大外径',
key: 'sfas',
width: 80,
align: 'center',
children: [
{
title: '薄漆膜',
width: 80,
key: 'wireFilmMax'
},
{
title: '厚漆膜',
width: 80,
key: 'wireThickMax'
}
]
},
{
title: '最小漆膜厚度',
width: 80,
align: 'center',
key: 'sfas',
children: [
{
title: '薄漆膜',
width: 80,
key: 'wireFilmMin'
},
{
title: '厚漆膜',
width: 80,
key: 'wireThickMin'
}
]
},
{
title: '最大外径',
align: 'center',
width: 80,
key: 'outsideDiameterMax'
},
{
title: '导体偏差',
align: 'center',
width: 80,
key: 'conductorDeviation'
},
{
title: '导体f值',
align: 'center',
width: 80,
key: 'conductorFNumber'
},
{
title: '最小直流电阻(℃)',
align: 'center',
width: 80,
key: 'dcResistanceMin'
},
{
title: '最大直流电阻(℃)',
align: 'center',
width: 80,
key: 'dcResistanceMax'
},
{
title: '伸长率',
align: 'center',
width: 80,
key: 'elongation'
},
{
title: '回弹性',
align: 'center',
width: 80,
key: 'resilience'
},
{
title: '圆棒卷绕',
align: 'center',
width: 80,
key: 'wind'
},
{
title: '拉伸',
width: 80,
align: 'center',
key: 'stretch'
},
{
title: '急拉断',
align: 'center',
width: 80,
key: 'snapBreak'
},
{
title: '剥离扭绞',
align: 'center',
width: 80,
key: 'strippingTwist'
},
{
title: '热冲击',
align: 'center',
width: 80,
key: 'thermalShock'
},
{
title: '软化冲击',
align: 'center',
width: 80,
key: 'softeningImpact'
},
{
title: '软化击穿',
align: 'center',
width: 80,
key: 'softeningBreakdown'
},
{
title: '刮漆1',
width: 80,
align: 'center',
key: 'scraperPaintingOne'
},
{
title: '刮漆2',
align: 'center',
width: 80,
key: 'scraperPaintingTwo'
},
{
title: '耐溶剂',
width: 80,
align: 'center',
key: 'solventResistance'
},
{
title: '室温击穿电压',
align: 'center',
width: 80,
key: 'roomtempBreakdown'
},
{
title: '高压针孔',
align: 'center',
width: 80,
key: 'highPressurePinhole'
},
{
title: '盐水针孔',
align: 'center',
width: 80,
key: 'brinePinhole'
},
{
title: '焊锡性',
width: 80,
align: 'center',
key: 'solderability'
},
{
title: '外观',
width: 80,
align: 'center',
key: 'appearance'
},
{
title: '包装',
width: 80,
align: 'center',
key: 'package'
},
{
title: '环保材料',
width: 80,
align: 'center',
key: 'envMaterial'
},
{
title: '其他要求',
width: 80,
align: 'center',
key: 'otherRequirements'
}
]);
function submitUpload() {
if (uploadFormData.value === null) {
message.warning('请选择文件进行上传');
return;
}
uploadInternalControlStandard(uploadFormData.value, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(res => {
if (res.code === 200) {
message.success('上传成功');
uploadShow.value = false;
init();
}
});
}
function changeUpload(files) {
if (files.fileList.length === 0) {
uploadFormData.value = null;
return;
}
uploadFormData.value = files.file;
}
function init() {
getInternalControlStandard().then(res => {
data.value = res.data;
});
}
onMounted(() => {
init();
});
</script>
<style scoped></style>