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/product.vue

1866 lines
66 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-row>
<el-col :span="2" v-show="showSearch">
<div style="height: 100%">
<el-tree :data="treeList"
class="tree"
@node-click="handleNodeClick"
:expand-on-click-node="false">
<span class="custom-tree-node" slot-scope="{ node, data }">
<span style="font-size: 15px;font-weight: 500;">{{ node.label }}</span></span>
</el-tree>
</div>
</el-col>
<el-col :span="22">
<el-form :model="filterQuery" size="mini" label-width="100px" v-show="showSearch">
<el-row>
<el-col :span="18">
<el-form-item class="query-form-item" label="UDI码:">
<el-input v-model="filterQuery.udiCode"
style="width: 97%"
placeholder="请扫描或输入UDI码"
clearable="true"
@keyup.enter.native="keyup_submit($event)"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item class="query-form-item" label="产品编码:">
<el-input v-model="filterQuery.unionCode" placeholder="DI/医保编码/商品条码"
style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="产品通用名:">
<el-input v-model="filterQuery.cpmctymc" placeholder="产品通用名" clearable="true"
style="width: 90%"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="规格型号:">
<el-input v-model="filterQuery.ggxh" placeholder="规格型号" clearable="true"
style="width: 90%"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="对照条件:">
<el-select v-model="filterQuery.filterType" placeholder="请选择过滤对照条件"
style="width: 90%">
<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-row>
<el-row>
<el-col :span="6">
<el-form-item class="query-form-item" label="注册备案人:">
<el-input v-model="filterQuery.ylqxzcrbarmc" placeholder="生产企业/注册备案人"
style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="外部产品编码:">
<el-input v-model="filterQuery.thrPiId" placeholder="第三方产品编码"
style="width: 90%"
clearable="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="集采状态">
<el-select v-model="filterQuery.groupBuy" placeholder="集采状态" clearable>
<el-option label="全部" value=""></el-option>
<el-option label="集采" value="true"></el-option>
<el-option label="非集采" value="false"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="可配送状态">
<el-select v-model="filterQuery.dispatch" placeholder="可配送状态" clearable>
<el-option label="全部" value=""></el-option>
<el-option label="可配送" value="true"></el-option>
<el-option label="不可配送" value="false"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="top-right-btn">
<el-button-group>
<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="submit">查询</el-button>
<el-button type="primary" icon="el-icon-plus" @click="editUdiType">编辑菜单树</el-button>
<el-button type="primary" icon="el-icon-plus" @click="intentImportUdi">添加DI信息</el-button>
<el-button type="primary" icon="el-icon-plus" @click="intentImportErp">添加产品信息</el-button>
<el-button type="primary" icon="el-icon-plus" @click="intentDetail">关联添加</el-button>
</el-button-group>
</div>
<el-divider style="margin: 15px"></el-divider>
<el-table
v-loading="loading"
:data="list"
style="width: 100%;"
border
key="1"
@selection-change="handleSelectionChange"
>
<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="mainId"
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="200" label="操作">
<template slot-scope="scope">
<el-button
type="text"
size="small"
:disabled="scope.row.originUuid != null"
@click.native.stop="intentSelectUdi(scope.row)"
>关联DI
</el-button>
<el-button
type="text"
size="small"
@click.native.stop="handleModifyClick(scope.row)"
>详情
</el-button>
<el-button
type="text"
size="small"
@click.native.stop="diEdit(scope.row)"
>编辑
</el-button>
<el-button type="text" size="small" @click.native.stop="deleteDialog(scope.row)"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog
title="耗材字典-详情"
:visible.sync="editDialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="70%"
v-if="editDialogVisible"
>
<el-card>
<el-table :data="sysList" style="width: 100%; margin-bottom: 8px" key="2" border>
<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="thirdId" show-overflow-tooltip></el-table-column>
<el-table-column label="产品名称" prop="thirdName" show-overflow-tooltip></el-table-column>
<el-table-column label="规格型号" prop="spec" show-overflow-tooltip></el-table-column>
<el-table-column label="注册/备案凭证号" prop="registerNo" show-overflow-tooltip></el-table-column>
<el-table-column label="生产厂家" prop="manufactory" show-overflow-tooltip></el-table-column>
</el-table>
</el-card>
<el-card>
<div style=" float: left;
text-align: left;
font-weight: bold;
margin-bottom: 8px">
<span>产品标识:</span>
</div>
<el-table v-loading="loading" :data="detailList" style="width: 100%; " border key="3"
highlight-current-row @current-change="handleDetail">
<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="packUnit" show-overflow-tooltip></el-table-column>
</el-table>
</el-card>
<el-card>
<el-form
:model="editQuery"
:rules="rules"
ref="editQuery"
border
label-width="140px"
style="margin-top: 20px; "
>
<el-collapse v-model="activeNames">
<el-collapse-item name="1">
<template slot="title">
<p class="form-title">产品属性</p>
</template>
<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-select v-model="editQuery.isDisable" disabled style="width: 65%" size="small">
<el-option label="是" :value="true"></el-option>
<el-option label="否" :value="false"></el-option>
<el-option label="否" :value="null"></el-option>
</el-select>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>是否寄售:&nbsp;</span>
</div>
<el-select v-model="editQuery.isAdavence" disabled style="width: 65%" size="small">
<el-option label="是" :value="true"></el-option>
<el-option label="否" :value="false"></el-option>
<el-option label="否" :value="null"></el-option>
</el-select>
</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-select v-model="editQuery.allowNoBatch" disabled style="width: 65%" size="small">
<el-option label="是" :value="true"></el-option>
<el-option label="否" :value="false"></el-option>
<el-option label="否" :value="null"></el-option>
</el-select>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>允许无失效日期:&nbsp;</span>
</div>
<el-select v-model="editQuery.allowNoExpire" disabled style="width: 65%" size="small">
<el-option label="是" :value="true"></el-option>
<el-option label="否" :value="false"></el-option>
<el-option label="否" :value="null"></el-option>
</el-select>
</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-select v-model="editQuery.allowNoProduct" disabled style="width: 65%" size="small">
<el-option label="是" :value="true"></el-option>
<el-option label="否" :value="false"></el-option>
<el-option label="否" :value="null"></el-option>
</el-select>
</div>
</el-col>
<el-col :span="12" class="el-col">
<div class="text item">
<div class="itemTag">
<span>启用使用单元:&nbsp;</span>
</div>
<el-select v-model="editQuery.isUseDy" disabled style="width: 65%" size="small">
<el-option label="是" :value="true"></el-option>
<el-option label="否" :value="false"></el-option>
<el-option label="否" :value="null"></el-option>
</el-select>
</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-select v-model="editQuery.useMuti" disabled style="width: 65%" size="small">
<el-option label="是" :value="true"></el-option>
<el-option label="否" :value="false"></el-option>
<el-option label="否" :value="null"></el-option>
</el-select>
</div>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item name="2">
<template slot="title">
<p class="form-title">产品标识基本信息</p>
</template>
<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: 65%"
size="small"
splaceholder="请输入内容"
:disabled="true"
v-model="editQuery.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: 65%"
:disabled="!checked"
size="small"
splaceholder="请输入内容"
v-model="editQuery.zxxsbzbhsydysl"
></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: 65%"
size="small"
:disabled="true"
splaceholder="请输入内容"
v-model="editQuery.bhxjcpbm"
></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: 65%"
size="small"
:disabled="true"
splaceholder="请输入内容"
v-model="editQuery.bhzxxsbzsl"
></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: 65%"
size="small"
splaceholder="请输入内容"
:disabled="true"
v-model="editQuery.packUnit"
></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: 65%"
size="small"
splaceholder="请输入内容"
:disabled="useNumEnable"
type="number"
v-model="editQuery.useNum"
></el-input>
</div>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item name="3">
<template slot="title">
<p class="form-title">产品基本信息</p>
</template>
<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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.nameCode"
></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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.ggxh"
></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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.qxlb"
></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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.zczbhhzbapzbh"
></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: 65%"
:disabled="true"
size="small"
splaceholder="ylqxzcrbarmc"
v-model="editQuery.ylqxzcrbarmc"
></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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.ylqxzcrbarywmc"
></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: 65%"
size="small" :disabled="true"
splaceholder="请输入内容"
v-model="editQuery.ybbm"
></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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.tyshxydm"
></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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.spmc"
></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: 65%"
size="small" :disabled="true"
splaceholder="请输入内容"
v-model="editQuery.sptm"
></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: 65%"
size="small"
splaceholder="请输入内容" :disabled="true"
v-model="editQuery.measname"
></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: 65%"
size="small"
:disabled="true"
v-model="editQuery.manufactory"
splaceholder="请输入内容"
></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: 65%"
size="small"
:disabled="true"
splaceholder="请输入内容"
v-model="editQuery.cpms"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col" v-if="productRemarkSet.remarkEnable1">
<div class="text item">
<div class="itemTag">
<span>{{ productRemarkSet.remarkTitle1 }}:&nbsp;</span>
</div>
<el-input
style="width: 65%"
size="small"
:disabled="true"
splaceholder="请输入内容"
v-model="editQuery.basicPrductRemak1"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col" v-if="productRemarkSet.remarkEnable2">
<div class="text item">
<div class="itemTag">
<span>{{ productRemarkSet.remarkTitle2 }}:&nbsp;</span>
</div>
<el-input
style="width: 65%"
size="small"
:disabled="true"
splaceholder="请输入内容"
v-model="editQuery.basicPrductRemak2"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col" v-if="productRemarkSet.remarkEnable3">
<div class="text item">
<div class="itemTag">
<span>{{ productRemarkSet.remarkTitle3 }}:&nbsp;</span>
</div>
<el-input
style="width: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.basicPrductRemak3"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col" v-if="productRemarkSet.remarkEnable4">
<div class="text item">
<div class="itemTag">
<span>{{ productRemarkSet.remarkTitle4 }}:&nbsp;</span>
</div>
<el-input
style="width: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.basicPrductRemak4"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col" v-if="productRemarkSet.remarkEnable5">
<div class="text item">
<div class="itemTag">
<span>{{ productRemarkSet.remarkTitle5 }}:&nbsp;</span>
</div>
<el-input
style="width: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.basicPrductRemak5"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col" v-if="productRemarkSet.remarkEnable6">
<div class="text item">
<div class="itemTag">
<span>{{ productRemarkSet.remarkTitle6 }}:&nbsp;</span>
</div>
<el-input
style="width: 65%"
size="small"
:disabled="true"
splaceholder="请输入内容"
v-model="editQuery.basicPrductRemak6"
></el-input>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="12" class="el-col" v-if="productRemarkSet.remarkEnable7">
<div class="text item">
<div class="itemTag">
<span>{{ productRemarkSet.remarkTitle7 }}:&nbsp;</span>
</div>
<el-input
style="width: 65%"
size="small"
:disabled="true"
splaceholder="请输入内容"
v-model="editQuery.basicPrductRemak7"
></el-input>
</div>
</el-col>
<el-col :span="12" class="el-col" v-if="productRemarkSet.remarkEnable8">
<div class="text item">
<div class="itemTag">
<span>{{ productRemarkSet.remarkTitle8 }}:&nbsp;</span>
</div>
<el-input
style="width: 65%"
size="small"
:disabled="true"
splaceholder="请输入内容"
v-model="editQuery.basicPrductRemak8"
></el-input>
</div>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item name="4">
<template slot="title">
<p class="form-title">生产标识基本信息</p>
</template>
<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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.scbssfbhph"
></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: 65%"
:disabled="true"
size="small"
v-model="editQuery.scbssfbhxlh"
splaceholder="请输入内容"
></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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.scbssfbhscrq"
></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: 65%"
:disabled="true"
v-model="editQuery.scbssfbhsxrq"
size="small"
splaceholder="请输入内容"
></el-input>
</div>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item name="5">
<template slot="title">
<p class="form-title">包装标识信息</p>
</template>
<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: 65%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.sjcpbm"
></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: 65%"
size="small"
splaceholder="请输入内容"
:disabled="true"
v-model="editQuery.packLevel"
></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: 65%"
size="small"
splaceholder="请输入内容"
v-model="editQuery.bzcj"
:disabled="true"
></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: 65%"
size="small"
splaceholder="请输入内容"
:disabled="true"
v-model="editQuery.bhxjsl"
></el-input>
</div>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item name="6">
<template slot="title">
<p class="form-title">版本信息</p>
</template>
<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: 35%"
:disabled="true"
size="small"
splaceholder="请输入内容"
v-model="editQuery.versionNumber"
></el-input>
<el-button type="text" size="small" @click.native.stop="selectVersion()"
style="margin-left: 5%"
>切换版本
</el-button>
</div>
</el-col>
</el-row>
</el-collapse-item>
</el-collapse>
</el-form>
</el-card>
</el-dialog>
<el-dialog
title="耗材字典-编辑"
:visible.sync="editDiDialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="60%"
v-if="editDiDialogVisible"
>
<product-edit
:editQuery="editFormat"
:relevanceEdit="relevanceEdit"
:productRemarkSet="productRemarkSet"
:uuid="uuid"
:relId="relId"
:thisData="thisData"
:productType="productType"
@closePre="closeUdi"
></product-edit>
<div style="text-align: center;margin-top: 12px">
<el-button type="primary" size="small" icon="search" @click="onAddSubmit(false)"
>提交
</el-button>
<el-button type="primary" size="small" icon="search" @click="cancelDialog"
>取消
</el-button>
</div>
</el-dialog>
<el-dialog
title="耗材字典-编辑"
:visible.sync="editSingleDiDialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="45%"
v-if="editSingleDiDialogVisible"
>
<product-single-edit
:editQuery="editSingleFormat"
></product-single-edit>
<div style="text-align: center;margin-top: 12px">
<el-button type="primary" size="small" icon="search" @click="onAddSingleSubmit(false)"
>提交
</el-button>
<el-button type="primary" size="small" icon="search" @click="cancelDialog"
>取消
</el-button>
</div>
</el-dialog>
<el-dialog
title="耗材字典-关联添加器械信息"
:visible.sync="selectUdiDialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="85%"
v-if="selectUdiDialogVisible"
>
<selectUdi @closeUdi="closeUdi" :isImportUdi="isImportUdi"></selectUdi>
</el-dialog>
<el-dialog
title="耗材字典-从指定系统添加器械信息"
:visible.sync="selectErpDialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="85%"
v-if="selectErpDialogVisible"
>
<selectErp
:closeDialog="closeDialog"
:uuid="uuid"
:relId="relId"
:isImport="isImport"
:data="thisData"
:defaultSys="defaultSys"
@closeUdi="closeUdi"
:supEnable="false"
></selectErp>
</el-dialog>
<el-dialog
title="耗材字典-添加DI器械信息"
:visible.sync="selectLocalVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="85%"
v-if="selectLocalVisible"
>
<selectLocalUdi
:closeDialog="closeDialog"
:relId="relId"
:isImport="isImport"
:isImportUdi="isImportUdi"
:data="thisData"
@closeUdi="closeUdi"
></selectLocalUdi>
</el-dialog>
<el-dialog
title="耗材字典-选择DI版本"
:visible.sync="selectVersionVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="85%"
v-if="selectVersionVisible"
>
<selectUdiVersion
:closeDialog="closeDialog"
:relId="relId"
:uuid="uuid"
:originUuid="originUuid"
@closeUdi="closeUdi"
></selectUdiVersion>
</el-dialog>
<pagination
v-show="total>0"
:total="total"
:limit.sync="filterQuery.limit"
:page.sync="filterQuery.page"
@pagination="handleCurrentChange"
></pagination>
<el-dialog
title="编辑-耗材菜单"
:visible.sync="selectUdiTypeVisible"
:before-close="hideForm"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="60%"
v-if="selectUdiTypeVisible"
>
<productUdiType
:closeDialog="closeDialog"
@closeUdi="closeUdi"
></productUdiType>
</el-dialog>
<el-dialog
title="绑定-耗材产品"
:visible.sync="selectHospProductVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="80%"
v-if="selectHospProductVisible"
>
<selectHospProduct
:closeDialog="closeDialog"
:rId="rId"
></selectHospProduct>
</el-dialog>
<el-dialog
title="解绑-耗材产品"
:visible.sync="selectUnBindHospProductVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="80%"
v-if="selectUnBindHospProductVisible"
>
<selectUnBindHospProduct
:closeDialog="closeDialog"
:rId="rId"
></selectUnBindHospProduct>
</el-dialog>
</el-col>
</el-row>
</el-card>
</div>
</template>
<script>
import {
getUdiInfos,
deletetUdiInfos,
updatetUdiInfos,
updatetSingleUdiInfo,
updateErpProduct,
uploadSmp,
thirdSysDetail,
removeRl, sysFilter, spcombie, lockStatus, removeDiRl, disableUdi
} from "@/api/basic/product/udiRelevance";
import {selectSysParamByKey, finProductSet} from "@/api/param/systemParamConfig";
import {filterByUuid} from "@/api/basic/product/udiInfo";
import selectUdi from "./UdiInfoSelectRel.vue";
import selectErp from "./udiInfoselectErpUdi";
import selectLocalUdi from "./UdiInfoSelectLocalUdi";
import selectUdiVersion from "./UdiinfoSelectVersion";
import ProductEdit from "@/views/basic/product/productEdit";
import ProductSingleEdit from "@/views/basic/product/productSingleEdit";
import productUdiType from "@/views/basic/product/productUdiType"
import selectHospProduct from "@/views/basic/product/bindHospProduct";
import selectUnBindHospProduct from "@/views/basic/product/unbindHospProduct";
import {getBasicHospType, getListTree} from "@/api/basic/basicHospType";
export default {
data() {
return {
filterQuery: {
lockStatus: null,
unionCode: null,
udiCode: null,
ylqxzcrbarmc: "",
cpmctymc: "",
nameCode: "",
ggxh: null,
page: 1,
limit: 20,
addType: 1,
thrPiId: null,
filterType: null,
dispatch: null,
groupBuy: null,
},
rId: null,
selectUdiTypeVisible: false,
selectHospProductVisible: false,
selectUnBindHospProductVisible: false,
loading: false,
showSearch: true,
productType: null,
editQuery: null,
editFormat: {},
editSingleFormat: {
uuid: null,
relId: null,
sptm: null,
packUnit: null,
measname: null,
nameCode: null
},
pId: 0,
productRemarkSet: {},
relevanceEdit: {
id: null,
thirdId: "",
isDisable: null,
isUseDy: false,
isLock: null,
isAdavence: null,
allowNoBatch: null,
allowNoExpire: null,
allowNoProduct: null,
pId: null,
},
defaultSys: null,
isImport: false,
isImportUdi: false,
isUploadSmp: false,
isSpCombine: false,
isImportFile: false,
uploadFileUrl: null,
checked: false,
list: [],
detailList: [],
sysList: [],
filterList: [],
total: 0,
thirdNo: "",
treeList: [],
uuid: "111",
originUuid: null,
thirdId: null,
relId: "",
thisData: {
nameCode: null,
cpmctymc: null,
ggxh: null
},
multipleSelection: [],
editDialogVisible: false, //详情
editDiDialogVisible: false,
editSingleDiDialogVisible: false,
selectUdiDialogVisible: false, //关联选入
selectErpDialogVisible: false, //选入ERP产品
selectVersionVisible: false,
selectLocalVisible: false, //关联UDI
isUseDyCheck: false,
lockStatusMap: {1: "未提交", 2: "已提交", 3: "已锁定"},
activeNames: ['1'],
useNumEnable: true,
};
},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
lockStatus: null,
unionCode: null,
udiCode: null,
ylqxzcrbarmc: "",
cpmctymc: "", thrPiId: null,
nameCode: "",
ggxh: null,
page: 1,
limit: 20,
addType: 1
};
this.getList();
},
submit() {
this.loading = true;
this.filterQuery.page = 1;
this.getList();
},
getList() {
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;
});
},
hideSearch() {
this.showSearch = !this.showSearch;
},
keyup_submit(event) {
this.filterQuery.page = 1;
this.getList();
event.target.select();
},
getDetailList(detailQuery) {
this.loading = true;
filterByUuid(detailQuery)
.then((response) => {
this.isUseDyCheck = false;
this.loading = false;
this.detailList = response.data || [];
this.detailList.forEach((item, index, array) => {
// this.detailList[index].isAdavence = item.adavence
// this.detailList[index].isDisable = item.disable
// this.detailList[index].useMuti = item.useMuti
if (item.zxxsbzbhsydysl > 1) {
this.isUseDyCheck = true;
}
});
this.productType = this.detailList[0].productType;
})
.catch(() => {
this.loading = false;
this.detailList = [];
});
},
hideForm() {
this.selectUdiTypeVisible = false;
this.getTerrList();
},
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 = [];
});
},
handleDetail(row) {
this.editQuery = row;
},
selectVersion() {
this.selectVersionVisible = true;
this.uuid = this.editQuery.uuid;
this.originUuid = this.editQuery.originUuid;
this.relId = this.editQuery.id;
},
deleteOrders(data) {
this.loading = true;
let tquery = {
id: data.id + "",
};
deletetUdiInfos(tquery)
.then((response) => {
if (response.code == 20000) {
this.getList();
this.$message({
type: "success",
message: "删除成功",
});
} else {
this.$message.error(response.message);
}
})
.catch(() => {
});
},
deleteDialog(rowId) {
this.$confirm("此操作将永久删除该产品信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.deleteOrders(rowId);
})
.catch(() => {
});
},
intentDetail() {
this.isImportUdi = false;
this.selectUdiDialogVisible = true;
},
addSelectErp(row) {
this.defaultSys = row.sysId;
this.isImport = false;
this.selectErpDialogVisible = true;
},
removeErp(row) {
this.$confirm("此操作将解除该绑定产品信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let query = {
relId: this.pId,
thirdSys: row.sysId
};
removeRl(query)
.then((response) => {
if (response.code == 20000) {
this.$message({
type: "success",
message: "删除成功",
});
this.getList();
this.cancelDialog();
this.getThirdSysDetail();
} else {
this.$message.error(response.message);
}
})
.catch(() => {
});
})
.catch(() => {
});
},
removeDi() {
this.$confirm("此操作将解除该绑定DI器械信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let query = {
relId: this.editQuery.id,
};
removeDiRl(query)
.then((response) => {
if (response.code == 20000) {
this.$message({
type: "success",
message: "删除成功",
});
this.editDialogVisible = false;
this.getList();
this.cancelDialog();
} else {
this.$message.error(response.message);
}
})
.catch(() => {
});
})
.catch(() => {
});
},
intentSelectErp(val) {
this.uuid = val.uuid;
this.relId = val.id;
this.isImport = false;
this.thisData = val;
this.selectErpDialogVisible = true;
},
intentImportErp(val) {
this.defaultSys = null;
this.uuid = val.uuid;
this.relId = val.id;
this.isImport = true;
this.thisData = val;
this.selectErpDialogVisible = true;
},
uploadSMP() {
var selectData = this.multipleSelection;
var keys = [];
selectData.forEach((obj) => {
keys.push(obj.id);
});
var tquery = {
keys: keys,
};
uploadSmp(tquery)
.then((response) => {
if (response.code == 20000) {
this.$message({
type: "success",
message: "上传成功",
});
} else {
this.$message({
type: "error",
message: response.message,
});
}
})
.catch(() => {
this.$message({
type: "error",
message: "上传失败",
});
});
},
intentSelectUdi(val) {
this.relId = val.id;
this.isImportUdi = true;
this.isImport = true;
this.thisData = val;
this.selectLocalVisible = true;
},
intentImportUdi() {
this.relId = null;
this.thisData = {
nameCode: null,
cpmctymc: null,
ggxh: null,
ylqxzcrbarmc: null
};
this.isImport = false;
this.selectLocalVisible = true;
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
cancelDialog() {
this.editDiDialogVisible = false;
this.editSingleDiDialogVisible = false;
this.getList();
},
handleCurrentChange(val) {
this.filterQuery.page = val.page;
this.getList();
},
handleModifyClick(row) {
this.uuid = row.uuid;
this.relId = row.id;
this.isImport = false;
this.thisData = row;
this.editDialogVisible = true;
this.pId = row.id;
this.relevanceEdit = {
id: row.id,
isUseDy: row.isUseDy,
isDisable: row.isDisable,
isLock: row.isLock,
isAdavence: row.isAdavence,
};
this.checked = row.isUseDy == 1;
this.editQuery = row;
//获取产品标识列表
let ttquery = {
id: row.id,
};
this.getDetailList(ttquery);
//获取关联第三方系统产品信息列表
this.getThirdSysDetail();
},
lockProducts(status) {
let selectData = this.multipleSelection;
let postQuery = {
ids: [],
lockStatus: status,
}
selectData.forEach((row) => {
postQuery.ids.push(row.id);
});
lockStatus(postQuery)
.then((response) => {
if (response.code == 20000) {
this.loading = false;
this.$message.success(response.data);
this.getList();
} else {
this.$message.error(response.message);
}
})
.catch(() => {
this.loading = false;
});
},
closeUdi(val) {
this.selectUdiDialogVisible = false;
this.selectErpDialogVisible = false;
this.selectLocalVisible = false;
this.selectVersionVisible = false;
this.selectHospProductVisible = false;
this.getThirdSysDetail();
if (val) {
this.getList();
this.cancelDialog();
}
},
getSysFilter() {
sysFilter()
.then((response) => {
this.loading = false;
this.filterList = response.data.list || [];
})
.catch(() => {
this.loading = false;
this.filterList = [];
});
},
singleDiEdit() {
let temp = JSON.parse(JSON.stringify(this.editQuery));
this.editSingleFormat.uuid = temp.uuid;
this.editSingleFormat.id = temp.id;
this.editSingleFormat.sptm = temp.sptm;
this.editSingleFormat.packUnit = temp.packUnit;
this.editSingleFormat.measname = temp.measname;
this.editSingleFormat.nameCode = temp.nameCode;
this.editSingleDiDialogVisible = true;
},
diEdit(row) {
this.uuid = row.uuid;
this.relId = row.id;
this.isImport = false;
this.thisData = row;
this.pId = row.id;
this.relevanceEdit = {
id: row.id,
isUseDy: row.isUseDy,
isDisable: row.isDisable,
isLock: row.isLock,
isAdavence: row.isAdavence,
};
this.editFormat = JSON.parse(JSON.stringify(row));
this.editDiDialogVisible = true;
},
closeDialog() {
this.selectErpDialogVisible = false;
this.selectLocalVisible = false;
this.selectVersionVisible = false;
this.selectHospProductVisible = false;
this.selectUnBindHospProductVisible = false;
},
onAddSubmit(relSubmit) {
this.editFormat.relSubmit = relSubmit;
updatetUdiInfos(this.editFormat)
.then((response) => {
if (response.code == 20000) {
this.getList();
this.cancelDialog();
this.editDialogVisible = false;
} else {
this.$message.error(response.message);
}
})
.catch(() => {
this.cancelDialog();
});
},
onAddSingleSubmit() {
updatetSingleUdiInfo(this.editSingleFormat)
.then((response) => {
if (response.code == 20000) {
this.getList();
this.cancelDialog();
this.editDialogVisible = false;
} else {
this.$message.error(response.message);
}
})
.catch(() => {
this.cancelDialog();
});
},
findBasicProductSet() {
finProductSet().then((response) => {
if (response.code == 20000) {
this.productRemarkSet = response.data;
} else {
//出错了
}
});
},
selectSysParam() {
let query = {
paramKey: "smp_isUploadProuct",
};
spcombie().then((response) => {
if (response.code == 20000) {
if (response.data.paramValue == "1") {
this.isSpCombine = true;
} else {
this.isSpCombine = false;
}
}
});
selectSysParamByKey(query).then((response) => {
if (response.code == 20000) {
if (response.data.paramValue == "1") {
this.isUploadSmp = true;
} else {
this.isUploadSmp = false;
}
}
});
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;
}
});
},
editUdiType() {
this.selectUdiTypeVisible = true;
},
getTerrList() {
getListTree(this.query)
.then((response) => {
var invlist = response.data || [];
this.treeList = this.handleTree(invlist, "code", "parentCode");
})
.catch(() => {
});
},
addHospProduct(data) {
this.rId = data.code
if (data.code != 10000) {
this.filterQuery.relCode = data.code
} else {
this.filterQuery.relCode = null;
}
this.selectHospProductVisible = true;
},
removeHospProduct(data) {
this.rId = data.code
if (data.code != 10000) {
this.filterQuery.relCode = data.code
} else {
this.filterQuery.relCode = null;
}
this.selectUnBindHospProductVisible = true;
},
handleNodeClick(data) {
this.rId = data.code
if (data.code != 10000) {
this.filterQuery.relCode = data.code
} else {
this.filterQuery.relCode = null;
}
this.getList();
}
},
mounted() {
},
components: {
ProductSingleEdit,
ProductEdit,
selectUdi,
selectErp,
selectLocalUdi,
selectUdiVersion,
productUdiType,
selectHospProduct,
selectUnBindHospProduct
},
created() {
this.findBasicProductSet();
this.getList();
this.getTerrList();
this.selectSysParam();
this.getSysFilter();
},
};
</script>
<style scoped>
.itemTag {
float: left;
text-align: right;
margin-top: 5px;
padding-right: 10px;
width: 35%;
}
.text {
font-size: 13px;
font-family: "Microsoft YaHei";
}
.query-form-item {
display: block !important;
margin-right: 10px;
margin-bottom: 5px;
}
.edit-row {
display: flex;
flex-wrap: wrap;
margin-bottom: 0px;
}
.el-row {
display: flex;
flex-wrap: wrap;
margin-bottom: 6px;
}
.el-col {
border-radius: 4px;
flex-wrap: wrap;
}
.el-table .cell.el-tooltip {
white-space: pre-wrap;
}
.form-title {
font-size: 16px;
font-family: Noto Sans SC;
font-weight: bold;
color: #303133;
padding-bottom: 17px;
padding-top: 17px;
}
</style>