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.
udiwms-vue/src/views/basic/UdiInfoSelectLocalUdi.vue

721 lines
27 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 class="el-card">
<div>
<el-form :inline="true" :model="unionQuery" size="mini">
<el-row style="width: 1000px">
<el-form-item class="query-form-item">
<el-input v-model="unionQuery.udiCode"
style="width: 600px"
placeholder="请扫描或输入UDI码"
clearable="true"
@keyup.enter.native="keyup_submit($event)"></el-input>
</el-form-item>
</el-row>
<el-row>
<el-form-item class="query-form-item">
<el-input
v-model="unionQuery.nameCode" clearable="true"
size="mini"
placeholder="请输入完整DI"
@keyup.enter.native="keyup_submit($event)"
></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-select
v-model="unionQuery.ylqxzcrbarmc"
filterable
remote
clearable="true"
reserve-keyword
placeholder="医疗器械注册人"
:remote-method="findMethod"
:loading="loading"
>
<el-option
v-for="item in fromOptions"
:key="item.ylqxzcrbarmc"
:label="item.ylqxzcrbarmc"
:value="item.ylqxzcrbarmc"
>
<span style="float: left">{{ item.ylqxzcrbarmc }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item class="query-form-item">
<el-input
:disabled="unionQuery.ylqxzcrbarmc==null || unionQuery.ylqxzcrbarmc==''"
v-model="unionQuery.cpmctymc" clearable="true"
size="mini"
placeholder="器械通用名称"
></el-input>
</el-form-item>
</el-row>
<el-row>
<el-form-item class="query-form-item">
<el-input
v-model="unionQuery.ggxh" clearable="true"
:disabled="(unionQuery.cpmctymc=='' && unionQuery.nameCode=='' && (unionQuery.ylqxzcrbarmc==null || unionQuery.ylqxzcrbarmc==''))"
placeholder="规格型号"
size="mini"
></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-input
v-model="unionQuery.zczbhhzbapzbh" clearable="true"
:disabled="(unionQuery.cpmctymc=='' && unionQuery.nameCode=='' && (unionQuery.ylqxzcrbarmc==null || unionQuery.ylqxzcrbarmc==''))"
placeholder="注册证/备案号"
size="mini"
></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-button-group>
<el-button
type="primary"
icon="el-icon-refresh"
@click="onReset"
></el-button>
<el-button type="primary" icon="search" @click="searchList" size="mini"
>查询
</el-button
>
<el-button type="primary" size="mini" icon="search" @click="checkCombine"
:loading="combineLoading"
>选入
</el-button
>
<!-- <el-button type="primary" size="mini" icon="search" @click="combineUdiAll"-->
<!-- v-if="relId==null"-->
<!-- >结果全部选入-->
<!-- </el-button-->
<!-- >-->
</el-button-group>
</el-form-item>
</el-row>
</el-form>
<el-table
:data="udidlList"
style="width: 100%"
v-loading="loading"
highlight-current-row="true"
:row-class-name="tableRowClassName"
@current-change="handleErpChange"
@selection-change="handleSelectionUdiChange"
>
<el-table-column
v-if="relId==null"
type="selection"
:selectable="checkSelectable"
width="55"
></el-table-column>
<el-table-column label="序号" type="index"></el-table-column>
<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="ggxh"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="医疗器械注册人"
prop="ylqxzcrbarmc"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="注册证编号"
prop="zczbhhzbapzbh"
show-overflow-tooltip
></el-table-column>
<el-table-column label="操作" fixed="right">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="diDetail(scope.row)"
>详情
</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
:page-size="unionQuery.limit"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total"
:current-page="unionQuery.page"
></el-pagination>
</div>
</el-card>
<el-card class="el-card" v-if="isImport">
<div >
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>产品名称:&nbsp;</span>
</div>
<el-input
style="width: 60%"
size="small"
splaceholder="请输入内容"
:disabled="true"
v-model="data.cpmctymc"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>产品标识:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.nameCode"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>规格型号:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.ggxh"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>医疗器械注册人:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="ylqxzcrbarmc"
v-model="data.ylqxzcrbarmc"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>注册人英文名称:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.ylqxzcrbarywmc"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>器械类别:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.qxlb"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>产品类别:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.cplb"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>分类编码:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.flbm"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>商品条码:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.sptm"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>医保编码:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.ybbm"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>统一社会信用号:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.tyshxydm"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>注册证/备案号:&nbsp;</span>
</div>
<el-input
style="width: 60%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="data.zczbhhzbapzbh"
></el-input>
</div>
</el-col>
</el-row>
</div>
</el-card>
<el-dialog
title="器械信息详情"
:close-on-click-modal="false"
:close-on-press-escape="false"
:visible.sync="selectDialog"
width="65%"
append-to-body
v-if="selectDialog"
>
<selectDiDetail :editQuery="diDetails"
></selectDiDetail>
</el-dialog>
</div>
</template>
<script>
import {getUdiInfos, filterCompany} from "../../api/basic/udiInfo";
import {combineUdi, combineAllUdi, checkExitUdi} from "../../api/basic/udiRelevance";
import selectDiDetail from "./SelectDIDetailDialog"
import selectUdi from "@/views/basic/UdiInfoRelevance";
import selectErp from "@/views/basic/UdiInfoselectErpUdi";
export default {
name: "closeDialog",
props: {
closeDialog: {
type: Function,
required: true,
},
relId: {
type: Number,
required: true,
},
isImport: {
type: Object,
required: true,
},
data: {
type: Object,
required: true,
},
thirdId: {
type: Object,
required: true,
},
idSpliUdi: {
type: Object,
required: true,
}
},
data() {
return {
unionQuery: {
page: 1,
limit: 10,
udiCode: null,
nameCode: "",
cpmctymc: "",
ylqxzcrbarmc: null,
ggxh: "",
zczbhhzbapzbh: "",
isCheck: 1
},
combineLoading: false,
combineQuery: {
idSpliUdi: false,
thirdId: "",
relId: "",
erpName: "",
thirdName:null,
keys: [],
},
checked: true,
udidlList: [],
erpList: [],
pageTotal: 1,
total: 1,
currentRow: null,
fromOptions: [],
loading: false,
erpLloading: false,
multipleUdiSelection: [],
selectDialog: false,
diDetails: null,
};
},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.unionQuery = {
page: 1,
limit: 10,
udiCode: null,
nameCode: "",
cpmctymc: "",
ylqxzcrbarmc: null,
ggxh: "",
zczbhhzbapzbh: "",
isCheck: 1
},
this.actDateRange = [];
// this.getList();
},
searchList() {
this.unionQuery.page = 1;
this.getList();
},
getList() {
if (
this.unionQuery.udiCode == "" &&
this.unionQuery.nameCode == "" &&
this.unionQuery.cpmctymc == "" &&
this.unionQuery.ylqxzcrbarmc == "" &&
this.unionQuery.ggxh == "" &&
this.unionQuery.zczbhhzbapzbh == ""
) {
this.$message.warning("请输入查询条件");
return;
}
this.loading = true;
// this.unionQuery.page = 1;
getUdiInfos(this.unionQuery)
.then((response) => {
this.loading = false;
if (response.code == 20000) {
this.udidlList = response.data.list || [];
this.total = response.data.total || 0;
} else {
this.$message.error(response.message);
}
})
.catch(() => {
this.loading = false;
this.udidlList = [];
this.total = 0;
});
},
combineUdiAll() {
this.$confirm("此操作将在后台自动下载所有查询结果, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
combineAllUdi(this.unionQuery)
.then((response) => {
this.loading = false;
if (response.code == 20000) {
this.$message.success(response.data);
this.$emit("closeUdi", true);
} else {
this.$message.error(response.message);
}
})
.catch(() => {
});
})
.catch(() => {
});
},
keyup_submit(event) {
this.unionQuery.page = 1;
this.getList();
event.target.select();
},
checkSelectable(row) {
return !row.check;
},
diDetail(row) {
this.diDetails = row;
this.selectDialog = true;
},
handleCurrentChange(val) {
this.unionQuery.page = val;
this.getList();
},
tableRowClassName({row, rowIndex}) {
if (row.check) return "warning-row";
return "";
},
handleErpChange(val) {
this.currentRow = val;
},
intentBack() {
this.closeDialog();
},
checkCombine() {
let selectData = this.multipleUdiSelection;
let selected = null;
if (this.multipleUdiSelection.length == 0) {
if (this.relId != null) {
this.combineQuery.relId = this.relId;
this.combineQuery.keys.push(this.currentRow.uuid);
if (this.currentRow.check) {
selected = this.currentRow;
}
} else
return;
} else {
selectData.forEach((obj) => {
if (obj.check) {
selected = obj;
}
this.combineQuery.keys.push(obj.uuid);
});
}
if (selected != null) {
this.$message.warning("UDI编码" + selected.nameCode + "已被选入");
return;
}
this.combineLoading = true;
checkExitUdi(this.combineQuery)
.then((response) => {
this.combineLoading = false;
if (response.code == 20000) {
this.combine();
// combineUdi(this.combineQuery)
// .then((response) => {
// this.combineLoading = false;
// if (response.code == 20000) {
// this.$emit("closeUdi", true);
// } else {
// this.$emit("closeUdi", false);
// }
// })
// .catch(() => {
// this.combineLoading = false;
// this.$emit("closeUdi", false);
// });
} else if (response.code == 499) {
this.$confirm(response.message, {type: "warning"})
.then(_ => {
this.combine();
// combineUdi(this.combineQuery)
// .then((response) => {
// this.combineLoading = false;
// if (response.code == 20000) {
// this.$emit("closeUdi", true);
// } else {
// this.$emit("closeUdi", false);
// }
// })
// .catch(() => {
// this.combineLoading = false;
// this.$emit("closeUdi", false);
// });
})
.catch(_ => {
this.combineQuery.keys = [];
});
}
})
.catch(() => {
this.combineLoading = false;
this.$emit("closeUdi", false);
});
},
combine() {
if (this.idSpliUdi) {
this.combineQuery.idSpliUdi = true;
this.combineQuery.thirdId = this.thirdId;
this.combineQuery.erpName = this.data.thirdName;
}
combineUdi(this.combineQuery)
.then((response) => {
this.combineLoading = false;
if (response.code == 20000) {
this.$emit("closeUdi", true);
} else {
this.$message.error(response.message);
this.$emit("closeUdi", false);
}
})
.catch(() => {
this.combineLoading = false;
this.$emit("closeUdi", false);
});
},
handleSelectionUdiChange(val) {
this.multipleUdiSelection = val;
},
findMethod(query) {
let cQuery = {
ylqxzcrbarmc: query,
page: 1,
limit: 10,
};
filterCompany(cQuery)
.then((response) => {
this.loading = false;
this.fromOptions = response.data || [];
})
.catch(() => {
this.loading = false;
this.fromOptions = [];
});
},
},
components: {
selectDiDetail,
},
created() {
}
};
</script>
<style scoped>
.checkitemTag {
float: left;
text-align: left;
margin-top: 5px;
width: 100%;
}
div /deep/ .el-table .warning-row {
background: #bebebe;
}
div /deep/ .el-table .success-row {
background: #ffffff;
}
.el-card {
margin-right: 20px;
/*transition: all .5s;*/
}
.query-form-item {
display: block !important;
margin-right: 10px;
margin-bottom: 5px;
}
</style>