飞道的博客

在vue中使用umy-ui

790人阅读  评论(0)

1.下载umy-ui      http://www.umyui.com/

npm install  umy-ui    ||    yarn add umy-ui


2.创建存放umy-ui的文件    umy-ui.js


  
  1. //完整引入
  2. import Vue from 'vue';
  3. import UmyUi from 'umy-ui'
  4. import 'umy-ui/lib/theme-chalk/index.css'; // 引入样式
  5. Vue.use(UmyUi);

最好使用按需引入,借助 babel-plugin-component,以达到减小项目体积的目的。

npm install babel-plugin-component

3.在babel.config.js中进行设置


  
  1. module.exports = {
  2. presets: [
  3. '@vue/app'
  4. ],
  5. plugins: [
  6. [ "component", {
  7. 'libraryName': "umy-ui",
  8. "styleLibraryName": "theme-chalk"
  9. }, "umy-ui"]
  10. ]
  11. }

 按需引入


  
  1. import Vue from 'vue';
  2. import {
  3. UTableColumn,
  4. UTable,
  5. UxGrid,
  6. UxTableColumn
  7. } from 'umy-ui';
  8. Vue.use(UTableColumn);
  9. Vue.use(UTable);
  10. Vue.use(UxGrid);
  11. Vue.use(UxTableColumn);

 在main.js中导入一下文件即可,当然以上代码也可以直接写道main.js中,但是代码就没有那么优雅了

4.最大的好处是使用虚拟表格,当数据非常之庞大的时候,用虚拟表格不会显得卡顿

HTML代码


  
  1. <template>
  2. <div class="about-layout">
  3. <!--
  4. ref : 可以用来绑定数据,做虚拟表格
  5. height: 绑定高度,若不绑定,自适应高度
  6. show-header-overflow 标题过长,是否显示省略号
  7. show-overflow 内容过长时显示为省略号
  8. border 显示纵向边框
  9. -->
  10. <ux-grid
  11. ref= "plxTable"
  12. :height= "$store.state.plxTableHeightOne"
  13. :show-header-overflow= "true"
  14. :show-overflow= "true"
  15. border
  16. >
  17. <!--
  18. tableHead: 表格标题的数据列表
  19. resizable: 列是否允许拖动列宽调整大小
  20. title: 设置表格的标题
  21. field: 设置表格的显示内容
  22. sortable: 是否允许列排序
  23. -->
  24. <!--
  25. 使用插槽,可以对数据进行过滤
  26. 相当于覆盖了field的值
  27. -->
  28. <ux-table-column
  29. v-for= "(item, index) in tableHead"
  30. min-width= "120"
  31. :resizable= "true"
  32. :key= "index"
  33. :title= "item.label"
  34. :field= "item.prop"
  35. :sortable= "item.sortable"
  36. >
  37. <template slot-scope="scope">
  38. {{
  39. tableFiilter(
  40. scope.column.property,
  41. scope.row[scope.column.property]
  42. )
  43. }}
  44. </template>
  45. </ux-table-column>
  46. </ux-grid>
  47. </div>
  48. </template>

JS代码


  
  1. export default {
  2. data() {
  3. return {
  4. // 标题列表数据
  5. tableHead: [
  6. {
  7. label: "吃",
  8. prop: "eat", //需要对应数据中的字段名,否则无效
  9. },
  10. {
  11. label: "喝",
  12. prop: "drink", //需要对应数据中的字段名,否则无效
  13. },
  14. {
  15. label: "玩",
  16. prop: "play", //需要对应数据中的字段名,否则无效
  17. },
  18. ],
  19. // 过滤吃的数据
  20. eatObj: {
  21. D: "饭",
  22. Y: "包子",
  23. R: "馒头",
  24. S: "辣条",
  25. },
  26. tabData:[]
  27. };
  28. },
  29. props: {},
  30. methods: {
  31. //过滤表格 value === D Y R S 过滤一下
  32. //prop 字段名 value 字段值
  33. tableFiilter(prop, value) {
  34. if (prop === "eat") {
  35. return this.eatObj[value];
  36. }
  37. },
  38. // 获取数据
  39. getTableData(){
  40. let params = {
  41. page: 1,
  42. pageSize: 10
  43. }
  44. getTableData(params).then( res => {
  45. if(res.code !== 200){
  46. return this.$Message( '请求发生错误')
  47. }
  48. this.tabData = res.data
  49. // 调用虚拟表格reloadData方法 实现虚拟表格
  50. this.$refs.plxTable.reloadData( this.tabData);
  51. })
  52. }
  53. },
  54. created() {
  55. this.getTableData()
  56. },
  57. };

 


转载:https://blog.csdn.net/a15297701931/article/details/115912275
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场