耗材字典导入导出代码提交

prod
郑明梁 2 years ago
parent 4b300fa389
commit 41f2177f4e

@ -0,0 +1,34 @@
import axios from "@/utils/request";
export function getUdiInfos(query) {
return axios({
url: "/udiwms/udiinfo/filterUdi",
method: "get",
params: query
});
}
export function filterCompany(query) {
return axios({
url: "/udiwms/udiinfo/filterCompany",
method: "get",
params: query
});
}
export function filterByUuid(query) {
return axios({
url: "/udiwms/udiinfo/local/filterByUuid",
method: "get",
params: query
});
}
export function filterByVersion(query) {
return axios({
url: "/udiwms/syncdi/version",
method: "get",
params: query
});
}

@ -0,0 +1,33 @@
import axios from "@/utils/request";
export function filterLog(query) {
return axios({
url: "/udiwms/products/exportLog/filter",
method: "get",
params: query
});
}
export function deleteLog(query) {
return axios({
url: "/udiwms/products/exportLog/deleteLog",
method: "post",
data: query
});
}
export function downloadLog(query) {
return axios({
url: "/udiwms/products/exportLog/download",
method: "get",
params: query
});
}
export function exportExcel(query) {
return axios({
url: "/udiwms/products/importLog/export",
method: "post",
data: query
});
}

@ -0,0 +1,191 @@
import axios from "@/utils/request";
export function getUdiInfos(query) {
return axios({
url: "/udi/udirel/filterUdi",
method: "get",
params: query
});
}
export function getAllUdiInfos(query) {
return axios({
url: "/udi/udirel/download",
method: "get",
params: query
});
}
export function getMutiUdiInfos(query) {
return axios({
url: "/udi/udirel/mutil/download",
method: "get",
params: query
});
}
export function getSmUdiInfos(query) {
return axios({
url: "/udi/udirel/filterSmUdi",
method: "get",
params: query
});
}
export function deletetUdiInfos(query) {
return axios({
url: "/udi/udirel/deleteById",
method: "post",
data: query
});
}
export function updatetUdiInfos(query) {
return axios({
url: "/udi/udirel/update",
method: "post",
data: query
});
}
export function checkExitUdi(query) {
return axios({
url: "/udi/udirel/check/udi",
method: "post",
data: query
});
}
export function combineUdi(query) {
return axios({
url: "/udi/udirel/revleance",
method: "post",
data: query
});
}
export function combineAllUdi(query) {
return axios({
url: "/udi/udirel/combineAll",
method: "get",
params: query
});
}
export function modifyRel(query) {
return axios({
url: "/udi/udirel/modifyRel",
method: "post",
data: query
});
}
export function addErp(query) {
return axios({
url: "/udi/udirel/addErp",
method: "post",
data: query
});
}
export function addAllErp(query) {
return axios({
url: "/udi/udirel/addAllErp",
method: "post",
data: query
});
}
export function updateErpProduct(query) {
return axios({
url: "/udi/udirel/updateErp",
method: "get",
params: query
});
}
export function uploadSmp(query) {
return axios({
url: "/udiwms/smp/udirl/upload",
method: "post",
data: query
});
}
export function disableUdi(query) {
return axios({
url: "/udi/udirel/disable",
method: "post",
data: query
});
}
export function thirdSysDetail(query) {
return axios({
url: "/udiwms/udirel/thirdSys/detail",
method: "get",
params: query
});
}
export function removeRl(query) {
return axios({
url: "/udiwms/udirl/thirdSys/remove",
method: "get",
params: query
});
}
export function removeDiRl(query) {
return axios({
url: "/udiwms/udirl/di/remove",
method: "get",
params: query
});
}
export function sysFilter(query) {
return axios({
url: "/udiwms/udirel/thirdSys/filter",
method: "get",
params: query
});
}
export function spcombie(query) {
return axios({
url: "/udiwms/udiinfo/spcombie",
method: "get",
params: query
});
}
export function lockStatus(query) {
return axios({
url: "/udiwms/udirl/lock/status",
method: "post",
data: query
});
}
export function changeVersion(query) {
return axios({
url: "/udi/udirel/changeVersion",
method: "post",
data: query
});
}

