canyin-project/ybcy/views/admin/public/attachment-img.html
2024-11-01 16:07:54 +08:00

1082 lines
38 KiB
HTML

<template id="attachment-img" v-cloak>
<el-dialog title="选择图片" :visible.sync="dialogVisible" :close-on-click-modal="false" width="55%" @close='modalClose'
@opened="dialogOpened" class="attachmentImg">
<div flex="box:first" class="attachment_img_box">
<div class="attachment_img_left" v-loading="groupListLoading">
<el-menu class="group-menu" mode='vertical'>
<el-scrollbar style="height: 523px;width: 100%;">
<div class="goods-menu">
<el-menu-item index="all" @click="selected(0)">
<span>全部</span>
</el-menu-item>
<template v-for="(item, index) in groupItem">
<el-menu-item :index='item.id' @click="selected(item.id)">
<div flex="dir:left box:last" class="fenlei">
<i class="el-icon-circle-close gbfenlei" style="display: none"
@click='deleteType(item.id)'></i>
<div style="overflow: hidden;text-overflow: ellipsis;width: 100%">
<span>{{item.name}}</span>
</div>
</div>
</el-menu-item>
</template>
</div>
</el-scrollbar>
<el-popover placement="top" width="160" v-model="visible">
<el-input v-model="new_type_name" placeholder="请输入分组名称" size="mini"></el-input>
<div style="text-align: right; margin: 0;margin-top: 10px;">
<el-button size="mini" type="text" @click="visible = false">取消</el-button>
<el-button type="primary" size="mini" @click="addNewAttType">确定</el-button>
</div>
<el-button slot="reference" style="margin-left: 22%;margin-top: 13px" size="small">
<i class="el-icon-circle-plus-outline"></i> 新建分组
</el-button>
</el-popover>
</el-menu>
</div>
<div flex="dir:top" class="attachment_img_right" v-loading="rightLoading">
<div class="selectBox">
<el-input placeholder="搜索图片名称" suffix-icon="el-icon-search" v-model="atta_name" size="small"
@keyup.enter.native="search(atta_name)" @input="search(atta_name)"
style="width: 30%;padding-left: 12px;"></el-input>
<div style="float: right;padding: 0 10px 0 0;">
<el-upload class="upload-demo" :action="UploadUrl()" :multiple="true" :limit="50"
:on-exceed="handleExceed" :file-list="fileList"
:on-success="handleSuccess" :on-error="handleError" :before-upload="beforeUpload"
:data="uploadData" :on-progress="handProgress">
<el-button size="small" type="primary">
<i class="el-icon-plus avatar-uploader-icon"></i>
上传图片
</el-button>
</el-upload>
</div>
</div>
<el-scrollbar class="scrollbar" style="height: 460px;">
<div class="app-attachment-list">
<template v-for="(item, index) in attachments">
<el-tooltip class="item" effect="dark" :content="item.name" placement="top"
:open-delay="1">
<div class="app-attachment-item" @click='selectedItem(index,item.url)'>
<div class="app-attachment-item-bj">
<div class="imgStyle">
<!-- <img class="app-attachment-img" :src="item.url"
style="width: 100%;height: 143px;border-radius: 5px;"> -->
<el-image
style="width: 100%; height: 143px;border-radius: 5px;"
:src="item.url"
fit="cover"></el-image>
<div class="mask" :style="getStyle2(index)">
<i class="el-icon-check center-icon pos-center"></i>
<p class="triangle"><i class="el-icon-check"></i></p>
</div>
</div>
<div class="app-attachment-name">{{item.name}}</div>
<i class="el-icon-error delete" @click='deleteItem(item.id)'></i>
</div>
</div>
</el-tooltip>
</template>
</div>
</el-scrollbar>
<div style="padding: 5px;text-align: right;margin-top:auto">
<el-pagination background layout="prev, pager, next" :total="total" :page-size="pagesize"
@current-change="current_change">
</el-pagination>
</div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false" size='small'>取 消</el-button>
<el-button type="primary" @click="selectedItems()" size='small'>确 定</el-button>
</span>
</el-dialog>
</template>
<script src="<?=Yii::$app->request->baseUrl?>/web/static/js/config.js" type="text/javascript" charset="utf-8"></script>
<script src="<?=Yii::$app->request->baseUrl?>/web/static/js/qs.js" type="text/javascript" charset="utf-8"></script>
<script>
Vue.component('attachment-img', {
template: '#attachment-img',
props: {
type: {
type: String,
default: 'img'
},
type2: {
type: String,
default: ''
},
op: {
type: String
},
},
// props: ['srcType'],
data() {
return {
visible: false,
atta_name: '',
uploadParams: {
type_id: 0,
type: 1
},
category:0,//分类ID
keywords:'',
// type_id:'',//分类ID
total: 0,//默认数据总数
pagesize: 15,//每页的数据条数
currentPage: 1,//默认开始页面
dialogVisible: false, //是否显示模态框
groupItem: [], //分类组
attachments: [],
groupListLoading: true,
rightLoading: true,
new_type_name: '',
fileList: [],//文件列表
selectedArr: {},
attachmentList: '12',
// srcType:''
uploadData:{
key: "",
token: ""
},
// 七牛云上传储存区域的上传域名(华东、华北、华南、北美、东南亚)
upload_url: "",
// 七牛云返回储存图片的子域名
upload_addr: "",
file:{
Url:'',
path:'',
name:'',
size:0
},
att_type:'',
}
},
created() {
let that = this;
// that.init();
// console.log(111111,publishUrl)
},
methods: {
// getStyle(index) {
// let that = this;
// var currentPage = that.currentPage,
// s = that.selectedArr[that.type == 'img' ? 'danxuan' : 'item' + index + '' + currentPage]
// return s && s.page == currentPage && s.index == index ? 'border:1px solid #FF8000;background:#fff2e6' : ''
// },
getStyle2(index) {
let that = this;
var currentPage = that.currentPage,
s = that.selectedArr[that.type == 'img' ? 'danxuan' : 'item' + index + '' + currentPage]
return s && s.page == currentPage && s.index == index ? 'display:block' : ''
},
modalClose() {
let that = this;
that.selectedArr = {}
},
dialogOpened() {
this.getgroupItem();
this.getAttachment_List();
},
handProgress() {
let that = this;
that.rightLoading = true
// that.$message({
// message: '上传中,请稍等',
// type: 'success',
// duration:500,
// onClose:()=>{
// },
// })
},
//获取左边分组
getgroupItem() {
let that = this;
let appUrl = 'admin/file/get-category'
axios.get(publishUrl+fwqUrl+appUrl)
.then(function (res) {
if (res.data) {
that.groupItem = res.data.data
that.groupListLoading = false
that.visible = false
} else {
that.groupListLoading = false
}
})
// this.$api.get('admin/file/get-category', {"storeId": this.type2,}, res => {
// if (res.code == 1) {
// that.groupItem = res.data
// that.groupListLoading = false
// that.visible = false
// } else {
// that.groupListLoading = false
// }
// });
},
//获取图片列表
getAttachment_List() {
let that = this;
that.rightLoading = true
let appUrl = 'admin/file/get-picture'
axios.get(publishUrl+fwqUrl+appUrl + '?page=' + that.currentPage+ "&category=" + that.category+ "&keywords=" + that.keywords)
.then(function (res) {
if (res.data.data) {
that.attachments = res.data.data
that.total = +res.data.count
that.rightLoading = false
} else {
that.rightLoading = false
}
})
// let that = this;
// that.rightLoading = true
// this.$api.get('admin/file/get-picture', {
// "page": that.currentPage,
// "category": that.category,
// "keywords": that.keywords,
// "storeId": this.type2,
// }, res => {
// if (res.code == 1) {
// that.attachments = res.data
// that.total = res.count
// that.rightLoading = false
// } else {
// that.rightLoading = false
// }
// });
},
//新建分组
addNewAttType() {
let that = this;
that.groupListLoading = true
let appUrl = 'admin/file/save-category',
data = Qs.stringify({name: that.new_type_name});
axios.post(publishUrl+fwqUrl+appUrl,data)
.then(function (res) {
that.visible = false
that.$message({
message: res.data.message,
type: 'success',
duration: 500,
onClose: () => {
that.new_type_name = ''
that.getgroupItem()
},
})
})
.catch(function (error) {
console.log(error);
});
// let that = this;
// that.groupListLoading = true
// this.$api.post('admin/file/save-category', {"storeId": this.type2, name: that.new_type_name}, res => {
// if (res.code == 1) {
// that.visible = false
// that.$message({
// message: res.msg,
// type: 'success',
// duration: 500,
// onClose: () => {
// that.new_type_name = ''
// that.getgroupItem()
// },
// })
// } else {
// that.visible = false
// that.$message.error(res.msg);
// }
// });
},
//删除分类
deleteType(id) {
let that = this;
that.groupListLoading = true
let appUrl = 'admin/file/del-picture-category'
axios.get(publishUrl+fwqUrl+appUrl + '?id=' + id)
.then(function (res) {
if (res.data.code=='1') {
that.visible = false
that.$message({
message: res.data.message,
type: 'success',
duration: 500,
onClose: () => {
that.getgroupItem()
},
})
}
else {
that.$message.error(res.data.message);
that.groupListLoading = false
}
})
// let that = this;
// that.groupListLoading = true
// this.$api.post('admin/file/del-picture-category', {"id": id,}, res => {
// if (res.code == 1) {
// that.visible = false
// that.$message({
// message: res.msg,
// type: 'success',
// duration: 500,
// onClose: () => {
// that.getgroupItem()
// },
// })
// } else {
// that.$message.error(res.msg);
// that.groupListLoading = false
// }
// });
},
search(atta_name) {
let that = this;
console.log(atta_name)
this.keywords = atta_name
// _this.init(keywords);
that.getAttachment_List();
},
//切换分页
current_change(currentPage) {
let that = this;
that.currentPage = currentPage;
that.getAttachment_List();
},
//删除图片
deleteItem(id) {
let that = this;
that.rightLoading = true
let appUrl = 'admin/file/del-picture'
axios.post(publishUrl+fwqUrl+appUrl,Qs.stringify({id:id}))
.then(function (res) {
that.$message({
message: res.data.message,
type: 'success',
duration: 500,
onClose: () => {
that.getAttachment_List()
},
})
})
.catch(function (error) {
console.log(error);
});
// let that = this;
// that.rightLoading = true
// this.$api.post('admin/file/del-picture', {"id": id,}, res => {
// if (res.code == 1) {
// that.visible = false
// that.$message({
// message: res.msg,
// type: 'success',
// duration: 500,
// onClose: () => {
// that.getAttachment_List()
// },
// })
// } else {
// that.$message.error(res.msg);
// that.groupListLoading = false
// }
// });
},
UploadUrl: function () {
let backendPath = publishUrl
return backendPath+fwqUrl + "admin/file/get-category";
},
//上传前判断
beforeUpload: function (file) {
console.log('上传前判断', file)
// var date = new Date();
// filePath = 'yzd_edu/image/' + date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getTime() + this.getRandom(111111, 999999) + '.' + file.name.split(".")[1]
// this.uploadData.key = filePath
const isIMG =
file.type === 'image/jpg' ||
file.type === 'image/jpeg' ||
file.type === 'image/png' ||
file.type === 'image/gif' ||
file.type === 'image/x-icon'
const isLt = file.size / 1024 / 1024 < 50
if (!isIMG) {
this.$message.error("上传图片只支持jpg、jpeg、png、ico格式!");
return false;
}
if (!isLt) {
this.$message.error("文件大小不能超过 50MB!");
return false;
}
},
handleError: function (res) {
this.$message({
message: "上传失败",
duration: 2000,
type: "warning"
});
},
handleSuccess: function (res, file, fileList) {
// console.log('123',res)
// console.log('234',file)
console.log('345', fileList)
this.file = file
this.addAttachment();//保存到数据库
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 50 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
addAttachment() {
let that = this;
const formData = new FormData();
formData.append("file", this.file.raw);
formData.append("category", this.category);
formData.append("storeId", this.type2);
let appUrl = 'admin/file/upload'
axios.post(publishUrl+fwqUrl+appUrl, formData,{headers: {'Content-Type': 'multipart/form-data'}})
.then(function (res) {
that.getAttachment_List()//刷新列表
that.$message.success("上传成功");
})
.catch(function (error) {
console.log(error);
});
// this.$api.post('admin/file/upload', formData, res => {
// if (res.code == 1) {
// that.getAttachment_List()//刷新列表
// that.$message.success("上传成功");
// } else {
// that.$message.error(res.msg);
// console.log(res.msg);
// }
// });
},
// getRandom(start, end, fixed = 0) {
// let differ = end - start
// let random = Math.random()
// return (start + differ * random).toFixed(fixed)
// },
selected(id) {
let that = this;
that.rightLoading = true
// that.uploadParams.type_id = id
that.currentPage = 1
that.category = id
that.getAttachment_List();
},
selectedItem(index, url) {
let that = this;
// console.log(index,url)
var istype = that.type == 'img', str = istype ? 'danxuan' : 'item' + index + '' + that.currentPage,
s = that.selectedArr[str]
if (s && s.index == index) {
that.$delete(that.selectedArr, str);
} else {
if (istype) {
that.$delete(that.selectedArr, str);
}
that.$set(that.selectedArr, str, {
page: that.currentPage,
index,
url
})
}
},
selectedItems() {
let that = this;
that = this;
var item = that.selectedArr, str = '', arr = []
for (const key in item) {
str += str ? ',' + item[key].url : item[key].url
arr.push(item[key].url)
}
// console.log(str,arr)
that.$emit('attachment', {
str,
arr
})
that.dialogVisible = false
}
},
})
</script>
<style>
.el-loading-mask {
top: -15px;
left: -20px;
}
.el-dialog {
border-radius: 6px;
}
.el-dialog .goods-menu {
width: 160px;
}
.el-dialog .goods-menu li {
padding-left: 0 !important;
}
.el-dialog .el-dialog__title {
line-height: 28px;
font-size: 14px;
color: #333;
}
.el-dialog .el-dialog__header {
padding: 10px 20px;
line-height: 1;
border-bottom: 1px solid #f2f2f2;
}
.el-dialog .el-dialog__body {
padding: 10px 20px;
}
.el-dialog .el-dialog__footer {
border-top: 1px solid #f2f2f2;
}
.el-dialog .el-button--primary {
color: #fff;
background-color: #2A75ED;;
border-color: #2A75ED;;
}
.el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #2A75ED;
color: #FFF;
}
.el-dialog .el-dialog__wrapper {
z-index: 2009 !important;
}
input[type=file] {
display: none;
}
.el-dialog .delete {
position: absolute;
top: 2px;
right: 2px;
font-size: 16px;
display: none;
}
.el-dialog .app-attachment-item {
outline: none;
}
.el-dialog .app-attachment-item:hover .delete {
display: block;
}
.el-dialog .el-upload-list {
position: absolute;
max-height: 355px;
/* overflow-y: auto; */
width: 252px;
background: #fff;
position: absolute;
z-index: 1;
border-radius: 4px;
box-shadow: 0 1px 6px rgba(0, 0, 0, .2);
right: 0;
}
/* 图片上传 */
.el-dialog .data-image {
margin-top: 5px;
}
/* 图片选择框 */
.el-dialog .attachment_img_box {
/*border: 1px solid rgb(227, 227, 227);*/
margin-bottom: 10px;
min-height: 300px;
}
.el-dialog .attachment_img_left {
border-right: 1px solid #F2F2F2;
}
.el-dialog .group-menu {
border-right: none;
width: 165px;
}
.el-dialog .selectBox {
padding: 10px 0;
}
.el-dialog .app-attachment-list {
/*padding: 5px;*/
width: 100%;
padding-right: 10px;
}
.el-dialog .app-attachment-list * {
box-sizing: border-box;
}
.el-dialog .app-attachment-list:after {
clear: both;
display: block;
content: " ";
}
.el-dialog .app-attachment-item {
display: inline-block;
cursor: pointer;
position: relative;
float: left;
width: 20%;
height: 176px;
padding-bottom: 20px;
/*margin: 7.5px;*/
text-align: center;
/*padding: 10px 10px 0;*/
}
.el-dialog .app-attachment-item-bj {
margin: 10px;
}
.el-dialog .imgStyle {
position: relative;
}
.el-dialog .imgStyle .mask {
display: none;
border-radius: 5px;
width: 100%;
height: 100%;
position: absolute;
background: rgba(199, 194, 194, .7);
top: 0;
left: 0;
bottom: 0;
right: 0;
overflow: hidden;
}
.el-dialog .mask .center-icon {
font-size: 40px;
color: #fff;
}
.el-dialog .mask .center-icon:before {
transform: rotate(0);
}
.el-dialog .mask .pos-center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
}
.el-dialog .mask .triangle {
display: inline-block;
position: absolute;
right: 0;
bottom: -26px;
line-height: 60px;
text-align: center;
background: #409eff !important;
transform: rotate(45deg);
}
.el-dialog .mask .triangle .el-icon-check:before {
display: inline-block;
margin-top: 12px;
transform: rotate(-67deg);
position: relative;
top: -2px;
}
.el-dialog .mask .triangle i {
color: #fff;
}
.app-attachment-item.checked,
.app-attachment-item.selected {
box-shadow: 0 0 0 1px #1ed0ff;
background: #daf5ff;
border-radius: 5px;
}
.app-attachment-item.checked .app-attachment-active-icon,
.app-attachment-item.selected .app-attachment-active-icon {
opacity: 1;
}
.app-attachment-item .app-attachment-img {
display: block;
}
.app-attachment-item .file-type-icon {
width: 30px;
height: 30px;
border-radius: 30px;
background: #666;
color: #fff;
text-align: center;
line-height: 30px;
font-size: 24px;
}
.el-dialog .scrollbar {
height: 100%;
}
.el-dialog .app-attachment-name {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
/*margin-top: 5px;*/
overflow: hidden;
}
.el-dialog .el-upload-list {
display: none;
}
.el-dialog .el-menu-item.is-active {
/*border-color: transparent;*/
color: #409eff !important;
background: #c3e1fe !important;
}
.el-dialog .el-menu-item:focus, .el-dialog .el-menu-item:hover {
outline: 0;
background: #fff !important;
}
.el-dialog .el-menu-item.is-active:focus, .el-dialog .el-menu-item.is-active:hover {
color: #409eff !important;
background: #c3e1fe !important;
}
.el-dialog .el-menu-item, .el-dialog .el-submenu__title {
width: 127px;
height: 36px;
line-height: 36px;
border-radius: 5px;
text-align: center;
margin-bottom: 15px;
}
.el-dialog .el-menu-item {
padding: 0;
}
.el-dialog .el-scrollbar__wrap {
overflow-x: hidden;
}
.el-dialog .fenlei {
text-align: center;
}
.fenlei:hover .gbfenlei {
display: block !important;
}
.gbfenlei {
position: absolute;
top: -9px;
right: -13px;
font-size: 18px;
cursor: pointer;
color: #d7d7d7;
}
[flex] {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex
}
[flex] > * {
display: block
}
[flex] > [flex] {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex
}
[flex~="dir:left"] {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row
}
[flex~="dir:right"] {
-webkit-box-orient: horizontal;
-webkit-box-direction: reverse;
-webkit-flex-direction: row-reverse;
-ms-flex-direction: row-reverse;
flex-direction: row-reverse;
-webkit-box-pack: end
}
[flex~="dir:top"] {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column
}
[flex~="dir:bottom"] {
-webkit-box-orient: vertical;
-webkit-box-direction: reverse;
-webkit-flex-direction: column-reverse;
-ms-flex-direction: column-reverse;
flex-direction: column-reverse;
-webkit-box-pack: end
}
[flex~="main:left"] {
-webkit-box-pack: start;
-webkit-justify-content: flex-start;
-ms-flex-pack: start;
justify-content: flex-start
}
[flex~="main:right"] {
-webkit-box-pack: end;
-webkit-justify-content: flex-end;
-ms-flex-pack: end;
justify-content: flex-end
}
[flex~="main:justify"] {
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between
}
[flex~="main:center"] {
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center
}
[flex~="cross:top"] {
-webkit-box-align: start;
-webkit-align-items: flex-start;
-ms-flex-align: start;
align-items: flex-start
}
[flex~="cross:bottom"] {
-webkit-box-align: end;
-webkit-align-items: flex-end;
-ms-flex-align: end;
align-items: flex-end
}
[flex~="cross:center"] {
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center
}
[flex~="cross:baseline"] {
-webkit-box-align: baseline;
-webkit-align-items: baseline;
-ms-flex-align: baseline;
align-items: baseline
}
[flex~="cross:stretch"] {
-webkit-box-align: stretch;
-webkit-align-items: stretch;
-ms-flex-align: stretch;
align-items: stretch
}
[flex~="box:mean"] > *, [flex~="box:first"] > *, [flex~="box:last"] > *, [flex~="box:justify"] > * {
width: 0;
height: auto;
-webkit-box-flex: 1;
-webkit-flex-grow: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-webkit-flex-shrink: 1;
-ms-flex-negative: 1;
flex-shrink: 1
}
[flex~="box:first"] > :first-child, [flex~="box:last"] > :last-child, [flex~="box:justify"] > :first-child, [flex~="box:justify"] > :last-child {
width: auto;
-webkit-box-flex: 0;
-webkit-flex-grow: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-webkit-flex-shrink: 0;
-ms-flex-negative: 0;
flex-shrink: 0
}
[flex~="dir:top"][flex~="box:mean"] > *, [flex~="dir:top"][flex~="box:first"] > *, [flex~="dir:top"][flex~="box:last"] > *, [flex~="dir:top"][flex~="box:justify"] > *, [flex~="dir:bottom"][flex~="box:mean"] > *, [flex~="dir:bottom"][flex~="box:first"] > *, [flex~="dir:bottom"][flex~="box:last"] > *, [flex~="dir:bottom"][flex~="box:justify"] > * {
width: auto;
height: 0;
-webkit-box-flex: 1;
-webkit-flex-grow: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-webkit-flex-shrink: 1;
-ms-flex-negative: 1;
flex-shrink: 1
}
[flex~="dir:top"][flex~="box:first"] > :first-child, [flex~="dir:top"][flex~="box:last"] > :last-child, [flex~="dir:top"][flex~="box:justify"] > :first-child, [flex~="dir:top"][flex~="box:justify"] > :last-child, [flex~="dir:bottom"][flex~="box:first"] > :first-child, [flex~="dir:bottom"][flex~="box:last"] > :last-child, [flex~="dir:bottom"][flex~="box:justify"] > :first-child [flex~="dir:bottom"][flex~="box:justify"] > :last-child {
height: auto;
-webkit-box-flex: 0;
-webkit-flex-grow: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-webkit-flex-shrink: 0;
-ms-flex-negative: 0;
flex-shrink: 0
}
[flex-box="0"] {
-webkit-box-flex: 0;
-webkit-flex-grow: 0;
-ms-flex-positive: 0;
flex-grow: 0;
-webkit-flex-shrink: 0;
-ms-flex-negative: 0;
flex-shrink: 0
}
[flex-box="1"] {
-webkit-box-flex: 1;
-webkit-flex-grow: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-webkit-flex-shrink: 1;
-ms-flex-negative: 1;
flex-shrink: 1
}
[flex-box="2"] {
-webkit-box-flex: 2;
-webkit-flex-grow: 2;
-ms-flex-positive: 2;
flex-grow: 2;
-webkit-flex-shrink: 2;
-ms-flex-negative: 2;
flex-shrink: 2
}
[flex-box="3"] {
-webkit-box-flex: 3;
-webkit-flex-grow: 3;
-ms-flex-positive: 3;
flex-grow: 3;
-webkit-flex-shrink: 3;
-ms-flex-negative: 3;
flex-shrink: 3
}
[flex-box="4"] {
-webkit-box-flex: 4;
-webkit-flex-grow: 4;
-ms-flex-positive: 4;
flex-grow: 4;
-webkit-flex-shrink: 4;
-ms-flex-negative: 4;
flex-shrink: 4
}
[flex-box="5"] {
-webkit-box-flex: 5;
-webkit-flex-grow: 5;
-ms-flex-positive: 5;
flex-grow: 5;
-webkit-flex-shrink: 5;
-ms-flex-negative: 5;
flex-shrink: 5
}
[flex-box="6"] {
-webkit-box-flex: 6;
-webkit-flex-grow: 6;
-ms-flex-positive: 6;
flex-grow: 6;
-webkit-flex-shrink: 6;
-ms-flex-negative: 6;
flex-shrink: 6
}
[flex-box="7"] {
-webkit-box-flex: 7;
-webkit-flex-grow: 7;
-ms-flex-positive: 7;
flex-grow: 7;
-webkit-flex-shrink: 7;
-ms-flex-negative: 7;
flex-shrink: 7
}
[flex-box="8"] {
-webkit-box-flex: 8;
-webkit-flex-grow: 8;
-ms-flex-positive: 8;
flex-grow: 8;
-webkit-flex-shrink: 8;
-ms-flex-negative: 8;
flex-shrink: 8
}
[flex-box="9"] {
-webkit-box-flex: 9;
-webkit-flex-grow: 9;
-ms-flex-positive: 9;
flex-grow: 9;
-webkit-flex-shrink: 9;
-ms-flex-negative: 9;
flex-shrink: 9
}
[flex-box="10"] {
-webkit-box-flex: 10;
-webkit-flex-grow: 10;
-ms-flex-positive: 10;
flex-grow: 10;
-webkit-flex-shrink: 10;
-ms-flex-negative: 10;
flex-shrink: 10
}
[flex~="wrap:nowrap"] {
flex-wrap: nowrap
}
[flex~="wrap:wrap"] {
flex-wrap: wrap
}
[flex~="wrap:wrap-reverse"] {
flex-wrap: wrap-reverse
}
</style>