Commit 3889adc7 authored by 白舜's avatar 白舜 🎱

add bg-btns test

parents
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
{
"recommendations": ["Vue.volar"]
}
{
"eslint.validate": [
"vue",
"javascript",
"javascriptreact"
],
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": [
"source.formatDocument",
"source.fixAll.eslint"
],
"editor.formatOnSave": false,
"files.eol": "\n",
"path-intellisense.mappings": {
"@": "${workspaceFolder}/src"
},
"volar.codeLens.pugTools": false,
"typescript.preferences.useAliasesForRenames": false,
"liveServer.settings.root": "/dist",
"prettier.printWidth": 120
}
# BG-UI Demo
这是为了方便开发,搭建的demo。
## 运行
```
yarn
```
```
yarn dev
```
## 依赖
主要依赖 `element-plus` ,其中部分组件依赖如下:
```
* bg-filter-date.vue
el-date-picker
* bg-filter-group
el-input el-button
* bg-list
el-button
* bg-pagination
el-pagination
* bg-table
el-table el-table-column
* bg-table-pro
el-table el-table-column
* bg-tags
el-button el-input
* bg-upload-image
el-upload el-icon el-button el-dialog
* bg-upload
el-upload el-button
* bg-user-upload-image
el-upload
```
```
* bg-code-editor
vue3-ace-editor ace-builds
* bg-info
clipboard
* bg-layout-card
html2canvas
* bg-rich-text
@wangeditor/editor @wangeditor/editor-for-vue (vue2)
* bg-upload-image
@element-plus/icons-vue
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
{
"name": "my-vue-app",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@element-plus/icons-vue": "^2.0.10",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"ace-builds": "^1.13.1",
"clipboard": "^2.0.11",
"element-plus": "^2.2.25",
"html2canvas": "^1.4.1",
"vue": "^3.2.41",
"vue3-ace-editor": "^2.2.2"
},
"devDependencies": {
"@vitejs/plugin-vue": "^3.2.0",
"sass": "^1.56.1",
"vite": "^3.2.3"
}
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file
<script setup>
import { reactive } from "vue"
const btns = reactive({
options: [{ name: 'hello', value: 'hello' }, { name: 'world', value: 'world' }],
currentValue: ''
})
</script>
<template>
<bg-btns :options="btns.options" v-model="btns.currentValue"></bg-btns>
</template>
<style scoped>
</style>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
\ No newline at end of file
<template>
<div class="bg-btns">
<ul>
<li
v-for="btn in options"
:class="{
'is-active': modelValue === btn.value,
}"
:key="btn.value"
@click="selectBtn(btn)"
>
{{ btn.name }}
</li>
</ul>
</div>
</template>
<script>
export default {
name: "BgBtns",
props: {
modelValue: {
type: [String, Number],
default: "",
},
options: {
type: Array,
default: () => [],
},
},
emits: ["update:modelValue"],
methods: {
selectBtn({ value }) {
this.$emit("update:modelValue", value);
},
},
};
</script>
<template>
<div class="bg-card">
<h3 class="card-title text-clip">
<span class="title-icon" v-if="icon">
<bg-icon :icon="icon" />
</span>
<span class="title-text">{{ title }}</span>
</h3>
<div class="card-content" ref="content">
<slot />
</div>
</div>
</template>
<script>
export default {
name: "BgCard",
props: {
title: {
type: String,
default: "",
},
icon: {
type: String,
default: "",
},
},
};
</script>
<template>
<VAceEditor
v-model:value="states.content"
class="vue-ace-editor"
:class="{'vue-ace-editor-disable':props.disabled}"
@input="codeChange"
:lang="props.lang"
:theme="props.theme"
:options="{
useWorker: true,
readOnly: props.disabled,
wrap: true
}"
/>
</template>
<script setup>
import { reactive, toRefs, watch,onMounted } from "vue";
import { VAceEditor } from "vue3-ace-editor";
import ace from 'ace-builds';
import modeJsonUrl from 'ace-builds/src-noconflict/mode-json?url';
import modeJavascriptUrl from 'ace-builds/src-noconflict/mode-javascript?url';
import modeHtmlUrl from 'ace-builds/src-noconflict/mode-html?url';
import themeGithubUrl from 'ace-builds/src-noconflict/theme-github?url';
import themeChromeUrl from 'ace-builds/src-noconflict/theme-chrome?url';
import themeMonokaiUrl from 'ace-builds/src-noconflict/theme-monokai?url';
import workerBaseUrl from 'ace-builds/src-noconflict/worker-base?url';
import workerJsonUrl from 'ace-builds/src-noconflict/worker-json?url';
import workerJavascriptUrl from 'ace-builds/src-noconflict/worker-javascript?url';
import workerHtmlUrl from 'ace-builds/src-noconflict/worker-html?url';
ace.config.setModuleUrl('ace/mode/json', modeJsonUrl);
ace.config.setModuleUrl('ace/mode/javascript', modeJavascriptUrl);
ace.config.setModuleUrl('ace/mode/html', modeHtmlUrl);
ace.config.setModuleUrl('ace/theme/github', themeGithubUrl);
ace.config.setModuleUrl('ace/theme/chrome', themeChromeUrl);
ace.config.setModuleUrl('ace/theme/monokai', themeMonokaiUrl);
ace.config.setModuleUrl('ace/mode/base', workerBaseUrl);
ace.config.setModuleUrl('ace/mode/json_worker', workerJsonUrl);
ace.config.setModuleUrl('ace/mode/javascript_worker', workerJavascriptUrl);
ace.config.setModuleUrl('ace/mode/html_worker', workerHtmlUrl);
const props = defineProps(
{
modelValue: {
type:String,
default:"",
},
disabled:{
type:Boolean,
default:false
},
// lang:{
// type:String,
// default:"json"
// },
// theme:{
// type:String,
// default:"themeChromeUrl"
// },
width:{
type:String,
default:"100%"
},
}
)
const emit = defineEmits(['update:modelValue'])
// watch(
// props.modelValue,
// (n,o) => {
// states.content = n
// }
// )
const states = reactive({
lang: "json",
theme: "github",
content: "",
});
// watch(
// states.content,
// (n,o) => {
// emit("update:modelValue", n);
// }
// )
const codeChange = ()=>{
emit("update:modelValue", states.content);
}
onMounted(() => {
let obj = "";
// console.log(typeof JSON.parse(this.datas));
try {
if (typeof JSON.parse(props.modelValue) == "object") {
obj = JSON.stringify(JSON.parse(props.modelValue), null, "\t");
}else{
obj = props.modelValue;
}
} catch (e) {
obj = props.modelValue;
}
states.content = obj
})
const {content} = toRefs(states)
</script>
<style scoped>
.vue-ace-editor {
flex: 1;
margin-top: 15px;
font-size: 16px;
border: 1px solid #dadee7;
width: 100%;
height: 100%;
border-radius: 4px;
overflow: hidden;
}
.vue-ace-editor :deep() .ace_scrollbar-v{
width: 0px!important;
}
.vue-ace-editor :deep() .ace_gutter{
font-size: 14px;
color: #ffffff;
background-color: #262626;
}
.vue-ace-editor :deep() .ace_gutter-cell{
line-height: 22px;
background-color: #262626;
}
.vue-ace-editor :deep() .ace_print-margin{
width: 0;
}
.vue-ace-editor :deep() .ace_scroller{
background-color: #1a1a1a;
color: #fff;
caret-color:#fff;
right: 0!important;
}
/* 光标颜色 */
.vue-ace-editor :deep() .ace_cursor{
color: #fff;
}
.vue-ace-editor-disable :deep() .ace_scrollbar-v{
width: 6px!important;
}
.vue-ace-editor-disable :deep() .ace_gutter{
background-color: #202531;
}
.vue-ace-editor-disable :deep() .ace_gutter-cell{
background-color: #202531;
}
.vue-ace-editor-disable :deep() .ace_scroller{
background-color: #fff;
color: #202531;
}
/* 光标颜色 */
.vue-ace-editor-disable :deep() .ace_cursor{
color: #000;
}
</style>
<template>
<div class="detail_box">
<div class="detail_text text_clip" :style="index==data.length-1?last_width:unit_width" v-for="(item,index) in data" :key="'data'+index">
<span>{{item.title}}</span>
<!-- 拓展功能 -->
<template v-if="item.slot">
<span>
<slot v-bind:item="item" :name="item.slot"></slot>
</span>
</template>
<!-- 原有下载功能 -->
<template v-else>
<span v-if="!item.urls" :title="item.info" @click="down_file(item.url)" :style="item.url?{color:'#515fe7',cursor:'pointer'}:''">{{item.info}}</span>
<span v-else :title="item.info">
<span v-for="(it,idx) in item.urls" @click="down_file(it)" style="color:#515fe7;cursor:pointer;" :key="'urls'+idx">{{helper.downloadFileFormatNew(it)}}</span>
</span>
</template>
</div>
<div class="bg" :style="{top:(2*index+1)*42+'px'}" v-for="(item,index) in bg_num" :key="'bg'+index"></div>
</div>
</template>
<script>
import helper from './utils/index.js'
console.log(helper);
export default {
props: {
data:{
type: Array,
default: () => [],
},
layout:{
line_num:4
}
},
components: {
},
data() {
return {
helper,
unit_width:0,
last_width:0,
bg_num:0,
};
},
watch: {
data:{
handler: function(n, o) {
if(this.layout.line_num){
this.unit_width = {width:100/this.layout.line_num +'%'}
}
if(this.layout.line_num&&n.length%this.layout.line_num!==0){//计算最后一个格子的宽度
this.last_width = {width:(this.layout.line_num-(n.length%this.layout.line_num)+1)/this.layout.line_num*100+'%'}
}else{
this.last_width = {width:100/this.layout.line_num +'%'}
}
if(n.length<this.layout.line_num){
return
}else{
this.bg_num = Math.floor((Math.ceil(n.length/this.layout.line_num))/2)
}
},
immediate: true
}
},
computed: {
},
created() {
},
mounted() {
},
methods: {
down_file(url){
if(url){
console.log(url);
const a = document.createElement("a"); // 创建a标签
a.setAttribute("download", ""); // download属性
a.setAttribute("href", url); // href链接
a.click(); // 自执行点击事件
}
}
},
};
</script>
<style scoped>
.detail_box{
width: 100%;
border-bottom: 1px solid #e3e5ef;
border-right: 1px solid #e3e5ef;
overflow: hidden;
position: relative;
}
.detail_box .detail_text{
width: 25%;
height: 42px;
line-height: 42px;
padding: 0 15px;
border-left: 1px solid #e3e5ef;
border-top: 1px solid #e3e5ef;
float: left;
position: relative;
z-index: 1;
}
.detail_box .detail_text span:nth-of-type(1){
color: #616f94;
}
.detail_box .detail_text span:nth-of-type(2){
color: #404a62;
}
.bg{
background-color:#f7f8f9;
width: 100%;
height: 42px;
position: absolute;
}
</style>
<template>
<div class="out-detail">
<div class="row-box" v-for="(item,index) in list" :style="{width:item.width}" :key="'row-box'+index">
<p class="detail-module" v-if="!item.slot">
<span :style="{width:itemWidth}">{{item.label}}</span>
<span class="text_clip" :title="item.value" v-if="!item.childSlot">{{item.value}}</span>
<span v-else>
<slot :name="item.childSlot" :data="item"></slot>
</span>
</p>
<template v-else>
<slot :name="item.slot" :data="item"></slot>
</template>
</div>
</div>
</template>
<script>
export default {
props: {
list:{
type:Array,
default:()=>[]
},
itemWidth:{
type:String,
default:''
}
},
components: {
},
data() {
return {
};
},
watch: {
},
computed: {
},
created() {
},
mounted() {
},
methods: {
},
};
</script>
<style scoped>
.out-detail{
width: 100%;
overflow: hidden;
display: flex;
flex-wrap: wrap;
border-right: solid 1px #dadee7;
border-bottom: solid 1px #dadee7;
}
.row-box{
width: 50%;
flex-grow:1;
text-align: left;
line-height: 48px;
min-height: 48px;
border-left: solid 1px #dadee7;
border-top: solid 1px #dadee7;
font-size: 14px;
color: #404a62;
}
.row-box .detail-module{
height: 100%;
display: flex;
}
.row-box .detail-module span{
height: 100%;
display: inline-block;
padding-left: 15px;
box-sizing: border-box;
}
.row-box .detail-module span:nth-of-type(1){
background-color: #f7f7f9;
min-width: 114px;
border-right: solid 1px #dadee7;
}
.row-box .detail-module span:nth-of-type(2){
flex-grow:1;
}
</style>
<template>
<div class="bg-detail bg-form">
<!-- 固定导航 -->
<div class="bg-tabs-nav--fixed" v-show="showFixedBars">
<ul v-if="calcTabs().length">
<li
v-for="(item, index) in calcTabs()"
:key="'tab_' + index"
:class="{
current: activeName === item.name,
}"
@click="changeActiveName(item, index)"
>
{{ item.label }}
</li>
<li>
<!-- empty -->
</li>
</ul>
</div>
<!-- 面包屑 -->
<div class="bg-breadcrumb">
<slot name="breadcrumb" />
</div>
<!-- 基本信息 -->
<div class="bg-detail-info" v-if="$slots.info">
<slot name="info" />
</div>
<!-- 兼容意外模块 -->
<div v-if="$slots.other">
<slot name="other" />
</div>
<!-- 详情 -->
<div class="bg-tabs bg-detail-tabs">
<div class="bg-tabs-nav" v-if="calcTabs().length">
<ul>
<li
v-for="(item, index) in calcTabs()"
:key="'tab_' + index"
:class="{
current: activeName === item.name,
}"
@click="changeActiveName(item, index)"
>
{{ item.label }}
</li>
<li>
<!-- empty -->
</li>
</ul>
</div>
<div class="bg-tabs-content">
<slot />
</div>
</div>
</div>
</template>
<script>
export default {
name: "BgDetail",
provide() {
return {
getActiveName: () => {
return this.activeName;
},
getIsTabs: () => {
return false;
},
};
},
data() {
return {
activeName: "",
showFixedBars: false,
scrollCallback: null,
};
},
methods: {
calcTabs() {
let tabSlots = [];
if (this.$slots.default) {
tabSlots = this.$slots.default
.filter(
(vnode) =>
vnode.tag &&
vnode.componentOptions &&
vnode.componentOptions.Ctor.options.name === "BgTab"
)
.map((vnode) => vnode.componentOptions.propsData);
}
return tabSlots;
},
changeActiveName({ name }, index) {
let targetEl = this.$el.querySelectorAll(`.bg-tab`)[index];
let targetCtx = document.querySelector(`.bg-main`);
targetCtx.scrollTop = targetEl && targetEl.offsetTop - 165;
this.activeName = name;
this.scrollCallback = () => {
this.activeName = name;
};
},
scrollAction() {
let targetCtx = document.querySelector(`.bg-main`);
let ctxScrollTop = targetCtx.scrollTop || 0;
let targetEls = this.$el.querySelectorAll(`.bg-tab`);
let tabs = this.calcTabs();
for (let i = 0; i < targetEls.length; i++) {
let targetEl = targetEls[i];
if (ctxScrollTop >= targetEl.offsetTop) {
this.activeName = tabs[i].name;
}
}
this.showFixedBars = ctxScrollTop > 222;
this.scrollCallback && this.scrollCallback();
this.scrollCallback = null;
},
},
mounted() {
this.$nextTick(() => {
let tabs = this.calcTabs();
this.activeName = tabs[0] && tabs[0].name;
this.scrollAction();
window.addEventListener("scroll", this.scrollAction, true);
});
},
destroyed() {
window.removeEventListener("scroll", this.scrollAction, true);
},
};
</script>
<template>
<div class="bg-filtrate">
<span class="bg-filtrate-text">{{ name }}</span>
<div class="bg-filtrate-list">
<el-date-picker
v-model="value"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="~"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="change">
</el-date-picker>
</div>
</div>
</template>
<script>
export default {
name: "BgFilterDate",
model: {
prop: "time",
event: "change",
},
props: {
name: {
type: String,
default: "",
},
},
data() {
return {
value: ""
}
},
computed: {
},
methods: {
change(event) {
this.$emit("change", event);
},
},
};
</script>
\ No newline at end of file
<template>
<div class="bg-filter-group" :style="{'border-bottom': showFlag? 'none' : '','padding-bottom': showFlag? '8px':'16px'}">
<div class="top-filter">
<div class="left-slot">
<slot name="left_action"></slot>
</div>
<div class="right-filter">
<el-input :placeholder="placeholder" @keydown.enter="search" @clear="search" clearable v-model.trim="modelValue">
<template #append>
<div class="append-btn" @click="search">
<bg-icon style="font-size: 12px; color: #404a62; " icon="#bg-ic-search"></bg-icon>
</div>
</template>
</el-input>
<div class="more-btn" :class="showFlag ? 'more-btn1': ''" v-if="$slots.filter_group">
<el-button type="default" class="more-filter" @click="moreFilter">
高级搜索
<bg-icon style="font-size: 8px; color: #404a62; margin-left: 8px" icon="#bg-ic-arrow-down" v-if="!showFlag"></bg-icon>
<bg-icon style="font-size: 8px; color: #404a62; margin-left: 8px" icon="#bg-ic-arrow-up" v-else></bg-icon>
</el-button>
</div>
</div>
</div>
<div class="filter-group" v-if="showFlag">
<slot name="filter_group"></slot>
</div>
</div>
</template>
<script setup>
import { computed, onMounted, reactive, toRefs, watch,ref } from "vue"
const state = reactive({
showFlag: false,
modelValue: ""
})
const props = defineProps({
modelValue: {
type: String,
default: '',
},
placeholder: {
type: String,
default: "请输入关键词"
}
})
watch(props,(n,o) => {
state.modelValue = n.modelValue
})
watch(() => state.modelValue,(n,o) => {
emit('update:modelValue',n)
})
const emit = defineEmits(['search','update:modelValue'])
const search = () => {
emit('search',state.modelValue)
}
const moreFilter = () => {
state.showFlag = !state.showFlag
}
onMounted(() => {
state.modelValue = props.modelValue
})
const { modelValue,showFlag } = toRefs(state)
</script>
\ No newline at end of file
<template>
<div class="bg-filter" v-if="options.length > 0">
<span>{{ name }}</span>
<ul>
<li
v-for="(item, index) in fullOptions"
:class="{ current: selection.indexOf(item.value) > -1 }"
:key="'li_' + index"
@click="selectAction(item)"
>
{{ item.name }}
</li>
</ul>
</div>
</template>
<script>
export default {
name: "BgFilter",
model: {
prop: "value",
event: "change",
},
props: {
isCalc:{
type:Boolean,
default:false,
},
value: {
type: [Number, String],
default: "",
},
name: {
type: String,
default: "",
},
options: {
type: Array,
default: () => [],
},
optionName: {
type: String,
default: "name",
},
optionValue: {
type: String,
default: "value",
},
multiple: {
type: Boolean,
default: false,
},
},
computed: {
fullOptions() {
return [
{
name: "全部",
value: "",
},
...this.options.map((item) => {
return {
name: item[this.optionName],
value: item[this.optionValue] + "",
sub_cate: item.sub_cate ? item.sub_cate : "",
};
}),
];
},
selection() {
let value = this.value + "";
return value.split(",");
},
},
methods: {
selectAction({ value, name, sub_cate }) {
if (value && this.multiple) {
let selection = [...this.selection].filter((v) => v !== "");
let index = selection.findIndex((v) => v === value);
if (index > -1) {
selection.splice(index, 1);
} else {
selection.push(value);
}
this.$emit("change", selection.join(","));
} else {
this.$emit("change", value, name, sub_cate ? sub_cate : "");
}
},
},
};
</script>
<template>
<div class="bg-filtrate">
<span class="bg-filtrate-text">{{ name }}</span>
<ul class="bg-filtrate-list">
<li
v-for="(item, index) in fullOptions"
:class="{ current: selection.indexOf(item.value) > -1 }"
:key="'li_' + index"
@click="selectAction(item)"
>
{{ item.name }}
</li>
</ul>
</div>
</template>
<script>
export default {
name: "BgFiltrate",
model: {
prop: "value",
event: "change",
},
props: {
value: {
type: [Number, String],
default: "",
},
name: {
type: String,
default: "",
},
options: {
type: Array,
default: () => [],
},
optionName: {
type: String,
default: "name",
},
optionValue: {
type: String,
default: "value",
},
multiple: {
type: Boolean,
default: false,
},
},
computed: {
fullOptions() {
return [
{
name: "全部",
value: "",
},
...this.options.map((item) => {
return {
name: item[this.optionName],
value: item[this.optionValue] + "",
};
}),
];
},
selection() {
let value = this.value + "";
return value.split(",");
},
},
methods: {
selectAction({ value, name }) {
if (value && this.multiple) {
let selection = [...this.selection].filter((v) => v !== "");
let index = selection.findIndex((v) => v === value);
if (index > -1) {
selection.splice(index, 1);
} else {
selection.push(value);
}
this.$emit("change", selection.join(","));
} else {
this.$emit("change", value, name);
}
},
},
};
</script>
\ No newline at end of file
<template>
<svg class="bg-icon" aria-hidden="true">
<use :xlink:href="icon"></use>
</svg>
</template>
<script>
import "https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/svg_19654_220.40af3ff1115b250314027a7e199e042a.js";
export default {
props: {
icon: {
type: String,
default: "",
},
},
};
</script>
\ No newline at end of file
<template>
<div class="bg-info">
<ul>
<li
v-for="(item, index) in data"
:key="'li_' + index"
:style="{
width: item.full ? `100%` : `calc(100% / ${col})`,
}"
>
<span :style="{ width: item.nameWidth ? item.nameWidth + 'px' : '50%'}">
{{ item.name }}
</span>
<span :style="{ width: item.nameWidth ? `calc( 100% - ${item.nameWidth + 'px'})` : '50%'}">
<span
style="display: inline-block;width: 100%;white-space: normal;word-break: break-all"
:style="{
width: item.copy ? 'calc(100% - 36px)' : item.download || item.password ? 'calc(100% - 22px)': '100%',
color: item.download ? '#3759be' : '#404a62'
}"
>{{ item.value }}</span>
<a
class="copy-btn"
@click="copyText(item.value, $event)"
v-if="item.copy"
>
复制
</a>
<bg-icon
class="copy-btn"
style="font-size: 14px;cursor: pointer;"
icon="#bg-ic-download"
v-if="item.download"
@click="download(item.url)"
></bg-icon>
<bg-icon
class="copy-btn"
style="font-size: 14px;cursor: pointer;"
:icon="show ? '#bg-ic-eye-close' : '#bg-ic-eye'"
v-if="item.password"
@click="changeView(item)"
></bg-icon>
</span>
</li>
</ul>
</div>
</template>
<script>
import Clipboard from "clipboard";
export default {
name: "BgInfo",
props: {
data: {
type: Array,
default: () => [],
},
col: {
type: Number,
default: 2,
},
},
data() {
return {
show: false
}
},
methods: {
clipboardSuccess() {
this.$message({
type: "success",
message: "复制成功",
duration: 1500,
});
},
clipboardError() {
this.$message({
message: "浏览器不支持自动复制",
type: "warning",
});
},
copyText(text, e) {
const clipboard = new Clipboard(e.target, {
text: () => text,
});
clipboard.on("success", () => {
this.clipboardSuccess();
// 释放内存
clipboard.destroy();
});
clipboard.on("error", () => {
// 不支持复制
this.clipboardError();
// 释放内存
clipboard.destroy();
});
// 解决第一次点击不生效的问题,如果没有,第一次点击会不生效
clipboard.onClick(e);
},
download(url) {
const a = document.createElement("a"); // 创建a标签
a.setAttribute("download", ""); // download属性
a.setAttribute("href", url); // href链接
a.click(); // 自执行点击事件
},
changeView(item) {
if (!this.show) {
item.value = item.realValue
}else {
item.value = "***************"
}
this.show = !this.show
}
},
};
</script>
<template>
<div class="inner-container" :style="{height:height[0]+'px',fontSize:height[2]+'px'}">
<div :style="{height:height[1]+'px',lineHeight:height[1]-2+'px'}" :class="{'now-inner':nowIndex==index}" @click="changeInner(index)" v-for="(item,index) in data" :key="'inner'+index">{{item}}</div>
</div>
</template>
<script setup>
import { reactive, ref,onBeforeMount,toRefs } from 'vue'
const props = defineProps({
modelValue:{
type: [String,Number],
default: 0,
},
data: {
type: Array,
default: [],
},
default:{
type: [String,Number],
default: 0
},
height:{
type:Array,
default:[36,32,16]
}
})
const emit = defineEmits(['update:modelValue','change'])
const nowIndex = ref('')
const changeInner = (val)=>{
nowIndex.value = val
emit('update:modelValue',val)
emit('change',val)
}
onBeforeMount(()=>{
nowIndex.value = props.default
})
</script>
<style scoped>
.inner-container{
height: 36px;
background-color: #edeef0;
border-radius: 4px;
padding: 2px;
display: inline-block;
overflow: hidden;
}
.inner-container div{
height: 32px;
line-height: 30px;
border-radius: 4px;
padding:0 15px;
float: left;
color: #404a62;
cursor: pointer;
}
.inner-container .now-inner{
background-color: #2b4695;
color: #ffffff;
}
</style>
<template>
<div class="bg-layout-card" :style="style">
<div class="card-title">
<h3 class="title-text text-clip">{{ title }}</h3>
<ul class="filter-list" v-if="btns.length > 0">
<li
v-for="(item, index) in btns"
:key="item"
:class="{ current: index === btn }"
@click="$emit('update:btn', index)"
>
{{ item }}
</li>
</ul>
<div
class="download-btn"
@click="downloadAction"
v-loading="downloading"
element-loading-spinner="el-icon-loading"
v-if="download"
>
<img src="./imgs/btn_daochu.png" />
</div>
</div>
<div class="card-content" ref="content">
<slot />
</div>
</div>
</template>
<script>
import html2canvas from "html2canvas";
export default {
name: "BgLayoutCard",
props: {
title: {
type: String,
default: "",
},
width: {
type: String,
default: "25%",
},
height: {
type: String,
default: "278px",
},
btn: {
type: Number,
default: 0,
},
btns: {
type: Array,
default: () => [],
},
download: {
type: Boolean,
default: false,
},
},
computed: {
style() {
return {
width: `calc(${this.width} - 20px)`,
height: this.height,
};
},
},
data() {
return {
downloading: false,
};
},
methods: {
getScrollTop() {
let scrollTop = 0;
if (document.documentElement && document.documentElement.scrollTop) {
scrollTop = document.documentElement.scrollTop;
} else if (document.body) {
scrollTop = document.body.scrollTop;
}
return scrollTop;
},
downloadAction() {
if (this.downloading) {
return;
}
let content = this.$refs.content;
let { top, left } = content.getBoundingClientRect();
let scrollTop = this.getScrollTop();
this.downloading = true;
html2canvas(content, { x: left, y: top + scrollTop }).then((canvas) => {
let imgUrl = canvas.toDataURL("image/png");
let a = document.createElement("a"); // 生成一个a元素
let event = new MouseEvent("click"); // 创建一个单击事件
this.$nextTick(() => {
a.download = this.title; // 设置图片名称
a.href = imgUrl; // 将生成的URL设置为a.href属性
a.dispatchEvent(event); // 触发a的单击事件
this.downloading = false;
});
});
},
},
};
</script>
<template>
<div class="bg-list bg-form">
<!-- 面包屑 -->
<div class="bg-breadcrumb">
<slot name="breadcrumb" />
</div>
<!-- 头部 -->
<div class="bg-list-header" v-if="$slots.header">
<slot name="header" />
</div>
<!-- 筛选条件 -->
<div class="bg-list-filter" v-if="$slots.filters">
<div class="fiter-header" v-if="!inlineFilters">
<span v-if="noMoreFilters">
<!-- -->
</span>
<template v-else>
<el-button @click="$emit('update:visible', !visible)" v-if="visible">
<span>收起</span>
<i class="el-icon-caret-top el-icon--right"></i>
</el-button>
<el-button @click="$emit('update:visible', !visible)" v-else>
<span>更多选项</span>
<i class="el-icon-caret-bottom el-icon--right"></i>
</el-button>
</template>
<div class="filter-header-right">
<slot name="filter" />
</div>
</div>
<div
class="filter-content"
:class="{ 'inline-filters': inlineFilters, 'show-more': visible }"
>
<div class="filter-list">
<slot name="filters" />
</div>
<div class="filter-action" v-if="inlineFilters">
<div class="filters-right" v-if="$slots['filters-right']">
<slot name="filters-right" />
</div>
<el-button type="primary2" @click="$emit('search-action')">
查询
</el-button>
<el-button type="default2" @click="$emit('search-reset')">
重置
</el-button>
</div>
</div>
</div>
<!-- 其他信息 -->
<div class="bg-list-top" v-if="$slots.top">
<slot name="top" />
</div>
<!-- 列表 -->
<div class="bg-list-main" :class="{ 'has-action': !!$slots.action }">
<div class="main-action" v-if="$slots.action">
<slot name="action" />
</div>
<div class="main-table">
<slot name="table" />
</div>
<div class="main-pagination">
<slot name="pagination" />
</div>
</div>
<slot />
</div>
</template>
<script>
export default {
name: "BgList",
props: {
visible: {
type: Boolean,
default: false,
},
noMoreFilters: {
type: Boolean,
default: false,
},
inlineFilters: {
type: Boolean,
default: false,
},
},
};
</script>
<template>
<ul class="nav-list" v-if="list&&list.length">
<li v-for="(item, index) in list" v-show="item.menuType!==2" :key="'nav_' + index">
<template v-if="item.children && item.children.length&&item.menuType==0">
<div
class="nav-item nav-more text-clip"
:class="{ current: isCurrent([item.path]) }"
@click="showMoreAction(index)"
>
<span :style="{ paddingLeft: `${deep*2}em` }">
<!-- <img v-if="item.icon" :src="item.icon" alt=""> -->
<bg-icon v-if="item.icon" style="color:#7c8292;" :icon="'#'+item.icon"></bg-icon>
{{ item.menuName }}
<bg-icon v-show="showMore[index] !== false" style="font-size:8px;position: absolute;right: 10px;top: 20px;" icon="#bg-ic-arrow-up"></bg-icon>
<bg-icon v-show="showMore[index] == false" style="font-size:8px;position: absolute;right: 10px;top: 20px;" icon="#bg-ic-arrow-down"></bg-icon>
</span>
&ensp;
</div>
<transition name="slideOutUp">
<NavList
:list="item.children"
:deep="deep + 1"
:highlight-parent-rule="highlightParentRule"
v-if="showMore[index] !== false"
/>
</transition>
</template>
<template v-else>
<div
class="nav-item text-clip"
:class="{current:isCurrent(item.children&&item.children.length?[...getChildrenPath(item.children),item.path]:[item.path])}"
@click="$router.push(item.path)"
>
<span :style="{ paddingLeft: item.icon ? `${deep*2 - 1.37}em` :`${deep*2}em` }">
<bg-icon v-if="item.icon" style="color:#7c8292;" :icon="'#'+item.icon"></bg-icon>
{{ item.menuName }}
</span>
</div>
</template>
</li>
</ul>
</template>
<script>
export default {
name: "NavList",
props: {
list: {
type: Array,
required: true,
}, // 导航列表 [ { name: "xxx", path: "xxx" } ]
deep: {
type: Number,
default: 0,
},
highlightParentRule: {
type: Function,
},
},
data() {
return {
showMore: {},
};
},
methods: {
showMoreAction(index) {
let flag = this.showMore[index];
if (flag === undefined) {
flag = true;
}
this.showMore[index] = !flag
},
getChildrenPath(arr,temp=[]){
arr.forEach(e => {
temp.push(e.path)
if(e.children&&e.children.length){
this.getChildrenPath(e.children,temp)
}
});
return temp
},
isCurrent(path) {
return (
(this.highlightParentRule && this.highlightParentRule(path)) || false
);
},
},
};
</script>
<template>
<div class="bg-nav" :style="{ width: width }">
<div class="bg-nav-title" v-if="title">
<h3 class="text-clip">{{ title }}</h3>
</div>
<div class="bg-nav-list bg-scroll">
<NavList :list="list" :highlight-parent-rule="highlightParentRule" />
</div>
</div>
</template>
<script>
import NavList from "./bg-nav-list.vue";
export default {
name: "BgNav",
components: {
NavList,
},
props: {
title: {
type: String,
default: "",
},
width: {
type: String,
default: "184px",
}, // 宽度
list: {
type: Array,
required: true,
}, // 导航列表 [ { name: "xxx", path: "xxx" } ]
highlightParentRule: {
type: Function,
},
},
};
</script>
<template>
<div class="bg-pagination">
<el-pagination
:currentPage="page"
:page-size="size"
:page-sizes="pageSizes"
:layout="layout"
:total="total"
@size-change="changeSize"
@current-change="changePage"
:background="background"
:disabled="disabled"
/>
</div>
</template>
<script>
export default {
name: "pagination",
props: {
page: {
type: Number,
default: 1
},
size: {
type: Number,
default: 10,
},
pageSizes: {
type: Array,
default: [10,50,100]
},
total: {
type: Number,
default: 0
},
layout: {
type: String,
default: "total, sizes, prev, pager, next, jumper"
},
background: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
}
},
setup(props, context) {
const changePage = (val) => {
context.emit("change-page",val)
}
const changeSize = (val) => {
context.emit("change-size",val)
}
return {
changePage,
changeSize
}
},
}
</script>
\ No newline at end of file
<template>
<div style="border: 1px solid #ccc;z-index: 100;">
<Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editorRef"
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<Editor
style="height: 500px; overflow-y: hidden;"
v-model="valueHtml"
@onChange="handleChange"
@onBlur="handleBlur"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/>
</div>
</template>
<script>
import '@wangeditor/editor/dist/css/style.css' // 引入 css
import { onBeforeUnmount, ref, shallowRef, onMounted, reactive, toRefs } from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import {
useFormItem,
} from 'element-plus'
export default {
components: { Editor, Toolbar },
props: {
modelValue: {
type: String,
default: '',
},
disabled:{
type:Boolean,
default:false
}
},
emits: ['update:modelValue','change','blur'],
watch:{
modelValue(n,o){
this.valueHtml = n
}
},
setup(props,{ emit }) {
//引入form-item
const { formItem } = useFormItem()
// 编辑器实例,必须用 shallowRef
const editorRef = shallowRef()
// 内容 HTML
const valueHtml = ref('')
// change次数
let changeNum = ref(0)
// 模拟 ajax 异步获取内容
onMounted(() => {
setTimeout(()=>{
valueHtml.value = props.modelValue
// console.log(valueHtml.value);
})
})
const toolbarConfig = {}
const editorConfig = {
placeholder: '请输入内容...',
MENU_CONF: {
uploadImage: {
server: '/apaas/common/image/upload', // 服务器地址
fieldName: "file", // 上传的文件的字段名称
meta: {
directory: 'image',
}, // 上传图片必须携带的参数
maxFileSize: 2 * 1024 * 1024, // 图片最大2M
timeout: 3 * 60 * 1000, // 超时时间3分钟
allowedFileTypes: ['image/jpg','image/png','image/gif','image/jpeg',],
customInsert(res, insertFn) {
// res 即服务端的返回结果
// 从 res 中找到 url alt href ,然后插图图片 url是必须,href和alt可以为""
let url = res.data
let alt = ""
let href = res.data
insertFn(url, alt, href)
},
onBeforeUpload(file) {
// 可以 return
// 1. return file 或者 new 一个 file ,接下来将上传
// 2. return false ,不上传这个 file
let allowedType = ["jpg","png","jpeg","gif","bmp","tiff"] // 常见的图片格式
let data = Object.values(file)[0]
if (allowedType.indexOf(data.extension) == -1) {
alert(`图片验证未通过,【${data.name}】不是图片`)
return false
}else {
return file
}
},
onError(file, err, res) {
console.log(`${file.name} 上传出错`, err, res)
},
}
}
}
// watch(
// props,modelValue,
// (n,o) => {
// }
// )
// 组件销毁时,也及时销毁编辑器
onBeforeUnmount(() => {
const editor = editorRef.value
if (editor == null) return
editor.destroy()
})
const handleCreated = (editor) => {
editorRef.value = editor // 记录 editor 实例,重要!
if(props.disabled){
editor.disable()
}
}
const handleChange = ()=>{
//初始化会默认赋值<p><br></p>
//会对原有数据造成影响,return掉
changeNum.value++
if(changeNum.value==1){
return
}
emit("update:modelValue", valueHtml.value);
// formItem?.validate?.('change').catch((err) => debugWarn(err))
}
const handleBlur = ()=>{
formItem?.validate?.('blur').catch((err) => console.warn(err))
}
return {
editorRef,
valueHtml,
mode: 'default', // 或 'simple'
toolbarConfig,
editorConfig,
handleCreated,
handleChange,
handleBlur,
};
}
}
</script>
<style>
.w-e-toolbar p, .w-e-text-container p, .w-e-menu-panel p {
font-size: 14px !important;
color: #202531!important;
}
.w-e-text-container{
word-break: break-all;
}
</style>
\ No newline at end of file
<template>
<div class="bg-sort">
<a
v-for="(item, index) in types"
:key="'name_' + index"
:class="{ current: item.value === value }"
@click="selectAction(item)"
>
{{ item.name }}
</a>
</div>
</template>
<script>
export default {
name: "BgSort",
model: {
prop: "value",
event: "change",
},
props: {
value: {
type: [Number, String],
default: "",
},
types: {
type: Array,
default: () => [
{
name: "综合排序",
value: 0,
},
{
name: "最近更新",
value: 1,
},
{
name: "最高人气",
value: 2,
},
{
name: "最好评价",
value: 3,
},
],
},
},
methods: {
selectAction({ value }) {
this.$emit("change", value);
},
},
};
</script>
\ No newline at end of file
<template>
<div class="bg-step" v-show="active === step">
<div class="step-content">
<slot />
</div>
<div class="step-action bg-form">
<slot name="action" />
</div>
</div>
</template>
<script>
export default {
name: "BgStep",
inject: {
getActive: {
type: Function,
default: () => {
return this.$parent.getActive;
},
},
},
props: {
title: {
type: String,
default: "",
},
step: {
type: Number,
required: true,
},
icon: {
required: true,
},
},
computed: {
active() {
return this.getActive();
},
},
};
</script>
<template>
<div class="bg-steps">
<div class="bg-steps-container">
<div class="steps-nav">
<ul>
<template v-for="(item, index) in calcSteps()" :key="'tab_' + index">
<li
class="step-line"
:class="{
done: active > index,
current: active === index,
}"
v-if="index > 0"
></li>
<li
class="step-item"
:class="{
done: active > index,
current: active === index,
}"
>
<div class="step-icon">
<!-- -->
</div>
<div class="step-hightlight-icon">
<img :src="item.icon" />
</div>
<div class="step-title">
<p>
{{ item.title || "完成" }}
</p>
<p v-if="item.title">
<template v-if="active > index">
已完成
</template>
<template v-else-if="active === index">
进行中
</template>
<template v-else>
未进行
</template>
</p>
</div>
</li>
<li
class="step-line"
:class="{
done: active > index,
current: active === index,
}"
v-if="index < calcSteps().length - 1"
></li>
</template>
</ul>
</div>
<div class="steps-content">
<slot />
</div>
</div>
</div>
</template>
<script>
export default {
name: "BgDetail",
provide() {
return {
getActive: () => {
return this.active;
},
};
},
props: {
active: {
type: Number,
default: 0,
},
},
data() {
return {
showFixedBars: false,
scrollCallback: null,
};
},
methods: {
calcSteps() {
let stepSlots = [];
if (this.$slots.default) {
stepSlots = this.$slots.default
.filter(
(vnode) =>
vnode.tag &&
vnode.componentOptions &&
vnode.componentOptions.Ctor.options.name === "BgStep"
)
.map((vnode) => {
return vnode.componentOptions.propsData;
});
}
return stepSlots;
},
},
};
</script>
<template>
<div
ref="bg_switch"
class="bg-switch"
:class="{ disabled: disabled }"
:style="now_style"
@click="switch_data"
>
<span class="label" :style="now_label_style">
{{ labels[now_index] }}
</span>
<span class="circle" :style="now_circle_style" ref="circle">
<!-- circle -->
</span>
</div>
</template>
<script>
export default {
name: "BgSwitch",
props: {
modelValue: {
type: [Boolean, Number, String],
default: 0,
},
labels: {
type: Array,
default: () => ["停用", "启用"],
},
values: {
type: Array,
default: () => [0, 1],
},
colors: {
type: Array,
default: () => ["#c1c7d7", "#275a9d"],
},
disabled: {
type: Boolean,
default: false,
},
},
emits: ['update:modelValue'],
data() {
return {
gap: 0,
box_height: 0,
circle_height: 0,
};
},
computed: {
now_index() {
if (this.values[0] == this.modelValue) {
return 0;
} else {
return 1;
}
},
now_style() {
return {
color: this.colors[this.now_index],
borderColor: this.colors[this.now_index],
};
},
now_label_style() {
return this.now_index == 0
? { left: this.circle_height + this.gap + 5 + "px" }
: { left: "10px" };
},
now_circle_style() {
return this.now_index == 0
? {
left: this.gap + "px",
backgroundColor: this.colors[this.now_index],
}
: {
right: this.gap + "px",
backgroundColor: this.colors[this.now_index],
};
},
},
methods: {
switch_data() {
if (this.disabled) {
return;
}
if (this.values[0] == this.modelValue) {
this.$emit("update:modelValue", this.values[1]);
} else {
this.$emit("update:modelValue", this.values[0]);
}
},
},
mounted() {
this.box_height = this.$refs.bg_switch.offsetHeight;
this.circle_height = this.$refs.circle.offsetHeight;
this.gap = (this.box_height - this.circle_height - 4) / 2;
},
};
</script>
<template>
<div class="bg-tab" v-show="showTab">
<div class="tab-title" v-if="!isTabs">
<h3>{{ label }}</h3>
</div>
<div class="tab-content">
<slot />
</div>
</div>
</template>
<script>
export default {
name: "BgTab",
inject: {
getActiveName: {
type: Function,
default: () => {
return this.$parent.activeName;
},
},
getIsTabs: {
type: Function,
default: () => {
return false;
},
},
},
props: {
label: {
type: String,
required: true,
},
name: {
type: String,
required: true,
},
},
computed: {
activeName() {
return this.getActiveName();
},
isTabs() {
return this.getIsTabs();
},
showTab() {
if (this.isTabs) {
if (this.activeName === this.name) {
return true;
} else {
return false;
}
} else {
return true;
}
},
},
};
</script>
<template>
<a class="bg-table-btn" :class="{ disabled: disabled }" @click="clickAction">
<slot />
</a>
</template>
<script>
export default {
name: "BgTableBtn",
props: {
disabled: {
type: Boolean,
default: false,
},
click: {
type: Function,
default: () => null,
},
},
emits: ["click"],
methods: {
clickAction() {
if (this.disabled) {
return;
}
this.$emit("click");
this.click && this.click();
},
},
};
</script>
<template>
<div class="bg-table-btns-more" :style="style" @click.stop>
<bg-table-btn
v-for="(item, index) in operations"
:key="index"
:disabled="isDisabled(item)"
@click="clickAction(item)"
>
{{ getName(item) }}
</bg-table-btn>
</div>
</template>
<script>
export default {
name: "BgTableBtnsMore",
props: {
operations: {
type: Array,
default: () => [],
},
},
data() {
return {
style: {},
};
},
methods: {
isDisabled({ disabled }) {
if (typeof disabled === "function") {
return disabled();
} else if (typeof disabled === "boolean") {
return disabled;
} else if (typeof disabled === "undefined") {
return false;
} else {
return !!disabled;
}
},
clickAction({ callback }) {
this.$parent.hideBox()
typeof callback === "function" && callback();
},
getName({ name }) {
if (typeof name === "function") {
return name();
} else {
return name;
}
},
upStyle() {
let { top, right } = this.$parent.$el.getBoundingClientRect();
let { width } = window.document.body.getBoundingClientRect();
this.style = {
position: "fixed",
top: `${top + 16}px`,
right: `${width - right - 16}px`,
};
},
},
mounted() {
document.body.append(this.$el);
this.upStyle();
},
beforeDestroy() {
this.$el && this.$el.remove();
},
};
</script>
<template>
<div class="bg-table-btns">
<bg-table-btn
class="can_click_text"
v-for="(item, index) in curOperations"
:key="index"
:disabled="isDisabled(item)"
@click="clickAction(item)"
>
{{ getName(item) }}
</bg-table-btn>
<a
class="bg-table-btn"
@mouseenter="showMOreBtns"
@mouseleave="hideMoreBtns"
v-if="otherOperations.length > 0"
>
<!-- <i class="el-icon-more" /> -->
<bg-icon style="font-size: 12px; color: #2b4695;" icon="#bg-ic-s-more" />
<bg-table-btns-more
:operations="otherOperations"
@mouseenter="showMOreBtns"
@mouseleave="hideMoreBtns"
v-if="showMore"
/>
</a>
</div>
</template>
<script>
import BgTableBtnsMore from "./bg-table-btns-more.vue";
export default {
name: "BgTableBtns",
components: { BgTableBtnsMore },
props: {
operations: {
type: Array,
default: () => [],
},
},
data() {
return {
showMore: false,
timer: null,
};
},
computed: {
curOperations() {
return this.operations.slice(0, this.operations.length > 3 ? 2 : 3);
},
otherOperations() {
return this.operations.slice(2, this.operations.length);
},
},
methods: {
hideBox() {
this.showMore = false
},
isDisabled({ disabled }) {
if (typeof disabled === "function") {
return disabled();
} else if (typeof disabled === "boolean") {
return disabled;
} else if (typeof disabled === "undefined") {
return false;
} else {
return !!disabled;
}
},
clickAction({ callback }) {
typeof callback === "function" && callback();
},
getName({ name }) {
if (typeof name === "function") {
return name();
} else {
return name;
}
},
showMOreBtns() {
if (this.timer) clearTimeout(this.timer);
this.showMore = true;
},
hideMoreBtns() {
if (this.timer) clearTimeout(this.timer);
this.timer = setTimeout(() => {
this.showMore = false;
}, 50);
},
},
};
</script>
<template>
<el-table
ref="table"
class="bg-table bg-table-pro"
:class="{ 'bg-table-tree': !!rowKey }"
v-bind="$attrs"
:data="data"
:row-key="rowKey"
:tree-props="treeProps"
@selection-change="selectionChange"
:default-expand-all="defaultExpandAll"
tooltip-effect="light"
>
<el-table-column width="60" v-if="showIndex">
<template v-slot:header>
<p style="width: 100%; text-align: center">序号</p>
</template>
<template v-slot:default="{ $index }">
<p style="width: 100%; text-align: center">{{ $index + 1 }}</p>
</template>
</el-table-column>
<el-table-column
type="selection"
:selectable="selectable"
width="60"
align="center"
v-if="showSelctColumn"
/>
<el-table-column
v-for="(header, index) in headers"
:key="`col_${index}`"
:width="header.width"
:label="header.label"
:align="header.align"
:show-overflow-tooltip="!$slots[header.prop]"
:fixed="header.fixed"
>
<template v-slot:header>
<template v-if="$slots[`header-${header.prop}`]">
<slot :name="`header-${header.prop}`" />
</template>
<template v-else>
<p class="text-clip">
<span v-if="header.required" style="color: #d75138">*</span>
{{ header.label }}
</p>
</template>
</template>
<template v-slot:default="{ row, $index }">
<template v-if="$slots[header.prop]">
<slot :name="header.prop" :row="row" :index="$index" />
</template>
<template v-else-if="$slots[`text-${header.prop}`]">
<p class="text-clip">
<slot :name="`text-${header.prop}`" :row="row" :index="$index" />
</p>
</template>
<template v-else>
<p class="text-clip">{{ row[header.prop] }}</p>
</template>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
name: "BgTablePro",
props: {
headers: {
type: Array,
require: true,
},
data: {
type: Array,
},
rowKey: {
type: String,
},
treeProps: {
type: Object,
},
showIndex: {
type: Boolean,
default: false,
},
selectable: {
type: Function,
},
defaultExpandAll: {
type: Boolean,
default: false,
},
},
data() {
return {
allSelection: [], // 所有页面上的选中的数据
};
},
computed: {
showSelctColumn() {
return (
this.$attrs &&
(this.$attrs["selection-change"] || this.$attrs["select"])
);
}, // 是否显示选中列
addSelectEvent() {
return this.$attrs && this.$attrs["select"];
}, // 是否监听select事件 select事件会记录所有页面上的选中的数据
},
watch: {
data: {
handler() {
this.recoverSelection();
},
deep: true,
},
},
methods: {
recoverSelection() {
let selectionIds = this.allSelection.map((v) => v[this.rowKey]);
this.data.forEach((v) => {
if (selectionIds.indexOf(v[this.rowKey]) > -1) {
this.$nextTick(() => {
console.log({ ...v });
this.$refs.table.toggleRowSelection(v, true);
});
}
});
}, // 恢复选中
selectionChange(selection) {
if (!this.addSelectEvent) return; // 如果用户未监听select事件,则不执行
if (!this.rowKey) throw Error("监听select事件时,row-key必须传入!");
this.upAllSelection(selection);
this.$emit("select", this.allSelection);
}, // select事件
upAllSelection(selection) {
let rowIds = this.data.map((v) => v[this.rowKey]);
let allSelection = [...this.allSelection];
let selectionIds = allSelection.map((v) => v[this.rowKey]);
// 首先把当前页的选中全部移除
selectionIds = selectionIds.filter((v) => rowIds.indexOf(v) === -1);
// allSelection仅保留selectionIds存在的
allSelection = allSelection.filter(
(v) => selectionIds.indexOf(v[this.rowKey]) > -1
);
// 然后再加入当前页的选中
allSelection.push(...selection);
this.allSelection = allSelection;
}, // 更新当前全部被选中的数据
clearSelection() {
this.$refs.table.clearSelection();
this.allSelection = [];
}, // 清空选中
getRowInfo(row, key) {
let currentIndex = -1;
let parentRows = null;
let propPath = "";
let childrenKey = this.treeProps.children;
let recursionItems = (items, prop) => {
for (let i = 0; i < items.length; i++) {
let item = items[i];
propPath += `${i}.`;
if (item[prop] === row[prop]) {
currentIndex = i;
parentRows = items;
break;
} else if (item[childrenKey] && item[childrenKey].length > 0) {
propPath += `${childrenKey}.`;
recursionItems(item[childrenKey], prop);
}
}
};
recursionItems(this.data, key, "");
return {
index: currentIndex,
rows: parentRows,
$_prop_path: propPath,
};
},
},
};
</script>
\ No newline at end of file
<template>
<el-table
ref="table"
class="bg-table"
:data="rows"
@selection-change="selectAction"
@select="selectActionRow"
@select-all="selectActionAll"
:stripe="stripe"
:row-class-name="stripe ? tableRowClassName : ''"
tooltip-effect="light"
>
<template v-slot:empty>
<div class="empty_container">
<img src="../assets/imgs/img-no-data.png" alt="">
<div class="text">
暂无数据
</div>
</div>
</template>
<el-table-column
v-if="paddingLeft > 10"
:width="paddingLeft - 10"
></el-table-column>
<el-table-column
type="selection"
:selectable="selectable"
width="38"
align="center"
v-if="select"
>
<!-- checkbox -->
</el-table-column>
<el-table-column
v-if="isIndex"
type="index"
:label="indexLabel"
width="54"
align="left"
>
<!-- 序号 -->
</el-table-column>
<el-table-column
v-for="(header, index) in headers"
:width="header.width"
:min-width="header.minWidth"
:align="header.align"
:key="'col_' + index"
:fixed="header.fixed"
show-overflow-tooltip
>
<template v-slot:header>
<template v-if="$slots[`header-${header.prop}`]">
<slot :name="`header-${header.prop}`" />
</template>
<p class="text-clip" v-else>{{ header.label }}</p>
</template>
<template v-slot:default="{ row }">
<slot v-if="$slots[header.prop]" :name="header.prop" :row="row" />
<template v-else>
<!-- {{ row[header.prop] | ellipsis(header.max) }} -->
{{ row[header.prop] }}
</template>
</template>
</el-table-column>
</el-table>
</template>
<script>
import { selectTableMixin } from './hook/mixin-select-table'
export default {
name: "BgTable",
setup() {
const {
nowSelectData,
allSelectData,
selectData,
initSelectTableData,
runPage,
dealSelectData
} = selectTableMixin()
return {
nowSelectData,
allSelectData,
selectData,
initSelectTableData,
runPage,
dealSelectData
}
},
props: {
headers: {
type: Array,
require: true,
},
rows: {
type: Array,
default: () => [],
},
select: {
type: Boolean,
default: false,
},
selectable: {
type: Function,
},
isIndex: {
type: Boolean,
default: false
},
indexLabel: {
type: String,
default: "序号"
},
stripe: {
type: Boolean,
default: false
},
paddingLeft: {
type: [Number, String],
default: () => 33,
},
},
/* filters: {
ellipsis(value, max) {
if (!value) {
return "";
} else if (max && value.length > max) {
return value.slice(0, max - 1) + "...";
} else {
return value;
}
},
}, */
watch:{
rows(n,o){
if(n.length&&this.select){
this.runPage()
this.initSelectTableData(n).then((selectData)=>{
if(selectData.length){
setTimeout(()=>{
this.toggleRowArrSelection(selectData)
})
}
})
}
}
},
created(){
console.log(this.$attrs)
},
methods: {
toggleRowSelection(row, flag = true) {
this.$refs.table.toggleRowSelection(row, flag);
},
selectAction(selection) {
this.$emit("selectAc", {allLength:Object.keys(this.allSelectData).length+this.nowSelectData.length,selection});
},
clearSelection() {
this.$refs.table.clearSelection();
this.$emit("select", {allLength:Object.keys(this.allSelectData).length+this.nowSelectData.length,selection:[]});
},
setSelectedRow(row) {
this.$refs.table.toggleRowSelection(row);
},
toggleRowArrSelection(arr, flag = true){
arr.forEach(e => {
this.$refs.table.toggleRowSelection(e, flag);
});
},
selectActionRow(selection,row){
this.selectData(selection)
this.$emit("select", {allLength:Object.keys(this.allSelectData).length+this.nowSelectData.length,selection});
},
selectActionAll(selection){
this.selectData(selection)
this.$emit("select", {allLength:Object.keys(this.allSelectData).length+this.nowSelectData.length,selection});
},
clearTable(){//清除选中数据,在页面状态更新时使用
this.allSelectData={}
this.nowSelectData=[]
this.clearSelection();
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 0) {
return "white-row";
} else {
return "stripe-row";
}
},
},
};
</script>
<template>
<div class="bg-tabs nice-tabs">
<div class="bg-tabs-nav">
<ul>
<li
v-for="(item, index) in calcTabs()"
:key="'tab_' + index"
:class="{
current: modelValue === item.name,
}"
@click="changeActiveName(item, index)"
>
{{ item.label }}
</li>
<li>
<!-- empty -->
</li>
</ul>
</div>
<div class="bg-tabs-content">
<slot />
</div>
<div class="bg-tabs-action" v-if="$slots.action">
<slot name="action" />
</div>
</div>
</template>
<script>
export default {
name: "BgTabs",
provide() {
return {
getActiveName: () => {
return this.modelValue;
},
getIsTabs: () => {
return true;
},
};
},
props: {
modelValue: {
type: String,
default: '',
},
},
emits: ['update:modelValue'],
data() {
return {
isTabs: true,
};
},
methods: {
calcTabs() {
let tabSlots = [];
if (this.$slots.default) {
tabSlots = this.$slots.default
.filter(
(vnode) =>
vnode.tag &&
vnode.componentOptions &&
vnode.componentOptions.Ctor.options.name === "BgTab"
)
.map((vnode) => vnode.componentOptions.propsData);
}
return tabSlots;
},
changeActiveName({ name }) {
this.$emit("update:modelValue", name);
},
},
};
</script>
<template>
<div class="bg-tags">
<ul>
<li v-for="(tag, index) in tags" :key="'tag_' + index" class="tag-item">
<span>
{{ tag }}
</span>
<a @click="deleteTag(index)" v-if="!disabled">
<i class="el-icon-close"></i>
</a>
</li>
<li v-if="!disabled">
<el-button
type="primary2"
size="mini"
@click="showInput = true"
v-if="!showInput"
>
新增
</el-button>
<el-input v-model.trim="newTag" @blur="addTag" v-else />
</li>
</ul>
</div>
</template>
<script>
export default {
name: "BgTags",
model: {
prop: "value",
event: "change",
},
props: {
value: {
type: String,
default: "",
},
disabled: {
type: Boolean,
default: false,
},
},
data() {
return {
newTag: "",
showInput: false,
};
},
computed: {
tags() {
return (this.value && this.value.split(",")) || [];
},
},
methods: {
deleteTag(index) {
let tags = [...this.tags];
tags.splice(index, 1);
this.$emit("change", tags.join(","));
},
addTag() {
let tags = [...this.tags];
if (this.newTag) {
tags.push(this.newTag);
}
this.$emit("change", tags.join(","));
this.newTag = "";
this.showInput = false;
},
},
};
</script>
<template>
<el-upload
ref="upload"
class="bg-upload"
v-bind="$attrs"
:file-list="fileList"
:action="action"
:data="{
directory: 'image',
uniqueCode: false
}"
:auto-upload="autoUpload"
:list-type="listType"
:limit="limit"
:accept="acceptTypes"
:before-upload="handleBeforeUpload"
:on-success="handleSuccess"
:on-remove="handleRemove"
:on-preview="handlePreview"
:multiple="multiple"
>
<template v-slot:trigger>
<el-icon v-if="listType === 'picture-card'"><Plus /></el-icon>
<!-- <i class="el-icon-plus" v-if="listType === 'picture-card'"></i> -->
<el-button type="primary" :icon="UploadFilled" v-else>
{{ triggerText }}
</el-button>
</template>
<template v-if="!autoUpload">
<el-button
type="success"
icon="el-icon-position"
@click="submitUpload"
style="margin-left: 16px"
>
上传到服务器
</el-button>
</template>
<template v-slot:tip v-if="showTips && tips">
<div class="el-upload__tip" style="color:#909bb6;">
{{ customTips||tips }}
</div>
</template>
</el-upload>
<el-dialog title="图片预览" v-model="dialogVisible">
<img style="margin:30px 0;width: 100%;" :src="dialogImageUrl" alt="Preview Image" />
</el-dialog>
</template>
<script>
import {
UploadFilled
} from '@element-plus/icons-vue'
export default {
name: "BgUploadImage",
props: {
modelValue:{
type: Array,
default: () => [],
},
action: {
type: String,
default: "/apaas/common/image/upload",
},
autoUpload: {
type: Boolean,
default: true,
},
listType: {
type: String,
default: "text",
},
limit: {
type: Number,
},
multiple: {
type: Boolean,
default: false,
},
accept: {
type: [Array, String],
}, // 接受类型
fileSize: {
type: Number,
}, // 文件大小
fileSizeUnit: {
type: String,
default: "MB",
}, // 文件单位 KB/MB/GB
triggerText: {
type: String,
default: "点击上传",
}, // 按钮文字
showTips: {
type: Boolean,
default: false,
}, // 显示提示
customTips:{
type: String,
default: "",
},// 自定义提示内容
},
emits: ['update:modelValue',"change"],
computed: {
acceptTypes() {
if (Array.isArray(this.accept)) {
return this.accept.join(",");
} else {
return this.accept;
}
},
types() {
return this.acceptTypes.split(",").filter((v) => v !== "");
},
tips() {
let str = "";
if (this.types.length > 0) {
str += `后缀为 ${this.types.join("")} `;
}
if (this.fileSize) {
if (str) str += "";
str += `大小不超过 ${this.fileSize}${this.fileSizeUnit}`;
}
if (str) str += "的文件";
if (this.limit) {
str += `,最多上传 ${this.limit} 个文件`;
}
if (str) {
str = "支持" + str;
}
return str;
},
},
data() {
return {
fileList: [],
UploadFilled,
dialogImageUrl:'',
dialogVisible:false
};
},
watch: {
modelValue() {
let newStr = this.modelValue.map((v) => v.url).join(",");
let oldStr = this.fileList
.map((v) => (v.response && v.response.data) || v.url)
.join(",");
if (newStr !== oldStr) {
this.fileList = [...this.modelValue];
}
this.$nextTick().then(() => {
this.checkLimit(this.modelValue)
});
},
},
methods: {
checkLimit(filelist) {
const limit = this.limit
const uploadDom = this.$refs['upload']
const length = uploadDom.$el.children[0].children.length
if (filelist.length === limit) {
uploadDom.$el.children[0].children[length-1].style.display = 'none'
} else {
uploadDom.$el.children[0].children[length-1]?uploadDom.$el.children[0].children[length-1].style.display = '':''
}
},
handleBeforeUpload(file) {
let units = {
KB: 1024,
MB: 1024 * 1024,
GB: 1024 * 1024 * 1024,
};
let temp = file.name.split(".");
let type = "." + temp[temp.length - 1].toLocaleLowerCase();
let fileTypeIsOk =
this.types.length === 0 || this.types.indexOf(type) > -1;
let fileSizeIsOk =
this.fileSize === 0 ||
this.fileSize === undefined ||
file.size / units[this.fileSizeUnit] <= this.fileSize;
let checked = fileTypeIsOk && fileSizeIsOk;
if (!checked) {
this.$message.error(this.tips);
}
return checked;
},
handleSuccess(response, file, fileList) {
this.updateFileList(fileList);
this.checkLimit(fileList)
},
handleRemove(file, fileList) {
this.updateFileList(fileList);
this.checkLimit(fileList)
},
handlePreview({ name, url }) {
this.dialogImageUrl = url
this.dialogVisible = true
// let a = document.createElement("a"); // 生成一个a元素
// let event = new MouseEvent("click"); // 创建一个单击事件
// a.download = name; // 设置图片名称
// a.href = url; // 将生成的URL设置为a.href属性
// a.dispatchEvent(event); // 触发a的单击事件
},
updateFileList(fileList) {
let values = fileList.map((v) => {
return {
name: v.name,
url: (v.response && v.response.data) || v.url,
};
});
this.fileList = fileList;
console.log(values);
this.$emit("update:modelValue", values);
this.$emit("change",values);
},
submitUpload() {
this.$refs.upload.submit();
},
},
mounted() {
this.fileList = [...this.modelValue];
},
};
</script>
<template>
<div
class="bg-upload"
:class="{ 'is-disabled': actionDisabled, 'is-easy': isEasy }"
>
<el-upload
action="/apaas/common/file/upload"
:data="{
directory: 'file',
uniqueCode: false,
}"
:before-upload="handleBeforeUpload"
:on-exceed="handleExceed"
:on-success="handleSuccess"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
:disabled="actionDisabled"
style="max-width: 600px"
drag
multiple
>
<!-- <el-button type="primary">
上传附件
</el-button>
<div class="el-upload__tip" slot="tip">
支持上传{{ fileTypes.join("") }},最大{{ fileMaxSize }}M
</div> -->
<template v-if="isEasy">
<el-button type="primary" size="mini">
<bg-icon
:icon="`#${triggerIcon}`"
v-if="triggerIcon"
style="margin-right: 8px"
/>
{{ triggerText }}
</el-button>
</template>
<div class="trigger-content" v-else>
<div class="trigger-icon">
<img src="./imgs/ic_updata_cloud.png" />
</div>
<p class="trigger-tip" style="text-align: center" v-if="customTips">
<slot></slot>
</p>
<p class="trigger-tip" v-else>
1.最多允许上传{{ limit }}个附件 <br />
2.单个附件最大{{ fileMaxSize }}M; <br />
3.允许上传后缀为传{{ fileTypes.join("、") }} <br />
</p>
</div>
<template v-slot:tip v-if="otherInfo != ''">
<div class="el-upload__tip" style="color: #909bb6;line-height: 18px;">
{{ otherInfo }}
</div>
</template>
</el-upload>
</div>
</template>
<script>
export default {
name: "BgUpload",
// model: {
// prop: "value",
// event: "change",
// },
props: {
modelValue: {
type: Array,
default: () => [],
},
fileTypes: {
type: Array,
default: () => [
"doc",
"docx",
"xls",
"xlsx",
"pdf",
"jpg",
"jpeg",
"png",
],
},
fileMaxSize: {
type: Number,
default: 20, // 单位:M
},
disabled: {
type: Boolean,
default: false,
},
refresh: {
type: Boolean,
default: false,
}, // 是否重新初始化附件(手动刷新组件的附件列表)
customTips: {
type: Boolean,
default: false,
}, // 是否自定义提示
isEasy: {
type: Boolean,
default: false,
},
triggerText: {
type: String,
default: "请上传",
},
triggerIcon: {
type: String,
default: "bg-ic-file",
},
otherInfo: {
type: String,
default: "",
},
limit: {
type: Number,
default: 9999,
},
},
emits: ["update:modelValue","change"],
data() {
return {
fileList: [],
};
},
computed: {
actionDisabled() {
return this.disabled
},
},
watch: {
modelValue() {
let newStr = this.modelValue.map((v) => v.url).join(",");
let oldStr = this.fileList
.map((v) => (v.response && v.response.data) || v.url)
.join(",");
if (newStr !== oldStr) {
this.fileList = [...this.modelValue];
}
},
},
methods: {
initFileList() {
let urls = (this.value && this.value.split(",")) || [];
this.fileList = urls.map((url, index) => {
let temp = url.split("/");
let name = temp[temp.length - 1] || `附件_${index + 1}`;
return { name, url };
});
this.$emit("update:refresh", false);
},
handleBeforeUpload(file) {
if (this.fileList && this.fileList.length >= this.limit) {
this.$message.error(`只允许上传${this.limit}个文件`)
return false
}
let temp = file.name.split(".");
let type = temp[temp.length - 1].toLocaleLowerCase();
let fileTypesOk = this.fileTypes.indexOf(type) > -1||this.fileTypes.length==0;
let fileMaxSizeOk = file.size / 1024 / 1024 <= this.fileMaxSize;
if (!fileTypesOk) {
this.$message.error(
`上传文件只能是${this.fileTypes.join("")}这些格式!`
);
}
if (!fileMaxSizeOk) {
this.$message.error(`上传文件大小不能超过${this.fileMaxSize}M!`);
}
return fileTypesOk && fileMaxSizeOk;
},
handleExceed(file, fileList) {
console.log(file, fileList);
},
handlePreview(val) {
let a = document.createElement("a"); // 生成一个a元素
let event = new MouseEvent("click"); // 创建一个单击事件
a.download = val.name; // 设置图片名称
a.href = val.url || val.response.data; // 将生成的URL设置为a.href属性
a.dispatchEvent(event); // 触发a的单击事件
},
handleRemove(file, fileList) {
this.updateFileList(fileList);
},
handleSuccess(response, file, fileList) {
this.updateFileList(fileList);
},
updateFileList(fileList) {
let values = fileList.map((v) => {
return {
name: v.name,
url: (v.response && v.response.data) || v.url,
};
});
this.fileList = fileList;
this.$emit("update:modelValue", values);
this.$emit("change",values);
},
},
mounted() {
this.fileList = [...this.modelValue];
},
};
</script>
<style>
.bg-upload .el-upload-dragger{
padding: 0;
border: 0;
}
</style>
<template>
<div class="bg-upload-image user-upload-image">
<el-upload
action="#"
ref="upload"
:auto-upload="false"
:on-change="onChangeFile"
:file-list="fileList"
:disabled="disabled"
>
<template v-slot:trigger>
<div class="trigger-content">
<div class="image-trigger" v-if="modelValue">
<img :src="modelValue" />
<div class="refresh-image">
<i class="el-icon-refresh-right"></i>
</div>
</div>
<div class="upload-trigger" v-else>
<span class="upload-icon"></span>
</div>
</div>
</template>
</el-upload>
</div>
</template>
<script>
export default {
name: "BgUploadImage",
props: {
modelValue: {
type: String,
default: "",
},
disabled:{
type:Boolean,
default:false
}
},
emits: ['update:modelValue'],
data(){
return{
fileList:[]
}
},
created(){
},
methods: {
handleAvatarSuccess({ data }) {
this.$emit("update:modelValue", data.visitURL);
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg" || file.type === "image/png";
const isLt1M = file.size / 1024 / 1024 < 1;
if (!isJPG) {
this.$message.error("上传的图片只能是 JPG、PNG 格式!");
}
if (!isLt1M) {
this.$message.error("上传的图片大小不能超过 1MB!");
}
return isJPG && isLt1M;
},
onChangeFile(file, fileList){
console.log(file, fileList);
if(!this.beforeAvatarUpload(file.raw)){
return
}
var reader = new FileReader();
reader.readAsDataURL(file.raw); // 一定要传入file格式
reader.onload = () => {
this.$emit("update:modelValue", reader.result);
};
}
},
};
</script>
<style scoped>
.user-upload-image :deep() .el-upload-list{
display: none;
}
</style>
// debounce.js
/**
* 防抖与节流
* @param {function} func 执行函数
* @param {number} time 防抖节流时间
* @param {string} type debounce为防抖,throttle为节流,否则为立即执行
* @param {this} ctx this 的指向
*/
const debounce = (func, time, type, ctx) => {
var timer, lastCall, rtn
// 防抖函数
if (type === 'debounce') {
rtn = (...params) => {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
func.apply(ctx, params)
}, time)
}
} else if (type === 'throttle') {
// 节流函数
rtn = (...params) => {
const now = new Date().getTime()
if (now - lastCall < time && lastCall) return
lastCall = now
func.apply(ctx, params)
}
} else {
// 立即执行的防抖函数
rtn = (...params) => {
if (timer) clearTimeout(timer)
let callNow = !timer
timer = setTimeout(() => {
timer = null
}, time)
if (callNow) func.apply(ctx, params)
}
}
return rtn
}
export default {
name: 'Debounce',
abstract: true,
props: {
time: {
type: Number,
default: 1000,
},
events: {
type: String,
default: 'click', // 默认点击事件
},
type: {
type: String,
default: 'throttle', // 默认节流
},
},
created() {
this.eventKeys = this.events.split(',') // 分隔事件
this.originMap = {} // 储存事件,用于重新render时与子事件的对比
this.debouncedMap = {} // 储存防抖节流事件
},
render() {
try {
const vnode = this.$slots.default[0]
this.eventKeys.forEach(key => {
const target = vnode.data.on[key]
if (target === this.originMap[key] && this.debouncedMap[key]) {
vnode.data.on[key] = this.debouncedMap[key]
} else if (target) {
this.originMap[key] = target
this.debouncedMap[key] = debounce(target, this.time, this.type, vnode)
vnode.data.on[key] = this.debouncedMap[key] // 重写子组件的事件
}
})
return vnode
} catch (error) {}
},
}
\ No newline at end of file
import { reactive, toRefs,useAttrs } from 'vue'
export function selectTableMixin(){
const state = reactive({
nowSelectData:[],
allSelectData:{}
})
const attrs = useAttrs()
// const nowSelectData = reactive([])
// const allSelectData = reactive({})
const selectData = (val)=>{
console.log(val);
state.nowSelectData = val
console.log('allSelectData');
console.log(state.allSelectData);
console.log(Object.keys(state.allSelectData).length);
}
const initSelectTableData = (data)=>{
return new Promise((reslove,reject)=>{
data.forEach(e => {
if(state.allSelectData[e[attrs.rowKey||'id']]){
delete state.allSelectData[e[attrs.rowKey||'id']]
state.nowSelectData.push(e)
}
});
console.log(state.nowSelectData);
reslove(state.nowSelectData)
})
}
const runPage=()=>{//翻页数据推进
state.nowSelectData.forEach(e => {
state.allSelectData[e[attrs.rowKey||'id']] = e
});
state.nowSelectData = []
}
const clearTable=()=>{//清除选中数据,在页面状态更新时使用
state.allSelectData={}
state.nowSelectData=[]
clearSelection();
}
const dealSelectData=()=>{//最后提交处理数据
state.nowSelectData.forEach(e => {
state.allSelectData[e[attrs.rowKey||'id']] = e
});
return state.allSelectData
}
const { nowSelectData, allSelectData } = toRefs(state)
return{
nowSelectData,
allSelectData,
selectData,
initSelectTableData,
runPage,
clearTable,
dealSelectData
}
}
// export const selectTableMixin = {
// data(){
// return{
// nowSelectData:[],//声明现在选中数组
// allSelectData:{},//全部选中数据obj
// }
// },
// methods: {
// selectData(val){//选中赋值
// console.log(val);
// this.nowSelectData = val
// console.log('allSelectData');
// console.log(this.allSelectData);
// console.log(Object.keys(this.allSelectData).length);
// },
// initSelectTableData(data){//初始化选中table数据
// data.forEach(e => {
// if(this.allSelectData[e.id]){
// delete this.allSelectData[e.id]
// this.nowSelectData.push(e)
// }
// });
// console.log(this.nowSelectData);
// if(this.nowSelectData.length){
// setTimeout(()=>{
// this.toggleRowArrSelection(this.nowSelectData)
// })
// }
// },
// runPage(){//翻页数据推进
// this.nowSelectData.forEach(e => {
// this.allSelectData[e.id] = e
// });
// this.nowSelectData = []
// },
// clearTable(){//清除选中数据,在页面状态更新时使用
// this.allSelectData={}
// this.nowSelectData=[]
// this.clearSelection();
// },
// dealSelectData(){//最后提交处理数据
// this.nowSelectData.forEach(e => {
// this.allSelectData[e.id] = e
// });
// return this.allSelectData
// }
// },
// }
\ No newline at end of file
!function(a){var t,h,l,o,i,e='<svg><symbol id="bg-ic-layers" viewBox="0 0 1024 1024"><path d="M512 526.08a45.653333 45.653333 0 0 1-18.346667-3.84l-426.666666-201.813333a42.666667 42.666667 0 0 1 0-77.226667l426.666666-196.693333a42.666667 42.666667 0 0 1 35.84 0l426.666667 196.693333a42.666667 42.666667 0 0 1 0 77.226667l-426.666667 201.813333a45.653333 45.653333 0 0 1-17.493333 3.84zM186.026667 282.453333L512 436.48l325.973333-154.026667L512 132.266667z" ></path><path d="M512 753.92a38.4 38.4 0 0 1-17.92-4.266667l-426.666667-198.826666a42.666667 42.666667 0 0 1 35.84-77.653334L512 663.893333l408.746667-190.72a42.666667 42.666667 0 0 1 35.84 77.653334l-426.666667 198.826666a38.4 38.4 0 0 1-17.92 4.266667z" ></path><path d="M512 981.333333a42.666667 42.666667 0 0 1-17.92-3.84l-426.666667-199.253333a42.666667 42.666667 0 1 1 35.84-77.226667L512 891.733333l408.746667-190.72a42.666667 42.666667 0 1 1 35.84 77.226667l-426.666667 199.253333A42.666667 42.666667 0 0 1 512 981.333333z" ></path></symbol><symbol id="bg-ic-arrow-down" viewBox="0 0 1026 1024"><path d="M518.60608 768a145.066667 145.066667 0 0 1-89.6-31.573333L38.60608 426.666667a96 96 0 1 1 119.466667-150.186667l360.106666 285.866667 351.573334-285.013334a96 96 0 0 1 121.173333 149.333334l-381.013333 308.906666a143.36 143.36 0 0 1-91.306667 32.426667z" ></path></symbol><symbol id="bg-ic-caret-bottom" viewBox="0 0 1024 1024"><path d="M443.7568 819.2L13.6768 270.08A61.013333 61.013333 0 0 1 57.623467 170.666667h909.653333a61.013333 61.013333 0 0 1 42.666667 99.413333L581.143467 819.2a85.333333 85.333333 0 0 1-137.386667 0z" ></path></symbol><symbol id="bg-ic-caret-top" viewBox="0 0 1024 1024"><path d="M443.821653 204.8L13.741653 753.92a61.013333 61.013333 0 0 0 42.666667 99.413333h910.933333a61.013333 61.013333 0 0 0 42.666667-99.413333L581.20832 204.8a85.333333 85.333333 0 0 0-137.386667 0z" ></path></symbol><symbol id="bg-ic-eye" viewBox="0 0 1024 1024"><path d="M1015.466667 486.826667c-8.96-11.946667-226.133333-294.826667-503.466667-294.826667S17.493333 474.88 8.533333 486.826667a42.666667 42.666667 0 0 0 0 50.346666c8.96 11.946667 226.133333 294.826667 503.466667 294.826667s494.506667-282.88 503.466667-294.826667a42.666667 42.666667 0 0 0 0-50.346666zM512 747.946667c-190.293333 0-357.12-170.666667-414.293333-235.946667C154.88 446.72 321.706667 276.053333 512 276.053333s357.12 170.666667 414.293333 235.946667c-57.173333 65.28-224 235.946667-414.293333 235.946667z" ></path><path d="M512 354.133333a157.866667 157.866667 0 1 0 160 157.866667A159.146667 159.146667 0 0 0 512 354.133333z m0 231.68A73.813333 73.813333 0 1 1 586.666667 512 74.666667 74.666667 0 0 1 512 585.813333z" ></path></symbol><symbol id="bg-ic-caret-right" viewBox="0 0 1024 1024"><path d="M819.045454 580.401198L270.201705 1010.264833a60.982639 60.982639 0 0 1-99.36332-42.645202V57.144571a60.982639 60.982639 0 0 1 99.36332-42.645202L819.045454 443.083648a85.290404 85.290404 0 0 1 0 137.31755z" ></path></symbol><symbol id="bg-ic-caret-left" viewBox="0 0 1024 1024"><path d="M204.954546 580.401198l548.843749 429.863635a60.982639 60.982639 0 0 0 99.36332-42.645202V57.144571a60.982639 60.982639 0 0 0-99.36332-42.645202L204.954546 443.083648a85.290404 85.290404 0 0 0 0 137.31755z" ></path></symbol><symbol id="bg-ic-arrow-up" viewBox="0 0 1024 1024"><path d="M96 768a96 96 0 0 1-59.733333-170.666667L426.666667 287.573333a146.346667 146.346667 0 0 1 182.186666 0l379.733334 309.76a96 96 0 1 1-121.173334 149.333334l-351.573333-285.44-360.106667 285.866666a95.146667 95.146667 0 0 1-59.733333 20.906667z" ></path></symbol><symbol id="bg-ic-folder" viewBox="0 0 1024 1024"><path d="M853.333333 938.666667H170.666667a128 128 0 0 1-128-128V213.333333a128 128 0 0 1 128-128h215.893333a128 128 0 0 1 98.56 46.08l55.466667 66.56a42.666667 42.666667 0 0 0 32.853333 15.36H853.333333a128 128 0 0 1 128 128v469.333334a128 128 0 0 1-128 128zM170.666667 170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666v597.333334a42.666667 42.666667 0 0 0 42.666667 42.666666h682.666666a42.666667 42.666667 0 0 0 42.666667-42.666666V341.333333a42.666667 42.666667 0 0 0-42.666667-42.666666h-279.893333a128 128 0 0 1-98.56-46.08l-55.466667-66.56A42.666667 42.666667 0 0 0 386.56 170.666667z" ></path></symbol><symbol id="bg-ic-s-folder" viewBox="0 0 1024 1024"><path d="M874.666667 938.666667h-725.333334A106.666667 106.666667 0 0 1 42.666667 832v-640A106.666667 106.666667 0 0 1 149.333333 85.333333h237.226667a128 128 0 0 1 98.56 46.08l29.866667 35.84A128 128 0 0 0 613.12 213.333333h261.546667A106.666667 106.666667 0 0 1 981.333333 320v512a106.666667 106.666667 0 0 1-106.666666 106.666667z" ></path></symbol><symbol id="bg-ic-s-folder-opened" viewBox="0 0 1024 1024"><path d="M984.746667 438.186667a85.333333 85.333333 0 0 0-66.986667-32.853334h-11.093333V341.333333a106.666667 106.666667 0 0 0-106.666667-106.666666h-226.56a42.666667 42.666667 0 0 1-32.853333-15.36l-55.466667-66.56A128 128 0 0 0 386.56 106.666667H149.333333a128 128 0 0 0-128 128v645.12a42.666667 42.666667 0 0 0 0 7.253333 36.693333 36.693333 0 0 0 7.253334 8.96v3.84a47.786667 47.786667 0 0 0 10.24 8.106667 14.08 14.08 0 0 0 4.266666 2.56 39.253333 39.253333 0 0 0 17.493334 4.266666h768A85.333333 85.333333 0 0 0 913.493333 853.333333l85.333334-341.333333a85.333333 85.333333 0 0 0-14.08-73.813333zM118.613333 469.333333l-11.946666 50.346667V234.666667a42.666667 42.666667 0 0 1 42.666666-42.666667h237.226667a42.666667 42.666667 0 0 1 32.853333 15.36l55.466667 66.56a128 128 0 0 0 98.56 46.08h226.56a21.333333 21.333333 0 0 1 21.333333 21.333333v64H201.386667A85.333333 85.333333 0 0 0 118.613333 469.333333z" ></path></symbol><symbol id="bg-ic-folder-opened" viewBox="0 0 1024 1024"><path d="M984.746667 438.186667a85.333333 85.333333 0 0 0-66.986667-32.853334h-11.093333V341.333333a106.666667 106.666667 0 0 0-106.666667-106.666666h-226.56a42.666667 42.666667 0 0 1-32.853333-15.36l-55.466667-66.56A128 128 0 0 0 386.56 106.666667H149.333333a128 128 0 0 0-128 128v645.12a42.666667 42.666667 0 0 0 0 7.253333 29.866667 29.866667 0 0 0 7.253334 8.96v4.266667h2.133333a42.666667 42.666667 0 0 0 9.386667 8.106666 25.6 25.6 0 0 0 4.693333 2.56 39.253333 39.253333 0 0 0 17.493333 4.266667h768A85.333333 85.333333 0 0 0 913.493333 853.333333l85.333334-341.333333a85.333333 85.333333 0 0 0-14.08-73.813333zM149.333333 192h237.226667a42.666667 42.666667 0 0 1 32.853333 15.36l55.466667 66.56a128 128 0 0 0 98.56 46.08h226.56a21.333333 21.333333 0 0 1 21.333333 21.333333v64H201.386667A85.333333 85.333333 0 0 0 118.613333 469.333333l-11.946666 50.346667V234.666667a42.666667 42.666667 0 0 1 42.666666-42.666667z m682.666667 640H118.186667l83.2-341.333333H917.333333z" ></path></symbol><symbol id="bg-ic-s-circle-warning" viewBox="0 0 1024 1024"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m0 805.546667a64 64 0 1 1 64-64 64 64 0 0 1-64 64z m64-270.933334a64 64 0 1 1-128 0V239.786667a64 64 0 0 1 128 0z" ></path></symbol><symbol id="bg-ic-s-circle-check" viewBox="0 0 1024 1024"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m243.626667 456.96l-256 256a42.666667 42.666667 0 0 1-60.586667 0l-170.666667-170.666667a42.666667 42.666667 0 0 1 60.586667-60.586666l140.373333 140.8 225.706667-226.133334a42.666667 42.666667 0 0 1 60.586667 60.586667z" ></path></symbol><symbol id="bg-ic-circle-warning" viewBox="0 0 1024 1024"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m0 938.666667a426.666667 426.666667 0 1 1 426.666667-426.666667 426.666667 426.666667 0 0 1-426.666667 426.666667z" ></path><path d="M512 736m-53.333333 0a53.333333 53.333333 0 1 0 106.666666 0 53.333333 53.333333 0 1 0-106.666666 0Z" ></path><path d="M512 640a42.666667 42.666667 0 0 0 42.666667-42.666667V256a42.666667 42.666667 0 0 0-85.333334 0v341.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z" ></path></symbol><symbol id="bg-ic-s-circle-question" viewBox="0 0 1024 1024"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m0 802.56a53.333333 53.333333 0 1 1 53.333333-53.333333A53.333333 53.333333 0 0 1 512 802.56z m53.333333-245.333333V597.333333a53.333333 53.333333 0 0 1-106.666666 0v-85.333333A53.333333 53.333333 0 0 1 512 458.666667 74.666667 74.666667 0 1 0 437.333333 384a53.333333 53.333333 0 0 1-106.666666 0 181.333333 181.333333 0 1 1 234.666666 173.226667z" ></path></symbol><symbol id="bg-ic-circle-question" viewBox="0 0 1024 1024"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m0 938.666667a426.666667 426.666667 0 1 1 426.666667-426.666667 426.666667 426.666667 0 0 1-426.666667 426.666667z" ></path><path d="M512 226.56a170.666667 170.666667 0 0 0-170.666667 170.666667 42.666667 42.666667 0 1 0 85.333334 0 85.333333 85.333333 0 1 1 85.333333 85.333333 42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 1 0 85.333334 0v-47.786667a170.666667 170.666667 0 0 0-42.666667-336.213333z" ></path><path d="M512 749.226667m-53.333333 0a53.333333 53.333333 0 1 0 106.666666 0 53.333333 53.333333 0 1 0-106.666666 0Z" ></path></symbol><symbol id="bg-ic-s-circle-close" viewBox="0 0 1024 1024"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m200.96 652.373333a42.666667 42.666667 0 0 1 0 60.586667 42.666667 42.666667 0 0 1-60.586667 0L512 572.16l-140.373333 140.8a42.666667 42.666667 0 0 1-60.586667 0 42.666667 42.666667 0 0 1 0-60.586667l140.8-140.373333-140.8-140.373333a42.666667 42.666667 0 1 1 60.586667-60.586667l140.373333 140.8 140.373333-140.8a42.666667 42.666667 0 1 1 60.586667 60.586667L572.16 512z" ></path></symbol><symbol id="bg-ic-minus" viewBox="0 0 1024 1024"><path d="M917.333333 576h-810.666666a64 64 0 0 1 0-128h810.666666a64 64 0 0 1 0 128z" ></path></symbol><symbol id="bg-ic-history" viewBox="0 0 1024 1024"><path d="M255.983574 320.04517H85.327858a42.663929 42.663929 0 0 1-42.663929-42.663929v-170.655716a42.663929 42.663929 0 0 1 85.327858 0v127.991787h127.991787a42.663929 42.663929 0 0 1 0 85.327858z" ></path><path d="M511.967149 1024A511.967149 511.967149 0 0 1 0 512.032851a42.663929 42.663929 0 0 1 85.327858 0 426.639291 426.639291 0 1 0 57.169665-213.319645A42.663929 42.663929 0 0 1 85.327858 314.07222 42.663929 42.663929 0 0 1 68.688926 256.049277 511.967149 511.967149 0 1 1 511.967149 1024z" ></path><path d="M711.207698 753.937329a42.663929 42.663929 0 0 1-30.29139-12.372539l-199.240549-199.240549A42.663929 42.663929 0 0 1 469.30322 512.032851V230.450919a42.663929 42.663929 0 0 1 42.663929-42.663929 42.663929 42.663929 0 0 1 42.663929 42.663929v264.089721L741.072448 682.688567a42.663929 42.663929 0 0 1-29.86475 72.955319z" ></path></symbol><symbol id="bg-ic-time" viewBox="0 0 1024 1024"><path d="M512 1024a512 512 0 1 1 512-512 512 512 0 0 1-512 512z m0-938.666667a426.666667 426.666667 0 1 0 426.666667 426.666667A426.666667 426.666667 0 0 0 512 85.333333z" ></path><path d="M716.8 753.92a42.666667 42.666667 0 0 1-29.44-11.946667l-204.8-199.253333A42.666667 42.666667 0 0 1 469.333333 512V230.4a42.666667 42.666667 0 0 1 42.666667-42.666667 42.666667 42.666667 0 0 1 42.666667 42.666667v263.68L746.666667 682.666667a42.666667 42.666667 0 0 1 0 60.586666 42.666667 42.666667 0 0 1-29.866667 10.666667z" ></path></symbol><symbol id="bg-ic-phone-call" viewBox="0 0 1024 1024"><path d="M1012.555093 298.666667a365.653333 365.653333 0 0 0-99.413333-170.666667A378.88 378.88 0 0 0 738.208427 32.426667a389.973333 389.973333 0 0 0-147.626667-7.253334 42.666667 42.666667 0 0 0 12.373333 85.333334 307.626667 307.626667 0 0 1 115.2 5.546666A292.266667 292.266667 0 0 1 853.408427 189.866667a275.626667 275.626667 0 0 1 76.373333 130.56 267.946667 267.946667 0 0 1 5.546667 110.506666 42.666667 42.666667 0 0 0 35.84 48.64h6.4a42.666667 42.666667 0 0 0 42.666666-36.266666A352.426667 352.426667 0 0 0 1012.555093 298.666667z" ></path><path d="M775.755093 459.52h6.4a42.666667 42.666667 0 0 0 42.666667-36.266667A190.293333 190.293333 0 0 0 768.075093 258.56a201.386667 201.386667 0 0 0-168.106666-54.186667 42.666667 42.666667 0 1 0 12.373333 85.333334 113.92 113.92 0 0 1 96 30.72 103.68 103.68 0 0 1 31.146667 91.306666 42.666667 42.666667 0 0 0 36.266666 47.786667zM878.58176 656.213333l-113.493333-61.44a96.426667 96.426667 0 0 0-85.333334 0l-107.52 52.48a317.44 317.44 0 0 1-128-73.813333 304.64 304.64 0 0 1-75.52-123.733333l50.346667-105.386667A92.16 92.16 0 0 0 416.928427 256L353.78176 146.346667a93.866667 93.866667 0 0 0-81.92-46.933334H141.30176A142.08 142.08 0 0 0 24.395093 158.293333 128 128 0 0 0 7.755093 277.333333c48.64 140.373333 133.973333 334.506667 264.533334 461.226667s330.24 209.493333 474.453333 256a143.786667 143.786667 0 0 0 42.666667 7.253333 135.253333 135.253333 0 0 0 79.786666-26.026666 138.666667 138.666667 0 0 0 57.173334-112.213334v-128a92.16 92.16 0 0 0-47.786667-79.36z m-36.266667 208.213334a52.053333 52.053333 0 0 1-69.12 49.92c-110.933333-36.266667-316.586667-115.626667-441.173333-236.8s-206.506667-320.426667-244.053333-426.666667a42.666667 42.666667 0 0 1 5.973333-42.666667 57.173333 57.173333 0 0 1 47.36-23.04h130.56a9.813333 9.813333 0 0 1 8.106667 4.266667L341.408427 298.666667a5.973333 5.973333 0 0 1 0 5.973333L282.10176 422.826667a46.08 46.08 0 0 0-3.84 28.16 384 384 0 0 0 103.253333 181.333333 398.933333 398.933333 0 0 0 186.026667 99.84 42.666667 42.666667 0 0 0 26.453333-3.413333l121.173334-59.306667a10.24 10.24 0 0 1 9.386666 0l113.493334 61.44a7.253333 7.253333 0 0 1 4.266666 5.973333z" ></path></symbol><symbol id="bg-ic-layout-4" viewBox="0 0 1024 1024"><path d="M867.413333 42.666667H156.586667A114.346667 114.346667 0 0 0 42.666667 156.586667v710.826666A114.346667 114.346667 0 0 0 156.586667 981.333333h710.826666A114.346667 114.346667 0 0 0 981.333333 867.413333V156.586667A114.346667 114.346667 0 0 0 867.413333 42.666667zM896 156.586667V341.333333h-341.333333V128h312.746666a28.586667 28.586667 0 0 1 28.586667 28.586667zM156.586667 128H469.333333v469.333333H128V156.586667A28.586667 28.586667 0 0 1 156.586667 128zM128 867.413333V682.666667h341.333333v213.333333H156.586667a28.586667 28.586667 0 0 1-28.586667-28.586667z m739.413333 28.586667H554.666667V426.666667h341.333333v440.746666a28.586667 28.586667 0 0 1-28.586667 28.586667z" ></path></symbol><symbol id="bg-ic-user" viewBox="0 0 1024 1024"><path d="M512 469.333333a213.333333 213.333333 0 1 0-213.333333-213.333333 213.333333 213.333333 0 0 0 213.333333 213.333333z m0-341.333333a128 128 0 1 1-128 128 128 128 0 0 1 128-128zM725.333333 554.666667H298.666667a256 256 0 0 0-256 256v128a42.666667 42.666667 0 0 0 42.666666 42.666666h853.333334a42.666667 42.666667 0 0 0 42.666666-42.666666v-128a256 256 0 0 0-256-256z m170.666667 341.333333H128v-85.333333a170.666667 170.666667 0 0 1 170.666667-170.666667h426.666666a170.666667 170.666667 0 0 1 170.666667 170.666667z" ></path></symbol><symbol id="bg-ic-delete" viewBox="0 0 1024 1024"><path d="M938.666667 170.666667h-140.373334l-99.413333-113.493334a42.666667 42.666667 0 0 0-32-14.506666H357.546667a42.666667 42.666667 0 0 0-32.426667 14.506666L226.133333 170.666667H85.333333a42.666667 42.666667 0 0 0 0 85.333333h42.666667v597.333333a128 128 0 0 0 128 128h512a128 128 0 0 0 128-128V256h42.666667a42.666667 42.666667 0 0 0 0-85.333333zM376.746667 128h270.506666l37.546667 42.666667H341.333333zM810.666667 853.333333a42.666667 42.666667 0 0 1-42.666667 42.666667H256a42.666667 42.666667 0 0 1-42.666667-42.666667V256h597.333334z" ></path><path d="M384 768a42.666667 42.666667 0 0 0 42.666667-42.666667v-298.666666a42.666667 42.666667 0 0 0-85.333334 0v298.666666a42.666667 42.666667 0 0 0 42.666667 42.666667zM640 768a42.666667 42.666667 0 0 0 42.666667-42.666667v-298.666666a42.666667 42.666667 0 0 0-85.333334 0v298.666666a42.666667 42.666667 0 0 0 42.666667 42.666667z" ></path></symbol><symbol id="bg-ic-plus" viewBox="0 0 1024 1024"><path d="M917.333333 448h-341.333333v-341.333333a64 64 0 0 0-128 0v341.333333h-341.333333a64 64 0 0 0 0 128h341.333333v341.333333a64 64 0 0 0 128 0v-341.333333h341.333333a64 64 0 0 0 0-128z" ></path></symbol><symbol id="bg-ic-ability" viewBox="0 0 1024 1024"><path d="M256 981.333333a213.333333 213.333333 0 0 1 0-426.666666h128a85.333333 85.333333 0 0 1 85.333333 85.333333v128a213.333333 213.333333 0 0 1-213.333333 213.333333z m0-341.333333a128 128 0 1 0 128 128v-128zM768 981.333333a213.333333 213.333333 0 0 1-213.333333-213.333333v-128a85.333333 85.333333 0 0 1 85.333333-85.333333h128a213.333333 213.333333 0 0 1 0 426.666666z m-128-341.333333v128a128 128 0 1 0 128-128zM384 469.333333H256a213.333333 213.333333 0 1 1 213.333333-213.333333v128a85.333333 85.333333 0 0 1-85.333333 85.333333zM256 128a128 128 0 0 0 0 256h128V256a128 128 0 0 0-128-128zM768 469.333333h-128a85.333333 85.333333 0 0 1-85.333333-85.333333V256a213.333333 213.333333 0 1 1 213.333333 213.333333z m0-341.333333a128 128 0 0 0-128 128v128h128a128 128 0 0 0 0-256z" ></path></symbol><symbol id="bg-ic-circle-check" viewBox="0 0 1024 1024"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m0 938.666667a426.666667 426.666667 0 1 1 426.666667-426.666667 426.666667 426.666667 0 0 1-426.666667 426.666667z" ></path><path d="M695.04 396.373333L469.333333 622.506667l-140.373333-140.8a42.666667 42.666667 0 0 0-60.586667 60.586666l170.666667 170.666667a42.666667 42.666667 0 0 0 60.586667 0l256-256a42.666667 42.666667 0 0 0-60.586667-60.586667z" ></path></symbol><symbol id="bg-ic-file" viewBox="0 0 1024 1024"><path d="M725.333333 682.666667H298.666667a42.666667 42.666667 0 0 0 0 85.333333h426.666666a42.666667 42.666667 0 0 0 0-85.333333zM725.333333 469.333333H298.666667a42.666667 42.666667 0 0 0 0 85.333334h426.666666a42.666667 42.666667 0 0 0 0-85.333334z" ></path><path d="M931.413333 196.693333l-146.773333-146.773333A170.666667 170.666667 0 0 0 663.893333 0H174.08A131.413333 131.413333 0 0 0 42.666667 131.413333v761.173334A131.413333 131.413333 0 0 0 174.08 1024h675.84A131.413333 131.413333 0 0 0 981.333333 892.586667V317.44a170.666667 170.666667 0 0 0-49.92-120.746667zM869.973333 256h-110.08a45.226667 45.226667 0 0 1-46.933333-42.666667V101.12a113.066667 113.066667 0 0 1 11.093333 8.96z m-20.053333 682.666667H174.08A46.08 46.08 0 0 1 128 892.586667V131.413333A46.08 46.08 0 0 1 174.08 85.333333h453.546667v128a130.56 130.56 0 0 0 132.266666 128H896v551.253334A46.08 46.08 0 0 1 849.92 938.666667z" ></path></symbol><symbol id="bg-ic-circle-close" viewBox="0 0 1024 1024"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m0 938.666667a426.666667 426.666667 0 1 1 426.666667-426.666667 426.666667 426.666667 0 0 1-426.666667 426.666667z" ></path><path d="M712.96 311.04a42.666667 42.666667 0 0 0-60.586667 0L512 451.84l-140.373333-140.8a42.666667 42.666667 0 1 0-60.586667 60.586667l140.8 140.373333-140.8 140.373333a42.666667 42.666667 0 0 0 0 60.586667 42.666667 42.666667 0 0 0 60.586667 0l140.373333-140.8 140.373333 140.8a42.666667 42.666667 0 0 0 60.586667 0 42.666667 42.666667 0 0 0 0-60.586667L572.16 512l140.8-140.373333a42.666667 42.666667 0 0 0 0-60.586667z" ></path></symbol><symbol id="bg-ic-search" viewBox="0 0 1024 1024"><path d="M968.96 908.373333l-170.666667-170.666666a426.666667 426.666667 0 1 0-60.586666 60.586666l170.666666 170.666667a42.666667 42.666667 0 0 0 60.586667 0 42.666667 42.666667 0 0 0 0-60.586667zM469.333333 810.666667a341.333333 341.333333 0 1 1 341.333334-341.333334 341.333333 341.333333 0 0 1-341.333334 341.333334z" ></path></symbol><symbol id="bg-ic-save" viewBox="0 0 1024 1024"><path d="M931.413333 239.36l-146.773333-146.773333A170.666667 170.666667 0 0 0 663.893333 42.666667H170.666667a128 128 0 0 0-128 128v679.253333A131.413333 131.413333 0 0 0 174.08 981.333333h675.84A131.413333 131.413333 0 0 0 981.333333 849.92V360.106667a170.666667 170.666667 0 0 0-49.92-120.746667zM341.333333 896v-213.333333a42.666667 42.666667 0 0 1 42.666667-42.666667h256a42.666667 42.666667 0 0 1 42.666667 42.666667v213.333333z m554.666667-46.08A46.08 46.08 0 0 1 849.92 896H768v-213.333333a128 128 0 0 0-128-128H384a128 128 0 0 0-128 128v213.333333H174.08A46.08 46.08 0 0 1 128 849.92V170.666667a42.666667 42.666667 0 0 1 42.666667-42.666667h493.226666a85.333333 85.333333 0 0 1 61.44 24.746667L870.826667 298.666667A85.333333 85.333333 0 0 1 896 360.106667z" ></path></symbol><symbol id="bg-ic-mail" viewBox="0 0 1024 1024"><path d="M896 85.333333H128a128 128 0 0 0-128 128v597.333334a128 128 0 0 0 128 128h768a128 128 0 0 0 128-128V213.333333a128 128 0 0 0-128-128z m-39.68 85.333334L512 456.533333 167.68 170.666667zM938.666667 810.666667a42.666667 42.666667 0 0 1-42.666667 42.666666H128a42.666667 42.666667 0 0 1-42.666667-42.666666V213.333333l399.36 331.52a42.666667 42.666667 0 0 0 54.613334 0L938.666667 213.333333z" ></path></symbol><symbol id="bg-ic-zoom-out" viewBox="0 0 1024 1024"><path d="M968.96 908.373333l-170.666667-170.666666a426.666667 426.666667 0 1 0-60.586666 60.586666l170.666666 170.666667a42.666667 42.666667 0 0 0 60.586667 0 42.666667 42.666667 0 0 0 0-60.586667zM469.333333 810.666667a341.333333 341.333333 0 1 1 341.333334-341.333334 341.333333 341.333333 0 0 1-341.333334 341.333334z" ></path><path d="M597.333333 426.666667H341.333333a42.666667 42.666667 0 0 0 0 85.333333h256a42.666667 42.666667 0 0 0 0-85.333333z" ></path></symbol><symbol id="bg-ic-zoom-in" viewBox="0 0 1024 1024"><path d="M968.96 908.373333l-170.666667-170.666666a426.666667 426.666667 0 1 0-60.586666 60.586666l170.666666 170.666667a42.666667 42.666667 0 0 0 60.586667 0 42.666667 42.666667 0 0 0 0-60.586667zM469.333333 810.666667a341.333333 341.333333 0 1 1 341.333334-341.333334 341.333333 341.333333 0 0 1-341.333334 341.333334z" ></path><path d="M597.333333 426.666667h-85.333333V341.333333a42.666667 42.666667 0 0 0-85.333333 0v85.333334H341.333333a42.666667 42.666667 0 0 0 0 85.333333h85.333334v85.333333a42.666667 42.666667 0 0 0 85.333333 0v-85.333333h85.333333a42.666667 42.666667 0 0 0 0-85.333333z" ></path></symbol><symbol id="bg-ic-shopping-cart" viewBox="0 0 1024 1024"><path d="M276.906667 789.333333h581.973333a42.666667 42.666667 0 0 0 42.666667-33.28l110.933333-492.373333a42.666667 42.666667 0 0 0-8.533333-35.84 42.666667 42.666667 0 0 0-33.28-14.506667H199.253333l-26.026666-116.053333a42.666667 42.666667 0 0 0-42.666667-33.28H53.333333a42.666667 42.666667 0 0 0 0 85.333333h42.666667l27.733333 114.346667 111.786667 492.373333a42.666667 42.666667 0 0 0 41.386667 33.28zM917.333333 298.666667l-92.586666 405.333333h-512L218.453333 298.666667z" ></path><path d="M298.666667 917.333333m-64 0a64 64 0 1 0 128 0 64 64 0 1 0-128 0Z" ></path><path d="M853.333333 917.333333m-64 0a64 64 0 1 0 128 0 64 64 0 1 0-128 0Z" ></path></symbol></svg>',d=(d=document.getElementsByTagName("script"))[d.length-1].getAttribute("data-injectcss"),s=function(a,t){t.parentNode.insertBefore(a,t)};if(d&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(a){console&&console.log(a)}}function m(){i||(i=!0,l())}function p(){try{o.documentElement.doScroll("left")}catch(a){return void setTimeout(p,50)}m()}t=function(){var a,t=document.createElement("div");t.innerHTML=e,e=null,(t=t.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",t=t,(a=document.body).firstChild?s(t,a.firstChild):a.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(l=t,o=a.document,i=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,m())})}(window);
\ No newline at end of file
/**
* 全局组件
*/
import BgIcon from './bg-icon.vue'
import BgNav from './bg-nav.vue'
import BgList from './bg-list.vue'
import BgDetail from './bg-detail.vue'
import BgFiltrate from './bg-filtrate.vue'
import BgTable from './bg-table.vue'
import BgTablePro from './bg-table-pro.vue'
import BgTableBtn from './bg-table-btn.vue'
import BgTabs from './bg-tabs.vue'
import BgTab from './bg-tab.vue'
import BgLayoutCard from './bg-layout-card.vue'
import BgCard from './bg-card.vue'
import BgInfo from './bg-info.vue'
import BgSteps from './bg-steps.vue'
import BgStep from './bg-step.vue'
import BgBtns from './bg-btns.vue'
import BgUpload from './bg-upload.vue'
import BgUploadImage from './bg-upload-image.vue'
import BgTags from './bg-tags.vue'
import BgSwitch from './bg-switch.vue'
import BgRichText from './bg-rich-text.vue'
import BgCodeEditor from './bg-code-editor.vue'
import BgFilter from './bg-filter.vue'
import BgSort from './bg-sort.vue'
import BgFilterDate from './bg-filter-date.vue'
import bgUserUploadImage from './bg-user-upload-image.vue'
import bgDetailTable from './bg-detail-table.vue'
import bgDetailTable2 from './bg-detail-table2.vue'
import debounce from './debounce'
import BgPagination from './bg-pagination.vue'
import BgInnerTabs from './bg-inner-tabs.vue'
import BgFilterGroup from './bg-filter-group.vue'
import BgTableBtns from './bg-table-btns.vue'
const components = {
BgIcon,//字体图标
BgNav, // 左侧导航
BgList, // 列表页布局
BgDetail, // 详情页布局
BgFiltrate, // 筛选条件
BgTable, // 表格
BgTablePro,
BgTableBtn, // 表格按钮
BgTabs, // 信息块
BgTab, // 信息块(子)
BgLayoutCard, // 带标题的卡片
BgCard, // 详情卡片
BgInfo, // 表格信息
BgSteps, // 步骤条
BgStep, // 步骤条
BgBtns, // 按钮组
BgUpload, // 上传附件
BgUploadImage, // 上传单张图片
BgTags, // 标签
BgSwitch, // 开关
BgRichText, // 富文本
BgCodeEditor,//代码输入
BgFilter, // 首页筛选
BgSort, // 首页排序
BgFilterDate,
bgUserUploadImage,
bgDetailTable,//详情展示组件1
bgDetailTable2,//详情展示组件2
debounce,//防抖组件
BgPagination,// 分页组件
BgInnerTabs,//内部tab
BgFilterGroup,//列表按钮及筛选
BgTableBtns,// 表格按钮组
};
const install = (Vue) => {
for (let name in components) {
Vue.component(name, components[name]);
}
};
if (typeof window !== "undefined" && window.Vue) {
install(window.Vue);
}
export default {
install,
...components,
};
ul {
list-style: none;
padding: 0;
margin: 0;
}
h1,
h2,
h3,
h4,
h5,
p {
margin: 0;
}
a {
text-decoration: none;
}
.clearfix {
zoom: 1;
&::after {
content: "";
display: block;
height: 0;
clear: both;
}
}
.fl {
float: left;
}
.fr {
float: right;
}
.text-clip {
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
white-space: nowrap;
}
.el-tooltip__popper {
max-width: 240px;
font-size: 12px;
line-height: 24px;
color: #ffffff;
}
.hide-required-icon {
.el-form-item {
&.is-required:not(.is-no-asterisk) {
> .el-form-item__label:before {
display: none;
}
}
}
}
.bg-form {
.center-form {
max-width: 750px;
margin: 0 auto;
}
.el-form-item {
.el-form-item__label {
float: unset;
display: block;
text-align: left;
font-size: 14px;
color: #202531;
line-height: 36px;
}
.el-form-item__content {
line-height: 36px;
// margin-top: 40px;
.el-select,
.img_crop,
.el-cascader,
.wangeditor_class,
.el-date-editor {
width: 100%;
}
.wangeditor_class {
min-height: 553px;
border: 1px solid #dadee7;
border-radius: 4px;
overflow: hidden;
.toolbar {
.w-e-toolbar {
.w-e-menu {
height: 50px;
}
}
}
}
}
&.inline {
display: flex;
justify-content: flex-start;
align-items: flex-start;
.el-form-item__label {
width: 6em;
padding: 0;
flex-shrink: 0;
color: #616f94;
text-align: right;
margin-right: 1em;
&:before {
display: inline;
margin-left: -1em;
}
}
.el-form-item__content {
width: calc(100% - 7em);
flex-grow: 1;
}
}
&:last-child {
margin-bottom: 0;
}
}
.el-button {
min-width: 64px;
height: 36px;
padding: 0 10px;
line-height: 36px;
&.el-button--default {
background-color: #fff;
color: #404a62;
}
&.el-button--primary {
background-color: #2b4695;
border-color: #2b4695;
color: #fff;
}
&.el-button--default2 {
background-color: #fff;
border-color: #2d96c9;
color: #2d96c9;
}
&.el-button--default3 {
background-color: #fff;
border-color: #ff6a00;
color: #ff6a00;
}
&.el-button--primary2 {
background-color: #2d96c9;
border-color: #2d96c9;
color: #fff;
}
&.el-button--billing {
background-color: #ff6a00;
border-color: #ff6a00;
color: #fff;
}
&.el-button--save {
background-color: #404a62;
border-color: #404a62;
color: #fff;
}
&.is-disabled,
&.is-disabled:focus,
&.is-disabled:hover {
/* background-image: none;
background-color: #fff;
border-color: #e6e9ef;
color: #a9b1c7; */
cursor: not-allowed;
opacity: 0.5;
}
+ .el-button {
margin-left: 16px;
}
}
.el-input .el-input__inner,
.el-textarea .el-textarea__inner {
background-color: #f7f7f9;
border: solid 1px #dadee7;
border-radius: 4px;
}
.el-input {
.el-input__inner {
height: 36px;
}
&.el-input-group {
> .el-input__inner {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
> .el-input-group__append {
background-color: transparent;
padding: 0;
border: none;
.input-append {
display: block;
min-width: 120px;
height: 36px;
padding: 0 10px;
box-sizing: border-box;
background-color: #2b4695;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
font-size: 14px;
line-height: 36px;
color: #f4f7fc;
text-align: center;
cursor: pointer;
&.disabled {
background-color: #a9b1c7;
cursor: not-allowed;
}
}
}
}
&.is-disabled {
.el-input__inner {
background-color: #e6e9ef;
color: #202531;
}
}
}
.el-textarea {
.el-input__count {
background: #fff;
font-size: 12px;
line-height: 20px;
color: #c1c7d7;
position: absolute;
bottom: 5px;
right: 10px;
}
}
.el-range-editor.el-input__inner {
height: 36px;
}
.el-pagination {
padding: 0 10px;
> * {
height: 36px !important;
background-color: transparent !important;
font-size: 14px;
line-height: 36px !important;
color: #404a62;
}
> .el-pager > li {
height: 36px !important;
background-color: transparent !important;
line-height: 36px !important;
color: #404a62 !important;
&.active {
color: #3759be !important;
}
}
.el-input__inner {
background-color: #f7f7f9;
}
}
.el-checkbox {
.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #2d96c9;
border-color: #0c74a7;
}
}
.el-select {
.el-input {
.el-input__icon {
line-height: 36px;
}
.el-select__caret {
color: #2b4695;
}
}
}
.el-tree {
.el-tree-node__content {
height: 32px;
display: flex;
justify-content: flex-start;
align-items: center;
.el-tree-node__expand-icon {
color: #2b4695;
&.el-icon-caret-right {
width: 16px;
height: 16px;
border: solid 1px #dadee7;
border-radius: 3px;
padding: 0;
box-sizing: border-box;
margin-right: 8px;
text-align: center;
&:before {
content: "\e6d9";
font-size: 12px;
font-weight: bolder;
line-height: 14px;
color: #3759be;
}
&.expanded {
transform: rotate(0deg);
&:before {
content: "\e6d8";
}
}
&.is-leaf {
opacity: 0;
}
}
}
.el-tree-node__label {
width: 100%;
font-size: 14px;
color: #404a62;
line-height: 32px;
}
}
&.el-tree--highlight-current {
.el-tree-node {
&.is-current {
> .el-tree-node__content {
background-color: #dfe5f6;
.el-tree-node__label {
color: #3759be;
}
}
}
}
}
}
&.float-label {
.el-form-item {
.el-form-item__label {
float: left;
}
}
}
&.width-1340 {
.el-input,
.el-textarea,
.bg-tags {
max-width: 1340px !important;
}
}
}
.bg-breadcrumb {
display: flex;
justify-content: space-between;
align-items: center;
> .el-breadcrumb {
flex-shrink: 0;
white-space: nowrap;
height: 46px;
padding: 16px 0;
box-sizing: border-box;
.el-breadcrumb__item {
> span {
font-size: 14px;
font-weight: normal;
// line-height: 24px;
color: #909bb6;
&:hover{
color: #5170cd;
cursor: pointer;
}
}
&:last-child {
> span {
color: #202531;
}
}
}
& + * {
width: 429px;
flex-grow: 0;
flex-shrink: 1;
margin-left: 14px;
margin: 7px 0 7px 14px;
}
}
&.deep-bg {
> .el-breadcrumb {
.el-breadcrumb__item {
&:last-child {
> span {
color: #b4c0f5;
}
}
}
}
}
}
.bg-dialog {
.el-dialog {
border-radius: 4px;
.el-dialog__header {
padding: 10px 16px;
.el-dialog__title {
padding-left: 1em;
position: relative;
font-size: 18px;
font-weight: bolder;
color: #1d1e20;
line-height: 30px;
&::before {
content: "";
position: absolute;
width: 4px;
height: 16px;
border-radius: 2px;
background-color: #2b4695;
left: 0;
top: 4px;
}
}
}
.el-dialog__body {
padding: 24px 16px;
}
.el-dialog__footer {
padding: 8px 16px 16px;
}
.dialog-msg {
text-align: left;
> p {
font-size: 14px;
line-height: 1.5;
&:nth-child(1) {
font-size: 18px;
}
& + p {
margin-top: 14px;
}
}
}
.dialog-rich-text-content {
min-height: 650px;
font-size: 14px;
text-align: left;
}
}
}
.bg-nav {
background-color: #282e3d;
user-select: none;
height: 100%;
padding-top: 9px;
.bg-nav-title {
padding: 0 0 12px 24px;
> h3 {
font-size: 18px;
font-weight: bolder;
color: #fff;
line-height: 30px;
}
}
> .bg-nav-list {
height: calc(100% - 135px);
box-sizing: border-box;
ul.nav-list {
height: 100%;
overflow: auto;
> li {
position: relative;
> .nav-item {
position: relative;
display: block;
padding: 10px 10px 10px 24px;
z-index: 9;
font-size: 14px;
line-height: 28px;
text-decoration: none;
color: #fff;
cursor: pointer;
&:hover:not(.nav-more),
&.current {
color: #fff;
&::before {
content: "";
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: #2a4aa7;
z-index: -1;
}
&::after {
content: "";
width: 3px;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-color: #5a7adc;
z-index: -1;
}
}
}
> ul.nav-list {
background-color: #202531;
}
}
}
}
}
.bg-filtrate {
display: flex;
justify-content: flex-start;
align-items: flex-start;
> .bg-filtrate-text {
width: 7em;
flex-shrink: 0;
height: 24px;
font-size: 12px;
line-height: 24px;
color: #8890a7;
margin: 8px 0;
text-align: right;
}
> .bg-filtrate-list {
padding: 0;
margin: 0 0 0 10px;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
> li {
height: 24px;
padding: 0 5px;
font-size: 12px;
line-height: 24px;
color: #202531;
cursor: pointer;
margin: 8px 0;
&:not(:last-child) {
margin-right: 20px;
}
&.current {
border-radius: 3px;
background-color: #2b4695;
color: #fff;
}
}
}
> .bg-filtrate-title {
width: 7em;
height: 36px;
font-size: 12px;
line-height: 36px;
color: #8890a7;
margin: 8px 0;
text-align: right;
}
> .bg-filtrate-content {
flex-shrink: 0;
margin: 8px 0 8px 10px;
}
}
.bg-table {
&::before {
display: none;
}
.empty_container {
height: 500px;
padding-top: 247px;
img {
width: 257px;
height: 145px;
}
.text {
font-size: 16px;
color: #616f94;
line-height: 1;
}
}
th,
td {
padding: 12px 0!important;
> .cell {
padding: 0 10px !important;
color: #404a62;
line-height: 18px;
}
}
&.el-table--border {
border-top-color: #b0bee8;
.el-table__header-wrapper {
position: relative;
&::before {
content: "";
width: 1px;
height: 100%;
background-color: #b0bee8;
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
&::after {
content: "";
width: 0px;
height: 100%;
background-color: #b0bee8;
position: absolute;
right: 0;
bottom: 0;
z-index: 2;
}
table {
th {
border-color: #b0bee8;
background-color: #dfe5f6;
}
}
}
}
.stripe-row td {
background-color: #fff!important;
}
.white-row td {
background-color: #f7f7f9!important;
}
.el-table--striped .el-table__body tr.el-table__row--striped td {
background-color: #f7f7f9;
}
.el-table__inner-wrapper::before {
height: 0px;
}
&.tree-table {
th {
background-color: #e6e9ef;
}
tr {
&.has-children {
background-color: #f7f7f9;
}
}
}
.el-form-item {
margin: 0 !important;
.el-form-item__error {
top: unset;
bottom: -12px;
transform: scale(0.8);
transform-origin: 0 0;
}
.el-form-item__content {
margin: 0 !important;
}
}
.el-popper {
max-width: 388px;
padding: 15px 12px;
color: #202531;
box-shadow: 0px 4px 12px 0px
rgba(18, 30, 63, 0.1);
border: solid 1px #e6e9ef;
font-size: 14px;
}
}
.bg-table-pro{
th,
td {
> .cell {
padding: 0 10px !important;
overflow: unset;
display: flex;
justify-content: flex-start;
align-items: center;
}
}
&.el-table--border {
.el-table__header-wrapper {
table {
th {
border-color: #dadee7;
background-color: #f5f6f9;
}
}
}
}
}
.bg-table-tree {
.th,
.td {
>.cell {
display: flex;
justify-content: flex-start;
align-items: center;
>.el-input {
flex: 1 1 auto;
}
}
}
}
.bg-table-btn {
display: inline;
color: #3759be;
cursor: pointer;
&.disabled {
cursor: not-allowed;
color: #a9b1c7;
&:hover,
&:active {
color: #a9b1c7;
}
}
& + .bg-table-btn {
position: relative;
margin-left: 33px;
&::before {
content: "";
position: absolute;
top: 4px;
left: -17px;
width: 1px;
height: 14px;
background-color: #c1c7d7;
}
}
}
.bg-tabs {
background-color: #ffffff;
box-shadow: 0px 6px 12px 0px rgba(0, 20, 53, 0.3);
border-radius: 12px;
overflow: hidden;
> .bg-tabs-nav {
background-color: #fff;
> ul {
height: 64px;
padding: 0;
margin: 0;
list-style: none;
display: flex;
justify-content: space-between;
align-items: stretch;
> li {
flex-grow: 0;
width: 320px;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
padding: 8px;
border-bottom: 1px solid #e6e9ef;
font-size: 16px;
line-height: 25px;
color: #404a62;
cursor: pointer;
&.current {
position: relative;
border-top-right-radius: 6px;
border-top-left-radius: 6px;
border-right: 1px solid #e6e9ef;
border-bottom: 1px solid #fff;
border-left: 1px solid #e6e9ef;
color: #275a9d;
overflow: hidden;
&::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 4px;
background-color: #275a9d;
}
}
&:first-child {
border-left: none;
}
&:last-child {
flex-grow: 1;
flex-shrink: 1;
border-right: none;
}
}
}
}
> .bg-tabs-content {
padding: 30px 16px;
}
&.nice-tabs {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
> .bg-tabs-nav {
flex-shrink: 0;
flex-grow: 0;
}
> .bg-tabs-content {
padding: 30px 0;
flex-shrink: 1;
flex-grow: 1;
> .bg-tab {
padding: 0;
margin: 0;
.el-input,
.el-textarea,
.bg-tags {
max-width: 640px;
}
}
}
> .bg-tabs-action {
flex-shrink: 0;
flex-grow: 0;
padding: 16px;
border-top: 1px solid #e6e9ef;
text-align: right;
}
}
}
.bg-tab {
> .tab-title {
margin-bottom: 16px;
> h3 {
position: relative;
padding-left: 16px;
height: 32px;
font-size: 18px;
font-weight: bolder;
line-height: 32px;
color: #202531;
&::before {
content: "";
width: 4px;
height: 16px;
background-color: #275a9d;
position: absolute;
top: 8px;
left: 0;
}
}
}
> .tab-content {
padding: 0 16px;
}
& + .bg-tab {
margin-top: 30px;
}
}
.bg-tabs-nav--fixed {
position: fixed;
top: 58px;
right: 16px;
left: 184px;
z-index: 1998;
background-color: #eef0f5;
padding: 16px 16px 0;
> ul {
background-color: #fff;
height: 64px;
padding: 0;
margin: 0;
list-style: none;
display: flex;
justify-content: space-between;
align-items: stretch;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
> li {
flex-grow: 0;
width: 320px;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
padding: 8px;
border-bottom: 1px solid #e6e9ef;
font-size: 16px;
line-height: 25px;
color: #404a62;
cursor: pointer;
&.current {
position: relative;
&::before {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 4px;
background-color: #275a9d;
}
}
&:last-child {
flex-grow: 1;
flex-shrink: 1;
}
}
}
}
.bg-list {
height: 100%;
padding: 0 16px;
display: flex;
flex-direction: column;
align-content: stretch;
> .bg-list-header {
margin-bottom: 16px;
> .bg {
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
border-radius: 6px;
padding: 10px 16px;
}
> .header-content {
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
border-radius: 6px;
> .header-action {
padding: 16px;
border-bottom: solid 1px #e6e9ef;
}
> .header-main {
padding: 16px;
}
}
}
> .bg-list-filter {
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
border-radius: 6px;
margin-bottom: 16px;
}
> .bg-list-top {
margin-bottom: 16px;
> .bg {
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
border-radius: 6px;
padding: 10px 16px;
}
}
> .bg-list-main {
flex-grow: 1;
height: 205px;
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
border-radius: 6px;
padding: 10px 16px 0;
box-sizing: border-box;
margin-bottom: 16px;
> .main-action {
padding-bottom: 16px;
margin: 4px 0 10px;
zoom: 1;
position: relative;
&::before {
content: "";
position: absolute;
right: -16px;
bottom: 0;
left: -16px;
border-bottom: 1px solid #e6e9ef;
}
&::after {
content: "";
display: block;
height: 0;
clear: both;
}
}
> .main-table {
height: calc(100% - 36px - 16px * 2);
}
> .main-pagination {
height: 36px;
margin-top: 16px;
text-align: center;
}
&.has-action {
> .main-table {
height: calc(100% - 36px - 16px * 2 - 67px);
}
}
}
}
.bg-list-filter {
overflow: hidden;
> .fiter-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 14px;
border-bottom: 1px solid #e6e9ef;
> .el-button {
width: 103px;
+ .el-button {
margin-left: 18px;
}
}
> .filter-header-right {
width: 320px;
text-align: right;
}
}
> .filter-content {
// height: 136px;
padding: 8px 14px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: flex-start;
> .filter-action {
flex-shrink: 0;
display: flex;
justify-content: flex-start;
align-items: center;
.filters-right {
width: 240px;
margin-right: 10px;
}
> .el-button {
margin-top: 8px;
margin-bottom: 8px;
}
}
&.inline-filters {
min-height: unset !important;
height: unset !important;
> .filter-list {
margin-left: 1em;
> .bg-btns {
margin-right: 30px;
}
> .bg-filtrate {
display: inline-flex;
margin-right: 30px;
> .bg-filtrate-text,
> .bg-filtrate-title {
width: unset;
flex-shrink: 0;
}
> .bg-filtrate-content {
flex-grow: 1;
flex-shrink: 1;
> .el-input {
width: 160px;
}
> .el-select {
width: 160px;
}
> .el-date-editor {
width: 260px;
&.el-date-editor--datetimerange {
width: 400px;
}
}
> .el-radio-group {
height: 36px;
> label {
line-height: 36px;
}
}
}
}
}
}
&.show-more {
// min-height: 136px;
height: unset;
}
}
}
.bg-detail {
padding: 0 16px;
> .bg-detail-info {
margin-bottom: 16px;
}
> .bg-detail-tabs {
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
border-radius: 6px;
margin-bottom: 16px;
}
}
.bg-edit {
padding: 0 16px;
.bg-edit-main {
min-height: calc(100vh - 58px - 44px - 16px);
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
border-radius: 6px;
padding: 16px;
margin-bottom: 16px;
> .main-action {
padding-bottom: 17px;
margin-bottom: 16px;
position: relative;
zoom: 1;
&::before {
content: "";
position: absolute;
right: -16px;
bottom: 0;
left: -16px;
border-bottom: 1px solid #e6e9ef;
}
&::after {
content: "";
display: block;
height: 0;
clear: both;
}
}
}
}
.bg-input-number {
display: inline-flex;
justify-content: space-between;
align-items: stretch;
border: 1px solid #e3e5ef;
border-radius: 6px;
overflow: hidden;
> .el-input-number {
height: 36px;
flex-grow: 1;
line-height: 36px;
.el-input__inner {
border: none;
border-radius: 0;
background-color: #f7f8f9;
text-align: left;
}
.el-input-number__decrease,
.el-input-number__increase {
border: none;
color: #515fe7;
}
}
> .bg-input-number__text {
min-width: 50px;
padding: 0 15px;
box-sizing: border-box;
background-color: #edeef4;
color: #8890a7;
line-height: 36px;
text-align: center;
}
}
.bg-layout-card {
background-color: #ffffff;
box-shadow: 0px 3px 6px 0px #f4f7fc;
border-radius: 4px;
margin: 10px;
overflow: hidden;
> .card-title {
height: 48px;
padding: 0 15px;
background-image: linear-gradient(
270deg,
#ffffff 0%,
#fef6f2 58%,
#fcede4 100%
),
linear-gradient(#fcede4, #fcede4);
background-blend-mode: normal, normal;
display: flex;
justify-content: space-between;
align-items: center;
.title-text {
flex-grow: 1;
font-size: 18px;
line-height: 48px;
font-weight: bolder;
color: #202531;
position: relative;
padding-left: 15px;
&::before {
content: "";
width: 4px;
height: 16px;
background-color: #ff6a00;
position: absolute;
top: 16px;
left: 0;
}
}
.filter-list {
flex-shrink: 0;
display: flex;
justify-content: flex-start;
align-items: center;
background-color: #e6e9ef;
padding: 2px;
border-radius: 5px;
margin-left: 10px;
> li {
min-width: 50px;
height: 20px;
border-radius: 4px;
padding: 0 5px;
box-sizing: border-box;
font-size: 12px;
line-height: 20px;
color: #909bb6;
text-align: center;
cursor: pointer;
&.current {
background-color: #ff6a00;
color: #f8f9fd;
}
}
}
.download-btn {
flex-shrink: 0;
margin-left: 10px;
cursor: pointer;
> img {
display: block;
}
> .el-loading-mask {
cursor: not-allowed;
.el-loading-spinner {
margin-top: -10px;
}
}
}
}
> .card-content {
height: calc(100% - 48px);
padding: 10px 15px;
box-sizing: border-box;
> * {
width: 100% !important;
height: 100% !important;
}
}
}
.bg-pinboard-container {
padding: 0 14px 10px;
> .bg-pinboard-content {
zoom: 1;
margin: -10px -10px 0;
> .bg-layout-card {
float: left;
&.fr {
float: right;
}
}
&:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
}
}
.bg-info {
> ul {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: stretch;
border-top: 1px solid #e3e5ef;
border-left: 1px solid #e3e5ef;
box-sizing: border-box;
> li {
border-right: 1px solid #e3e5ef;
border-bottom: 1px solid #e3e5ef;
box-sizing: border-box;
flex: 0 0 auto;
display: flex;
justify-content: flex-start;
align-items: stretch;
> span {
flex: 0 0 auto;
padding: 10px 16px;
box-sizing: border-box;
font-size: 14px;
line-height: 24px;
color: #404a62;
&:nth-child(1) {
flex-shrink: 0;
width: 240px;
background-color: #f7f8f9;
color: #616f94;
}
&:nth-child(2) {
flex-grow: 1;
width: calc(100% - 240px);
border-left: 1px solid #e3e5ef;
color: #404a62;
position: relative;
> .copy-btn {
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 16px;
user-select: none;
color: #3759be;
cursor: pointer;
margin-left: 8px;
&:hover {
color: #5170cd;
}
&:active {
color: #2b4695;
}
}
}
}
&:last-child {
flex-grow: 1;
}
}
}
}
.bg-steps {
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.1);
border-radius: 6px;
padding: 14px;
> .bg-steps-container {
.steps-nav {
padding: 18px 16px 31px;
border-bottom: 1px solid #f4f7fc;
> ul {
display: flex;
justify-content: space-between;
align-items: center;
> .step-item {
display: flex;
justify-content: flex-start;
align-items: center;
margin: 0 16px;
> .step-icon {
position: relative;
width: 30px;
height: 30px;
border-radius: 50%;
background-color: #e3e5ef;
&::before {
content: "";
width: 16px;
height: 16px;
border-radius: 50%;
background-color: #bcc1d0;
position: absolute;
top: 7px;
left: 7px;
}
}
> .step-hightlight-icon {
position: relative;
width: 70px;
height: 70px;
border-radius: 50%;
background-color: #2d96c9;
display: flex;
justify-content: center;
align-items: center;
display: none;
&::before {
content: "";
width: 60px;
height: 60px;
border: solid 3px #84bfdc;
box-sizing: border-box;
border-radius: 50%;
position: absolute;
top: 5px;
left: 5px;
}
}
> .step-title {
margin-left: 15px;
> p {
line-height: 1;
color: #bcc1d0;
&:nth-child(1) {
font-weight: bolder;
font-size: 18px;
}
&:nth-child(2) {
font-size: 14px;
margin-top: 12px;
}
}
}
&.done,
&.current {
> .step-icon {
display: none;
}
> .step-hightlight-icon {
display: flex;
}
}
> .step-title {
margin-left: 15px;
> p {
&:nth-child(1) {
color: #242c43;
}
&:nth-child(2) {
color: #8890a7;
}
}
}
}
> .step-line {
width: 100px;
flex: 1 1 auto;
height: 4px;
background-color: #e3e5ef;
border-radius: 2px 0px 0px 2px;
&.done,
&.current {
background-color: #2d96c9;
}
}
}
}
.steps-content {
margin-top: 20px;
}
}
}
.bg-step {
.step-done {
display: flex;
justify-self: center;
align-items: center;
> .done-icon {
margin-right: 15px;
}
> .done-info {
> p {
line-height: 1.5;
&:nth-child(1) {
font-weight: bolder;
font-size: 18px;
color: #242c43;
}
&:nth-child(2) {
font-size: 14px;
color: #8890a7;
margin-top: 5px;
}
}
}
}
> .step-action {
overflow: hidden;
margin-top: 20px;
> .fr {
float: right;
}
}
}
.bg-btns {
display: inline-block;
> ul {
padding: 2px;
background-color: #edeef0;
border-radius: 4px;
display: flex;
justify-content: flex-start;
align-items: center;
> li {
height: 24px;
padding: 0 16px;
font-size: 14px;
line-height: 24px;
color: #8890a7;
cursor: pointer;
&.is-active {
background-color: #2b4695;
border-radius: 4px;
color: #fff;
}
}
}
}
.bg-title-text {
height: 36px;
font-weight: bolder;
font-size: 18px;
line-height: 36px;
padding-left: 16px;
position: relative;
display: flex;
justify-content: flex-start;
align-items: center;
&::before {
content: "";
width: 4px;
height: 16px;
position: absolute;
top: 10px;
left: 0;
background-color: #275a9d;
}
> span {
+ img {
margin-left: 10px;
}
}
}
.bg-title-info {
height: 20px;
font-size: 16px;
line-height: 20px;
color: #404a62;
padding-left: 16px;
position: relative;
&::before {
content: "";
width: 4px;
height: 16px;
position: absolute;
top: 2px;
left: 0;
background-color: #275a9d;
}
> span {
color: #e56600;
}
}
.bg-upload {
text-align: left;
.trigger-content {
width: 360px;
height: 180px;
border-radius: 4px;
padding: 0 45px 15px;
box-sizing: border-box;
border: dashed 1px #dadee7;
display: flex;
flex-direction: column;
justify-content: center;
align-items: stretch;
> .trigger-icon {
font-size: 0;
line-height: 1;
text-align: center;
margin-bottom: 16px;
}
> .trigger-tip {
font-size: 14px;
line-height: 21px;
color: #909bb6;
text-align: left;
margin: 0;
}
}
&.is-disabled {
.el-upload,
.el-upload__tip {
// display: none;
cursor: not-allowed;
}
}
&.is-easy {
> div {
max-width: unset !important;
display: flex;
justify-content: flex-start;
align-items: center;
> .el-upload-list {
margin: 0 0 0 16px;
> .el-upload-list__item {
margin: 0;
& + .el-upload-list__item {
margin-top: 5px;
}
}
}
}
}
}
.bg-upload-image {
.trigger-content {
> .image-trigger {
width: 144px;
border-radius: 4px;
border: 1px solid #dadee7;
box-sizing: border-box;
position: relative;
> img {
display: block;
width: 100%;
}
> .refresh-image {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba($color: #000, $alpha: 0.3);
display: none;
justify-content: center;
align-items: center;
font-size: 20px;
color: #fff;
}
&:hover {
> .refresh-image {
display: flex;
}
}
}
> .upload-trigger {
width: 144px;
height: 144px;
background-color: #fff;
border-radius: 4px;
border: 1px dashed #dadee7;
box-sizing: border-box;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
> .upload-icon {
width: 40px;
height: 40px;
position: relative;
&::before {
content: "";
width: 100%;
height: 1px;
background-color: #dadee7;
position: absolute;
top: 19.5px;
left: 0;
}
&::after {
content: "";
width: 1px;
height: 100%;
background-color: #dadee7;
position: absolute;
top: 0;
left: 19.5px;
}
}
}
}
}
.bg-form-reset {
> .el-form-item {
width: 100%;
margin-right: 0;
> label {
color: #202531;
}
> .el-form-item__content {
.el-input__inner,
.el-textarea__inner {
background-color: #f7f7f9;
}
}
&.inline {
display: flex;
justify-content: flex-start;
align-items: flex-start;
> label {
width: 10em;
flex-shrink: 0;
color: #616f94;
text-align: right;
}
> .el-form-item__content {
width: calc(100% - 7em);
flex-grow: 1;
}
}
}
}
.auto-height {
.el-select-dropdown__item {
height: unset;
.bg-option-title {
font-size: 14px;
color: #fff;
}
.bg-option-sub-title {
font-size: 12px;
color: #9ea2aa;
line-height: 20px;
margin-bottom: 10px;
}
}
}
.bg-empty-text {
width: 100%;
font-size: 14px;
line-height: 100px;
color: #121e3f;
text-align: center;
}
.bg-tags {
> ul {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: flex-start;
padding: 5px;
border: 1px solid #dadee7;
border-radius: 4px;
> li {
margin: 5px;
> a {
cursor: pointer;
margin-left: 5px;
}
&.tag-item {
height: 36px;
padding: 5px 10px;
background-color: #e8f6fd;
border: 1px solid #d1ecfa;
border-radius: 4px;
box-sizing: border-box;
font-size: 14px;
line-height: 24px;
color: #2b4695;
}
}
}
}
.bg-scroll {
overflow: hidden auto;
&::-webkit-scrollbar {
width: 16px;
}
/* &::-webkit-scrollbar-track {
border-radius: 8px;
box-shadow: 8px 0 0 #f4f4f4 inset;
border: 4px solid rgba(0, 0, 0, 0);
} */
&::-webkit-scrollbar-thumb {
border-radius: 8px;
box-shadow: 8px 0 0 #c1c7d7 inset;
border: 4px solid rgba(0, 0, 0, 0);
}
}
.bg-no-scroll {
overflow: hidden auto;
&::-webkit-scrollbar {
width: 0px;
}
/* &::-webkit-scrollbar-track {
border-radius: 8px;
box-shadow: 8px 0 0 #f4f4f4 inset;
border: 4px solid rgba(0, 0, 0, 0);
} */
&::-webkit-scrollbar-thumb {
border-radius: 0px;
border: 0px solid rgba(0, 0, 0, 0);
}
}
.bg-switch {
display: inline-block;
vertical-align: middle;
width: 64px;
height: 28px;
border-radius: 14px;
border: solid 2px #275a9d;
position: relative;
color: #275a9d;
cursor: pointer;
user-select: none;
> .label {
font-size: 12px;
font-weight: 600;
line-height: 24px;
position: absolute;
}
> .circle {
width: 18px;
height: 18px;
border-radius: 50%;
position: absolute;
top: 3px;
background-color: #275a9d;
}
&.disabled {
cursor: not-allowed;
}
}
.bg-action-filter {
display: flex;
justify-content: flex-start;
align-items: center;
> .bg-filtrate {
> * {
margin-top: 0;
margin-bottom: 0;
}
+ .bg-filtrate {
margin-left: 30px;
}
}
}
.bg-rich-text {
text-align: left;
.w-e-toolbar,
.w-e-text-container {
border: 1px solid #dadee7 !important;
width: 100%;
z-index: 1!important;
}
.w-e-toolbar {
border-radius: 4px 4px 0 0;
z-index: 2!important;
}
.w-e-text-container {
border-radius: 0 0 4px 4px;
border-top: none !important;
}
.w-e-text {
overflow-y: auto;
}
.onlyread {
height: 300px;
padding: 10px;
border: 1px solid lightgray;
box-sizing: border-box;
border-radius: 5px;
overflow-x: hidden;
overflow-y: auto;
}
}
.bg-filter {
display: flex;
justify-content: flex-start;
align-items: flex-start;
> span {
// width: 4em;
height: 24px;
flex-shrink: 0;
font-size: 14px;
line-height: 20px;
color: #616f94;
// padding: 4px 0;
margin: 8px 0;
// min-width: 115px;
}
> ul {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
> li {
background-color: #fff;
// border: solid 1px #fff;
padding: 5px 6px;
font-size: 14px;
line-height: 14px;
color: #202531;
cursor: pointer;
margin: 6px 4px;
&.current {
background-color: #2b4695;
// border: solid 1px #718ad6;
border-radius: 3px;
color: #fff;
}
}
}
}
.bg-sort {
display: inline-flex;
justify-content: flex-start;
align-items: center;
> a {
height: 20px;
font-size: 15px;
line-height: 20px;
color: #8890a7;
cursor: pointer;
&.current {
color: #515fe7;
}
& + a {
position: relative;
margin-left: 30px;
&::before {
content: "";
width: 1px;
height: 16px;
background-color: #e3e5ef;
position: absolute;
top: 2px;
left: -15px;
}
}
}
}
.bg-timeline {
.el-timeline-item__node--normal {
width: 12px;
height: 12px;
background-color: #ffffff;
border: solid 4px #2b4695;
border-radius: 50%;
}
}
.bg-carousel {
.el-carousel__indicators--horizontal {
bottom: 40px;
}
.el-carousel__indicator--horizontal {
padding: 0;
width: 48px;
height: 8px;
background-color: #ffffff;
opacity: 0.3;
margin: 0 16px;
> button {
display: block;
width: 100%;
height: 100%;
background-color: transparent;
}
&.is-active {
opacity: 0.8;
}
}
&.hide-indicators {
.el-carousel__indicators {
display: none;
}
}
&.hide-bar {
.el-carousel__indicators--horizontal {
bottom: 20px;
}
.el-carousel__indicator--horizontal {
padding: 0;
width: 24px;
height: 4px;
background-color: #d0d8f1;
margin: 0 8px;
&.is-active {
background-color: #2b4695;
}
}
}
.el-carousel__indicators--vertical {
right: 20px;
.el-carousel__indicator--vertical {
padding: 0;
height: 24px;
width: 4px;
background-color: #d0d8f1;
margin: 8px 0;
> button {
display: block;
width: 100%;
height: 100%;
background-color: transparent;
}
&.is-active {
background-color: #2b4695;
}
}
}
}
.home-item {
max-width: 1340px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: stretch;
}
.home-item-title {
padding: 32px 0 0;
font-weight: bolder;
font-size: 32px;
line-height: 48px;
color: #202531;
text-align: center;
> span {
display: inline-block;
height: 48px;
padding: 0 64px;
position: relative;
&::before,
&::after {
content: "";
position: absolute;
top: 24px;
width: 32px;
height: 1px;
background-color: #b0bee8;
}
&::before {
left: 0;
}
&::after {
right: 0;
}
}
&.light-text {
color: #fff;
}
}
.bg-pagination {
height: 32px;
margin-top: 16px;
float: right;
.el-pagination {
text-align: center;
margin: 0 auto;
color: #404a62;
padding: 0 5px;
.el-pagination__total,
.el-pagination__jump {
color: #404a62;
}
.el-pager {
li {
font-family: Roboto-Regular;
}
li.is-active {
color: #3759be;
}
li:hover {
color: #3759be;
}
}
.el-input__wrapper {
background-color: #fff;
}
}
}
.bg-icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
.bg-card {
background-color: #ffffff;
box-shadow: 0px 1px 4px 0px
rgba(0, 7, 101, 0.15);
border-radius: 6px;
margin-bottom: 16px;
.card-title {
padding: 16px 16px;
border-bottom: 1px solid #ebedf2;
font-weight: bold;
display: flex;
justify-content: flex-start;
align-items: center;
.title-icon {
width: 20px;
height: 20px;
background-color: #2a4aa7;
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
margin-right: 12px;
.bg-icon {
font-size: 14px;
color: #fff;
}
}
.title-text{
font-size: 18px;
line-height: 18px;
color: #202531;
}
}
.card-content {
padding: 24px;
}
}
.bg-filter-group {
width: 100%;
padding: 16px;
border-bottom: 1px solid #e6e9ef;
.top-filter {
width: 100%;
display: flex;
.left-slot {
flex: 1;
}
.right-filter {
width: 398px;
justify-content: end;
display: flex;
.el-input {
width: 280px;
height: 36px;
.el-input-group__append {
border-radius: 0 4px 4px 0;
background-color: #f7f7f9;
padding: 0;
.append-btn {
padding: 0 16px;
cursor: pointer;
}
}
}
.more-btn {
margin-left: 16px;
width: 102px;
box-sizing: border-box;
border: 1px solid #e6e9ef;
border-radius: 4px;
height: 36px;
.more-filter {
width: 100px;
border: none;
height: 34px;
padding: 10px 15px;
line-height: 1;
&:active,
&:hover{
background-color: #fff;
color: #3759be;
}
&:focus {
background-color: #fff;
}
}
}
.more-btn1 {
height: 53px;
border-bottom: 1px solid #fff;
border-radius: 4px 4px 0 0;
margin-bottom: -1px;
}
}
}
.filter-group {
display: flex;
align-items: flex-end;
border-radius: 4px 0 4px 4px;
width: 100%;
border: 1px solid #e6e9ef;
padding: 24px 16px 8px;
}
}
// 表格操作按钮组
.bg-table-btns {
position: relative;
display: inline-block;
vertical-align: middle;
}
.bg-table-btns-more {
position: absolute;
top: 28px;
right: -16px;
z-index: 19;
padding: 4px 0;
background-color: #ffffff;
box-shadow: 0px 4px 12px 0px rgba(18, 30, 63, 0.1);
border-radius: 4px;
border: solid 1px #e6e9ef;
width: 88px;
.bg-table-btn {
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
white-space: nowrap;
display: block;
padding: 0 16px;
margin: 0;
color: #202531;
line-height: 34px;
padding-left: 16px;
&:hover {
background-color: #f2f3f7;
color: #202531;
}
&.disabled {
color: #a9b1c7;
}
&::before {
display: none;
}
}
&::before {
content: "";
position: absolute;
top: -10px;
left: 0;
height: 10px;
width: 100%;
}
}
\ No newline at end of file
var downloadFileFormatNew = function (fileUrl) {
/*
input: /apaas/common/docs/image/images/1234_qq234ewr123.png
output: 1234.png
*/
if (fileUrl != "") {
var temp = fileUrl.split('/')[fileUrl.split('/').length-1]
var name = temp.split('_')[0]
var type = temp.split('_')[temp.split('_').length-1].split('.')[1]
if(temp.indexOf('_')==-1){
return name
}else{
return name+'.'+type
}
} else {
return "";
}
}
export default {
downloadFileFormatNew
}
\ No newline at end of file
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import bgui from "@/bg-ui";
import "@/bg-ui/index.scss";
createApp(App).use(bgui).mount('#app')
:root {
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 400;
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87);
background-color: #242424;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
body {
margin: 0;
display: flex;
place-items: center;
min-width: 320px;
min-height: 100vh;
}
h1 {
font-size: 3.2em;
line-height: 1.1;
}
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
background-color: #1a1a1a;
cursor: pointer;
transition: border-color 0.25s;
}
button:hover {
border-color: #646cff;
}
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
.card {
padding: 2em;
}
#app {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
@media (prefers-color-scheme: light) {
:root {
color: #213547;
background-color: #ffffff;
}
a:hover {
color: #747bff;
}
button {
background-color: #f9f9f9;
}
}
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";
function resolve_path(dir) {
return path.join(__dirname, "./", dir);
}
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
resolve: {
//别名,代码引入时方便引入
alias: {
"@": resolve_path("src"),
},
},
server: {
port: 3001,
},
});
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@babel/parser@^7.16.4":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8"
integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
"@babel/runtime@^7.12.0":
version "7.20.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3"
integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==
dependencies:
regenerator-runtime "^0.13.11"
"@ctrl/tinycolor@^3.4.1":
version "3.4.1"
resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32"
integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==
"@element-plus/icons-vue@^2.0.10", "@element-plus/icons-vue@^2.0.6":
version "2.0.10"
resolved "https://registry.yarnpkg.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz#60808d613c3dbdad025577022be8a972739ade21"
integrity sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==
"@esbuild/android-arm@0.15.16":
version "0.15.16"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.16.tgz#0642926178b15e3d1545efae6eee05c4f3451d15"
integrity sha512-nyB6CH++2mSgx3GbnrJsZSxzne5K0HMyNIWafDHqYy7IwxFc4fd/CgHVZXr8Eh+Q3KbIAcAe3vGyqIPhGblvMQ==
"@esbuild/linux-loong64@0.15.16":
version "0.15.16"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.16.tgz#284522de76abe951e4ed2bd24a467e8d49c67933"
integrity sha512-SDLfP1uoB0HZ14CdVYgagllgrG7Mdxhkt4jDJOKl/MldKrkQ6vDJMZKl2+5XsEY/Lzz37fjgLQoJBGuAw/x8kQ==
"@floating-ui/core@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.0.2.tgz#d06a66d3ad8214186eda2432ac8b8d81868a571f"
integrity sha512-Skfy0YS3NJ5nV9us0uuPN0HDk1Q4edljaOhRBJGDWs9EBa7ZVMYBHRFlhLvvmwEoaIM9BlH6QJFn9/uZg0bACg==
"@floating-ui/dom@^1.0.1":
version "1.0.7"
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.0.7.tgz#9e8e6615ce03e5ebc6a4ae879640a199a366f86d"
integrity sha512-6RsqvCYe0AYWtsGvuWqCm7mZytnXAZCjWtsWu1Kg8dI3INvj/DbKlDsZO+mKSaQdPT12uxIW9W2dAWJkPx4Y5g==
dependencies:
"@floating-ui/core" "^1.0.2"
"@popperjs/core@npm:@sxzz/popperjs-es@^2.11.7":
version "2.11.7"
resolved "https://registry.yarnpkg.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz#a7f69e3665d3da9b115f9e71671dae1b97e13671"
integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==
"@transloadit/prettier-bytes@0.0.7":
version "0.0.7"
resolved "https://registry.yarnpkg.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz#cdb5399f445fdd606ed833872fa0cabdbc51686b"
integrity sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==
"@types/event-emitter@^0.3.3":
version "0.3.3"
resolved "https://registry.yarnpkg.com/@types/event-emitter/-/event-emitter-0.3.3.tgz#727032a9fc67565f96bbd78b2e2809275c97d7e7"
integrity sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q==
"@types/lodash-es@^4.17.6":
version "4.17.6"
resolved "https://registry.yarnpkg.com/@types/lodash-es/-/lodash-es-4.17.6.tgz#c2ed4c8320ffa6f11b43eb89e9eaeec65966a0a0"
integrity sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==
dependencies:
"@types/lodash" "*"
"@types/lodash@*", "@types/lodash@^4.14.182":
version "4.14.191"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa"
integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
"@types/web-bluetooth@^0.0.16":
version "0.0.16"
resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8"
integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
"@uppy/companion-client@^2.2.2":
version "2.2.2"
resolved "https://registry.yarnpkg.com/@uppy/companion-client/-/companion-client-2.2.2.tgz#c70b42fdcca728ef88b3eebf7ee3e2fa04b4923b"
integrity sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==
dependencies:
"@uppy/utils" "^4.1.2"
namespace-emitter "^2.0.1"
"@uppy/core@^2.1.1":
version "2.3.4"
resolved "https://registry.yarnpkg.com/@uppy/core/-/core-2.3.4.tgz#260b85b6bf3aa03cdc67da231f8c69cfbfdcc84a"
integrity sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==
dependencies:
"@transloadit/prettier-bytes" "0.0.7"
"@uppy/store-default" "^2.1.1"
"@uppy/utils" "^4.1.3"
lodash.throttle "^4.1.1"
mime-match "^1.0.2"
namespace-emitter "^2.0.1"
nanoid "^3.1.25"
preact "^10.5.13"
"@uppy/store-default@^2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@uppy/store-default/-/store-default-2.1.1.tgz#62a656a099bdaa012306e054d093754cb2d36e3e"
integrity sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==
"@uppy/utils@^4.1.2", "@uppy/utils@^4.1.3":
version "4.1.3"
resolved "https://registry.yarnpkg.com/@uppy/utils/-/utils-4.1.3.tgz#9d0be6ece4df25f228d30ef40be0f14208258ce3"
integrity sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==
dependencies:
lodash.throttle "^4.1.1"
"@uppy/xhr-upload@^2.0.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz#0d4e355332fe0c6eb372d7731315e04d02aeeb18"
integrity sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==
dependencies:
"@uppy/companion-client" "^2.2.2"
"@uppy/utils" "^4.1.2"
nanoid "^3.1.25"
"@vitejs/plugin-vue@^3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz#a1484089dd85d6528f435743f84cdd0d215bbb54"
integrity sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==
"@vue/compiler-core@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz#d9311207d96f6ebd5f4660be129fb99f01ddb41b"
integrity sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==
dependencies:
"@babel/parser" "^7.16.4"
"@vue/shared" "3.2.45"
estree-walker "^2.0.2"
source-map "^0.6.1"
"@vue/compiler-dom@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz#c43cc15e50da62ecc16a42f2622d25dc5fd97dce"
integrity sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==
dependencies:
"@vue/compiler-core" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/compiler-sfc@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz#7f7989cc04ec9e7c55acd406827a2c4e96872c70"
integrity sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==
dependencies:
"@babel/parser" "^7.16.4"
"@vue/compiler-core" "3.2.45"
"@vue/compiler-dom" "3.2.45"
"@vue/compiler-ssr" "3.2.45"
"@vue/reactivity-transform" "3.2.45"
"@vue/shared" "3.2.45"
estree-walker "^2.0.2"
magic-string "^0.25.7"
postcss "^8.1.10"
source-map "^0.6.1"
"@vue/compiler-ssr@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz#bd20604b6e64ea15344d5b6278c4141191c983b2"
integrity sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==
dependencies:
"@vue/compiler-dom" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/reactivity-transform@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz#07ac83b8138550c83dfb50db43cde1e0e5e8124d"
integrity sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==
dependencies:
"@babel/parser" "^7.16.4"
"@vue/compiler-core" "3.2.45"
"@vue/shared" "3.2.45"
estree-walker "^2.0.2"
magic-string "^0.25.7"
"@vue/reactivity@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.45.tgz#412a45b574de601be5a4a5d9a8cbd4dee4662ff0"
integrity sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==
dependencies:
"@vue/shared" "3.2.45"
"@vue/runtime-core@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz#7ad7ef9b2519d41062a30c6fa001ec43ac549c7f"
integrity sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==
dependencies:
"@vue/reactivity" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/runtime-dom@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz#1a2ef6ee2ad876206fbbe2a884554bba2d0faf59"
integrity sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==
dependencies:
"@vue/runtime-core" "3.2.45"
"@vue/shared" "3.2.45"
csstype "^2.6.8"
"@vue/server-renderer@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz#ca9306a0c12b0530a1a250e44f4a0abac6b81f3f"
integrity sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==
dependencies:
"@vue/compiler-ssr" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/shared@3.2.45":
version "3.2.45"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
"@vueuse/core@^9.1.0":
version "9.6.0"
resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-9.6.0.tgz#de1d4730849cdbe28a9ebcf6cad167a700919603"
integrity sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==
dependencies:
"@types/web-bluetooth" "^0.0.16"
"@vueuse/metadata" "9.6.0"
"@vueuse/shared" "9.6.0"
vue-demi "*"
"@vueuse/metadata@9.6.0":
version "9.6.0"
resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-9.6.0.tgz#b0a73277538cebef5d477983f74fdd2aa21ce5f9"
integrity sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w==
"@vueuse/shared@9.6.0":
version "9.6.0"
resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-9.6.0.tgz#ce2e0e8124c6bdb1e270fc213e334ccc71dcb951"
integrity sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==
dependencies:
vue-demi "*"
"@wangeditor/basic-modules@^1.1.7":
version "1.1.7"
resolved "https://registry.yarnpkg.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz#a9c3ccf4ef53332f29550d59d3676e15f395946f"
integrity sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==
dependencies:
is-url "^1.2.4"
"@wangeditor/code-highlight@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz#90256857714d5c0cf83ac475aea64db7bf29a7cd"
integrity sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==
dependencies:
prismjs "^1.23.0"
"@wangeditor/core@^1.1.19":
version "1.1.19"
resolved "https://registry.yarnpkg.com/@wangeditor/core/-/core-1.1.19.tgz#f9155f7fd92d03cb1982405b3b82e54c31f1c2b0"
integrity sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==
dependencies:
"@types/event-emitter" "^0.3.3"
event-emitter "^0.3.5"
html-void-elements "^2.0.0"
i18next "^20.4.0"
scroll-into-view-if-needed "^2.2.28"
slate-history "^0.66.0"
"@wangeditor/editor-for-vue@^5.1.12":
version "5.1.12"
resolved "https://registry.yarnpkg.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz#f7d5f239b39cdfc01d31151488de8443fe6edc64"
integrity sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==
"@wangeditor/editor@^5.1.23":
version "5.1.23"
resolved "https://registry.yarnpkg.com/@wangeditor/editor/-/editor-5.1.23.tgz#c9d2007b7cb0ceef6b72692b4ee87b01ee2367b3"
integrity sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==
dependencies:
"@uppy/core" "^2.1.1"
"@uppy/xhr-upload" "^2.0.3"
"@wangeditor/basic-modules" "^1.1.7"
"@wangeditor/code-highlight" "^1.0.3"
"@wangeditor/core" "^1.1.19"
"@wangeditor/list-module" "^1.0.5"
"@wangeditor/table-module" "^1.1.4"
"@wangeditor/upload-image-module" "^1.0.2"
"@wangeditor/video-module" "^1.1.4"
dom7 "^3.0.0"
is-hotkey "^0.2.0"
lodash.camelcase "^4.3.0"
lodash.clonedeep "^4.5.0"
lodash.debounce "^4.0.8"
lodash.foreach "^4.5.0"
lodash.isequal "^4.5.0"
lodash.throttle "^4.1.1"
lodash.toarray "^4.4.0"
nanoid "^3.2.0"
slate "^0.72.0"
snabbdom "^3.1.0"
"@wangeditor/list-module@^1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@wangeditor/list-module/-/list-module-1.0.5.tgz#3fc0b167acddf885536b45fa0c127f9c6adaea33"
integrity sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==
"@wangeditor/table-module@^1.1.4":
version "1.1.4"
resolved "https://registry.yarnpkg.com/@wangeditor/table-module/-/table-module-1.1.4.tgz#757d4a5868b2b658041cd323854a4d707c8347e9"
integrity sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==
"@wangeditor/upload-image-module@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz#89e9b9467e10cbc6b11dc5748e08dd23aaebee30"
integrity sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==
"@wangeditor/video-module@^1.1.4":
version "1.1.4"
resolved "https://registry.yarnpkg.com/@wangeditor/video-module/-/video-module-1.1.4.tgz#b9df1b3ab2cd53f678b19b4d927e200774a6f532"
integrity sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==
ace-builds@^1.13.1, ace-builds@^1.4.13:
version "1.13.1"
resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.13.1.tgz#8afa31a79bea3bb83fbbdf99c4176396a271ceca"
integrity sha512-HvkZv/AhDRSA4k5Co5Dg8dWOTfID0AQ7Sa5cU6V82fz/XfCA0A/icC3sdBoh9yg0WQoJqbFrRYc+ogr/971Vww==
anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
async-validator@^4.2.5:
version "4.2.5"
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339"
integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
base64-arraybuffer@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
"chokidar@>=3.0.0 <4.0.0":
version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
clipboard@^2.0.11:
version "2.0.11"
resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5"
integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==
dependencies:
good-listener "^1.2.2"
select "^1.1.2"
tiny-emitter "^2.0.0"
compute-scroll-into-view@^1.0.20:
version "1.0.20"
resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43"
integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==
css-line-break@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
dependencies:
utrie "^1.0.2"
csstype@^2.6.8:
version "2.6.21"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e"
integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==
d@1, d@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
dependencies:
es5-ext "^0.10.50"
type "^1.0.1"
dayjs@^1.11.3:
version "1.11.6"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.6.tgz#2e79a226314ec3ec904e3ee1dd5a4f5e5b1c7afb"
integrity sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==
delegate@^3.1.2:
version "3.2.0"
resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
dom7@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/dom7/-/dom7-3.0.0.tgz#b861ce5d67a6becd7aaa3ad02942ff14b1240331"
integrity sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==
dependencies:
ssr-window "^3.0.0-alpha.1"
element-plus@^2.2.25:
version "2.2.25"
resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-2.2.25.tgz#ebf1e8a57300eb2d8ed337cf23ee5a566bebc402"
integrity sha512-HC8CWY31e6pPyBpgqI0QnWkBgs0vRzdYnEw3mpdM/NlKfp0PtNFX7NESQLomqoIulH5ftL09hjQmJNvZBQpthQ==
dependencies:
"@ctrl/tinycolor" "^3.4.1"
"@element-plus/icons-vue" "^2.0.6"
"@floating-ui/dom" "^1.0.1"
"@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
"@types/lodash" "^4.14.182"
"@types/lodash-es" "^4.17.6"
"@vueuse/core" "^9.1.0"
async-validator "^4.2.5"
dayjs "^1.11.3"
escape-html "^1.0.3"
lodash "^4.17.21"
lodash-es "^4.17.21"
lodash-unified "^1.0.2"
memoize-one "^6.0.0"
normalize-wheel-es "^1.2.0"
es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14:
version "0.10.62"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
dependencies:
es6-iterator "^2.0.3"
es6-symbol "^3.1.3"
next-tick "^1.1.0"
es6-iterator@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
dependencies:
d "1"
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
es6-symbol@^3.1.1, es6-symbol@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
dependencies:
d "^1.0.1"
ext "^1.1.2"
esbuild-android-64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.16.tgz#0d6a16fa1bea441d5183976f1633183c25a764d5"
integrity sha512-Vwkv/sT0zMSgPSVO3Jlt1pUbnZuOgtOQJkJkyyJFAlLe7BiT8e9ESzo0zQSx4c3wW4T6kGChmKDPMbWTgtliQA==
esbuild-android-arm64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.16.tgz#78643bbbf396d26d20ba1f2fcdff3618c7c033e9"
integrity sha512-lqfKuofMExL5niNV3gnhMUYacSXfsvzTa/58sDlBET/hCOG99Zmeh+lz6kvdgvGOsImeo6J9SW21rFCogNPLxg==
esbuild-darwin-64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.16.tgz#de3e91809dcd1ffb64409e2f990bb86e33e4ffd8"
integrity sha512-wo2VWk/n/9V2TmqUZ/KpzRjCEcr00n7yahEdmtzlrfQ3lfMCf3Wa+0sqHAbjk3C6CKkR3WKK/whkMq5Gj4Da9g==
esbuild-darwin-arm64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.16.tgz#bc9cc8d51109d8e9db4ffe2c064dd53d1eb5a2a6"
integrity sha512-fMXaUr5ou0M4WnewBKsspMtX++C1yIa3nJ5R2LSbLCfJT3uFdcRoU/NZjoM4kOMKyOD9Sa/2vlgN8G07K3SJnw==
esbuild-freebsd-64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.16.tgz#f8c54c679c16e9b20a1bf860ca91ba700d6c9c5d"
integrity sha512-UzIc0xlRx5x9kRuMr+E3+hlSOxa/aRqfuMfiYBXu2jJ8Mzej4lGL7+o6F5hzhLqWfWm1GWHNakIdlqg1ayaTNQ==
esbuild-freebsd-arm64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.16.tgz#dd28a55df0f062e2c1628266008434c32ddc7adf"
integrity sha512-8xyiYuGc0DLZphFQIiYaLHlfoP+hAN9RHbE+Ibh8EUcDNHAqbQgUrQg7pE7Bo00rXmQ5Ap6KFgcR0b4ALZls1g==
esbuild-linux-32@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.16.tgz#41eb0b9b49b3430b9cc4577f1ad3d414ef70f806"
integrity sha512-iGijUTV+0kIMyUVoynK0v+32Oi8yyp0xwMzX69GX+5+AniNy/C/AL1MjFTsozRp/3xQPl7jVux/PLe2ds10/2w==
esbuild-linux-64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.16.tgz#b2fb0c7d49b7a579b2de26fbf4c7afb1835f2073"
integrity sha512-tuSOjXdLw7VzaUj89fIdAaQT7zFGbKBcz4YxbWrOiXkwscYgE7HtTxUavreBbnRkGxKwr9iT/gmeJWNm4djy/g==
esbuild-linux-arm64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.16.tgz#78fed3745b20251fc3bdc8db35ea0781e9b0e7c6"
integrity sha512-mPYksnfHnemNrvjrDhZyixL/AfbJN0Xn9S34ZOHYdh6/jJcNd8iTsv3JwJoEvTJqjMggjMhGUPJAdjnFBHoH8A==
esbuild-linux-arm@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.16.tgz#6963f061a2b778aad7df2bfb6fa32d1904313f7f"
integrity sha512-XKcrxCEXDTOuoRj5l12tJnkvuxXBMKwEC5j0JISw3ziLf0j4zIwXbKbTmUrKFWbo6ZgvNpa7Y5dnbsjVvH39bQ==
esbuild-linux-mips64le@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.16.tgz#e2aed3527e551f8182c6b0fc8a045726fd98ad87"
integrity sha512-kSJO2PXaxfm0pWY39+YX+QtpFqyyrcp0ZeI8QPTrcFVQoWEPiPVtOfTZeS3ZKedfH+Ga38c4DSzmKMQJocQv6A==
esbuild-linux-ppc64le@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.16.tgz#fa3095b24950f63408f46f34b6d9a073ed88d53f"
integrity sha512-NimPikwkBY0yGABw6SlhKrtT35sU4O23xkhlrTT/O6lSxv3Pm5iSc6OYaqVAHWkLdVf31bF4UDVFO+D990WpAA==
esbuild-linux-riscv64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.16.tgz#19c012dcc55c9d6d2a3855aa77c2c5217182cd1e"
integrity sha512-ty2YUHZlwFOwp7pR+J87M4CVrXJIf5ZZtU/umpxgVJBXvWjhziSLEQxvl30SYfUPq0nzeWKBGw5i/DieiHeKfw==
esbuild-linux-s390x@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.16.tgz#aa61f64740e5b983cc3ebb4183a03df4b435a873"
integrity sha512-VkZaGssvPDQtx4fvVdZ9czezmyWyzpQhEbSNsHZZN0BHvxRLOYAQ7sjay8nMQwYswP6O2KlZluRMNPYefFRs+w==
esbuild-netbsd-64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.16.tgz#dffdc104c1f2bafc42be3faa21376c0a092f5702"
integrity sha512-ElQ9rhdY51et6MJTWrCPbqOd/YuPowD7Cxx3ee8wlmXQQVW7UvQI6nSprJ9uVFQISqSF5e5EWpwWqXZsECLvXg==
esbuild-openbsd-64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.16.tgz#e5987f8eda55ea5f6ef6258afb1a838158f890bb"
integrity sha512-KgxMHyxMCT+NdLQE1zVJEsLSt2QQBAvJfmUGDmgEq8Fvjrf6vSKB00dVHUEDKcJwMID6CdgCpvYNt999tIYhqA==
esbuild-sunos-64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.16.tgz#60a085aa4b74d900e4de8c00a9fce207937320a2"
integrity sha512-exSAx8Phj7QylXHlMfIyEfNrmqnLxFqLxdQF6MBHPdHAjT7fsKaX6XIJn+aQEFiOcE4X8e7VvdMCJ+WDZxjSRQ==
esbuild-windows-32@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.16.tgz#24f94e5fb243d211c7db9a12985fd2880ba98ca3"
integrity sha512-zQgWpY5pUCSTOwqKQ6/vOCJfRssTvxFuEkpB4f2VUGPBpdddZfdj8hbZuFRdZRPIVHvN7juGcpgCA/XCF37mAQ==
esbuild-windows-64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.16.tgz#71d24d68d8b652bf5a93a6c7453c334584fa2211"
integrity sha512-HjW1hHRLSncnM3MBCP7iquatHVJq9l0S2xxsHHj4yzf4nm9TU4Z7k4NkeMlD/dHQ4jPlQQhwcMvwbJiOefSuZw==
esbuild-windows-arm64@0.15.16:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.16.tgz#77e804d60dec0390fe8f21401e39b435d5d1b863"
integrity sha512-oCcUKrJaMn04Vxy9Ekd8x23O8LoU01+4NOkQ2iBToKgnGj5eo1vU9i27NQZ9qC8NFZgnQQZg5oZWAejmbsppNA==
esbuild@^0.15.9:
version "0.15.16"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.16.tgz#59324e5667985bf6aee8a91ea576baef6872cf21"
integrity sha512-o6iS9zxdHrrojjlj6pNGC2NAg86ECZqIETswTM5KmJitq+R1YmahhWtMumeQp9lHqJaROGnsBi2RLawGnfo5ZQ==
optionalDependencies:
"@esbuild/android-arm" "0.15.16"
"@esbuild/linux-loong64" "0.15.16"
esbuild-android-64 "0.15.16"
esbuild-android-arm64 "0.15.16"
esbuild-darwin-64 "0.15.16"
esbuild-darwin-arm64 "0.15.16"
esbuild-freebsd-64 "0.15.16"
esbuild-freebsd-arm64 "0.15.16"
esbuild-linux-32 "0.15.16"
esbuild-linux-64 "0.15.16"
esbuild-linux-arm "0.15.16"
esbuild-linux-arm64 "0.15.16"
esbuild-linux-mips64le "0.15.16"
esbuild-linux-ppc64le "0.15.16"
esbuild-linux-riscv64 "0.15.16"
esbuild-linux-s390x "0.15.16"
esbuild-netbsd-64 "0.15.16"
esbuild-openbsd-64 "0.15.16"
esbuild-sunos-64 "0.15.16"
esbuild-windows-32 "0.15.16"
esbuild-windows-64 "0.15.16"
esbuild-windows-arm64 "0.15.16"
escape-html@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
estree-walker@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
event-emitter@^0.3.5:
version "0.3.5"
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
dependencies:
d "1"
es5-ext "~0.10.14"
ext@^1.1.2:
version "1.7.0"
resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
dependencies:
type "^2.7.2"
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
good-listener@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==
dependencies:
delegate "^3.1.2"
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
dependencies:
function-bind "^1.1.1"
html-void-elements@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f"
integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
html2canvas@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
dependencies:
css-line-break "^2.1.0"
text-segmentation "^1.0.3"
i18next@^20.4.0:
version "20.6.1"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-20.6.1.tgz#535e5f6e5baeb685c7d25df70db63bf3cc0aa345"
integrity sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==
dependencies:
"@babel/runtime" "^7.12.0"
immer@^9.0.6:
version "9.0.16"
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.16.tgz#8e7caab80118c2b54b37ad43e05758cdefad0198"
integrity sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==
immutable@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef"
integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-core-module@^2.9.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
dependencies:
has "^1.0.3"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-hotkey@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.2.0.tgz#1835a68171a91e5c9460869d96336947c8340cef"
integrity sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-plain-object@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
is-url@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
lodash-es@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
lodash-unified@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894"
integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
lodash.foreach@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==
lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
lodash.toarray@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
integrity sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==
lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
magic-string@^0.25.7:
version "0.25.9"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
dependencies:
sourcemap-codec "^1.4.8"
memoize-one@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
mime-match@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/mime-match/-/mime-match-1.0.2.tgz#3f87c31e9af1a5fd485fb9db134428b23bbb7ba8"
integrity sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==
dependencies:
wildcard "^1.1.0"
namespace-emitter@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz#978d51361c61313b4e6b8cf6f3853d08dfa2b17c"
integrity sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==
nanoid@^3.1.25, nanoid@^3.2.0, nanoid@^3.3.4:
version "3.3.4"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
next-tick@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
normalize-wheel-es@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz#0fa2593d619f7245a541652619105ab076acf09e"
integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
postcss@^8.1.10, postcss@^8.4.18:
version "8.4.19"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc"
integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==
dependencies:
nanoid "^3.3.4"
picocolors "^1.0.0"
source-map-js "^1.0.2"
preact@^10.5.13:
version "10.11.3"
resolved "https://registry.yarnpkg.com/preact/-/preact-10.11.3.tgz#8a7e4ba19d3992c488b0785afcc0f8aa13c78d19"
integrity sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==
prismjs@^1.23.0:
version "1.29.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
regenerator-runtime@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
resize-observer-polyfill@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
resolve@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
dependencies:
is-core-module "^2.9.0"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
rollup@^2.79.1:
version "2.79.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
optionalDependencies:
fsevents "~2.3.2"
sass@^1.56.1:
version "1.56.1"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.56.1.tgz#94d3910cd468fd075fa87f5bb17437a0b617d8a7"
integrity sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
scroll-into-view-if-needed@^2.2.28:
version "2.2.31"
resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587"
integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==
dependencies:
compute-scroll-into-view "^1.0.20"
select@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==
slate-history@^0.66.0:
version "0.66.0"
resolved "https://registry.yarnpkg.com/slate-history/-/slate-history-0.66.0.tgz#ac63fddb903098ceb4c944433e3f75fe63acf940"
integrity sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==
dependencies:
is-plain-object "^5.0.0"
slate@^0.72.0:
version "0.72.8"
resolved "https://registry.yarnpkg.com/slate/-/slate-0.72.8.tgz#5a018edf24e45448655293a68bfbcf563aa5ba81"
integrity sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==
dependencies:
immer "^9.0.6"
is-plain-object "^5.0.0"
tiny-warning "^1.0.3"
snabbdom@^3.1.0:
version "3.5.1"
resolved "https://registry.yarnpkg.com/snabbdom/-/snabbdom-3.5.1.tgz#25f80ef15b194baea703d9d5441892e369de18e1"
integrity sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
source-map@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
sourcemap-codec@^1.4.8:
version "1.4.8"
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
ssr-window@^3.0.0-alpha.1:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ssr-window/-/ssr-window-3.0.0.tgz#fd5b82801638943e0cc704c4691801435af7ac37"
integrity sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
text-segmentation@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
dependencies:
utrie "^1.0.2"
tiny-emitter@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
tiny-warning@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
type@^1.0.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
type@^2.7.2:
version "2.7.2"
resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
utrie@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
dependencies:
base64-arraybuffer "^1.0.2"
vite@^3.2.3:
version "3.2.4"
resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.4.tgz#d8c7892dd4268064e04fffbe7d866207dd24166e"
integrity sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==
dependencies:
esbuild "^0.15.9"
postcss "^8.4.18"
resolve "^1.22.1"
rollup "^2.79.1"
optionalDependencies:
fsevents "~2.3.2"
vue-demi@*:
version "0.13.11"
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99"
integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
vue3-ace-editor@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/vue3-ace-editor/-/vue3-ace-editor-2.2.2.tgz#7fd694df2f556e8859edd2322703e039461c9ecc"
integrity sha512-fZ6OWosbU+odLrtrcGC/536QjCigujYJB0Hf6/tBp+ef/ohTadwQAqyBlVzOmvrmzZyubphpV9zkaZcx5Fuivw==
dependencies:
ace-builds "^1.4.13"
resize-observer-polyfill "^1.5.1"
vue "^3.2.26"
vue@^3.2.26, vue@^3.2.41:
version "3.2.45"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.45.tgz#94a116784447eb7dbd892167784619fef379b3c8"
integrity sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==
dependencies:
"@vue/compiler-dom" "3.2.45"
"@vue/compiler-sfc" "3.2.45"
"@vue/runtime-dom" "3.2.45"
"@vue/server-renderer" "3.2.45"
"@vue/shared" "3.2.45"
wildcard@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5"
integrity sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==
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