Commit a21f5a9a authored by liang.tang's avatar liang.tang
Browse files

mall4cloud

parents
Pipeline #244 canceled with stages
import request from '@/utils/request'
export function page(pageParam) {
return request({
url: '/mall4cloud_product/m/spu/page',
method: 'get',
params: pageParam
})
}
export function getProdInfoPage(spuId) {
return request({
url: '/mall4cloud_product/admin/spu',
method: 'get',
params: {
spuId
}
})
}
export function save(data) {
return request({
url: '/mall4cloud_product/admin/spu',
method: 'post',
data
})
}
export function update(data) {
return request({
url: '/mall4cloud_product/admin/spu',
method: 'put',
data
})
}
export function deleteById(spuId) {
return request({
url: '/mall4cloud_product/admin/spu',
method: 'delete',
params: {
spuId
}
})
}
export function getAttrsByCategoryId(param) {
return request({
url: '/mall4cloud_product/admin/attr/get_attrs_by_category_id',
method: 'get',
params: param
})
}
import request from '@/utils/request'
export function page(pageParam) {
return request({
url: '/mall4cloud_product/m/spu_detail/page',
method: 'get',
params: pageParam
})
}
export function get(spuId) {
return request({
url: '/mall4cloud_product/m/spu_detail',
method: 'get',
params: {
spuId
}
})
}
export function save(data) {
return request({
url: '/mall4cloud_product/m/spu_detail',
method: 'post',
data
})
}
export function update(data) {
return request({
url: '/mall4cloud_product/m/spu_detail',
method: 'put',
data
})
}
export function deleteById(spuId) {
return request({
url: '/mall4cloud_product/m/spu_detail',
method: 'delete',
params: {
spuId
}
})
}
import request from '@/utils/request'
export function page(pageParam) {
return request({
url: '/mall4cloud_product/m/spu/page',
method: 'get',
params: pageParam
})
}
export function get(spuId) {
return request({
url: '/mall4cloud_product/m/spu',
method: 'get',
params: {
spuId
}
})
}
export function save(data) {
return request({
url: '/mall4cloud_product/m/spu',
method: 'post',
data
})
}
export function update(data) {
return request({
url: '/mall4cloud_product/m/spu',
method: 'put',
data
})
}
export function deleteById(spuId) {
return request({
url: '/mall4cloud_product/m/spu',
method: 'delete',
params: {
spuId
}
})
}
import request from '@/utils/request'
export function page(pageParam) {
return request({
url: '/mall4cloud_rbac/menu_permission/page',
method: 'get',
params: pageParam
})
}
export function get(menuPermissionId) {
return request({
url: '/mall4cloud_rbac/menu_permission',
method: 'get',
params: {
menuPermissionId
}
})
}
export function save(data) {
return request({
url: '/mall4cloud_rbac/menu_permission',
method: 'post',
data
})
}
export function update(data) {
return request({
url: '/mall4cloud_rbac/menu_permission',
method: 'put',
data
})
}
export function deleteById(menuPermissionId) {
return request({
url: '/mall4cloud_rbac/menu_permission',
method: 'delete',
params: {
menuPermissionId
}
})
}
export function menuPermissionsList() {
return request({
url: '/mall4cloud_rbac/menu_permission/list',
method: 'get'
})
}
import request from '@/utils/request'
export function page(pageParam) {
return request({
url: '/mall4cloud_rbac/menu/page',
method: 'get',
params: pageParam
})
}
export function get(menuId) {
return request({
url: '/mall4cloud_rbac/menu',
method: 'get',
params: {
menuId
}
})
}
export function save(data) {
return request({
url: '/mall4cloud_rbac/menu',
method: 'post',
data
})
}
export function update(data) {
return request({
url: '/mall4cloud_rbac/menu',
method: 'put',
data
})
}
export function deleteById(menuId) {
return request({
url: '/mall4cloud_rbac/menu',
method: 'delete',
params: {
menuId
}
})
}
export function menuList() {
return request({
url: '/mall4cloud_rbac/menu/route',
method: 'get'
})
}
export function listWithPermissions() {
return request({
url: '/mall4cloud_rbac/menu/list_with_permissions',
method: 'get'
})
}
export function listMenuIds() {
return request({
url: '/mall4cloud_rbac/menu/list_menu_ids',
method: 'get'
})
}
import request from '@/utils/request'
export function page(pageParam) {
return request({
url: '/mall4cloud_rbac/role/page',
method: 'get',
params: pageParam
})
}
export function list() {
return request({
url: '/mall4cloud_rbac/role/list',
method: 'get'
})
}
export function get(roleId) {
return request({
url: '/mall4cloud_rbac/role',
method: 'get',
params: {
roleId
}
})
}
export function save(data) {
return request({
url: '/mall4cloud_rbac/role',
method: 'post',
data
})
}
export function update(data) {
return request({
url: '/mall4cloud_rbac/role',
method: 'put',
data
})
}
export function deleteById(roleId) {
return request({
url: '/mall4cloud_rbac/role',
method: 'delete',
params: {
roleId
}
})
}
import request from '@/utils/request'
export function page() {
return request({
url: '/mall4cloud_delivery/m/area/list',
method: 'get'
})
}
export function get(areaId) {
return request({
url: '/mall4cloud_delivery/m/area',
method: 'get',
params: {
areaId
}
})
}
export function save(data) {
return request({
url: '/mall4cloud_delivery/m/area',
method: 'post',
data
})
}
export function update(data) {
return request({
url: '/mall4cloud_delivery/m/area',
method: 'put',
data
})
}
export function deleteById(areaId) {
return request({
url: '/mall4cloud_delivery/m/area',
method: 'delete',
params: {
areaId
}
})
}
<template>
<el-dialog
title="选择品牌"
top="50px"
:close-on-click-modal="false"
:visible.sync="visible"
class="brand-select"
>
<el-form :inline="true" :model="dataForm" class="demo-form-inline">
<el-form-item label="品牌名称">
<el-input v-model.trim="brandName" placeholder="品牌名称" size="mini"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" size="mini" @click="onSearch">查询</el-button>
</el-form-item>
</el-form>
<div class="prods-select-body">
<el-table
ref="brandTable"
:data="pageVO.list"
border
v-loading="brandListLoading"
style="width: 100%;"
>
<el-table-column v-if="isSingle" width="50" header-align="center" align="center">
<template slot-scope="{row}">
<div>
<el-radio
:label="row.brandId"
v-model="singleSelectBrandId"
@change.native="getSelectBrandRow(row)"
></el-radio>
</div>
</template>
</el-table-column>
<el-table-column prop="brandName" header-align="center" align="center" label="品牌名称">
<template slot-scope="{row}">
{{row.name}}
</template>
</el-table-column>
<el-table-column prop="firstChar" align="center" label="品牌首字母">
<template slot-scope="{row}">
{{row.firstLetter}}
</template>
</el-table-column>
<el-table-column prop="status" align="center" label="状态">
<template slot-scope="{row}">
<el-tag size="mini">{{row.status===1?'正常':'下线'}}</el-tag>
</template>
</el-table-column>
<el-table-column align="center" width="140" label="品牌图片">
<template slot-scope="{row}">
<img v-if="row.imgUrl" :src="(row.imgUrl).indexOf('http')===-1 ? resourcesUrl + row.imgUrl : row.imgUrl" class="brand-img" />
</template>
</el-table-column>
</el-table>
<!-- 分页条 -->
<!-- <pagination v-show="pageVO.total>0" :total="pageVO.total" :page.sync="pageQuery.pageNum" :limit.sync="pageQuery.pageSize" @pagination="getBrandList()" /> -->
</div>
<span slot="footer">
<el-button type="primary" @click="visible = false">取消</el-button>
<el-button type="primary" @click="submitBrand()">提交</el-button>
</span>
</el-dialog>
</template>
<script>
import { getBrandByCategoryId } from '@/api/product/brand'
import Pagination from '@/components/Pagination'
export default {
components: { Pagination },
data() {
return {
visible: false,
brandName: null,
selectBrand: [],
dataForm: {
brand: ''
},
resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
pageQuery: {
// pageSize: 5,
// pageNum: 1,
categoryId: null
},
// 返回参数
pageVO: {
list: [], // 返回的列表
total: 0, // 一共多少条数据
pages: 0 // 一共多少页
},
brandListLoading: false,
singleSelectBrandId: 0,
selectBrand: [],
brandListSelections: [],
}
},
props: {
isSingle: {
default: false,
type: Boolean
},
},
methods: {
init(selectBrand, categoryId) {
this.selectBrand = selectBrand
this.pageQuery.categoryId = categoryId
this.visible = true
this.brandListLoading = true
if (this.selectBrand) {
this.selectBrand.forEach(row => {
this.brandListSelections.push(row)
})
}
this.getBrandList()
},
onSearch() {
this.getBrandList()
},
getBrandList() {
getBrandByCategoryId({ ...this.pageQuery, ...this.searchParam }).then(pageVO => {
this.pageVO.list = pageVO
this.brandListLoading = false
})
},
// 单选
getSelectBrandRow(row) {
this.brandListSelections = [row]
},
// 确定事件
submitBrand() {
let brands = []
this.brandListSelections.forEach(item => {
let brandIndex = brands.findIndex((brand) => brand.brandId === item.brandId)
if (brandIndex === -1) {
brands.push({
brandId: item.brandId, brandName: item.name,
brandImgUrl: (item.imgUrl).indexOf('http') === -1 ? this.resourcesUrl + item.imgUrl : item.imgUrl
})
}
})
this.$emit('refreshSelectBrand', brands)
this.brandListSelections = []
this.visible = false
}
}
}
</script>
<style lang="scss">
.brand-select {
.prods-select-body {
height: 600px;
overflow: auto;
}
.el-dialog__header {
border: 1px solid #eee;
}
.el-dialog__body {
padding: 20px;
}
.el-form-item {
margin-bottom: 20px;
}
.pagination-container {
margin-top: 0;
text-align: right;
padding: 15px 0;
}
.brand-img {
width: auto;
max-width: 100%;
height: auto;
max-height: 80px;
}
}
</style>
\ No newline at end of file
<template>
<div class="category-group">
<div class="category classify-show">
<div v-if="selectedCategorys.length > 0 & single" class="category-sel1 classify">
<!-- 商品详情/分类 -->
<span v-if="selectedCategorys[0]">{{ selectedCategorys[0] }}</span>
<span v-if="selectedCategorys[1]">&nbsp;>&nbsp;{{ selectedCategorys[1] }}</span>
<span v-if="selectedCategorys[2]">&nbsp;>&nbsp;{{ selectedCategorys[2] }}</span>
</div>
<div v-if="showCategorySelectBtn && single" class="change-category change-classify" @click="selectOrReviseCategory">{{ selectedCategorys.length?'修改':'选择' }}分类</div>
<!-- 品牌/属性 -->
<div v-if="selectedCategorys.length > 0 & multiple" class="category-sel2">
<p v-for="(item,index) in selectedCategorys" :key="index">
<span v-if="item.firstCategoryName">{{ item.firstCategoryName }}</span>
<span v-if="item.secondCategoryName">&nbsp;>&nbsp;{{ item.secondCategoryName }}</span>
<span v-if="item.threeCategoryName">&nbsp;>&nbsp;{{ item.threeCategoryName }}</span>
<span class="del-cate" @click="deleteCategoryItemOfSelected(index)">×</span>
</p>
</div>
<div v-if="multiple" class="change-category" @click="selectOrReviseCategory">选择分类</div>
</div>
</div>
</template>
<script>
export default {
props: {
selectedCategorys: {
type: Array,
default() {
return []
}
},
showCategorySelectBtn: {
type: Boolean,
default() {
return true
}
},
multiple: {
type: Boolean,
default() {
return false
}
},
single: {
type: Boolean,
default() {
return false
}
},
},
data() {
return {
}
},
methods: {
// 选择/修改分类
selectOrReviseCategory() {
this.$emit('selectOrReviseCategory')
},
// 删除
deleteCategoryItemOfSelected(index) {
console.log('组件内删除分类index:', index)
this.$emit('deleteCategoryItemOfSelected', index)
}
}
}
</script>
<style lang="scss" scoped>
p {
margin: 0;
}
.category-group {
.category {
display: flex;
align-items: top;
font-size: 13px;
.category-sel1 {
line-height: 1em;
padding: 3px 6px;
border: 1px solid #ddd;
}
.category-sel2 {
display: inline-block;
max-width: 450px;
p {
display: inline-block;
line-height: 1em;
padding: 4px;
border: 1px solid #ccc;
margin-right: 5px;
.del-cate {
display: inline-block;
text-align: center;
font-size: 13px;
width: 13px;
height: 13px;
line-height: 12px;
border: 1px solid #bbb;
border-radius: 50%;
color: #bbb;
margin-left: 6px;
}
.del-cate:hover {
cursor: pointer;
display: inline-block;
border-color: #666;
color: #666;
}
}
}
.change-category {
color: #0071db;
margin-left: 15px;
cursor: pointer;
}
.change-category:hover {
color: #0258a8;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="category-selector">
<el-dialog
:title="this.$i18n.t('components.selector.categorySelector')"
:visible.sync="visible"
:append-to-body="visible"
@close="onClose"
width="1000px">
<div class="prod-category clearfix">
<div class="category">
<!-- 分类 -->
<div v-if="firstCategorys.dataList.length" class="category-box">
<el-input v-model="firstCategorys.name" :placeholder="this.$i18n.t('components.selector.chooseProdCateg')" :disabled="true"></el-input>
<ul class="category-list">
<li
class="category-item"
:class="item.categoryId==firstCategorys.id?'active':''"
@click="selectFirstCategorys(item.categoryId, index)"
v-for="(item,index) in firstCategorys.dataList"
:key="item.categoryId"
>{{item.name}}</li>
</ul>
</div>
<!-- 分类 -->
<div class="category-box" v-if="secondCategorys.dataList.length && firstCategorys.id!=0">
<el-input :placeholder="this.$i18n.t('components.selector.chooseProdCateg')" v-model="secondCategorys.name" :disabled="true"></el-input>
<ul class="category-list">
<li
class="category-item"
:class="isCreateCategory?'prohibit-sel':item.categoryId==secondCategorys.id?'active':''"
@click="selectSecondCategorys(item.categoryId,index)"
v-for="(item,index) in secondCategorys.dataList"
:key="item.categoryId"
>{{item.name}}</li>
</ul>
</div>
<!-- 分类 -->
<div v-if="showthreeCategorys && threeCategorys.dataList.length > 0 && secondCategorys.id!=0" class="category-box">
<el-input :placeholder="this.$i18n.t('components.selector.chooseProdCateg')" v-model="threeCategorys.name" :disabled="true"></el-input>
<ul class="category-list">
<li
class="category-item"
:class="[isCreateCategory?'prohibit-sel':item.categoryId==threeCategorys.id?'active':'']"
@click="selectThreeCategorys(item.categoryId,index)"
v-for="(item,index) in threeCategorys.dataList"
:key="item.categoryId"
>{{item.name}}</li>
</ul>
</div>
</div>
<!-- 当前选择 -->
<div class="current-selected">
<span class="blod">{{$t("components.selector.currCho")}}</span>
<span class="select-item">{{firstCategorys.name}}</span>
<span class="select-item" v-if="!isCreateCategory && secondCategorys.id">&nbsp;>&nbsp;&nbsp;{{secondCategorys.name}}</span>
<span v-if="showthreeCategorys && threeCategorys.id" class="select-item">&nbsp;>&nbsp;&nbsp;{{threeCategorys.name}}</span>
</div>
<!-- 确认 -->
<div class="read-rule">
<div class="read-rule-txt"
:class="buttonHighlight?'todo':''"
@click="optionsConfirm">{{$t("components.selector.haveReadFol")}}
</div>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import * as api from '@/api/product/category'
export default {
data() {
return {
visible: false,
allDataList: [],
// 第一个分类
firstCategorys: {
id: 0,
name: '',
dataList: []
},
// 第二个分类
secondCategorys: {
id: 0,
name: '',
dataList: []
},
// 第三个分类
threeCategorys: {
id: 0,
name: '',
dataList: []
},
parentId: 0,
isCreateCategory: false, // 是否创建(店铺)分类选择
showthreeCategorys: false, // 是否显示第三级分类
buttonHighlight: false, // 按钮高亮
}
},
props: {
// categoryList: Array
},
methods: {
/**
* 初始化
*/
init(type, key) {
this.visible = true
console.log('分类选择器key:', key)
if (key === 'platform') {
api.platformCategoryPage().then(data => {
this.allDataList = data
this.firstCategorys.dataList = this.allDataList.filter(item => item.level === 0)
})
this.showthreeCategorys = true // 平台分类,最高三级
} else {
api.shopCategoryPage().then(data => {
this.allDataList = data
this.firstCategorys.dataList = this.allDataList.filter(item => item.level === 0)
})
this.showthreeCategorys = false // 店铺分类,最高二级
}
this.isCreateCategory = type && type === 1 ? true : false
},
show() {
this.visible = true
},
hide() {
this.visible = false
},
// 选中第一个分类
selectFirstCategorys(categoryId, index) {
this.secondCategorys.dataList = this.allDataList.filter(item => item.parentId === categoryId)
this.firstCategorys.name = this.firstCategorys.dataList[index].name
this.parentId = this.firstCategorys.id = categoryId
this.secondCategorys.id = 0
if(this.showthreeCategorys) this.threeCategorys.id = 0
if (this.isCreateCategory || (!this.isCreateCategory && this.secondCategorys.dataList.length == 0)) { // 创建分类
this.buttonHighlight = true
} else {
this.buttonHighlight = false
}
},
// 选中第二个分类
selectSecondCategorys(categoryId, index) {
if (this.isCreateCategory) {
return
}
this.threeCategorys.dataList = this.allDataList.filter(item => item.parentId === categoryId)
this.parentId = this.secondCategorys.id = categoryId
this.secondCategorys.name = this.secondCategorys.dataList[index].name
if(this.showthreeCategorys) this.threeCategorys.id = 0
if (!this.isCreateCategory && !this.buttonHighlight && !this.showthreeCategorys) { //非创建分类&&店铺分类
this.buttonHighlight = true
} else {
this.buttonHighlight = false
}
console.log('buttonHighlight:', this.buttonHighlight)
},
// 选中第三个分类
selectThreeCategorys(categoryId, index) {
if (this.isCreateCategory) {
return
}
this.parentId = this.threeCategorys.id = categoryId
this.threeCategorys.name = this.threeCategorys.dataList[index].name
this.buttonHighlight = true
},
// 新增 / 修改
optionsConfirm() {
// 平台分类 & 没有第三级分类
if (this.showthreeCategorys && !this.threeCategorys.id) {
return
}
// 店铺分类 & 创建分类 & 没有第一级分类
if (!this.showthreeCategorys && this.isCreateCategory && !this.firstCategorys.id) {
return
}
// 店铺分类 & 非创建分类 & 没有第二级分类
if (!this.showthreeCategorys && !this.isCreateCategory && this.secondCategorys.dataList.length > 0 && !this.secondCategorys.id) {
return
}
// this.$store.commit('common/removeMainActiveTab')
var selectedCategorys = []
if (this.firstCategorys.id) {
selectedCategorys.push(this.firstCategorys.name)
}
if (!this.isCreateCategory && this.secondCategorys.id) {
selectedCategorys.push(this.secondCategorys.name)
}
if (this.showthreeCategorys && !this.isCreateCategory && this.threeCategorys.id) {
selectedCategorys.push(this.threeCategorys.name)
}
this.$emit('getCategorySelected', selectedCategorys, this.parentId)
},
// 关闭
onClose() {
this.allDataList = []
// 第一个分类
this.firstCategorys = {
id: 0,
name: '',
dataList: []
},
// 第二个分类
this.secondCategorys = {
id: 0,
name: '',
dataList: []
},
// 第三个分类
this.threeCategorys = {
id: 0,
name: '',
dataList: []
}
}
}
}
</script>
<style lang="scss">
.prod-category {
.clearfix::after {
display: block;
content: "";
visibility: hidden;
height: 0;
clear: both;
}
width: 90%;
margin: 0 auto;
ul,
li {
margin: 0;
padding: 0;
list-style: none;
}
.tips {
// display: inline-block;
float: right;
padding: 10px 12px;
background: #02a1e9;
color: #fff;
font-size: 13px;
margin: 0;
}
.category-box {
box-sizing: border-box;
width: 32%;
box-sizing: border-box;
display: inline-block;
border: 1px solid #e4e4e4;
padding: 20px;
background: #fff;
box-shadow: 0px 5px 8px -4px #e2e2e2;
}
.int {
width: 100%;
height: 2.5em;
line-height: 2.5em;
text-indent: 1em;
border: 1px solid #e2e2e2;
border-radius: 5px;
outline: none;
/* box-shadow: 0px 5px 8px -4px #e2e2e2; */
}
input.int::placeholder {
color: #bdbdbd;
}
.category-list {
margin-top: 10px;
height: 250px;
margin-left: 10px;
overflow-y: auto;
}
.category-item {
padding: 6px;
cursor: pointer;
}
.category-item:hover,
.category-item.active {
// background: #e9f9ff;
background: #f5f5f5;
border-radius: 3px;
}
.current-selected {
margin-top: 20px;
border: 2px solid #fedbab;
padding: 6px;
background: #fffaf2;
line-height: 1.5em;
}
.read-rule {
width: 100%;
margin-top: 20px;
}
.read-rule-txt {
text-align: center;
color: #fff;
background: #999999;
line-height: 3em;
width: 50%;
margin: 0 auto;
}
.rule {
border: 1px solid #b9b9b9;
padding: 0 10px;
font-size: 13px;
color: #777;
margin-top: 20px;
}
.notice {
line-height: 3em;
border-bottom: 1px dashed #b9b9b9;
margin: 0;
}
.blod {
font-weight: bold;
}
.rule-tit {
text-align: center;
}
.rule-txt {
line-height: 1.5em;
padding-bottom: 30px;
}
.todo {
background: #02a1e9;
cursor: pointer;
}
.prohibit-sel {
cursor: not-allowed;
}
}
</style>
\ No newline at end of file
const elementIcons = ['platform-eleme', 'eleme', 'delete-solid', 'delete', 's-tools', 'setting', 'user-solid', 'user', 'phone', 'phone-outline', 'more', 'more-outline', 'star-on', 'star-off', 's-goods', 'goods', 'warning', 'warning-outline', 'question', 'info', 'remove', 'circle-plus', 'success', 'error', 'zoom-in', 'zoom-out', 'remove-outline', 'circle-plus-outline', 'circle-check', 'circle-close', 's-help', 'help', 'minus', 'plus', 'check', 'close', 'picture', 'picture-outline', 'picture-outline-round', 'upload', 'upload2', 'download', 'camera-solid', 'camera', 'video-camera-solid', 'video-camera', 'message-solid', 'bell', 's-cooperation', 's-order', 's-platform', 's-fold', 's-unfold', 's-operation', 's-promotion', 's-home', 's-release', 's-ticket', 's-management', 's-open', 's-shop', 's-marketing', 's-flag', 's-comment', 's-finance', 's-claim', 's-custom', 's-opportunity', 's-data', 's-check', 's-grid', 'menu', 'share', 'd-caret', 'caret-left', 'caret-right', 'caret-bottom', 'caret-top', 'bottom-left', 'bottom-right', 'back', 'right', 'bottom', 'top', 'top-left', 'top-right', 'arrow-left', 'arrow-right', 'arrow-down', 'arrow-up', 'd-arrow-left', 'd-arrow-right', 'video-pause', 'video-play', 'refresh', 'refresh-right', 'refresh-left', 'finished', 'sort', 'sort-up', 'sort-down', 'rank', 'loading', 'view', 'c-scale-to-original', 'date', 'edit', 'edit-outline', 'folder', 'folder-opened', 'folder-add', 'folder-remove', 'folder-delete', 'folder-checked', 'tickets', 'document-remove', 'document-delete', 'document-copy', 'document-checked', 'document', 'document-add', 'printer', 'paperclip', 'takeaway-box', 'search', 'monitor', 'attract', 'mobile', 'scissors', 'umbrella', 'headset', 'brush', 'mouse', 'coordinate', 'magic-stick', 'reading', 'data-line', 'data-board', 'pie-chart', 'data-analysis', 'collection-tag', 'film', 'suitcase', 'suitcase-1', 'receiving', 'collection', 'files', 'notebook-1', 'notebook-2', 'toilet-paper', 'office-building', 'school', 'table-lamp', 'house', 'no-smoking', 'smoking', 'shopping-cart-full', 'shopping-cart-1', 'shopping-cart-2', 'shopping-bag-1', 'shopping-bag-2', 'sold-out', 'sell', 'present', 'box', 'bank-card', 'money', 'coin', 'wallet', 'discount', 'price-tag', 'news', 'guide', 'male', 'female', 'thumb', 'cpu', 'link', 'connection', 'open', 'turn-off', 'set-up', 'chat-round', 'chat-line-round', 'chat-square', 'chat-dot-round', 'chat-dot-square', 'chat-line-square', 'message', 'postcard', 'position', 'turn-off-microphone', 'microphone', 'close-notification', 'bangzhu', 'time', 'odometer', 'crop', 'aim', 'switch-button', 'full-screen', 'copy-document', 'mic', 'stopwatch', 'medal-1', 'medal', 'trophy', 'trophy-1', 'first-aid-kit', 'discover', 'place', 'location', 'location-outline', 'location-information', 'add-location', 'delete-location', 'map-location', 'alarm-clock', 'timer', 'watch-1', 'watch', 'lock', 'unlock', 'key', 'service', 'mobile-phone', 'bicycle', 'truck', 'ship', 'basketball', 'football', 'soccer', 'baseball', 'wind-power', 'light-rain', 'lightning', 'heavy-rain', 'sunrise', 'sunrise-1', 'sunset', 'sunny', 'cloudy', 'partly-cloudy', 'cloudy-and-sunny', 'moon', 'moon-night', 'dish', 'dish-1', 'food', 'chicken', 'fork-spoon', 'knife-fork', 'burger', 'tableware', 'sugar', 'dessert', 'ice-cream', 'hot-water', 'water-cup', 'coffee-cup', 'cold-drink', 'goblet', 'goblet-full', 'goblet-square', 'goblet-square-full', 'refrigerator', 'grape', 'watermelon', 'cherry', 'apple', 'pear', 'orange', 'coffee', 'ice-tea', 'ice-drink', 'milk-tea', 'potato-strips', 'lollipop', 'ice-cream-square', 'ice-cream-round']
export default elementIcons
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment