首页 » Web前端 » iviewuploadphp技巧_VueCLI30干货系列之集成iview

iviewuploadphp技巧_VueCLI30干货系列之集成iview

访客 2024-12-05 0

扫一扫用手机浏览

文章目录 [+]

iview是一套基于vue.js的高质量UI组件库,紧张做事于 PC 界面的中后台产品。

特点:

iviewuploadphp技巧_VueCLI30干货系列之集成iview

丰富的组件和功能,知足绝大部分网站场景

iviewuploadphp技巧_VueCLI30干货系列之集成iview
(图片来自网络侵删)

供应开箱即用的 Admin 系统 和 高阶组件库,极大程度节省开拓本钱

友好的 API ,自由灵巧地利用空间

细致、俊秀的 UI

详细的文档

可自定义主题

谁在利用:

阿里巴巴

百度

腾讯

今日头条

京东

滴滴出行

美团

新浪

遐想

科大讯飞

引入View UI插件

1.Npm安装view ui

$ npm install view-design –save

也可以利用VueCLI3.0供应的可视化配置界面,直接在插件中搜索iview,安装后即可利用。

2.main.js中引入插件

一样平常在webPack入口文件,main.js中配置如下:

import ViewUI from 'view-design';import 'view-design/dist/styles/iview.css';Vue.use(ViewUI);

也可以按须要引入,这样打包时可以缩减文件体积。

首先安装babel-plugin-import,并在文件 .babelrc 中配置:

npm install babel-plugin-import --save-dev// .babelrc{ \"大众plugins\"大众: [[\公众import\"大众, { \"大众libraryName\"大众: \"大众view-design\"大众, \公众libraryDirectory\"大众: \"大众src/components\"大众 }]]}

然后这样按需引入组件

import { Button, Table } from 'view-design';Vue.component('Button', Button);Vue.component('Table', Table);

按需引用仍旧须要导入样式,即在 main.js 文件添加以下代码

import 'view-design/dist/styles/iview.css';VueCLI3.0中iview的利用

项目中为了利用方便,可以在iview的根本上进行二次封装组件,这样利用起来就方便了,iview包括一系列完全的组件库,导航、表单和试图等等,本人针对个中的Menu导航菜单、table和upload组件做了二次封装,其他组件的利用可以参考iview官方网站(https://www.iviewui.com/docs/introduce)。

1. Menu导航菜单

定义模板

<Menu theme=\"大众light\"大众 :open-names=\公众[navList[0].url]\公众 width=\"大众100\"大众 @on-select=\"大众navigateTo\"大众 @on-open-change=\公众navChange\公众 accordion> <Submenu v-for=\"大众(item,i) in navList\公众 :key=\"大众i\"大众 :index=\"大众item.name\"大众 :name=\"大众item.url\公众> <template slot=\公众title\公众> <Icon type=\"大众ios-people\"大众 /> {{item.name}} </template> <MenuItem v-for=\"大众(navItem,navI) in item.children\"大众 :key=\"大众navI\公众 :index=\"大众navItem.name\"大众 :name=\"大众navItem.url\"大众> <Icon type=\"大众ios-stats\"大众 /> {{navItem.name}} </MenuItem> </Submenu> </Menu>

定义菜单数据

navList:[ { name:\公众用户管理\"大众,url:\"大众1\"大众,children:[ {name:\"大众用户管理1\公众,url:\"大众/1\"大众}, {name:\公众用户管理2\"大众,url:\公众/2\公众}, ] }, { name:\公众设备管理\"大众,url:\"大众2\"大众,children:[ {name:\"大众设备1\公众,url:\公众/1\"大众}, {name:\"大众设备2\公众,url:\公众/2\"大众}, ] }, ],

2. table

固定表头的table

模板

<Table border ref=\"大众table\"大众 :columns=\"大众columns\"大众 :data=\"大众data\"大众 @on-selection-change=\"大众handleSelectRow()\"大众 @on-row-click=\公众rowClick\"大众 :highlight-row=\公众true\"大众 :loading=\"大众loading\公众 :max-height=\公众tableHeight\公众></Table>

外部调用时通报的参数

props:{ columns:{ default:[] }, data:{ default:[] }, height:{ default:0 }, loading:{ default:false } }

组件调用外部函数方法,点击行触发事宜

rowClick(colum,index){ this.$emit('selectedRow', colum)},

如果表格行嵌套调用其他组件的话

通过给 columns 数据设置一项,指定 type: 'expand',即可开启扩展功能。

给行数据 data 的某项设置 _expanded 为 true,可以默认展开当前行,设置 _disableExpand 可以禁用当前行的展开功能。

引入组件

import expandRow from './table-expand.vue';

在列的第一个参数定义如下

{ type: 'expand', width: 50, render: (h, params) => { return h(expandRow, { props: { row: params.row } }) } },

效果图

3. upload文件上传

模板

<Upload :before-upload=\公众handleUpload\公众 :action=\"大众Url\公众 :on-success='handleSuccess> <Button icon=\"大众ios-cloud-upload-outline\"大众>上传文件</Button> </Upload>

handleUpload方法,在文件上传后进行处理,夹帐动进行提交。

handleUpload (file)if(file){this.files.push(file);}return false;},

进行手动上传:

Upload(){var data = new FormData();let _this= this;//此处可以上传多个文件for(var i=0;i< _this.files.length;i++){data.append(\"大众file\公众, _this.files[i]);}this.$axios({method: 'post',url: ‘http://×××’,data: data,headers: {'Content-Type': 'multipart/form-data;charset=UTF-8'}}).then(function(res){});}

此处文件上传本人碰着两个问题说一下:

如果是单文件上传可以直策应用iview upload的上传功能,this.$refs.upload.post(file),如果是多个文件可以利用循环多次post上传,但是这样做总觉得欠妥,由于有时希望一次要求上传多个文件,此方法就不符合哀求了。
利用formData进行上传时,可以手动多次append ‘file’字段进行多文件上传,此时利用axios进行上传时须要设置要求头,'Content-Type': 'multipart/form-data;charset=UTF-8'。
此方法也有其余一个好处,如果只修正表单内容,不上传文件的话,利用iview upload的post方法无法进行提交,会报上传文件为空的缺点。
而利用axios可以办理此问题。
总结

以上便是VueCLI3.0集成iview的全体过程,个中列举了比较常用的menu、table和upload组件,还有其他好多常用组件可以参考iview官网。
经由实测iview还是非常好用的,比bootstrap要好一些,element ui 也很不错,但是和VueCLI3.0集成的话,首推iview,觉得嵌入的紧密感更强一些,调用也更大略,感兴趣的小伙伴们可以试试。

标签:

相关文章