<template>
|
<div class="app-container">
|
<!-- 用户列表 -->
|
<el-col :lg="24" :xs="24">
|
<div class="search-bar">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form-item label="序列号:" prop="status">
|
<el-select
|
v-model="queryParams.serialNumber"
|
filterable
|
placeholder="全部"
|
class="!w-[200px]"
|
@change="handleQuery"
|
>
|
<el-option label="全部" value="" />
|
<el-option
|
v-for="item in serialNumberList"
|
:key="item"
|
:label="item"
|
:value="item"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" icon="search" @click="handleQuery">搜索</el-button>
|
<el-button icon="refresh" @click="handleResetQuery">重置</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
</el-col>
|
<el-card shadow="never">
|
<el-table v-loading="loading" :data="pageData">
|
<el-table-column
|
show-overflow-tooltip
|
label="序列号"
|
min-width="210"
|
align="center"
|
prop="serialNumber"
|
/>
|
<el-table-column
|
show-overflow-tooltip
|
label="SN码"
|
min-width="180"
|
align="center"
|
prop="snCode"
|
/>
|
<el-table-column
|
show-overflow-tooltip
|
label="版本号"
|
min-width="120"
|
align="center"
|
prop="version"
|
/>
|
<el-table-column
|
show-overflow-tooltip
|
label="更新内容"
|
min-width="210"
|
align="center"
|
prop="description"
|
/>
|
<el-table-column
|
show-overflow-tooltip
|
label="软件包上传时间"
|
width="210"
|
align="center"
|
prop="createTime"
|
/>
|
<el-table-column
|
show-overflow-tooltip
|
label="软件包上传人"
|
width="210"
|
align="center"
|
prop="uploadUserName"
|
/>
|
<el-table-column align="center" label="操作" fixed="right" width="220">
|
<template #default="{ row }">
|
<el-button
|
v-hasPerm="['sys:user:add']"
|
type="primary"
|
icon="upload"
|
link
|
size="small"
|
@click="handleUpload(row)"
|
>
|
上传
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<pagination
|
v-if="total > 0"
|
v-model:total="total"
|
v-model:page="queryParams.pageNum"
|
v-model:limit="queryParams.pageSize"
|
@pagination="handleQuery"
|
/>
|
</el-card>
|
|
<el-dialog v-model="uploadDialog" draggable title="软件包上传" align-center width="auto">
|
<upload-software
|
v-if="uploadDialog"
|
v-model:close="uploadDialog"
|
:data="rowRef"
|
@success="handleSuccess"
|
></upload-software>
|
</el-dialog>
|
|
<el-dialog v-model="downloadDialog" draggable title="软件包下载" align-center width="auto">
|
<download-file
|
v-if="downloadDialog"
|
v-model:close="downloadDialog"
|
:data="rowRef"
|
></download-file>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import SoftwareApi, { SoftwareInfo, SearchParams } from "@/api/software";
|
import UploadSoftware from "@/views/dashboard/compoents/uploadSoftware.vue";
|
import DownloadFile from "@/views/dashboard/compoents/downloadFile.vue";
|
|
defineOptions({
|
name: "Dashboard",
|
inheritAttrs: false,
|
});
|
|
const queryParams = reactive<SearchParams>({
|
snCode: "",
|
materialCode: "",
|
serialNumber: "",
|
pageNum: 1,
|
pageSize: 20,
|
});
|
const pageData = ref<SoftwareInfo[]>();
|
const total = ref(0);
|
const loading = ref(false);
|
|
function handleQuery() {
|
loading.value = true;
|
SoftwareApi.search(queryParams)
|
.then((result) => {
|
const { code, data } = result;
|
if (code === 1) {
|
pageData.value = data.list;
|
total.value = data.total;
|
} else {
|
pageData.value = [];
|
total.value = 0;
|
}
|
})
|
.finally(() => {
|
searchSerialNumber();
|
loading.value = false;
|
});
|
}
|
|
const queryFormRef = ref();
|
function handleResetQuery() {
|
queryFormRef.value.resetFields();
|
queryParams.pageNum = 1;
|
queryParams.snCode = "";
|
queryParams.serialNumber = "";
|
queryParams.materialCode = "";
|
handleQuery();
|
}
|
|
const serialNumberList = ref<string[]>([]);
|
function searchSerialNumber() {
|
SoftwareApi.searchSerial().then((result) => {
|
const { code, data } = result;
|
if (code === 1) {
|
serialNumberList.value = [...new Set(data)];
|
} else {
|
serialNumberList.value = [];
|
}
|
});
|
}
|
|
const uploadDialog = ref(false);
|
|
function handleSuccess() {
|
uploadDialog.value = false;
|
handleQuery();
|
}
|
|
const downloadDialog = ref(false);
|
const rowRef = ref<SoftwareInfo>();
|
|
function handleUpload(data: SoftwareInfo) {
|
rowRef.value = data;
|
uploadDialog.value = true;
|
}
|
|
onMounted(() => {
|
searchSerialNumber();
|
handleQuery();
|
});
|
</script>
|
|
<style lang="scss" scoped></style>
|