@ -0,0 +1,35 @@
import axios from "@/utils/request";
export function filterDetail(query) {
return axios({
url: "/udiwms/products/importLog/filterDetail",
method: "get",
params: query
});
}
export function filterLog(query) {
return axios({
url: "/udiwms/products/importLog/filter",
method: "get",
params: query
});
}
export function deleteLog(query) {
return axios({
url: "/udiwms/products/importLog/deleteLog",
method: "post",
data: query
});
}
export function downloadSmp(query) {
return axios({
url: "/udiwms/products/smp/download",
method: "get",
params: query
});
}

@ -25,13 +25,14 @@
<el-table v-loading="loading" :data="list" style="width: 100%" border highlight-current-row @selection-change="handleSelectionChange">
<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 l abel="更新日期" prop="updateTime" 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="下载信息" prop="remark" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-button type="text" size="small" @click.native.stop="downloadExcel(scope.row)">下载</el-button>
@ -152,6 +153,7 @@
},
downloadExcel(row) {
axios.get("./config.json").then(res => {
debugger
let baseUrl = res.data.BASE_URL;
let href = baseUrl + "/udiwms/corps/exportLog/download" +
"?genKey=" + row.genKey;

@ -47,6 +47,7 @@
<el-table-column label="记录ID" prop="genKey" show-overflow-tooltip></el-table-column>
<el-table-column label="来源" prop="fromType" show-overflow-tooltip></el-table-column>
<el-table-column label="更新日期" prop="updateTime" show-overflow-tooltip></el-table-column>
<el-table-column label="导入信息" prop="remark" 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>

@ -0,0 +1,583 @@
<template>
<div>
<el-card>
<el-form :model="filterQuery" label-width="100px" v-show="showSearch">
<el-row>
<el-col :span="6" >
<el-form-item label="UDI码:">
<el-input v-model="filterQuery.udiCode"
style="width: 90%"
placeholder="请扫描或输入UDI码"
clearable="true"
@keyup.enter.native="keyup_submit($event)"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="DI:">
<el-input v-model="filterQuery.unionCode" style="width: 90%" placeholder="请输入DI/医保编码/商品条码" clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="产品通用名:">
<el-input v-model="filterQuery.cpmctymc" style="width: 90%" placeholder="请输入产品通用名" clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="规格型号:">
<el-input v-model="filterQuery.ggxh" style="width: 90%" placeholder="请输入规格型号" clearable="true"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6" >
<el-form-item label="过滤条件:">
<el-select v-model="filterQuery.filterType" style="width: 90%" placeholder="请选择过滤对照条件">
<el-option
v-for="item in filterList"
:key="item.filterType"
:label="item.sysName"
:value="item.filterType">
<span style="float: left">{{ item.sysName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="生产企业:">
<el-input v-model="filterQuery.ylqxzcrbarmc" style="width: 90%" placeholder="请输入生产企业/注册备案人" clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="外部系统:">
<el-input v-model="filterQuery.thrPiId" style="width: 90%" placeholder="请输入第三方产品编码" clearable="true"></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="getList"></el-button>
<el-button type="primary" icon="el-icon-upload2" @click="selectExport" v-if="selectType==0"></el-button>
<el-button type="primary" icon="el-icon-upload2" @click="allExport" v-if="selectType==0"></el-button>
<el-button type="primary" icon="el-icon-top-upload" @click="uploadSMP" v-if="selectType==1"></el-button>
<el-button type="primary" icon="el-icon-top-upload" @click="allUploadSMP" v-if="selectType==1"></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 type="selection" width="55"></el-table-column>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="最小销售产品标识" prop="nameCode" width="140" show-overflow-tooltip></el-table-column>
<el-table-column label="产品编码" prop="thirdId" show-overflow-tooltip></el-table-column>
<el-table-column label="生产企业" prop="ylqxzcrbarmc" show-overflow-tooltip></el-table-column>
<el-table-column label="产品通用名" prop="cpmctymc" show-overflow-tooltip></el-table-column>
<el-table-column label="规格型号" prop="ggxh" show-overflow-tooltip></el-table-column>
<el-table-column label="注册/备案凭证" prop="zczbhhzbapzbh" show-overflow-tooltip></el-table-column>
<el-table-column label="器械类别" prop="qxlb" show-overflow-tooltip></el-table-column>
<el-table-column width="60" label="操作">
<template slot-scope="scope">
<el-button type="text" @click.native.stop="handleModifyClick(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog title="产品信息编辑" :visible.sync="editDialogVisible" width="80%" :close-on-click-modal="false" :close-on-press-escape="false" append-to-body v-if="editDialogVisible">
<el-table :data="sysList" style="width: 100%" border highlight-current-row>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="第三方系统名称" prop="sysName" show-overflow-tooltip></el-table-column>
<el-table-column label="第三方产品名称" prop="thirdName" show-overflow-tooltip></el-table-column>
<el-table-column label="第三方产品ID" prop="thirdId" show-overflow-tooltip></el-table-column>
</el-table>
<el-table v-loading="loading" :data="detailList" style="width: 100%; margin-top: 20px" border @current-change="handleDetail" border highlight-current-row>
<el-table-column label="产品标识" prop="nameCode" show-overflow-tooltip></el-table-column>
<el-table-column label="产品通用名" prop="cpmctymc" show-overflow-tooltip></el-table-column>
<el-table-column label="包装级别" prop="packLevel" show-overflow-tooltip></el-table-column>
<el-table-column label="包装层级" prop="bzcj" show-overflow-tooltip></el-table-column>
</el-table>
<el-form :model="editQuery" :rules="rules" ref="editQuery" label-width="120px" style="margin-top: 20px">
<el-row>
<el-col :span="12">
<el-form-item label="产品名称" prop="cpmctymc">
<el-input style="width: 90%" size="small" splaceholder="请输入产品名称" :disabled="true" v-model="editQuery.cpmctymc"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="产品标识" prop="nameCode">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入产品标识" v-model="editQuery.nameCode"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="规格型号" prop="ggxh">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入内容" v-model="editQuery.ggxh"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="器械类别" prop="qxlb">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入器械类别" v-model="editQuery.qxlb"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="产品类别" prop="cplb">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入产品类别" v-model="editQuery.cplb"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="分类编码" prop="flbm">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入分类编码" v-model="editQuery.flbm"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="商品条码" prop="sptm">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入商品条码" v-model="editQuery.sptm"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="医保编码" prop="ybbm">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入医保编码" v-model="editQuery.ybbm"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="医疗器械注册人" prop="ylqxzcrbarmc">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入医疗器械注册人" v-model="editQuery.ylqxzcrbarmc"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="注册人英文名称" prop="ylqxzcrbarywmc">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入注册人英文名称" v-model="editQuery.ylqxzcrbarywmc"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="统一社会信用号" prop="tyshxydm">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入统一社会信用号" v-model="editQuery.tyshxydm"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="注册证/备案号" prop="zczbhhzbapzbh">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入注册证/备案号" v-model="editQuery.zczbhhzbapzbh"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="上级产品编码" prop="sjcpbm">
<el-input style="width: 90%" :disabled="true" size="small" splaceholder="请输入上级产品编码" v-model="editQuery.sjcpbm"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="包装级别" prop="packLevel">
<el-input style="width: 90%" size="small" splaceholder="请输入包装级别" :disabled="true" v-model="editQuery.packLevel"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="包装单位/包装级别" prop="bzcj">
<el-input style="width: 90%" size="small" splaceholder="请输入包装单位/包装级别" v-model="editQuery.bzcj" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="包含下级包装数量" prop="bhxjsl">
<el-input style="width: 90%" size="small" splaceholder="请输入包含下级包装数量" :disabled="true" v-model="editQuery.bhxjsl"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="包含下级产品编码" prop="bhxjcpbm">
<el-input style="width: 90%" size="small" :disabled="true" splaceholder="请输入包含下级产品编码" v-model="editQuery.bhxjcpbm"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="包含最小销售包装数量" prop="bhzxxsbzsl">
<el-input style="width: 90%" size="small" :disabled="true" splaceholder="请输入包含最小销售包装数量" v-model="editQuery.bhzxxsbzsl"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" class="el-col">
<el-form-item label="最小包装单元内包含使用单元数量" prop="zxxsbzbhsydysl">
<el-input style="width: 90%" :disabled="!checked" size="small" splaceholder="请输入最小包装单元内包含使用单元数量" v-model="editQuery.zxxsbzbhsydysl"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" class="el-col">
<el-form-item label="允许科室多次使用多人份耗材" prop="name">
<el-checkbox v-model="checked" class="text item itemTag"
>允许科室多次使用多人份耗材
</el-checkbox>
</el-form-item>
</el-col>
</el-row>
</el-form>
</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 {
getUdiInfos,
updateErpProduct,
thirdSysDetail,
} from "@/api/basic/udiRelevance";
import {udiUpload} from "@/api/thrsys/smp"
import {exportExcel} from "@/api/basic/udiInfoExport"
import {selectSysParamByKey} from "@/api/param/systemParamConfig";
import {filterByUuid} from "@/api/basic/udiInfo";
export default {
name: "UdIInfoSelect",
props: {
selectType: {
type: Object,
required: true,
},
},
data() {
return {
filterQuery: {
uuids: [],
ylqxzcrbarmc: "",
cpmctymc: "",
nameCode: "",
page: 1,
limit: 20,
addType: 1,
},
showSearch: true,
editQuery: null,
relevanceEdit: {
id: null,
thirdId: "",
isUseDy: false,
},
isImport: false,
isImportUdi: false,
isUploadSmp: false,
isImportFile: false,
uploadFileUrl: null,
checked: false,
list: [],
detailList: [],
sysList: [],
total: 0,
thirdNo: "",
uuid: "111",
thirdId: null,
relId: "",
thisData: {
nameCode: null,
cpmctymc: null,
ggxh: null
},
multipleSelection: [],
editDialogVisible: false,
selectUdiDialogVisible: false,
selectErpDialogVisible: false,
selectLocalVisible: false,
};
},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
uuids: [],
ylqxzcrbarmc: "",
cpmctymc: "",
nameCode: "",
page: 1,
limit: 20,
addType: 1,
};
this.getList();
},
hideSearch() {
this.showSearch = !this.showSearch;
},
getList() {
this.loading = true;
getUdiInfos(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;
});
},
getDetailList(detailQuery) {
this.loading = true;
filterByUuid(detailQuery)
.then((response) => {
this.loading = false;
this.detailList = response.data || [];
})
.catch(() => {
this.loading = false;
this.detailList = [];
});
},
handleDetail(row) {
this.editQuery = row;
console.log(row);
},
selectExport() {
var selectData = this.multipleSelection;
selectData.forEach((obj) => {
this.filterQuery.uuids.push(obj.uuid);
});
this.allExport();
},
allExport() {
exportExcel(this.filterQuery)
.then((response) => {
if (response.code == 20000) {
this.$message({
type: "success",
message: "导出成功后台正在生成Json文件请稍后刷新查看",
});
} else {
this.$message({
type: "error",
message: response.message,
});
}
this.$emit("cancelDialog", true);
})
.catch(() => {
this.$message({
type: "error",
message: "上传失败",
});
});
},
intentDetail() {
this.isImportUdi = false;
this.selectUdiDialogVisible = true;
},
intentImportErp(val) {
this.uuid = val.uuid;
this.relId = val.id;
this.isImport = true;
this.thisData = val;
this.selectErpDialogVisible = true;
},
uploadSMP() {
var selectData = this.multipleSelection;
selectData.forEach((obj) => {
this.filterQuery.uuids.push(obj.uuid);
});
this.allUploadSMP();
},
allUploadSMP() {
udiUpload(this.filterQuery)
.then((response) => {
if (response.code == 20000) {
this.$message({
type: "success",
message: "上传成功!",
});
} else {
this.$message({
type: "error",
message: response.message,
});
}
this.$emit("cancelDialog", true);
})
.catch(() => {
this.$message({
type: "error",
message: "上传失败",
});
this.$emit("cancelDialog", true);
});
},
handleSelectionChange(val) {
console.log("----" + val);
this.multipleSelection = val;
},
handleCurrentChange(val) {
this.filterQuery.page = val.page;
this.getList();
},
handleModifyClick(row) {
this.editDialogVisible = true;
this.editQuery = row;
this.relevanceEdit = {
id: row.id,
thirdId: row.thirdId,
isUseDy: row.isUseDy,
};
this.checked = row.isUseDy == 1;
let ttquery = {
uuid: row.uuid,
page: 1,
limit: 10,
};
console.log("this.editQuery.isUseDy = " + this.editQuery.isUseDy);
this.getDetailList(ttquery);
this.getThirdSysDetail();
},
closeUdi(val) {
this.selectUdiDialogVisible = false;
this.selectErpDialogVisible = false;
this.selectLocalVisible = false;
if (val) {
this.getList();
}
},
getThirdSysDetail() {
let query = {
id: this.relevanceEdit.id,
};
thirdSysDetail(query)
.then((response) => {
this.loading = false;
this.sysList = response.data.list || [];
})
.catch(() => {
this.loading = false;
this.sysList = [];
});
},
uploadErpProduct() {
updateErpProduct()
.then((response) => {
if (response.code == 20000) {
this.$message({
type: "success",
message: response.data,
});
} else {
this.$message.error(response.message);
}
})
.catch(() => {
});
},
closeDialog() {
this.selectErpDialogVisible = false;
this.selectLocalVisible = false;
},
selectSysParam() {
let query = {
paramKey: "smp_isUploadProuct",
};
selectSysParamByKey(query).then((response) => {
if (response.code == 20000) {
if (response.data.paramValue == "1") {
this.isUploadSmp = true;
}
}
});
let query1 = {
paramKey: "upload_pi_file_enabled",
};
selectSysParamByKey(query1).then((response) => {
if (response.code == 20000) {
if (response.data.paramValue == "1") {
this.isImportFile = true;
}
}
});
let query2 = {
paramKey: "upload_pi_file_url",
};
selectSysParamByKey(query2).then((response) => {
if (response.code == 20000) {
this.uploadFileUrl = response.data.paramValue;
}
});
},
},
mounted() {
},
components: {},
created() {
this.getList();
this.selectSysParam();
},
};
</script>
<style scoped>
.el-form-item--mini.el-form-item {
margin-bottom: 9px;
}
.itemTag {
float: left;
text-align: left;
margin-top: 10px;
width: 25%;
}
.text {
font-size: 13px;
font-family: "Microsoft YaHei";
}
.el-col {
border-radius: 4px;
flex-wrap: wrap;
}
</style>

@ -0,0 +1,291 @@
<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"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处理状态:">
<el-select v-model="filterQuery.status" style="width: 90%" placeholder="请选择处理状态">
<el-option label="全部" value=""></el-option>
<el-option label="处理中" value="0"></el-option>
<el-option label="已处理" value="1"></el-option>
<el-option label="异常" value="2"></el-option>
</el-select>
</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="search" @click="getList"></el-button>
<el-upload :action="uploadFileUrl" multiple :limit="1" :data="uploadData" :show-file-list="false" :on-success="handleChange" :file-list="fileList">
<el-button size="mini" icon="el-icon-upload2" type="primary">导入器械信息</el-button>
</el-upload>
</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="fromType" 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="remark" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<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%"
:close-on-click-modal="false"
:close-on-press-escape="false"
v-if="udiImportDetailVisible"
>
<udiInfoImportDetail :currentRow="currentRow" :closeDialog="cancelDialog"></udiInfoImportDetail>
</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 {filterDetail, filterLog, deleteLog, downloadSmp} from "@/api/basic/udiinfoImport";
import {getBasicThirdSys} from "@/api/basic/basicThirdSys";
import udiInfoImportDetail from "./udiInfoImportDetail";
export default {
data() {
return {
showSearch: true,
filterQuery: {
genKey: null,
status: null,
fromType: null,
page: 1,
limit: 20,
thirdSysFk: null,
},
udiImportDetailVisible: false,
checked: false,
list: [],
detailList: [],
thirdSys: [],
thirdSysDetail: null,
total: 0,
currentRow: null,
editQuery: null,
fromStatus: {
0: "产品信息",
1: "库存信息",
2: "异常第三方上传"
},
status: {
0: "等待处理",
1: "正在处理",
2: "处理异常",
3: "处理完成"
},
uploadFileUrl: null,
uploadData: {
thirdSys: "thirdId",
},
templateDlUrl: null,
};
},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
fromType: null,
genKey: null,
status: null,
page: 1,
limit: 20,
thirdSysFk: null,
};
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;
});
},
hideSearch() {
this.showSearch = !this.showSearch;
},
genInCode() {
this.selectBasicUdiVisible = true;
},
handleDetailClick(row) {
this.currentRow = row;
console.log(this.currentRow.genKey)
this.udiImportDetailVisible = true;
},
cancelDialog() {
this.udiImportDetailVisible = false;
},
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(() => {
});
},
getBasicThirdSys() {
let query = {
enabled: true,
};
getBasicThirdSys(query)
.then((response) => {
this.thirdSys = response.data.list || [];
// this.filterQuery.thirdSysFk = this.thirdSys[0].thirdId;
this.getList();
})
.catch(() => {
this.loading = false;
this.list = [];
});
axios.get("./config.json").then(res => {
let response = res.data.BASE_URL;
this.uploadFileUrl = response + "/udiwms/products/importLog/upload";
});
axios.get("./config.json").then(res => {
let response = res.data.SERVER_IP;
this.templateDlUrl = response + "/已对照产品信息模板.xlsx";
});
},
jumpDl() {
window.open(this.templateDlUrl, '_blank');
},
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(response.data);
}
},
statusFilterType(status) {
const statusMap = {
0: "warning",
1: "warning",
2: "danger",
3: "success",
};
return statusMap[status];
},
dlSmp() {
this.loading = true;
downloadSmp()
.then((response) => {
this.loading = false;
this.$message.success(response.data);
this.getList();
})
.catch(() => {
this.loading = false;
});
}
},
mounted() {
},
components: {udiInfoImportDetail},
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>

