no message
This commit is contained in:
parent
4f39e2597f
commit
363ae88f50
@ -1,47 +0,0 @@
|
|||||||
<!--
|
|
||||||
* @Descripttion: 页面头部样式组件
|
|
||||||
-->
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="sc-page-header">
|
|
||||||
<div v-if="icon" class="sc-page-header__icon">
|
|
||||||
<span>
|
|
||||||
<el-icon><component :is="icon" /></el-icon>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="sc-page-header__title">
|
|
||||||
<h2>{{ title }}</h2>
|
|
||||||
<p v-if="description || $slots.default">
|
|
||||||
<slot>
|
|
||||||
{{ description }}
|
|
||||||
</slot>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div v-if="$slots.main" class="sc-page-header__main">
|
|
||||||
<slot name="main"></slot>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
title: { type: String, required: true, default: "" },
|
|
||||||
description: { type: String, default: "" },
|
|
||||||
icon: { type: String, default: "" },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.sc-page-header {background: #fff;border-bottom: 1px solid #e6e6e6;padding:20px 25px;display: flex;}
|
|
||||||
.sc-page-header__icon {width: 50px;}
|
|
||||||
.sc-page-header__icon span {display: inline-block;width: 30px;height: 30px;background: #409EFF;border-radius: 40%;display: flex;align-items: center;justify-content: center;}
|
|
||||||
.sc-page-header__icon span i {color: #fff;font-size: 14px;}
|
|
||||||
.sc-page-header__title {flex: 1;}
|
|
||||||
.sc-page-header__title h2 {font-size: 17px;color: #3c4a54;font-weight: bold;margin-top: 3px;}
|
|
||||||
.sc-page-header__title p {font-size: 13px;color: #999;margin-top: 15px;}
|
|
||||||
|
|
||||||
[data-theme='dark'] .sc-page-header {background:#2b2b2b ;border-color:var(--el-border-color-base);}
|
|
||||||
[data-theme='dark'] .sc-page-header__title h2 {color: #d0d0d0;}
|
|
||||||
</style>
|
|
@ -1,22 +1,17 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Descripttion: 图标选择器组件
|
* @Descripttion: 图标选择器组件
|
||||||
* @version: 2.0
|
|
||||||
* @Author: sakuya
|
|
||||||
* @Date: 2021年7月27日10:02:46
|
|
||||||
* @LastEditors: sakuya
|
|
||||||
* @LastEditTime: 2022年6月6日13:48:49
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="sc-icon-select">
|
<div class="x-icon-select">
|
||||||
<div class="sc-icon-select__wrapper" :class="{'hasValue':value}" @click="open">
|
<div class="x-icon-select__wrapper" :class="{'hasValue':value}" @click="open">
|
||||||
<el-input :prefix-icon="value||'el-icon-plus'" v-model="value" :disabled="disabled" readonly></el-input>
|
<el-input :prefix-icon="value||'el-icon-plus'" v-model="value" :disabled="disabled" readonly></el-input>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog title="图标选择器" v-model="dialogVisible" :width="760" destroy-on-close append-to-body>
|
<el-dialog title="图标选择器" v-model="dialogVisible" :width="760" destroy-on-close append-to-body>
|
||||||
<div class="sc-icon-select__dialog" style="margin: -20px 0 -10px 0;">
|
<div class="x-icon-select__dialog" style="margin: -20px 0 -10px 0;">
|
||||||
<el-form :rules="{}">
|
<el-form :rules="{}">
|
||||||
<el-form-item prop="searchText">
|
<el-form-item prop="searchText">
|
||||||
<el-input class="sc-icon-select__search-input" prefix-icon="el-icon-search" v-model="searchText" placeholder="搜索" size="large" clearable/>
|
<el-input class="x-icon-select__search-input" prefix-icon="el-icon-search" v-model="searchText" placeholder="搜索" size="large" clearable/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
@ -24,7 +19,7 @@
|
|||||||
<template #label>
|
<template #label>
|
||||||
{{item.name}} <el-tag size="small" type="info">{{item.icons.length}}</el-tag>
|
{{item.name}} <el-tag size="small" type="info">{{item.icons.length}}</el-tag>
|
||||||
</template>
|
</template>
|
||||||
<div class="sc-icon-select__list">
|
<div class="x-icon-select__list">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<ul @click="selectIcon">
|
<ul @click="selectIcon">
|
||||||
<el-empty v-if="item.icons.length==0" :image-size="100" description="未查询到相关图标" />
|
<el-empty v-if="item.icons.length==0" :image-size="100" description="未查询到相关图标" />
|
||||||
@ -111,18 +106,18 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.sc-icon-select {display: inline-flex;}
|
.x-icon-select {display: inline-flex;}
|
||||||
.sc-icon-select__wrapper {cursor: pointer;display: inline-flex;}
|
.x-icon-select__wrapper {cursor: pointer;display: inline-flex;}
|
||||||
.sc-icon-select__wrapper:deep(.el-input__wrapper).is-focus {box-shadow: 0 0 0 1px var(--el-input-hover-border-color) inset;}
|
.x-icon-select__wrapper:deep(.el-input__wrapper).is-focus {box-shadow: 0 0 0 1px var(--el-input-hover-border-color) inset;}
|
||||||
.sc-icon-select__wrapper:deep(.el-input__inner) {flex-grow:0;width: 0;}
|
.x-icon-select__wrapper:deep(.el-input__inner) {flex-grow:0;width: 0;}
|
||||||
.sc-icon-select__wrapper:deep(.el-input__icon) {margin: 0;font-size: 16px;}
|
.x-icon-select__wrapper:deep(.el-input__icon) {margin: 0;font-size: 16px;}
|
||||||
.sc-icon-select__wrapper.hasValue:deep(.el-input__icon) {color: var(--el-text-color-regular);}
|
.x-icon-select__wrapper.hasValue:deep(.el-input__icon) {color: var(--el-text-color-regular);}
|
||||||
|
|
||||||
.sc-icon-select__list {height:270px;overflow: auto;}
|
.x-icon-select__list {height:270px;overflow: auto;}
|
||||||
.sc-icon-select__list ul {}
|
.x-icon-select__list ul {}
|
||||||
.sc-icon-select__list li {display: inline-block;width:80px;height:80px;margin:5px;vertical-align: top;transition: all 0.1s;border-radius: 4px;position: relative;}
|
.x-icon-select__list li {display: inline-block;width:80px;height:80px;margin:5px;vertical-align: top;transition: all 0.1s;border-radius: 4px;position: relative;}
|
||||||
.sc-icon-select__list li span {position: absolute;top:0;left:0;right:0;bottom:0;z-index: 1;cursor: pointer;}
|
.x-icon-select__list li span {position: absolute;top:0;left:0;right:0;bottom:0;z-index: 1;cursor: pointer;}
|
||||||
.sc-icon-select__list li i {display: inline-block;width: 100%;height:100%;font-size: 26px;color: #6d7882;display: flex;justify-content: center;align-items: center;border-radius: 4px;}
|
.x-icon-select__list li i {display: inline-block;width: 100%;height:100%;font-size: 26px;color: #6d7882;display: flex;justify-content: center;align-items: center;border-radius: 4px;}
|
||||||
.sc-icon-select__list li:hover {box-shadow: 0 0 1px 4px var(--el-color-primary);background: var(--el-color-primary-light-9);}
|
.x-icon-select__list li:hover {box-shadow: 0 0 1px 4px var(--el-color-primary);background: var(--el-color-primary-light-9);}
|
||||||
.sc-icon-select__list li:hover i {color: var(--el-color-primary);}
|
.x-icon-select__list li:hover i {color: var(--el-color-primary);}
|
||||||
</style>
|
</style>
|
47
src/components/xPageHeader/index.vue
Normal file
47
src/components/xPageHeader/index.vue
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<!--
|
||||||
|
* @Descripttion: 页面头部样式组件
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="x-page-header">
|
||||||
|
<div v-if="icon" class="x-page-header__icon">
|
||||||
|
<span>
|
||||||
|
<el-icon><component :is="icon" /></el-icon>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="x-page-header__title">
|
||||||
|
<h2>{{ title }}</h2>
|
||||||
|
<p v-if="description || $slots.default">
|
||||||
|
<slot>
|
||||||
|
{{ description }}
|
||||||
|
</slot>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div v-if="$slots.main" class="x-page-header__main">
|
||||||
|
<slot name="main"></slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
title: { type: String, required: true, default: "" },
|
||||||
|
description: { type: String, default: "" },
|
||||||
|
icon: { type: String, default: "" },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.x-page-header {background: #fff;border-bottom: 1px solid #e6e6e6;padding:20px 25px;display: flex;}
|
||||||
|
.x-page-header__icon {width: 50px;}
|
||||||
|
.x-page-header__icon span {display: inline-block;width: 30px;height: 30px;background: #409EFF;border-radius: 40%;display: flex;align-items: center;justify-content: center;}
|
||||||
|
.x-page-header__icon span i {color: #fff;font-size: 14px;}
|
||||||
|
.x-page-header__title {flex: 1;}
|
||||||
|
.x-page-header__title h2 {font-size: 17px;color: #3c4a54;font-weight: bold;margin-top: 3px;}
|
||||||
|
.x-page-header__title p {font-size: 13px;color: #999;margin-top: 15px;}
|
||||||
|
|
||||||
|
[data-theme='dark'] .x-page-header {background:#2b2b2b ;border-color:var(--el-border-color-base);}
|
||||||
|
[data-theme='dark'] .x-page-header__title h2 {color: #d0d0d0;}
|
||||||
|
</style>
|
@ -1,11 +1,9 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Descripttion: 生成二维码组件
|
* @Descripttion: 生成二维码组件
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<img ref="img"/>
|
<img ref="img"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import QRcode from "qrcodejs2"
|
import QRcode from "qrcodejs2"
|
||||||
|
|
||||||
@ -78,6 +76,3 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
|
||||||
</style>
|
|
@ -1,10 +1,9 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Descripttion: 异步选择器
|
* @Descripttion: 异步选择器
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="sc-select">
|
<div class="x-select">
|
||||||
<div v-if="initloading" class="sc-select-loading">
|
<div v-if="initloading" class="x-select-loading">
|
||||||
<el-icon class="is-loading"><el-icon-loading /></el-icon>
|
<el-icon class="is-loading"><el-icon-loading /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<el-select v-bind="$attrs" :loading="loading" @visible-change="visibleChange">
|
<el-select v-bind="$attrs" :loading="loading" @visible-change="visibleChange">
|
||||||
@ -14,10 +13,8 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import config from "@/config/select";
|
import config from "@/config/select";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
apiObj: { type: Object, default: () => {} },
|
apiObj: { type: Object, default: () => {} },
|
||||||
@ -78,9 +75,9 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.sc-select {display: inline-block;position: relative;}
|
.x-select {display: inline-block;position: relative;}
|
||||||
.sc-select-loading {position: absolute;top:0;left:0;right:0;bottom:0;background: #fff;z-index: 100;border-radius: 5px;border: 1px solid #EBEEF5;display: flex;align-items: center;padding-left:10px;}
|
.x-select-loading {position: absolute;top:0;left:0;right:0;bottom:0;background: #fff;z-index: 100;border-radius: 5px;border: 1px solid #EBEEF5;display: flex;align-items: center;padding-left:10px;}
|
||||||
.sc-select-loading i {font-size: 14px;}
|
.x-select-loading i {font-size: 14px;}
|
||||||
|
|
||||||
.dark .sc-select-loading {background: var(--el-bg-color-overlay);border-color: var(--el-border-color-light);}
|
.dark .x-select-loading {background: var(--el-bg-color-overlay);border-color: var(--el-border-color-light);}
|
||||||
</style>
|
</style>
|
@ -1,40 +1,38 @@
|
|||||||
<template>
|
<template>
|
||||||
<div @click="handleClick(row, item.options)" style="cursor: pointer; ">
|
<div>
|
||||||
<x-avatar v-if="item.columntype=='avatar' || item.component=='avatar'" :name="item.name" :options="item.options" v-model="row"></x-avatar>
|
<x-avatar v-if="item.columntype=='avatar' || item.component=='avatar'" :name="item.name" :options="item.options" v-model="row"></x-avatar>
|
||||||
<el-badge v-else-if="item.columntype=='badge'" :value="row[item.name]" :type="item.options.type || 'warning'"></el-badge>
|
<el-badge v-else-if="item.columntype=='badge' || item.columntype=='imagegroup'" :value="getType(row[item.name])" :type="item.options.type || 'warning'"></el-badge>
|
||||||
<span style="border: none; background: none;" v-else-if="item.columntype=='tag'" v-time.tip="row[item.name]"></span>
|
<el-image v-else-if="item.columntype=='image'" :preview-src-list="[getImg(row[item.name])]" :preview-teleported="true" hide-on-click-modal="true" lazy="true" style="max-width: 60px; height: 26px; border-radius: 2px;" fit="cover" :src="getImg(row[item.name])">
|
||||||
<el-badge v-else-if="item.columntype=='imagegroup'" :value="row[item.name].length" :type="item.options.type || 'warning'"></el-badge>
|
|
||||||
<el-image v-else-if="item.columntype=='image'" :preview-src-list="[getImg(row[item.name])]" :preview-teleported="true" hide-on-click-modal="true" lazy="true" style="width: 30px; height: 30px" fit="cover" :src="getImg(row[item.name])">
|
|
||||||
<template #error>
|
<template #error>
|
||||||
<div class="image-slot">
|
<div class="image-slot">
|
||||||
无图
|
无图
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-image>
|
</el-image>
|
||||||
|
|
||||||
|
<input v-else-if="item.columntype=='input'" @click="handleClick(row, item)" style="cursor: pointer; " class="el-input__inner" type="text" readonly :value="row[item.name]">
|
||||||
|
|
||||||
<p v-else-if="item.columntype=='status'">
|
<p v-else-if="item.columntype=='status'">
|
||||||
<x-status-indicator v-for="op in item.options.items" :key="op.value" pulse :type="op.type || 'success'" :label="op.label" v-show="op.value==row[item.name]">
|
<x-status-indicator @click="handleClick(row, item)" v-for="op in item.options.items" :key="op.value" pulse :type="op.type || 'success'" :label="op.label" v-show="op.value==row[item.name]">
|
||||||
</x-status-indicator>
|
</x-status-indicator>
|
||||||
</p>
|
</p>
|
||||||
<p v-else-if="item.columntype=='input'">
|
|
||||||
<input class="el-input__inner" type="text" readonly :value="row[item.name]">
|
|
||||||
</p>
|
|
||||||
<p v-else-if="item.columntype=='button' && item.options.items && item.options.items.length>0">
|
<p v-else-if="item.columntype=='button' && item.options.items && item.options.items.length>0">
|
||||||
<el-button v-for="op in item.options.items" :key="op.value" :type="op.type || 'warning'" style="margin: 0;" :size="op.size || 'small'" :icon="op.icon" v-show="op.value==row[item.name]">
|
<el-button @click="handleClick(row, item)" v-for="op in item.options.items" :key="op.value" :type="op.type || 'warning'" style="margin: 0;" :size="op.size || 'small'" :link="op.link" :icon="op.icon" v-show="op.value==row[item.name]">
|
||||||
{{ op.label }}
|
{{ op.label }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p v-else-if="item.columntype=='button'">
|
<p v-else-if="item.columntype=='button'">
|
||||||
<el-button :type="item.options.type || 'warning'" :size="item.options.size || 'small'" :icon="item.options.icon">
|
<el-button @click="handleClick(row, item)" :type="item.options.type || 'warning'" :size="item.options.size || 'small'" :icon="item.options.icon">
|
||||||
{{ row[item.name] }}
|
{{ row[item.name] }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</p>
|
</p>
|
||||||
<slot v-else-if="item.columntype=='select'" :name="item.name" v-bind="scope">
|
|
||||||
<p style="overflow:hidden; white-space: nowrap; text-overflow: ellipsis; -o-text-overflow:ellipsis;" :title="row[item.name]">
|
<p v-else-if="item.columntype=='tag'" @click="handleClick(row, item)" v-time.tip="row[item.name]"></p>
|
||||||
{{ getNameByValue( row[item.name], item.options.items) }}
|
|
||||||
</p>
|
|
||||||
</slot>
|
|
||||||
<slot v-else :name="item.name" v-bind="scope">
|
<slot v-else :name="item.name" v-bind="scope">
|
||||||
{{row[item.name]}}
|
{{ item.columntype=='select' && item.options && item.options.items ? getNameByValue( row[item.name], item.options.items ) : row[item.name] }}
|
||||||
</slot>
|
</slot>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -60,11 +58,20 @@
|
|||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleClick(row, options){
|
handleClick(row, item){
|
||||||
if (options && options.updataname) {
|
if (item.options && (item.options.updataname || item.options.updateremoteurl)) {
|
||||||
this.$emit('xtableupdate', row, {name:options.updataname, remoteurl:'system/table/getUpdate?name='+options.updataname});
|
this.$emit('xtableupdate', row, {
|
||||||
|
name:item.options.updataname || item.name,
|
||||||
|
remoteurl: item.options.updateremoteurl || 'system/table/getUpdate?name='+item.options.updataname
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getType(value) {
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
return value.length;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
},
|
||||||
getNameByValue (value, degrees) {
|
getNameByValue (value, degrees) {
|
||||||
const degree = degrees.find(degree => degree.value === value);
|
const degree = degrees.find(degree => degree.value === value);
|
||||||
return degree ? (degree.name?degree.name:degree.label) : value;
|
return degree ? (degree.name?degree.name:degree.label) : value;
|
||||||
|
@ -182,7 +182,7 @@
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
xtableupdate(row, options=[]){
|
xtableupdate(row, options=[]){
|
||||||
this.tableUpdateKey = options.name;
|
this.tableUpdateKey = options.name || this.name;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.xtableupdate.open().setData(row).setConfig(options);
|
this.$refs.xtableupdate.open().setData(row).setConfig(options);
|
||||||
})
|
})
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="sc-video" ref="scVideo"></div>
|
<div class="x-video" ref="xVideo"></div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -43,7 +43,7 @@
|
|||||||
methods: {
|
methods: {
|
||||||
init(){
|
init(){
|
||||||
this.player = new Player({
|
this.player = new Player({
|
||||||
el: this.$refs.scVideo,
|
el: this.$refs.xVideo,
|
||||||
url: this.src,
|
url: this.src,
|
||||||
autoplay: this.autoplay,
|
autoplay: this.autoplay,
|
||||||
loop: this.loop,
|
loop: this.loop,
|
||||||
@ -55,7 +55,7 @@
|
|||||||
},
|
},
|
||||||
initHls(){
|
initHls(){
|
||||||
this.player = new HlsPlayer({
|
this.player = new HlsPlayer({
|
||||||
el: this.$refs.scVideo,
|
el: this.$refs.xVideo,
|
||||||
url: this.src,
|
url: this.src,
|
||||||
autoplay: this.autoplay,
|
autoplay: this.autoplay,
|
||||||
loop: this.loop,
|
loop: this.loop,
|
||||||
@ -72,8 +72,8 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.sc-video:deep(.danmu) > * {color: #fff;font-size:20px;font-weight:bold;text-shadow:1px 1px 0 #000,-1px -1px 0 #000,-1px 1px 0 #000,1px -1px 0 #000;}
|
.x-video:deep(.danmu) > * {color: #fff;font-size:20px;font-weight:bold;text-shadow:1px 1px 0 #000,-1px -1px 0 #000,-1px 1px 0 #000,1px -1px 0 #000;}
|
||||||
.sc-video:deep(.xgplayer-controls) {background-image: linear-gradient(180deg, transparent, rgba(0,0,0,0.3));}
|
.x-video:deep(.xgplayer-controls) {background-image: linear-gradient(180deg, transparent, rgba(0,0,0,0.3));}
|
||||||
.sc-video:deep(.xgplayer-progress-tip) {border:0;color: #fff;background: rgba(0,0,0,.5);line-height: 25px;padding: 0 10px;border-radius: 25px;}
|
.x-video:deep(.xgplayer-progress-tip) {border:0;color: #fff;background: rgba(0,0,0,.5);line-height: 25px;padding: 0 10px;border-radius: 25px;}
|
||||||
.sc-video:deep(.xgplayer-enter-spinner) {width: 50px;height: 50px;}
|
.x-video:deep(.xgplayer-enter-spinner) {width: 50px;height: 50px;}
|
||||||
</style>
|
</style>
|
@ -51,7 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<el-dialog v-model="showWechatLogin" :title="$t('login.wechatLoginTitle')" :width="400" destroy-on-close>
|
<el-dialog v-model="showWechatLogin" :title="$t('login.wechatLoginTitle')" :width="400" destroy-on-close>
|
||||||
<div class="qrCodeLogin">
|
<div class="qrCodeLogin">
|
||||||
<sc-qr-code class="qrCode" :text="WechatLoginCode" :size="200"></sc-qr-code>
|
<x-qr-code class="qrCode" :text="WechatLoginCode" :size="200"></x-qr-code>
|
||||||
<p class="msg">{{$tc('login.wechatLoginMsg', 1)}}</p>
|
<p class="msg">{{$tc('login.wechatLoginMsg', 1)}}</p>
|
||||||
<div class="qrCodeLogin-result" v-if="isWechatLoginResult">
|
<div class="qrCodeLogin-result" v-if="isWechatLoginResult">
|
||||||
<el-result icon="success" :title="$tc('login.wechatLoginResult', 1)" :sub-title="$tc('login.wechatLoginResult', 2)"></el-result>
|
<el-result icon="success" :title="$tc('login.wechatLoginResult', 1)" :sub-title="$tc('login.wechatLoginResult', 2)"></el-result>
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
<div class="el-form-item-msg">系统唯一且与内置组件名一致,否则导致缓存失效。如类型为Iframe的菜单,别名将代替源地址显示在地址栏</div>
|
<div class="el-form-item-msg">系统唯一且与内置组件名一致,否则导致缓存失效。如类型为Iframe的菜单,别名将代替源地址显示在地址栏</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="菜单图标" prop="meta.icon">
|
<el-form-item label="菜单图标" prop="meta.icon">
|
||||||
<sc-icon-select v-model="form.meta.icon" clearable></sc-icon-select>
|
<x-icon-select v-model="form.meta.icon" clearable></x-icon-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="路由地址" prop="path">
|
<el-form-item label="路由地址" prop="path">
|
||||||
<el-input v-model="form.path" clearable placeholder="路由地址"></el-input>
|
<el-input v-model="form.path" clearable placeholder="路由地址"></el-input>
|
||||||
@ -94,11 +94,11 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import scIconSelect from '@/components/scIconSelect'
|
import xIconSelect from '@/components/xIconSelect'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
scIconSelect
|
xIconSelect
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
menu: { type: Object, default: () => {} },
|
menu: { type: Object, default: () => {} },
|
||||||
|
@ -1,16 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
|
|
||||||
<div class="crm-update">
|
<x-page-header title="系统更新" description="你可以随时检查使用系统是否是最新版本,并进行一键升级" icon="el-icon-setting"></x-page-header>
|
||||||
<div class="title-wrap">
|
<div class="x-update">
|
||||||
<i class="el-icon-setting"/>
|
|
||||||
<div>
|
|
||||||
<p class="title">系统更新</p>
|
|
||||||
<p class="description">你可以随时检查使用系统是否是最新版本,并进行一键升级</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<el-alert title="当前为更新系统核心架构; 更新前,您需要备份您的数据,防止数据丢失。" type="warning" style="padding: 10px 0;" />
|
||||||
<el-alert title="更新前,您需要备份您的数据,防止数据丢失。" type="warning" />
|
<el-alert title="相关应用请单独更新, 框架更新可能导致部分应用报错。" type="error" style="padding: 10px 0;" />
|
||||||
|
|
||||||
|
|
||||||
<!-- 登录状态 -->
|
<!-- 登录状态 -->
|
||||||
@ -20,7 +14,6 @@
|
|||||||
<img v-if="userData.img" :src="userData.img" alt="">
|
<img v-if="userData.img" :src="userData.img" alt="">
|
||||||
<span v-else>{{ userData.name }}</span>
|
<span v-else>{{ userData.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 信息 -->
|
<!-- 信息 -->
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span class="name">{{ userData.name }}</span>
|
<span class="name">{{ userData.name }}</span>
|
||||||
@ -63,116 +56,35 @@
|
|||||||
<!-- 检查更新后展示 -->
|
<!-- 检查更新后展示 -->
|
||||||
<div v-if="isCheckUpdate" class>
|
<div v-if="isCheckUpdate" class>
|
||||||
<!-- 已经是最新版本 -->
|
<!-- 已经是最新版本 -->
|
||||||
|
|
||||||
<div v-if="isNewest" class="version">
|
<div v-if="isNewest" class="version">
|
||||||
<p class="text">您当前是最新版本</p>
|
<p class="text">您当前是最新版本</p>
|
||||||
当前版本:{{ version }}
|
当前版本:{{ version }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 有新版本 -->
|
<!-- 有新版本 -->
|
||||||
<div
|
<div v-loading="updateLoading" v-else :element-loading-text="progressTooltip" class="version" element-loading-background="#fff">
|
||||||
v-loading="updateLoading"
|
|
||||||
v-else
|
|
||||||
:element-loading-text="progressTooltip"
|
|
||||||
class="version"
|
|
||||||
element-loading-background="#fff"
|
|
||||||
>
|
|
||||||
<p class="text">有新的版本可升级</p>
|
<p class="text">有新的版本可升级</p>
|
||||||
当前版本:{{ serverVersion }},您可以升级到
|
当前版本:{{ serverVersion }},您可以升级到
|
||||||
<span>{{ version }}</span>
|
<span>{{ version }}</span>
|
||||||
|
|
||||||
<div class="update-wrap">
|
<div class="update-wrap">
|
||||||
<el-badge :value="1" class="update-badge">
|
<el-badge :value="1" class="update-badge">
|
||||||
<el-button :type="isCanUpdate ? 'primary' : 'info'" @click="updateHandle">现在更新</el-button>
|
<el-button :type="isCanUpdate ? 'primary' : 'info'" @click="updateHandle">现在更新</el-button>
|
||||||
</el-badge>
|
</el-badge>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 备份 -->
|
|
||||||
<div class="data-back">
|
|
||||||
<p class="text">数据备份</p>
|
|
||||||
<div v-loading="backLoading" class="box" element-loading-text="努力备份中">
|
|
||||||
<el-button type="primary" plain @click="queryDatabaseHandle">查询数据库</el-button>
|
|
||||||
<el-button type="primary" plain @click="isCustom = 0">自定义数据库</el-button>
|
|
||||||
<div v-if="isCustom === 1" class="database-wrap">
|
|
||||||
<el-select v-model="database" placeholder="请选择">
|
|
||||||
<el-option v-for="(item, index) in databaseList" :key="index" :value="item"/>
|
|
||||||
</el-select>
|
|
||||||
<p class="way">
|
|
||||||
选择备份方式:
|
|
||||||
<el-radio v-model="backupType" :label="1">本地备份</el-radio>
|
|
||||||
</p>
|
|
||||||
<el-button type="primary" @click="dataBackHandle">开始备份</el-button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 自定义数据库 -->
|
|
||||||
<el-form
|
|
||||||
v-if="isCustom === 0"
|
|
||||||
ref="databaseForm"
|
|
||||||
:model="customDatabase"
|
|
||||||
:rules="databaseRules"
|
|
||||||
status-icon
|
|
||||||
class="custom1"
|
|
||||||
>
|
|
||||||
<el-form-item prop="host">
|
|
||||||
<el-input v-model="customDatabase.host" autocomplete="off" placeholder="请输入数据库地址"/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item prop="port">
|
|
||||||
<el-input
|
|
||||||
v-model.number="customDatabase.port"
|
|
||||||
autocomplete="off"
|
|
||||||
placeholder="请输入数据库端口号"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item prop="databaseName">
|
|
||||||
<el-input
|
|
||||||
v-model="customDatabase.databaseName"
|
|
||||||
autocomplete="off"
|
|
||||||
placeholder="请输入数据库名称"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item prop="DBUsername">
|
|
||||||
<el-input
|
|
||||||
v-model="customDatabase.DBUsername"
|
|
||||||
autocomplete="off"
|
|
||||||
placeholder="请输入数据库用户名"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item prop="DBPassword">
|
|
||||||
<el-input
|
|
||||||
v-model="customDatabase.DBPassword"
|
|
||||||
type="password"
|
|
||||||
autocomplete="off"
|
|
||||||
placeholder="请输入数据库密码"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-button type="primary" @click="submitForm">开始备份</el-button>
|
|
||||||
</el-form>
|
|
||||||
|
|
||||||
<div v-if="isBackSuccess" class="back-success">备份成功!文件路径:{{ sql }}</div>
|
|
||||||
<div class="explain">
|
|
||||||
<p>备份说明:</p>
|
|
||||||
<p>1、本地备份将只备份SQL,并被备份到同级目录下</p>
|
|
||||||
<p>2、云端备份数据将备份到云端,在个人中心可以查看备份记录,下载备份数据</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- 登录X-PHP弹窗 -->
|
<!-- 登录X-PHP弹窗 -->
|
||||||
<el-dialog v-model="dialogVisible" title="登录X-PHP账号" width="500px">
|
<el-dialog v-model="dialogVisible" class=“ title="" width="500px">
|
||||||
<!-- <div slot="title" class="el-dialog__title">
|
<template #header="{}">
|
||||||
登录X-PHP账号
|
<div class="el-dialog__title">
|
||||||
<p class="description">您可以登录X-PHP账号来进行一键升级</p>
|
登录X-PHP账号
|
||||||
</div> -->
|
<p class="description">您可以登录X-PHP账号来进行一键升级</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<!-- 登录表单 -->
|
<!-- 登录表单 -->
|
||||||
<el-form
|
<el-form ref="loginRef" :model="loginForm" :rules="loginRules" label-width="80px" label-position="top" class="login-form">
|
||||||
ref="loginRef"
|
|
||||||
:model="loginForm"
|
|
||||||
:rules="loginRules"
|
|
||||||
label-width="80px"
|
|
||||||
label-position="top"
|
|
||||||
class="login-form"
|
|
||||||
>
|
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<el-form-item prop="username">
|
<el-form-item prop="username">
|
||||||
<i class="wk wk-mobile"/>账号
|
<i class="wk wk-mobile"/>账号
|
||||||
@ -192,17 +104,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// import Lockr from 'lockr'
|
|
||||||
// import {
|
|
||||||
// crmCheckVersionAPI,
|
|
||||||
// crmQueryDatabaseAPI,
|
|
||||||
// crmBackupDatabaseAPI,
|
|
||||||
// crmUpdateAPI,
|
|
||||||
// updateProgressAPI,
|
|
||||||
// loginWKAPI
|
|
||||||
// } from '@/api/admin/update'
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
/** 系统升级 */
|
/** 系统升级 */
|
||||||
name: 'Update',
|
name: 'Update',
|
||||||
@ -227,9 +128,9 @@ export default {
|
|||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
isClick: false,
|
isClick: false,
|
||||||
isCanUpdate: false,
|
isCanUpdate: true,
|
||||||
isLogin: false, // 是否登录X-PHP账号
|
isLogin: false, // 是否登录X-PHP账号
|
||||||
dialogVisible: true, // 登录弹窗
|
dialogVisible: false, // 登录弹窗
|
||||||
dialogVisibleH: false, // 历史备份弹窗
|
dialogVisibleH: false, // 历史备份弹窗
|
||||||
loginForm: {
|
loginForm: {
|
||||||
username: '',
|
username: '',
|
||||||
@ -242,7 +143,7 @@ export default {
|
|||||||
password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
|
password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
|
||||||
},
|
},
|
||||||
userData: {},
|
userData: {},
|
||||||
isCheckUpdate: false, // 是否检查更新过
|
isCheckUpdate: true, // 是否检查更新过
|
||||||
isNewest: false, // 是否是最新版本
|
isNewest: false, // 是否是最新版本
|
||||||
checkLoading: false, // 检查更新loading
|
checkLoading: false, // 检查更新loading
|
||||||
version: '', // 最新版本
|
version: '', // 最新版本
|
||||||
@ -287,7 +188,7 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
// const _this = this
|
// const _this = this
|
||||||
// async function decorator() {
|
// async function decorator() {
|
||||||
// var { data } = await crmCheckVersionAPI()
|
// var { data } = await xCheckVersionAPI()
|
||||||
// _this.checkIsNewest(data.version, data.serverVersion)
|
// _this.checkIsNewest(data.version, data.serverVersion)
|
||||||
|
|
||||||
// _this.checkLoading = false
|
// _this.checkLoading = false
|
||||||
@ -332,7 +233,7 @@ export default {
|
|||||||
|
|
||||||
async checkHandle() {
|
async checkHandle() {
|
||||||
// this.checkLoading = true
|
// this.checkLoading = true
|
||||||
// var { data } = await crmCheckVersionAPI()
|
// var { data } = await xCheckVersionAPI()
|
||||||
|
|
||||||
// this.isNewest = this.checkIsNewest(data.version, data.serverVersion)
|
// this.isNewest = this.checkIsNewest(data.version, data.serverVersion)
|
||||||
// this.checkLoading = false
|
// this.checkLoading = false
|
||||||
@ -370,7 +271,7 @@ export default {
|
|||||||
|
|
||||||
async queryDatabaseHandle() {
|
async queryDatabaseHandle() {
|
||||||
this.isCustom = 1
|
this.isCustom = 1
|
||||||
// var res = await crmQueryDatabaseAPI()
|
// var res = await xQueryDatabaseAPI()
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
data:[
|
data:[
|
||||||
@ -422,7 +323,7 @@ export default {
|
|||||||
// isCustom: this.isCustom
|
// isCustom: this.isCustom
|
||||||
// }
|
// }
|
||||||
// : Object.assign(this.customDatabase, this.loginForm)
|
// : Object.assign(this.customDatabase, this.loginForm)
|
||||||
// var res = await crmBackupDatabaseAPI(data)
|
// var res = await xBackupDatabaseAPI(data)
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
code:0
|
code:0
|
||||||
@ -443,14 +344,7 @@ export default {
|
|||||||
message: '未进行登陆',
|
message: '未进行登陆',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
})
|
||||||
return
|
// return
|
||||||
}
|
|
||||||
if (!this.isBackSuccess) {
|
|
||||||
this.$message({
|
|
||||||
message: '未进行数据备份',
|
|
||||||
type: 'warning'
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.updateLoading = true
|
this.updateLoading = true
|
||||||
@ -463,9 +357,9 @@ export default {
|
|||||||
// isCustom: this.isCustom
|
// isCustom: this.isCustom
|
||||||
// }
|
// }
|
||||||
// : Object.assign(this.customDatabase, this.loginForm)
|
// : Object.assign(this.customDatabase, this.loginForm)
|
||||||
// var res = await crmUpdateAPI(data)
|
// var res = await xUpdateAPI(data)
|
||||||
|
|
||||||
var res = {code:1}
|
var res = {code:0}
|
||||||
|
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.progressTooltip = '更新准备中'
|
this.progressTooltip = '更新准备中'
|
||||||
@ -475,7 +369,7 @@ export default {
|
|||||||
async function fn() {
|
async function fn() {
|
||||||
// var res = await updateProgressAPI()
|
// var res = await updateProgressAPI()
|
||||||
|
|
||||||
var res = {code:0, data:5}
|
var res = {code:0, data:100}
|
||||||
|
|
||||||
switch (res.data) {
|
switch (res.data) {
|
||||||
case 5:
|
case 5:
|
||||||
@ -517,7 +411,7 @@ export default {
|
|||||||
|
|
||||||
// 更改每页展示数量
|
// 更改每页展示数量
|
||||||
handleSizeChange(val) {
|
handleSizeChange(val) {
|
||||||
// Lockr.set('crmPageSizes', val)
|
// Lockr.set('xPageSizes', val)
|
||||||
this.pageSize = val
|
this.pageSize = val
|
||||||
},
|
},
|
||||||
// 更改当前页数
|
// 更改当前页数
|
||||||
@ -528,7 +422,16 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
.el-alert {
|
||||||
|
margin: 10px 0 10px;
|
||||||
|
}
|
||||||
|
.el-alert:first-child {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*@import "../styles/table.scss";*/
|
/*@import "../styles/table.scss";*/
|
||||||
$linkColor: #3b6ff1;
|
$linkColor: #3b6ff1;
|
||||||
|
|
||||||
@ -545,7 +448,7 @@ $linkColor: #3b6ff1;
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.crm-update {
|
.x-update {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-width: 1200px;
|
min-width: 1200px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@ -741,7 +644,7 @@ $linkColor: #3b6ff1;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// dialog
|
// dialog
|
||||||
.el-dialog__wrapper {
|
|
||||||
.el-dialog {
|
.el-dialog {
|
||||||
padding-left: 25px;
|
padding-left: 25px;
|
||||||
padding-right: 25px;
|
padding-right: 25px;
|
||||||
@ -754,7 +657,7 @@ $linkColor: #3b6ff1;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// 登陆表单
|
// 登陆表单
|
||||||
.login-form {
|
.login-form {
|
||||||
@ -766,7 +669,7 @@ $linkColor: #3b6ff1;
|
|||||||
}
|
}
|
||||||
.form-item {
|
.form-item {
|
||||||
&.password {
|
&.password {
|
||||||
margin-top: 28px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
p {
|
p {
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<sc-page-header :title="id?'编辑':'新增'" description="可用于非常复杂的表单提交,如一些较为简单的表单提交应使用dialog或者drawer更合适" icon="el-icon-burger"></sc-page-header>
|
<x-page-header :title="id?'编辑':'新增'" description="可用于非常复杂的表单提交,如一些较为简单的表单提交应使用dialog或者drawer更合适" icon="el-icon-burger"></x-page-header>
|
||||||
|
|
||||||
<el-main>
|
<el-main>
|
||||||
<el-alert title="注意: 因为keep-alive只接受组件name,导致多路由共用组件时,关闭或刷新一个标签导致其他同一组件的页面缓存失效,后续还在寻找完美的解决方案.建议在列表页使用dialog或者drawer形式" type="error" style="margin-bottom: 15px;"></el-alert>
|
<el-alert title="注意: 因为keep-alive只接受组件name,导致多路由共用组件时,关闭或刷新一个标签导致其他同一组件的页面缓存失效,后续还在寻找完美的解决方案.建议在列表页使用dialog或者drawer形式" type="error" style="margin-bottom: 15px;"></el-alert>
|
||||||
|
@ -4,6 +4,9 @@
|
|||||||
<img src="@/assets/img/crm/todo.png" class="title-icon">
|
<img src="@/assets/img/crm/todo.png" class="title-icon">
|
||||||
<span class="title">待办事项</span>
|
<span class="title">待办事项</span>
|
||||||
</flexbox>
|
</flexbox>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="message-body">
|
<div class="message-body">
|
||||||
<div
|
<div
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
@ -25,6 +28,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<x-dialog v-model="dialogVisible" title="fdsafa">
|
||||||
|
<xTable name="OfferCollege"></xTable>
|
||||||
|
</x-dialog>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@ -44,6 +52,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
|
dialogVisible: true,
|
||||||
leftType: '',
|
leftType: '',
|
||||||
info: {},
|
info: {},
|
||||||
leftSides: [
|
leftSides: [
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Descripttion: 图标选择器组件演示文件
|
* @Descripttion: 图标选择器组件演示文件
|
||||||
* @version: 1.0
|
|
||||||
* @Author: sakuya
|
|
||||||
* @Date: 2021年7月27日09:33:06
|
|
||||||
* @LastEditors:
|
|
||||||
* @LastEditTime:
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@ -13,7 +8,7 @@
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<el-form ref="ruleForm" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="ruleForm" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-form-item label="图标" prop="icon">
|
<el-form-item label="图标" prop="icon">
|
||||||
<sc-icon-select v-model="form.icon" :disabled="disabled"></sc-icon-select>
|
<x-icon-select v-model="form.icon" :disabled="disabled"></x-icon-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submitForm">保存</el-button>
|
<el-button type="primary" @click="submitForm">保存</el-button>
|
||||||
@ -26,12 +21,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import scIconSelect from '@/components/scIconSelect'
|
import xIconSelect from '@/components/xIconSelect'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'iconSelect',
|
name: 'iconSelect',
|
||||||
components: {
|
components: {
|
||||||
scIconSelect
|
xIconSelect
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -3,22 +3,22 @@
|
|||||||
<el-row :gutter="15">
|
<el-row :gutter="15">
|
||||||
<el-col :lg="8">
|
<el-col :lg="8">
|
||||||
<el-card shadow="never" header="常用">
|
<el-card shadow="never" header="常用">
|
||||||
<sc-qr-code text="scui"></sc-qr-code>
|
<x-qr-code text="scui"></x-qr-code>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :lg="8">
|
<el-col :lg="8">
|
||||||
<el-card shadow="never" header="带Logo">
|
<el-card shadow="never" header="带Logo">
|
||||||
<sc-qr-code text="scui" logo="@/assets/img/logo.png"></sc-qr-code>
|
<x-qr-code text="scui" logo="@/assets/img/logo.png"></x-qr-code>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :lg="8">
|
<el-col :lg="8">
|
||||||
<el-card shadow="never" header="自定义颜色大小">
|
<el-card shadow="never" header="自定义颜色大小">
|
||||||
<sc-qr-code text="scui" :size="100" colorDark="#088200" colorLight="#fff"></sc-qr-code>
|
<x-qr-code text="scui" :size="100" colorDark="#088200" colorLight="#fff"></x-qr-code>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :lg="8">
|
<el-col :lg="8">
|
||||||
<el-card shadow="never" header="动态">
|
<el-card shadow="never" header="动态">
|
||||||
<sc-qr-code :text="qrcode"></sc-qr-code>
|
<x-qr-code :text="qrcode"></x-qr-code>
|
||||||
<el-input v-model="qrcode" placeholder="Please input" style="margin-top: 20px;"/>
|
<el-input v-model="qrcode" placeholder="Please input" style="margin-top: 20px;"/>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
@ -32,12 +32,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import scVideo from '@/components/scVideo'
|
import xVideo from '@/components/xVideo'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'scvideo',
|
name: 'scvideo',
|
||||||
components: {
|
components: {
|
||||||
scVideo
|
xVideo
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
12
src/x.js
12
src/x.js
@ -23,10 +23,10 @@ import xFormTable from './components/xFormTable'
|
|||||||
import xFilterBar from './components/xFilterBar'
|
import xFilterBar from './components/xFilterBar'
|
||||||
import xStatusIndicator from './components/xMini/StatusIndicator'
|
import xStatusIndicator from './components/xMini/StatusIndicator'
|
||||||
import xTrend from './components/xMini/Trend'
|
import xTrend from './components/xMini/Trend'
|
||||||
import scPageHeader from './components/scPageHeader'
|
import xQrCode from './components/xQrCode'
|
||||||
import scSelect from './components/scSelect'
|
import xPageHeader from './components/xPageHeader'
|
||||||
|
import xSelect from './components/xSelect'
|
||||||
import scWaterMark from './components/scWaterMark'
|
import scWaterMark from './components/scWaterMark'
|
||||||
import scQrCode from './components/scQrCode'
|
|
||||||
import {
|
import {
|
||||||
Flexbox,
|
Flexbox,
|
||||||
FlexboxItem
|
FlexboxItem
|
||||||
@ -65,12 +65,12 @@ export default {
|
|||||||
app.component('xFilterBar', xFilterBar);
|
app.component('xFilterBar', xFilterBar);
|
||||||
app.component('xForm', xForm);
|
app.component('xForm', xForm);
|
||||||
app.component('xFormTable', xFormTable);
|
app.component('xFormTable', xFormTable);
|
||||||
app.component('scPageHeader', scPageHeader);
|
app.component('xPageHeader', xPageHeader);
|
||||||
app.component('scSelect', scSelect);
|
app.component('xSelect', xSelect);
|
||||||
app.component('xDialog', xDialog);
|
app.component('xDialog', xDialog);
|
||||||
app.component('xTitle', xTitle);
|
app.component('xTitle', xTitle);
|
||||||
app.component('scWaterMark', scWaterMark);
|
app.component('scWaterMark', scWaterMark);
|
||||||
app.component('scQrCode', scQrCode);
|
app.component('xQrCode', xQrCode);
|
||||||
app.component('xStatusIndicator', xStatusIndicator);
|
app.component('xStatusIndicator', xStatusIndicator);
|
||||||
app.component('xTrend', xTrend);
|
app.component('xTrend', xTrend);
|
||||||
//注册全局指令
|
//注册全局指令
|
||||||
|
Loading…
Reference in New Issue
Block a user