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-frame/src/views/basic/product/udIInfoSelect.vue

606 lines
24 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="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="产品编码:">
<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="Onsearch">查询</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";
import {sysFilter} from "@/api/basic/product/udiRelevance";
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: {
getSysFilter() {
sysFilter()
.then((response) => {
this.loading = false;
this.filterList = response.data.list || [];
})
.catch(() => {
this.loading = false;
this.filterList = [];
});
},
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
uuids: [],
ylqxzcrbarmc: "",
cpmctymc: "",
nameCode: "",
page: 1,
limit: 20,
addType: 1,
};
this.getList();
},
hideSearch() {
this.showSearch = !this.showSearch;
},
Onsearch(){
this.filterQuery.page=1;
this.getList();
},
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() {
for(var i=0;i<this.list.length;i++){
this.filterQuery.uuids[i]= this.list[i].uuid
}
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.getSysFilter();
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>