@ -0,0 +1,177 @@
<template>
<div>
<el-card>
<el-form :model="query" size="mini" label-width="100px" v-show="showSearch">
<el-row>
<el-col :span="6">
<el-form-item label="UDI编码:">
<el-input v-model="filterQuery.udiCode" style="width: 90%" placeholder="请输入UDI编码"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处理状态:">
<el-select v-model="filterQuery.status" style="width: 90%" placeholder="请选择处理状态">
<el-option label="全部" value=""></el-option>
<el-option label="未处理" value="0"></el-option>
<el-option label="已完成" value="1"></el-option>
<el-option label="异常" value="2"></el-option>
</el-select>
</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="getList"></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="UDI编码" prop="udiCode" show-overflow-tooltip></el-table-column>
<el-table-column label="产品ID1" prop="thirdId" show-overflow-tooltip></el-table-column>
<el-table-column label="产品ID2" prop="thirdId1" show-overflow-tooltip></el-table-column>
<el-table-column label="产品ID3" prop="thirdId2" show-overflow-tooltip></el-table-column>
<el-table-column label="产品ID4" prop="thirdId3" show-overflow-tooltip></el-table-column>
<el-table-column label="产品ID5" prop="thirdId4" show-overflow-tooltip></el-table-column>
<el-table-column label="医保编码" width="100" prop="ybbm" show-overflow-tooltip></el-table-column>
<el-table-column label="商品条码" prop="sptm" show-overflow-tooltip></el-table-column>
<el-table-column width="160" label="是否以使用单元入库" prop="isUseDy" 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="remark" show-overflow-tooltip></el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:limit.sync="filterQuery.limit"
:page.sync="filterQuery.page"
@pagination="handleCurrentChange"
></pagination>
</el-card>
</div>
</template>
<script>
import {
filterDetail,
} from "@/api/basic/udiinfoImport";
export default {
name: "udiImportDetail",
props: {
currentRow: {
type: Object,
required: true,
},
},
data() {
return {
showSearch: true,
filterQuery: {
genKey: null,
udiCode: null,
status: null,
page: 1,
limit: 10,
},
list: [],
detailList: [],
total: 0,
status: {
0: "未处理",
1: "处理失败",
2: "处理成功"
},
};
},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
genKey: null,
udiCode: null,
status: null,
page: 1,
limit: 10,
};
this.getList();
},
getList() {
this.loading = true;
console.log(" this.genKey = " + this.currentRow.genKey)
this.filterQuery.genKey = this.currentRow.genKey;
filterDetail(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;
});
},
hideSearch() {
this.showSearch = !this.showSearch;
},
statusFilterType(status) {
const statusMap = {
0: "warning",
1: "danger",
2: "success",
};
return statusMap[status];
},
handleCurrentChange(val) {
this.filterQuery.page = val.page;
this.getList();
},
},
mounted() {
},
created() {
this.getList();
},
filters: {},
};
</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>

