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.
600 lines
17 KiB
Vue
600 lines
17 KiB
Vue
5 years ago
|
<template>
|
||
|
<div>
|
||
|
<el-card class="el-card">
|
||
|
<el-form
|
||
|
:inline="true"
|
||
|
:model="subFilterQuery"
|
||
|
style="display: flex"
|
||
|
size="mini"
|
||
|
>
|
||
|
<el-form-item prop="productId">
|
||
|
<el-select
|
||
|
v-model="subFilterQuery.productId"
|
||
|
placeholder="请选择企业产品"
|
||
|
@change="intentMainPrduct"
|
||
|
>
|
||
|
<el-option
|
||
|
v-for="item in list"
|
||
|
:key="item.value"
|
||
|
:label="item.label"
|
||
|
:value="item.value"
|
||
|
>
|
||
|
</el-option>
|
||
|
</el-select>
|
||
|
</el-form-item>
|
||
|
<el-form-item class="query-form-item">
|
||
|
<el-input
|
||
|
v-model="subFilterQuery.specification"
|
||
|
placeholder="规格型号"
|
||
|
></el-input>
|
||
|
</el-form-item>
|
||
|
<el-form-item>
|
||
|
<el-button-group>
|
||
|
<el-button
|
||
|
type="primary"
|
||
|
icon="el-icon-refresh"
|
||
|
@click="onSubReset"
|
||
|
></el-button>
|
||
|
<el-button type="primary" icon="search" @click="getSubList"
|
||
|
>查询</el-button
|
||
|
>
|
||
|
</el-button-group>
|
||
|
</el-form-item>
|
||
|
</el-form>
|
||
|
|
||
|
<el-table
|
||
|
v-loading="loading"
|
||
|
@row-click="intentSubIdDetail"
|
||
|
highlight-current-row
|
||
|
:data="subList"
|
||
|
border
|
||
|
style="width: 100%"
|
||
|
>
|
||
|
<el-table-column
|
||
|
label="序号"
|
||
|
type="index"
|
||
|
width="120"
|
||
|
></el-table-column>
|
||
|
|
||
|
<el-table-column prop="status" label="状态 " width="100">
|
||
|
<template slot-scope="scope">
|
||
|
<span>{{ postStatus[scope.row.status] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
|
||
|
<el-table-column
|
||
|
prop="status"
|
||
|
:show-overflow-tooltip="true"
|
||
|
label="器械通用名称 "
|
||
|
width="100"
|
||
|
>
|
||
|
<template slot-scope="scope">
|
||
|
<span>{{ mainProduct.label }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
|
||
|
<el-table-column
|
||
|
prop="specification"
|
||
|
label="规格型号"
|
||
|
:show-overflow-tooltip="true"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="deviceDescription"
|
||
|
label="产品描述"
|
||
|
:show-overflow-tooltip="true"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="regcardCodes"
|
||
|
label="注册证号/备案凭证号"
|
||
|
:show-overflow-tooltip="true"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="companyName"
|
||
|
label="注册/备案凭人名称"
|
||
|
:show-overflow-tooltip="true"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
|
||
|
<el-table-column prop="deviceType" label="器械类别"> </el-table-column>
|
||
|
<el-table-column prop="productCode" label="分类编码"> </el-table-column>
|
||
|
<el-table-column prop="productType" label="产品类别"> </el-table-column>
|
||
|
<el-table-column prop="SPTM" label="商品条码"> </el-table-column>
|
||
|
</el-table>
|
||
|
|
||
|
<el-pagination
|
||
|
:page-size="subFilterQuery.limit"
|
||
|
@current-change="handleSubCurrentChange"
|
||
|
layout="prev, pager, next"
|
||
|
:total="subTotal"
|
||
|
></el-pagination>
|
||
|
</el-card>
|
||
|
|
||
|
<el-card class="el-card">
|
||
|
<div
|
||
|
slot="header"
|
||
|
style="font-weight: bold; justify-content: space-between; display: flex"
|
||
|
>
|
||
|
<span>产品标识信息</span>
|
||
|
<el-button type="primary" size="small" @click="handleAddClick(null)"
|
||
|
>添加</el-button
|
||
|
>
|
||
|
</div>
|
||
|
<el-table
|
||
|
v-loading="loading"
|
||
|
:data="subIdList"
|
||
|
border
|
||
|
style="width: 100%; height: 100%"
|
||
|
>
|
||
|
<el-table-column prop="Status" label="状态 " width="100">
|
||
|
<template slot-scope="scope">
|
||
|
<span>{{ postStatus[scope.row.Status] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
|
||
|
<el-table-column
|
||
|
prop="issuingAgency"
|
||
|
label="发码机构编码名称"
|
||
|
width="140"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="primaryDeviceId"
|
||
|
label="最小销售单元产品标识"
|
||
|
width="160"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="publishDate"
|
||
|
label="产品标识发布日期 "
|
||
|
:show-overflow-tooltip="true"
|
||
|
width="140"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="pkgQuantity"
|
||
|
label="最小销售单元中使用单元数量"
|
||
|
width="180"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="useUnitDeviceId"
|
||
|
label="使用单元产品标识 "
|
||
|
width="140"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="isSameRegDI"
|
||
|
label="是否与注册/备案产品标识一致 "
|
||
|
width="200"
|
||
|
>
|
||
|
<template slot-scope="scope">
|
||
|
<span>{{ isTip[scope.row.isSameRegDI] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="registrationDI"
|
||
|
label="注册/备案产品标识"
|
||
|
width="140"
|
||
|
>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="isDirectMark"
|
||
|
label="是否有本体直接标识 "
|
||
|
width="140"
|
||
|
>
|
||
|
<template slot-scope="scope">
|
||
|
<span>{{ isTip[scope.row.isDirectMark] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="isSameDeviceId"
|
||
|
label="本体标识与最小销售单元标识是否一致"
|
||
|
width="240"
|
||
|
>
|
||
|
<template slot-scope="scope">
|
||
|
<span>{{ isTip[scope.row.isSameDeviceId] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column prop="directMarkDI" label="本体产品标识" width="120">
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="isLotBatch"
|
||
|
label="生产标识是否包含批号"
|
||
|
width="150"
|
||
|
>
|
||
|
<template slot-scope="scope">
|
||
|
<span>{{ isTip[scope.row.isLotBatch] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="isSerialNumber"
|
||
|
label="生产标识是否包含序列号"
|
||
|
width="160"
|
||
|
><template slot-scope="scope">
|
||
|
<span>{{ isTip[scope.row.isSerialNumber] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="isManufacturingDate"
|
||
|
label="生产标识是否包含生产日期"
|
||
|
width="170"
|
||
|
><template slot-scope="scope">
|
||
|
<span>{{ isTip[scope.row.isManufacturingDate] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column
|
||
|
prop="isExpirationDate"
|
||
|
label="生产标识是否包含失效日期"
|
||
|
width="170"
|
||
|
><template slot-scope="scope">
|
||
|
<span>{{ isTip[scope.row.isExpirationDate] }}</span>
|
||
|
</template>
|
||
|
</el-table-column>
|
||
|
<el-table-column fixed="right" label="操作" width="100">
|
||
|
<template slot-scope="scope">
|
||
|
<el-button
|
||
|
@click="handleAddClick(scope.row)"
|
||
|
type="text"
|
||
|
size="small"
|
||
|
v-bind:disabled="scope.row.Status != 1"
|
||
|
>修改</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="formMap[formName]"
|
||
|
:visible.sync="addDialogVisible"
|
||
|
width="85%"
|
||
|
v-if="addDialogVisible"
|
||
|
>
|
||
|
<modifyDi
|
||
|
:productDetail="productDetail"
|
||
|
v-on:closeModifyDi="closeModifyDi"
|
||
|
></modifyDi>
|
||
|
</el-dialog>
|
||
|
|
||
|
<el-pagination
|
||
|
:page-size="subFilterQuery.limit"
|
||
|
@current-change="handleCurrentChange"
|
||
|
layout="prev, pager, next"
|
||
|
:total="subIdTotal"
|
||
|
></el-pagination>
|
||
|
</el-card>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import {
|
||
|
listUdiProduct,
|
||
|
allUdiProduct,
|
||
|
addUdiProduct,
|
||
|
modifyUdiProduct,
|
||
|
deleteUdiProduct,
|
||
|
} from "../../api/publish/udiProduct";
|
||
|
|
||
|
import {
|
||
|
listUdiSubProduct,
|
||
|
addUdiSubProduct,
|
||
|
modifyUdiSubProduct,
|
||
|
deleteUdiSubProduct,
|
||
|
} from "../../api/publish/udiSubProduct";
|
||
|
import store from "../../store/index";
|
||
|
|
||
|
import {
|
||
|
listDeviceId,
|
||
|
addDeviceId,
|
||
|
modifyDeviceId,
|
||
|
deleteDeviceId,
|
||
|
} from "../../api/publish/udiSubProductID";
|
||
|
import modifyDi from "./modifyDeviceId";
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
filterQuery: {
|
||
|
productName: "",
|
||
|
page: 1,
|
||
|
limit: 5,
|
||
|
// customerId: store.getters.customerId,
|
||
|
},
|
||
|
|
||
|
subIdQuery: {
|
||
|
subProductId: "",
|
||
|
page: 1,
|
||
|
limit: 20,
|
||
|
// customerId: store.getters.customerId,
|
||
|
},
|
||
|
currentProductName: "",
|
||
|
|
||
|
subFilterQuery: {
|
||
|
specification: "",
|
||
|
productId: "",
|
||
|
page: 1,
|
||
|
limit: 5,
|
||
|
// customerId: store.getters.customerId,
|
||
|
},
|
||
|
|
||
|
formName: null,
|
||
|
|
||
|
formMap: {
|
||
|
add: "新增标识",
|
||
|
edit: "标识维护",
|
||
|
},
|
||
|
|
||
|
formVisible: false,
|
||
|
list: [],
|
||
|
total: 0,
|
||
|
|
||
|
subList: [],
|
||
|
subTotal: 0,
|
||
|
|
||
|
subIdList: [],
|
||
|
subIdTotal: 0,
|
||
|
|
||
|
isTip: {
|
||
|
2: "否",
|
||
|
1: "是",
|
||
|
},
|
||
|
|
||
|
productId: "",
|
||
|
mainProduct: "",
|
||
|
addDialogVisible: false,
|
||
|
currentProduct: "",
|
||
|
productDetail: {
|
||
|
UDI_DeviceIdOID: "", //
|
||
|
primaryDeviceId: "", //最小销售单元产品标识
|
||
|
publishDate: "", //产品标识发布日期
|
||
|
pkgQuantity: "", //最小销售单元中使用单元数量
|
||
|
useUnitDeviceId: "", //使用单元产品标识
|
||
|
deviceCarrier: "", //标识载体(可多选)
|
||
|
isSameRegDI: "", //是否与注册/备案产品标识一致
|
||
|
registrationDI: "", //注册/备案产品标识
|
||
|
isDirectMark: "", //是否有本体直接标识
|
||
|
isSameDeviceId: "", //本体标识与最小销售单元标识是否一致
|
||
|
directMarkDI: "", //本体产品标识
|
||
|
isLotBatch: "", //生产标识是否包含批号
|
||
|
isSerialNumber: "", // 生产标识是否包含序列号
|
||
|
isManufacturingDate: "", //生产标识是否包含生产日期
|
||
|
isExpirationDate: "", //生产标识是否包含失效日期
|
||
|
Status: "", //状态
|
||
|
deviceRecordKey: "", //
|
||
|
TYSHXYDM: "", //
|
||
|
IndentCode: "", //厂商识别码
|
||
|
UDI_SubProduct_FK: "", //子类信息外籍
|
||
|
UDI_DeviceId_FK: "", //产品标识信息
|
||
|
UDI_StandAgency_FK: "", //发码机构
|
||
|
UDI_FacIdentCode_FK: "", //厂商识别码
|
||
|
UDI_Product_FK: "", //产品信息
|
||
|
SPTM: "",
|
||
|
},
|
||
|
postStatus: {
|
||
|
1: "未上传",
|
||
|
2: "已上传未提交",
|
||
|
3: "已上传已提交",
|
||
|
},
|
||
|
};
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
onReset() {
|
||
|
this.$router.push({
|
||
|
path: "",
|
||
|
});
|
||
|
this.filterQuery = {
|
||
|
productName: "",
|
||
|
page: 1,
|
||
|
limit: 5,
|
||
|
// customerId: store.getters.customerId,
|
||
|
};
|
||
|
// this.getList();
|
||
|
},
|
||
|
|
||
|
onSubReset() {
|
||
|
this.subFilterQuery = {
|
||
|
specification: "",
|
||
|
productId: this.productId,
|
||
|
page: 1,
|
||
|
limit: 5,
|
||
|
// customerId: store.getters.customerId,
|
||
|
};
|
||
|
// this.getSubList();
|
||
|
},
|
||
|
|
||
|
//获取产品列表
|
||
|
getList() {
|
||
|
this.loading = true;
|
||
|
allUdiProduct()
|
||
|
.then((response) => {
|
||
|
this.loading = false;
|
||
|
this.list = response.data;
|
||
|
this.total = response.data.total || 0;
|
||
|
if (this.list != null && this.list.length > 0) {
|
||
|
this.subFilterQuery.productId = this.list[0].value;
|
||
|
this.mainProduct = this.list[0];
|
||
|
this.getSubList();
|
||
|
}
|
||
|
})
|
||
|
.catch(() => {
|
||
|
this.loading = false;
|
||
|
this.list = [];
|
||
|
this.total = 0;
|
||
|
});
|
||
|
},
|
||
|
getSubList() {
|
||
|
this.loading = true;
|
||
|
|
||
|
if (
|
||
|
this.subFilterQuery.productId == "" ||
|
||
|
this.subFilterQuery.productId == null
|
||
|
) {
|
||
|
this.$message.warning("请选择企业产品");
|
||
|
this.loading = false;
|
||
|
} else {
|
||
|
listUdiSubProduct(this.subFilterQuery)
|
||
|
.then((response) => {
|
||
|
this.loading = false;
|
||
|
this.subList = response.data.list || [];
|
||
|
this.subTotal = response.data.total || 0;
|
||
|
})
|
||
|
.catch(() => {
|
||
|
this.loading = false;
|
||
|
this.subList = [];
|
||
|
this.subTotal = 0;
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
getSubIdList() {
|
||
|
this.loading = true;
|
||
|
listDeviceId(this.subIdQuery)
|
||
|
.then((response) => {
|
||
|
this.loading = false;
|
||
|
this.subIdList = response.data.list || [];
|
||
|
this.subIdTotal = response.data.total || 0;
|
||
|
})
|
||
|
.catch(() => {
|
||
|
this.loading = false;
|
||
|
this.subIdList = [];
|
||
|
this.subIdTotal = 0;
|
||
|
});
|
||
|
},
|
||
|
//父类操作
|
||
|
intentMainPrduct(value) {
|
||
|
console.log(value);
|
||
|
console.log(this.list);
|
||
|
this.mainProduct = value
|
||
|
? this.list.find((ele) => ele.value === value)
|
||
|
: "";
|
||
|
console.log(this.mainProduct);
|
||
|
},
|
||
|
handleAddClick(row) {
|
||
|
if (row == null) {
|
||
|
this.formName = "add";
|
||
|
if (this.currentProduct.UDI_SubProductOID == null) {
|
||
|
this.$message.warning("请先选择产品");
|
||
|
return;
|
||
|
}
|
||
|
this.productDetail = {
|
||
|
UDI_DeviceIdOID: "", //
|
||
|
primaryDeviceId: "", //最小销售单元产品标识
|
||
|
publishDate: "", //产品标识发布日期
|
||
|
pkgQuantity: "1", //最小销售单元中使用单元数量
|
||
|
useUnitDeviceId: "", //使用单元产品标识
|
||
|
deviceCarrier: "", //标识载体(可多选)
|
||
|
isSameRegDI: "1", //是否与注册/备案产品标识一致
|
||
|
registrationDI: "", //注册/备案产品标识
|
||
|
isDirectMark: "2", //是否有本体直接标识
|
||
|
isSameDeviceId: "2", //本体标识与最小销售单元标识是否一致
|
||
|
directMarkDI: "", //本体产品标识
|
||
|
isLotBatch: "1", //生产标识是否包含批号
|
||
|
isSerialNumber: "1", // 生产标识是否包含序列号
|
||
|
isManufacturingDate: "1", //生产标识是否包含生产日期
|
||
|
isExpirationDate: "1", //生产标识是否包含失效日期
|
||
|
Status: "", //状态
|
||
|
deviceRecordKey: "", //
|
||
|
TYSHXYDM: "", //
|
||
|
IndentCode: "", //厂商识别码
|
||
|
UDI_SubProduct_FK: "", //子类信息外籍
|
||
|
UDI_DeviceId_FK: "", //产品标识信息
|
||
|
UDI_StandAgency_FK: "", //发码机构
|
||
|
UDI_FacIdentCode_FK: "", //厂商识别码
|
||
|
UDI_Product_FK: "", //产品信息
|
||
|
};
|
||
|
this.productDetail.UDI_SubProduct_FK = this.currentProduct.UDI_SubProductOID;
|
||
|
this.productDetail.UDI_Product_FK = this.currentProduct.UDI_Product_FK;
|
||
|
} else {
|
||
|
this.formName = "edit";
|
||
|
this.productDetail = row;
|
||
|
}
|
||
|
this.productDetail.SPTM = this.currentProduct.SPTM;
|
||
|
this.addDialogVisible = true;
|
||
|
},
|
||
|
|
||
|
onAddSubmit() {},
|
||
|
|
||
|
cancelAdd() {
|
||
|
this.formVisible = false;
|
||
|
this.addDialogVisible = false;
|
||
|
},
|
||
|
|
||
|
handleCurrentChange(val) {
|
||
|
this.filterQuery.page = val;
|
||
|
this.getSubIdList();
|
||
|
},
|
||
|
|
||
|
intentSubIdDetail(row) {
|
||
|
this.subIdQuery.subProductId = row.UDI_SubProductOID;
|
||
|
this.getSubIdList();
|
||
|
|
||
|
this.currentProduct = row;
|
||
|
},
|
||
|
|
||
|
handleSubCurrentChange(val) {
|
||
|
this.subFilterQuery.page = val;
|
||
|
this.getSubList();
|
||
|
},
|
||
|
change() {},
|
||
|
|
||
|
closeModifyDi(val) {
|
||
|
this.addDialogVisible = false;
|
||
|
if (val) {
|
||
|
this.$message.success("保存成功!");
|
||
|
this.getSubIdList();
|
||
|
} else if (val == null) {
|
||
|
} else {
|
||
|
this.$message.error("保存失败!");
|
||
|
}
|
||
|
},
|
||
|
deleteDialog(row) {
|
||
|
this.$confirm("此操作将删除该产品标识信息, 是否继续?", "提示", {
|
||
|
confirmButtonText: "确定",
|
||
|
cancelButtonText: "取消",
|
||
|
type: "warning",
|
||
|
})
|
||
|
.then(() => {
|
||
|
this.loading = true;
|
||
|
let tquery = {
|
||
|
id: row.UDI_DeviceIdOID + "",
|
||
|
};
|
||
|
console.log(tquery.id);
|
||
|
deleteDeviceId(tquery)
|
||
|
.then((response) => {
|
||
|
if (response.code == 20000) {
|
||
|
this.$message.success("删除成功!");
|
||
|
this.getSubIdList();
|
||
|
} else {
|
||
|
this.$message.error(response.message);
|
||
|
}
|
||
|
})
|
||
|
.catch(() => {});
|
||
|
})
|
||
|
.catch(() => {});
|
||
|
},
|
||
|
},
|
||
|
mounted() {},
|
||
|
components: {
|
||
|
modifyDi,
|
||
|
},
|
||
|
created() {
|
||
|
this.getList();
|
||
|
},
|
||
|
};
|
||
|
</script>
|
||
|
<style>
|
||
|
.edit-text {
|
||
|
width: 100%;
|
||
|
font-size: 12px;
|
||
|
margin-top: 12px;
|
||
|
font-family: "Microsoft YaHei";
|
||
|
color: #000000;
|
||
|
}
|
||
|
</style>
|