华西海圻ELN前端工程
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

183 lines
5.5 KiB

<template>
<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :title="$t(title)" @close="onCancel" :visible.sync="visible" append-to-body width="80%">
<SelectTable ref="selectSjRef" :columns="columns"
:selectedId="selectedId"
:searchForm="searchForm"
:studyFormId = "studyFormId"
:listApi="listApi"
:selectedCode="selectedCode"
@radioSelect="handleSelect"/>
<div class="other-reagent">
<el-checkbox v-model="otherChecked" @change="handleOtherChange">其他</el-checkbox>
<el-input class="other-reagent-input" v-model="otherReagent"></el-input>
</div>
<template slot="footer" class="dialog-footer">
<el-button @click="onCancel">{{$t('form.cancel')}}</el-button>
<el-button :disabled="isDisabled" type="primary" @click="onSubmit">{{$t('form.saveConfirm')}}</el-button>
</template>
</el-dialog>
</template>
<script>
import SelectTable from '@/components/Template/SelectTable.vue';
import SelectDept from "@/views/business/comps/select/SelectDept";
import { public_yqList } from '@/api/business/public/public';
import { EventBus } from "@/utils/eventBus";
export default {
components: {
SelectTable,
SelectDept
},
props: {
type: {
type: String,
default: "",
},
title: {
type: String,
default: "选择仪器",
},
selectedCode: {
type: String,
default: "bh",
},
listApi: {
type: Function,
default: public_yqList,
},
searchForm: {
type: Object,
default: () => {
return {
mc: {
label:'仪器名称',
},
bh: {
label:'仪器编号',
},
ly: {
label:'来源',
},
}
},
},
columns: {
type: Array,
default: () => [
{
prop: 'mc',
label: '仪器名称',
},
{
prop: 'bh',
label: '仪器编号',
},
{
prop: 'ly',
label: '来源(厂家)',
},
{
prop: 'jzrq',
label: '下次校准时间',
},
],
},
},
data() {
return {
visible:false,
selectedId: "",
currentRow: {},
studyFormId:'',//有个studyFormId需要从外面动态传过来
uuid:'',//为了标识eventBus的事件id,
otherChecked: false,
otherReagent: "",//其他试剂
}
},
computed: {
isDisabled() {
if (this.otherChecked && this.otherReagent) {//如果选中了其他,那么就不校验是否选择了试剂
return false;
}else if(this.checkType === "checkbox"){
console.log(this.currentRow,"this.currentRow")
return !this.currentRow || this.currentRow.length === 0;
}
return !this.selectedId;
}
},
methods: {
show(studyFormId,data){
if(data && data.uuid) {//为了标识eventBus的事件id
this.uuid = data.uuid
}
this.selectedId = "";
this.visible = true
setTimeout(() => {
if(this.$refs.selectSjRef){
this.$refs.selectSjRef.show()
}
}, 10);
this.studyFormId = studyFormId
this.otherChecked = false;
this.otherReagent = "";
},
onCancel() {
this.visible = false
this.$emit('cancel');
},
onSubmit() {
let row = this.otherChecked ? {bh: this.otherReagent}:this.currentRow;
const selectedValue = this.otherChecked ? this.otherReagent : this.selectedId;
this.$emit('submit', selectedValue,row);
const selectInfo = this.otherChecked ?{
mc: "",
bh: row.bh,
xh: "",
jzrq: "",
}: {
mc: row.mc,
bh: row.bh,
xh: row.xh,
jzrq: row.jzrq,
}
// 触发eventBus事件
EventBus.$emit("onInstrumentSubmit",{selectInfo,uuid:this.uuid,selectedId:selectedValue,row,type:"yq"});
this.visible = false;
},
handleSelect(code,row) {
this.selectedId = code;
this.currentRow = row;
},
handleOtherChange(val) {
this.otherChecked = val;
if (val) {//如果选中了其他,那么就清空选中的id
this.selectedId = "";
this.currentRow = null;
}
},
}
}
</script>
<style lang="scss" scoped>
.header-row{
display: flex;
align-items: center;
padding: 20px 0;
}
.other-reagent {
display: flex;
align-items: center;
padding: 20px 0;
}
.other-reagent-input {
width: 200px;
margin-left: 5px;
}
</style>