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.
udi-spms-vue/src/views/basic/product/udiinfoExport.vue

267 lines
7.2 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>
<el-card>
<el-form :model="query" class="query-form" size="mini" label-width="100px" v-show="showSearch">
<el-row>
<el-col :span="6">
<el-form-item label="记录ID:">
<el-input v-model="filterQuery.genKey" style="width: 90%" placeholder="请输入记录ID" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="top-right-btn">
<el-button-group style="display:flex;">
<el-button icon="el-icon-view" type="primary" @click="hideSearch">显示/隐藏搜索栏</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="onReset">重置</el-button>
<el-button type="primary" icon="el-icon-search" @click="Onsearch">查询</el-button>
<el-button type="primary" icon="el-icon-upload2" @click="exportExcel">导出医疗器械信息</el-button>
</el-button-group>
</div>
<el-divider style="margin: 15px"></el-divider>
<el-table v-loading="loading" :data="list" style="width: 100%" @selection-change="handleSelectionChange" border
highlight-current-row>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="记录ID" prop="genKey" show-overflow-tooltip></el-table-column>
<el-table-column label="更新日期" prop="updateTime" show-overflow-tooltip></el-table-column>
<el-table-column label="状态" prop="status" show-overflow-tooltip>
<template slot-scope="scope">
<el-tag :type="statusFilterType(scope.row.status)">{{ status[scope.row.status] }}</el-tag>
</template>
</el-table-column>
<el-table-column label="下载次数" prop="dlCount" show-overflow-tooltip>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-button type="text" @click.native.stop="downloadExcel(scope.row)">下载</el-button>
<el-button type="text" @click.native.stop="deleteDialog(scope.row.id)"></el-button>
</template>
</el-table-column>
</el-table>
<el-dialog
title="导出医疗器械产品信息"
:visible.sync="udiImportDetailVisible"
width="80%"
append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
v-if="udiImportDetailVisible"
>
<udiInfoSelect :selectType="selectType" v-on:cancelDialog="cancelDialog"
></udiInfoSelect>
</el-dialog>
<pagination
v-show="total>0"
:total="total"
:limit.sync="filterQuery.limit"
:page.sync="filterQuery.page"
@pagination="handleCurrentChange"
></pagination>
</el-card>
</div>
</template>
<script>
import axios from "axios";
import {filterLog, downloadLog, deleteLog} from "@/api/basic/udiInfoExport";
import udiInfoSelect from "./udIInfoSelect";
import {formatDate} from "@/utils/date";
export default {
data() {
return {
showSearch: true,
filterQuery: {
type: 3,
genKey: null,
status: null,
fromType: null,
page: 1,
limit: 20,
thirdSysFk: null,
},
selectType: 0,
udiImportDetailVisible: false,
list: [],
detailList: [],
thirdSys: [],
thirdSysDetail: null,
total: 0,
editQuery: null,
fromStatus: {
0: "产品信息",
1: "库存信息",
2: "异常第三方上传"
},
status: {
0: "等待处理",
1: "正在处理",
2: "处理异常",
3: "处理完成"
},
uploadFileUrl: null,
uploadData: {
thirdSys: "thirdId",
},
};
},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
type: 3,
fromType: null,
genKey: null,
status: null,
page: 1,
limit: 20,
thirdSysFk: null,
};
this.getList();
},
hideSearch() {
this.showSearch = !this.showSearch;
},
Onsearch() {
this.filterQuery.page = 1;
this.getList();
},
getList() {
this.loading = true;
filterLog(this.filterQuery)
.then((response) => {
this.loading = false;
this.list = response.data.list || [];
this.total = response.data.total || 0;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
},
exportExcel() {
this.selectType = 0;
this.udiImportDetailVisible = true;
},
uploadSmp() {
this.selectType = 1;
this.udiImportDetailVisible = true;
},
downloadExcel(row) {
let url = process.env.VUE_APP_BASE_API + "/udiwms/products/exportLog/download" + "?genKey=" + row.genKey;
let a = document.createElement("a");
var timestamp = formatDate(new Date(), "yyyyMMddhhmmss")
fetch(url)
.then((res) => res.blob())
.then((blob) => {
a.href = URL.createObjectURL(blob);
console.log(a.href);
a.download = "BaseProduct_" + timestamp + ".udi";
document.body.appendChild(a);
a.click();
this.getList();
});
},
cancelDialog(val) {
this.udiImportDetailVisible = false;
if (val) {
this.getList();
}
},
handleCurrentChange(val) {
this.filterQuery.page = val.page;
this.getList();
},
deleteDialog(rowId) {
this.$confirm("此操作将删除该产品信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let dQuery = {
id: rowId,
};
deleteLog(dQuery)
.then((response) => {
this.loading = false;
if (response.code == 20000) {
this.$message.success("删除成功");
} else {
this.$message.error(response.message);
}
this.getList();
})
.catch(() => {
this.loading = false;
});
})
.catch(() => {
});
},
handleChange(response, files, fileList) {
console.log(response);
if (response.code != 20000) {
this.$message.error(response.message);
} else {
// console.log(files[0] + "\n" + this.fileList[0] + "\n" + fileList[0]);
this.getList();
this.$message.success("文件上传成功,请稍后刷新查看");
}
},
statusFilterType(status) {
const statusMap = {
0: "warning",
1: "warning",
2: "danger",
3: "success",
};
return statusMap[status];
},
},
mounted() {
},
components: {udiInfoSelect},
created() {
// this.getBasicThirdSys();
this.getList();
},
};
</script>
<style>
.itemTag {
float: left;
text-align: left;
margin-top: 10px;
width: 100px;
}
.text {
font-size: 13px;
font-family: "Microsoft YaHei";
}
.el-row {
display: flex;
flex-wrap: wrap;
}
.el-col {
border-radius: 4px;
flex-wrap: wrap;
}
</style>