@ -0,0 +1,268 @@
<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"></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="getList"></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: 1,
fromType: null,
genKey: null,
status: null,
page: 1,
limit: 20,
thirdSysFk: null,
};
this.getList();
},
hideSearch() {
this.showSearch = !this.showSearch;
},
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) {
axios.get("./config.json").then(res => {
let baseUrl = res.data.BASE_URL;
let href = baseUrl + "/udiwms/products/exportLog/download" + "?genKey=" + row.genKey;
let a = document.createElement("a");
var timestamp = formatDate(new Date(), "yyyyMMddhhmmss")
fetch(href)
.then((res) => res.blob())
.then((blob) => {
a.href = URL.createObjectURL(blob);
console.log(a.href);
a.download = "BaseProduct_" + timestamp + ".UpperIn";
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>

@ -0,0 +1,268 @@
<template>
<div>
<el-card>
<el-form :model="query" 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"></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="getList"></el-button>
<el-button type="primary" icon="el-icon-share" @click="uploadSmp"></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="remark" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="60">
<template slot-scope="scope">
<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%"
: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";
export default {
data() {
return {
showSearch: true,
filterQuery: {
genKey: null,
status: null,
fromType: null,
type:2,
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 = {
fromType: null,
genKey: null,
status: null,
page: 1,
type:2,
limit: 20,
thirdSysFk: null,
};
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;
});
},
hideSearch() {
this.showSearch = !this.showSearch;
},
exportExcel() {
this.selectType = 0;
this.udiImportDetailVisible = true;
},
uploadSmp() {
this.selectType = 1;
this.udiImportDetailVisible = true;
},
downloadExcel(row) {
let href =
"http://127.0.0.1:9991" +
"/udiwms/products/exportLog/download" +
"?genKey=" +row.genKey;
let a = document.createElement("a");
fetch(href)
.then((res) => res.blob())
.then((blob) => {
// blob
a.href = URL.createObjectURL(blob);
console.log(a.href);
// a.download = ""; //
a.download =
row.filePath.split("/")[
row.filePath.split("/").length - 1
]; // //
document.body.appendChild(a);
a.click();
this.getList();
});
// a.setAttribute("download", "");
// a.setAttribute("href", href);
// a.click();
// window.open(mOrder.exportFilePath);
},
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.$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>
Loading…
Cancel
Save