问一下各位VUE的方法,现在的效果执行到了这行禁止选并且变灰,但是目前想要一个效果就是置灰这行前面的redio还要自动被选中,怎么处理一下呢
<!--
* @Description: 人员查询
* @Author: feng.li
* @Date: 2022-12-12 11:14:28
-->
<template>
<el-table
highlight-current-row
:data="personList"
detail
height="100%"
:row-style="{ cursor: 'pointer' }"
:row-class-name="tableRowClassName"
@current-change="handleCurrentChange">
<el-table-column width="45">
<template #default="{ $index, row}">
<el-tooltip :disabled="row.userId" placement="top" effect="light">
<div slot="content">当前人员未设置账号信息,无法进行审批,<br/>请在系统-用户管理中完善账号信息</div>
<el-radio v-model="selectedId" :value="row.userId" :disabled="!row.userId||!checkSelectable(row)" :label="row.id||chooseAndDis" @change.native="handleChangeRadioValue($index, row)">{{ '' }}</el-radio>
</el-tooltip>
</template>
</el-table-column>
<el-table-column type="index" width="50" label="序号" align="center"></el-table-column>
<el-table-column prop="personName" min-width="104" label="姓名" align="center"></el-table-column>
<el-table-column prop="jobName" min-width="146" label="职务" align="center"></el-table-column>
<el-table-column prop="telephone" min-width="146" show-overflow-tooltip label="联系电话" align="center"></el-table-column>
<el-table-column prop="resumeStatus" min-width="146" show-overflow-tooltip label="在职状态" align="center">
<template #default="{ row }">
<div>{{ row.resumeStatus === '1' ? '现任' : '离任' }}</div>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
name: 'PersonTable',
components: {},
props: {
personList: {
type: Array,
default: () => []
},
selectedInfo: {
type: Object,
default: () => {}
},
otherData: {
type: String,
default: () => {}
}
},
data () {
return {
selectedId: '',
selectedPersonInfo: {},
otherSelectedId:'',
otherIsDisabled:false,
chooseAndDis:''
}
},
computed: {},
watch: {
selectedInfo: {
handler (newVal) {
const { userId } = newVal
this.selectedId = userId
},
immediate: true,
deep: true
},
otherData: {
handler (newVal) {
var userId = newVal
console.log("666"+newVal)
for (let i = 0; i < this.personList.length; i++) {
if (userId === this.personList[i].userId) {
console.log('Find the personn:', this.personList[i]);
this.otherSelectedId=userId
console.log("this.selectId::"+this.otherSelectedId)
}
}
},
immediate: true,
deep: true
}
},
created () {
},
mounted () {},
methods: {
tableRowClassName ({row, rowIndex}) {
if (row.userId===this.otherSelectedId) {
return 'disabledRow'
} else {
return ''
}
},
checkSelectable (row) {
return row.userId
},
handleCurrentChange (val) {
if (!val) return
if (!val.userId) return
this.selectedPersonInfo = { ...val }
this.selectedId = this.selectedPersonInfo?.id
this.$emit('selectedPerson', this.selectedPersonInfo)
},
// 控制当前选中数据
handleChangeRadioValue (index, row) {
this.selectedPersonInfo = { ...row }
this.$emit('selectedPerson', this.selectedPersonInfo)
},
clearSelectedId () {
this.selectedId = ''
}
}
}
</script>
<style lang="scss" scoped>
.el-table {
border-left: 1px solid #F2F2F2;
border-right: 1px solid #F2F2F2;
/deep/ .disabledRow{
cursor: not-allowed;
pointer-events: none;
color: #ccc; // 这个会更改当前行的字体颜色,如果不需要可以删掉
}
}
</style>