华西海圻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.
 
 
 
 

193 lines
5.6 KiB

<template>
<el-dialog :title="$t(title)" @close="onCancel" :visible.sync="visible" append-to-body width="80%">
<!-- 麻醉/精神药品配制/领取申请单 -->
<div v-if="type === 'MJYLQSQD'" class="header-row">
<el-radio-group v-model="radio" @input="changeRadio">
<el-radio :label="1">试验</el-radio>
<el-radio :label="2">
部门
</el-radio>
</el-radio-group>
<select-dept v-if="radio==2" v-model="depart" style="width:200px;margin-left:10px" />
</div>
<SelectTable v-if = "isShowTable" ref="selectSjRef" :columns="columns"
:selectedId="selectedId"
:searchForm="searchForm"
:listApi="listApi"
:selectedCode="selectedCode"
@radioSelect="handleSelect"/>
<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_sjList,public_bzList } from '@/api/business/public/public';
export default {
components: {
SelectTable,
SelectDept
},
props: {
type: {
type: String,
default: "",
},
title: {
type: String,
default: "page.business.resource.sj.xzsj",
},
selectedCode: {
type: String,
default: "bh",
},
listApi: {
type: Function,
default: public_sjList,
},
searchForm: {
type: Object,
default: () => {
return {
mc: {
label:'page.business.resource.sj.sjmc',
},
bh: {
label:'page.business.resource.sj.sjbh',
},
studyName: {
label:'page.business.resource.sj.sssy',
},
}
},
},
columns: {
type: Array,
default: () => [
{
prop: 'mc',
label: 'page.business.resource.sj.sjmc',
},
{
prop: 'bh',
label: 'page.business.resource.sj.sjbh',
},
{
prop: 'nd',
label: 'page.business.resource.sj.sjnd',
},
{
prop: 'nddw',
label: 'page.business.resource.gsp.nddw',
},
{
prop: 'sxr',
label: 'page.business.resource.sj.sxr',
},
{
prop: 'studyName',
label: 'page.business.resource.sj.sssy',
},
],
},
},
data() {
return {
visible:false,
selectedId: "",
currentRow: {},
radio:1,
bzList:[],
depart:"",
}
},
computed: {
isShowTable() {
if(this.type === 'MJYLQSQD') {
return this.radio === 1;
}
return true;
},
isDisabled() {
if(this.type === 'MJYLQSQD') {
if(this.radio === 1) {//选择试验的时候必须要选中一项才能点击确定
return !this.selectedId;
}else{
return !this.depart;
}
}
return !this.selectedId;
}
},
methods: {
show(){
this.visible = true
this.showTableData()
if(this.type === 'MJYLQSQD'){
this.getBzList()
}
},
getBzList(){
public_bzList(this.searchForm).then(response => {
this.bzList = response.data
});
},
showTableData(){
if(this.$refs.selectSjRef){
this.$refs.selectSjRef.show()
}else{
setTimeout(() => {
this.showTableData()
}, 100);
}
},
onCancel() {
this.visible = false
this.$emit('cancel');
},
onSubmit() {
let row = this.currentRow;
if(this.type === 'MJYLQSQD') {
if(this.radio === 1) {
row = row;
row.type=this.radio
}else{
const o = this.bzList.find(item => item.deptId == this.depart);
if(o){
row = o;
row.type=this.radio
}else{
this.$message.error(`该部门没有设置部长!`)
return
}
}
}
this.$emit('submit', this.selectedId,row);
},
handleSelect(code,row) {
this.selectedId = code;
this.currentRow = row;
},
changeRadio(val){
if(val==1){
this.showTableData()
}
}
}
}
</script>
<style lang="scss" scoped>
.header-row{
display: flex;
align-items: center;
padding: 20px 0;
}
</style>