1、获取当前页面代理
const { proxy } = getCurrentInstance() as ComponentInternalInstance
使用
proxy?.$emit('callBackEvent', ids);
proxy?.$emit('update:id', ids);
proxy?.$modal.msgError('请选择要分配的用户');
proxy?.$modal.msgSuccess('分配成功');
2、子组件和父组件双向绑定
1)父组件写法:v-model:id
<select-user :sType="stype" v-model:id="userInfo.ids" @callBackEvent="printIds"></select-user>
2)子组件写法:先定义prop接收,再用update:id方式双向绑定
const pros=defineProps({
id: {
type: String,
default: ''
}
})
。。。。。。。。。。。。。。。。。。
proxy?.$emit('update:id', ids);
3、获取el-tree组件及使用
import { ElTree } from 'element-plus'
const deptTree = ref<InstanceType<typeof ElTree>>();
deptTree.value?.getCheckedNodes()
deptTree.value?.setCheckedNodes([data]);
4、全局定义组件:main.ts
import SelectUser from '@/components/SelectUser/index.vue';
import SelectDept from '@/components/SelectDept/index.vue';
app.component('select-user', SelectUser);
app.component('select-dept', SelectDept);
5、表单form和table组件
const deptTableRef = ref<ElTableInstance>();
const queryFormRef = ref<ElFormInstance>();
deptTableRef.value?.toggleRowExpansion(item, status)
deptFormRef.value?.resetFields();
6、solt使用直接用template替代了
<el-dialog title="人员选择" v-model="dialog.visible" width="500px" destroy-on-close append-to-body>
<el-tree
ref="deptTree"
:data="data"
show-checkbox
default-expand-all
node-key="id"
:default-checked-keys="checkedData"
highlight-current
:props="defaultProps"
@check-change="handleClick"
>
<template #default="{ node, data }">
<span :class="data.icon"></span>
<span>{{ node.label }}</span>
</template>
</el-tree>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="getCheckedNodes">确 定</el-button>
<el-button @click="resetChecked">重置</el-button>
</div>
</template>
7、emit的简化写法
const emit = defineEmits(["ok"]);
emit('ok');
8、表单验证rules写法
const loginRules: ElFormRules = {
tenantId: [{ required: true, trigger: "blur", message: "请输入您的租户编号" }],
username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
code: [{ required: true, trigger: 'change', message: '请输入验证码' }]
};