0%

16.组件复用

小伙伴们都看到了,这里两个表格非常像,但是不一样,考虑到两个表格可复用性非常大,因此我创建一个组件PosMana来实现这两个功能,组件注册成功后,按如下方式引用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"defaultTab" type="card">
"部门管理" name="depMana">
</dep-mana>
el-tab-pane>
"职位管理" name="positionMana">

"position"></pos-mana>
el-tab-pane>
"职称管理" name="jobTitleMana">

"jobtitle"></pos-mana>
el-tab-pane>
"奖惩规则" name="ecCfg">

</ec-mana>
el-tab-pane>
"权限组" name="menuRole">

</menu-role>
el-tab-pane>
</el-tabs>

大家注意职位管理和职称管理是同一个组件,但是state参数不一样。在组件中,我将根据state参数来决定表格的显示样式,请求的地址等。如:

表格是否显示职称等级列

1
2
3
4
5
6
7
8
9
10
11
12
13
14

prop="titleLevel"
label="职称级别"
width="180"
align="left" v-if="state=='jobtitle'">
</el-table-column>

#### 职位名称or职称名称

prop="name"
:label="state=='position'?'职位名称':'职称名称'"
width="180"
align="left">
el-table-column>

增删改地址

1
2
3
4
5
6
7
8
9
10
11
doDelete(ids){
var _this = this;
_this.loading = true;
var url = this.state == 'position' ? '/system/basic/position/' : '/system/basic/joblevel/';
this.deleteRequest(url + ids).then(resp=> {
_this.loading = false;
if (resp && resp.status == 200) {
_this.loadTableData();
}
})
}

动态资源都根据state来动态调整,详细的小伙伴们可以参考vuehr\src\components\system\basic\PosMana.vue组件。