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/business/stockOrderNewSelectProduct.vue

470 lines
17 KiB
Vue

4 years ago
<template>
3 years ago
<div>
<el-card class="el-card">
<div>
<el-form :inline="true" :model="listQuery" size="mini">
<el-row style="margin-top: 15px;width: 1000px">
<el-form-item class="query-form-item">
<el-input v-model="listQuery.udiCode"
style="width: 600px"
placeholder="请扫描或输入UDI码"
clearable="true"
@keyup.enter.native="keyup_submit($event)"></el-input>
</el-form-item>
</el-row>
4 years ago
3 years ago
<el-row>
<el-form-item class="query-form-item">
<el-input v-model="listQuery.unionCode" placeholder="DI/医保编码/商品条码"
clearable="true"></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-input v-model="listQuery.cpmctymc" placeholder="产品通用名" clearable="true"></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-input v-model="listQuery.ggxh" placeholder="规格型号" clearable="true"></el-input>
</el-form-item>
</el-row>
4 years ago
3 years ago
<el-row>
<el-form-item class="query-form-item">
<el-input v-model="listQuery.ylqxzcrbarmc" placeholder="生产企业/注册备案人"
clearable="true"></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-input v-model="listQuery.thrPiId" placeholder="第三方产品编码" clearable="true"></el-input>
</el-form-item>
4 years ago
3 years ago
<el-form-item>
<el-button-group>
<el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button>
<el-button type="primary" icon="search" @click="search"></el-button>
<el-button type="primary" icon="search" @click="confirmSelect"></el-button>
3 years ago
</el-button-group>
</el-form-item>
</el-row>
</el-form>
4 years ago
3 years ago
<el-table
:data="dataList"
style="width: 100%"
highlight-current-row="false"
v-loading="loading"
:row-class-name="tableRowClassName"
@current-change="handleChange"
ref="multipleTable"
>
<!-- <el-table-column-->
<!-- type="selection"-->
<!-- width="55">-->
<!-- </el-table-column>-->
<el-table-column label width="45">
<template slot-scope="scope">
<el-radio :label="scope.row.id" v-model="radioCheck"><span></span></el-radio>
</template>
3 years ago
</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="医疗器械注册人"
3 years ago
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"
3 years ago
show-overflow-tooltip
></el-table-column>
<el-table-column label="操作" fixed="right" width="160">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click.native.stop="handleDetailClick(scope.row)"
>详情
</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
:page-size="listQuery.limit"
@current-change="handleErpPageChange"
layout="prev, pager, next"
:total="pageTotal"
:current-page="listQuery.page"
></el-pagination>
</div>
</el-card>
<el-dialog
title="耗材字典详情"
:visible.sync="udiRlDetailVisible"
width="85%"
:close-on-click-modal="false"
:close-on-press-escape="false"
append-to-body
v-if="udiRlDetailVisible"
>
3 years ago
<udiRlDetailDialog :editQuery="currentRow"></udiRlDetailDialog>
</el-dialog>
<el-dialog title="请选择对应的资质证书" :visible.sync="dialogFormVisible" append-to-body width="40%">
<el-form :model="form">
<el-form-item label="" prop="isGive">
<el-radio-group v-model="currentCert">
<el-radio :label="item" :key="item" v-for="item in certList">{{ item }}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="selectCert"> </el-button>
<el-button @click="dialogFormVisible = false"> </el-button>
</div>
</el-dialog>
3 years ago
</div>
4 years ago
</template>
<script>
import {
3 years ago
getStockOrderDetailInstrumentById,
stockOrderDetailFilterProduct, filterAllProduct
} from "../../api/inout/stockOrder";
import store from "../../store";
import udiRlDetailDialog from "./../basic/UdiRlDetailDialog";
3 years ago
export default {
name: "stockOrderNewSelectProduct",
3 years ago
props: {
data: {
type: Object,
required: true,
},
closeDialog: {
type: Function,
required: true,
},
filterType: {
type: Function,
required: true,
},
purType: {
type: Object,
required: true,
},
},
4 years ago
3 years ago
data() {
return {
listQuery: {
purType: null,
udiCode: null,
unicode: null,
cpmctymc: null,
ggxh: null,
ylqxzcrbarmc: null,
thrPiId: null,
3 years ago
page: 1,
limit: 10,
},
3 years ago
combineQuery: {
thirdId: "",
relId: "",
erpName: "",
keys: [],
},
ids:[],
radioCheck: null,
3 years ago
dataList: [],
pageTotal: 1,
total: 1,
3 years ago
currentRow: null,
loading: false,
udiRlDetailVisible: false,
thirdSys: [],
thirdSysFk: null,
busTypes: [],
actDateRange: [],
pickerOptions: {
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
},
},
],
},
3 years ago
orderEditor: false,
orderId: "",
currentCert: null,
certList: [],
dialogFormVisible: false,
multipleSelection: null,
3 years ago
};
},
3 years ago
methods: {
onReset() {
this.$router.push({
path: "",
});
this.listQuery = {
purType: null,
udiCode: null,
unicode: null,
cpmctymc: null,
ggxh: null,
ylqxzcrbarmc: null,
thrPiId: null,
page: 1,
limit: 10
}
this.multipleSelection = [];
this.radioCheck = null;
this.currentRow = null;
3 years ago
this.getList();
},
tableRowClassName({row}) {
if (row.checked) return "warning-row";
return "";
},
checkSelectable(row) {
return !row.check;
},
handleCurrentChange(val) {
this.unionQuery.page = val;
this.getList();
},
handleChange(val) {
this.radioCheck = val.id;
3 years ago
this.currentRow = val;
this.multipleSelection = val
3 years ago
},
handleDetailClick(row) {
this.currentRow = row;
this.udiRlDetailVisible = true;
3 years ago
},
handleErpPageChange(val) {
this.listQuery.page = val;
this.getList();
},
keyup_submit(event) {
this.listQuery.page = 1;
this.getList();
event.target.select();
},
search() {
this.listQuery.page = 1;
this.getList();
},
getList() {
this.loading = true;
this.listQuery.customerId = store.getters.customerId;
3 years ago
if(this.data!=undefined && this.data.companyName!=undefined && this.data.companyName!=null ){
this.listQuery.companyName = this.data.companyName;
}
3 years ago
if(this.data.formData!=undefined && this.data.formData.corpName!=undefined && this.data.formData.corpName!=null ){
this.listQuery.companyName = this.data.formData.corpName;
}
if (this.filterType != null && this.filterType === 2) {
filterAllProduct(this.listQuery)
.then((response) => {
this.loading = false;
if (response.code === 20000) {
this.dataList = response.data.list || [];
this.pageTotal = response.data.total || 0;
} else {
this.$message.error(response.message);
this.dataList = [];
this.pageTotal = 0;
}
})
.catch(() => {
this.loading = false;
3 years ago
this.dataList = [];
this.pageTotal = 0;
});
} else {
stockOrderDetailFilterProduct(this.listQuery)
.then((response) => {
this.loading = false;
if (response.code === 20000) {
this.dataList = response.data.list || [];
this.pageTotal = response.data.total || 0;
} else {
this.$message.error(response.message);
this.dataList = [];
this.pageTotal = 0;
}
})
.catch(() => {
this.loading = false;
this.dataList = [];
this.pageTotal = 0;
});
}
3 years ago
},
intentBack() {
this.closeDialog();
},
confirmSelect() {
if (this.multipleSelection == null) {
3 years ago
this.$message.error('未选择产品');
return;
4 years ago
}
if(this.ids.length>0){
for(var i=0;i<this.ids.length;i++){
if(this.ids[i]==this.multipleSelection.rlId){
this.$message.error("该产品已录入!");
return
}
}
}
let str = this.multipleSelection.zczbhhzbapzbh;
if (str.search(",") != -1) {
this.currentCert = null;
this.certList = str.split(',');
this.dialogFormVisible = true;
} else {
this.combine();
}
},
combine() {
let ids = [];
let data = {
relId: this.multipleSelection.rlId,
supId: this.multipleSelection.customerId
}
ids.push(data);
3 years ago
this.loading = true;
let tQuery = {
datas: ids,
stockOrderLists: this.data.stockOrderLists,
zczbhhzbapzbh: this.multipleSelection.zczbhhzbapzbh,
purType: this.purType
3 years ago
};
getStockOrderDetailInstrumentById(tQuery).then((response) => {
this.loading = false;
if (response.code === 20000) {
this.closeDialog(response.data);
} else {
if (response.code == 601) {
this.$alert(response.message, "提示", {
confirmButtonText: "确定",
});
} else
this.$message.error(response.message);
3 years ago
}
}).catch(() => {
this.loading = false;
});
3 years ago
},
selectCert() {
if (this.currentCert == null) {
this.$message.error("请先选择对应的注册证!");
}else{
this.multipleSelection.zczbhhzbapzbh = this.currentCert;
this.combine();
}
3 years ago
},
},
components: {udiRlDetailDialog},
3 years ago
created() {
if (this.$isNotBlank(this.data)) {
// this.listQuery.nameCode = this.data.udi;
// if (this.data.billType != null) {
// this.listQuery.billType = this.data.billType;
// } else
// this.listQuery.billType = this.data.formData.billType;
// if (this.data.formData != null) {
// this.listQuery.corpId = this.data.formData.corpId;
// }
// this.orderEditor = this.data.orderEditor;
// this.orderId = this.data.orderId;
this.ids=[];
if(this.data.stockOrderLists.length>0){
for(var i=0;i<this.data.stockOrderLists.length;i++){
this.ids.push(this.data.stockOrderLists[i].productId);
}
}
3 years ago
}
this.getList();
},
};
4 years ago
</script>
<style scoped>
.query-form-item {
3 years ago
display: block !important;
margin-right: 10px;
margin-bottom: 5px;
}
4 years ago
div /deep/ .el-table .warning-row {
3 years ago
background: #bebebe;
}
4 years ago
div /deep/ .el-table .success-row {
3 years ago
background: #ffffff;
}
4 years ago
</style>