格式化代码

This commit is contained in:
不做码农 2022-03-10 15:04:05 +08:00
parent d2077762d1
commit 7828f5995e
2 changed files with 127 additions and 161 deletions

View File

@ -11,19 +11,9 @@
<div class="components-title"> <div class="components-title">
<svg-icon icon-class="component" />输入型组件 <svg-icon icon-class="component" />输入型组件
</div> </div>
<draggable <draggable class="components-draggable" :list="inputComponents" :group="{ name: 'componentsGroup', pull: 'clone', put: false }"
class="components-draggable" :clone="cloneComponent" draggable=".components-item" :sort="false" @end="onEnd">
:list="inputComponents" <div v-for="(element, index) in inputComponents" :key="index" class="components-item" @click="addComponent(element)">
:group="{ name: 'componentsGroup', pull: 'clone', put: false }"
:clone="cloneComponent"
draggable=".components-item"
:sort="false"
@end="onEnd"
>
<div
v-for="(element, index) in inputComponents" :key="index" class="components-item"
@click="addComponent(element)"
>
<div class="components-body"> <div class="components-body">
<svg-icon :icon-class="element.tagIcon" /> <svg-icon :icon-class="element.tagIcon" />
{{ element.label }} {{ element.label }}
@ -33,21 +23,9 @@
<div class="components-title"> <div class="components-title">
<svg-icon icon-class="component" />选择型组件 <svg-icon icon-class="component" />选择型组件
</div> </div>
<draggable <draggable class="components-draggable" :list="selectComponents" :group="{ name: 'componentsGroup', pull: 'clone', put: false }"
class="components-draggable" :clone="cloneComponent" draggable=".components-item" :sort="false" @end="onEnd">
:list="selectComponents" <div v-for="(element, index) in selectComponents" :key="index" class="components-item" @click="addComponent(element)">
:group="{ name: 'componentsGroup', pull: 'clone', put: false }"
:clone="cloneComponent"
draggable=".components-item"
:sort="false"
@end="onEnd"
>
<div
v-for="(element, index) in selectComponents"
:key="index"
class="components-item"
@click="addComponent(element)"
>
<div class="components-body"> <div class="components-body">
<svg-icon :icon-class="element.tagIcon" /> <svg-icon :icon-class="element.tagIcon" />
{{ element.label }} {{ element.label }}
@ -57,15 +35,9 @@
<div class="components-title"> <div class="components-title">
<svg-icon icon-class="component" /> 布局型组件 <svg-icon icon-class="component" /> 布局型组件
</div> </div>
<draggable <draggable class="components-draggable" :list="layoutComponents" :group="{ name: 'componentsGroup', pull: 'clone', put: false }"
class="components-draggable" :list="layoutComponents" :clone="cloneComponent" draggable=".components-item" :sort="false" @end="onEnd">
:group="{ name: 'componentsGroup', pull: 'clone', put: false }" :clone="cloneComponent" <div v-for="(element, index) in layoutComponents" :key="index" class="components-item" @click="addComponent(element)">
draggable=".components-item" :sort="false" @end="onEnd"
>
<div
v-for="(element, index) in layoutComponents" :key="index" class="components-item"
@click="addComponent(element)"
>
<div class="components-body"> <div class="components-body">
<svg-icon :icon-class="element.tagIcon" /> <svg-icon :icon-class="element.tagIcon" />
{{ element.label }} {{ element.label }}
@ -90,25 +62,12 @@
</div> </div>
<el-scrollbar class="center-scrollbar"> <el-scrollbar class="center-scrollbar">
<el-row class="center-board-row" :gutter="formConf.gutter"> <el-row class="center-board-row" :gutter="formConf.gutter">
<el-form <el-form :size="formConf.size" :label-position="formConf.labelPosition" :disabled="formConf.disabled"
:size="formConf.size" :label-width="formConf.labelWidth + 'px'">
:label-position="formConf.labelPosition"
:disabled="formConf.disabled"
:label-width="formConf.labelWidth + 'px'"
>
<draggable class="drawing-board" :list="drawingList" :animation="340" group="componentsGroup"> <draggable class="drawing-board" :list="drawingList" :animation="340" group="componentsGroup">
<draggable-item <draggable-item v-for="(element, index) in drawingList" :key="element.renderKey" :drawing-list="drawingList" :element="element"
v-for="(element, index) in drawingList" :index="index" :active-id="activeId" :form-conf="formConf" @activeItem="activeFormItem" @copyItem="drawingItemCopy"
:key="element.renderKey" @deleteItem="drawingItemDelete" />
:drawing-list="drawingList"
:element="element"
:index="index"
:active-id="activeId"
:form-conf="formConf"
@activeItem="activeFormItem"
@copyItem="drawingItemCopy"
@deleteItem="drawingItemDelete"
/>
</draggable> </draggable>
<div v-show="!drawingList.length" class="empty-info"> <div v-show="!drawingList.length" class="empty-info">
从左侧拖入或点选组件进行表单设计 从左侧拖入或点选组件进行表单设计
@ -118,19 +77,9 @@
</el-scrollbar> </el-scrollbar>
</div> </div>
<right-panel <right-panel :active-data="activeData" :form-conf="formConf" :show-field="!!drawingList.length" @tag-change="tagChange" />
:active-data="activeData"
:form-conf="formConf"
:show-field="!!drawingList.length"
@tag-change="tagChange"
/>
<code-type-dialog <code-type-dialog :visible.sync="dialogVisible" title="选择生成类型" :show-file-name="showFileName" @confirm="generate" />
:visible.sync="dialogVisible"
title="选择生成类型"
:show-file-name="showFileName"
@confirm="generate"
/>
<input id="copyNode" type="hidden"> <input id="copyNode" type="hidden">
</div> </div>
</template> </template>
@ -149,10 +98,16 @@ import {
formConf formConf
} from '@/utils/generator/config' } from '@/utils/generator/config'
import { import {
exportDefault, beautifierConf, isNumberStr, titleCase exportDefault,
beautifierConf,
isNumberStr,
titleCase
} from '@/utils/index' } from '@/utils/index'
import { import {
makeUpHtml, vueTemplate, vueScript, cssStyle makeUpHtml,
vueTemplate,
vueScript,
cssStyle
} from '@/utils/generator/html' } from '@/utils/generator/html'
import { makeUpJs } from '@/utils/generator/js' import { makeUpJs } from '@/utils/generator/js'
import { makeUpCss } from '@/utils/generator/css' import { makeUpCss } from '@/utils/generator/css'
@ -161,7 +116,7 @@ import logo from '@/assets/logo/logo.png'
import CodeTypeDialog from './CodeTypeDialog' import CodeTypeDialog from './CodeTypeDialog'
import DraggableItem from './DraggableItem' import DraggableItem from './DraggableItem'
const emptyActiveData = { style: {}, autosize: {} } const emptyActiveData = { style: {}, autosize: {}}
let oldActiveId let oldActiveId
let tempActiveData let tempActiveData
@ -193,19 +148,19 @@ export default {
activeData: drawingDefalut[0] activeData: drawingDefalut[0]
} }
}, },
computed: { computed: {},
},
watch: { watch: {
// eslint-disable-next-line func-names // eslint-disable-next-line func-names
'activeData.label': function (val, oldVal) { 'activeData.label': function(val, oldVal) {
if ( if (
this.activeData.placeholder === undefined this.activeData.placeholder === undefined ||
|| !this.activeData.tag !this.activeData.tag ||
|| oldActiveId !== this.activeId oldActiveId !== this.activeId
) { ) {
return return
} }
this.activeData.placeholder = this.activeData.placeholder.replace(oldVal, '') + val this.activeData.placeholder =
this.activeData.placeholder.replace(oldVal, '') + val
}, },
activeId: { activeId: {
handler(val) { handler(val) {
@ -216,7 +171,7 @@ export default {
}, },
mounted() { mounted() {
const clipboard = new ClipboardJS('#copyNode', { const clipboard = new ClipboardJS('#copyNode', {
text: trigger => { text: (trigger) => {
const codeStr = this.generateCode() const codeStr = this.generateCode()
this.$notify({ this.$notify({
title: '成功', title: '成功',
@ -226,7 +181,7 @@ export default {
return codeStr return codeStr
} }
}) })
clipboard.on('error', e => { clipboard.on('error', (e) => {
this.$message.error('代码复制失败') this.$message.error('代码复制失败')
}) })
}, },
@ -309,7 +264,9 @@ export default {
item.componentName = `row${this.idGlobal}` item.componentName = `row${this.idGlobal}`
} }
if (Array.isArray(item.children)) { if (Array.isArray(item.children)) {
item.children = item.children.map(childItem => this.createIdAndKey(childItem)) item.children = item.children.map((childItem) =>
this.createIdAndKey(childItem)
)
} }
return item return item
}, },
@ -353,9 +310,11 @@ export default {
delete this.activeData.tag delete this.activeData.tag
delete this.activeData.tagIcon delete this.activeData.tagIcon
delete this.activeData.document delete this.activeData.document
Object.keys(newTag).forEach(key => { Object.keys(newTag).forEach((key) => {
if (this.activeData[key] !== undefined if (
&& typeof this.activeData[key] === typeof newTag[key]) { this.activeData[key] !== undefined &&
typeof this.activeData[key] === typeof newTag[key]
) {
newTag[key] = this.activeData[key] newTag[key] = this.activeData[key]
} }
}) })
@ -363,12 +322,12 @@ export default {
this.updateDrawingList(newTag, this.drawingList) this.updateDrawingList(newTag, this.drawingList)
}, },
updateDrawingList(newTag, list) { updateDrawingList(newTag, list) {
const index = list.findIndex(item => item.formId === this.activeId) const index = list.findIndex((item) => item.formId === this.activeId)
if (index > -1) { if (index > -1) {
list.splice(index, 1, newTag) list.splice(index, 1, newTag)
} else { } else {
list.forEach(item => { list.forEach((item) => {
if (Array.isArray(item.children)) this.updateDrawingList(newTag, item.children) if (Array.isArray(item.children)) { this.updateDrawingList(newTag, item.children) }
}) })
} }
} }
@ -377,30 +336,34 @@ export default {
</script> </script>
<style lang='scss'> <style lang='scss'>
body, html{ body,
html {
margin: 0; margin: 0;
padding: 0; padding: 0;
background: #fff; background: #fff;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,
sans-serif, Apple Color Emoji, Segoe UI Emoji;
} }
input, textarea{ input,
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; textarea {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,
sans-serif, Apple Color Emoji, Segoe UI Emoji;
} }
.editor-tabs{ .editor-tabs {
background: #121315; background: #121315;
.el-tabs__header{ .el-tabs__header {
margin: 0; margin: 0;
border-bottom-color: #121315; border-bottom-color: #121315;
.el-tabs__nav{ .el-tabs__nav {
border-color: #121315; border-color: #121315;
} }
} }
.el-tabs__item{ .el-tabs__item {
height: 32px; height: 32px;
line-height: 32px; line-height: 32px;
color: #888a8e; color: #888a8e;
@ -409,15 +372,15 @@ input, textarea{
margin-right: 5px; margin-right: 5px;
user-select: none; user-select: none;
} }
.el-tabs__item.is-active{ .el-tabs__item.is-active {
background: #1e1e1e; background: #1e1e1e;
border-bottom-color: #1e1e1e!important; border-bottom-color: #1e1e1e !important;
color: #fff; color: #fff;
} }
.el-icon-edit{ .el-icon-edit {
color: #f1fa8c; color: #f1fa8c;
} }
.el-icon-document{ .el-icon-document {
color: #a95812; color: #a95812;
} }
} }
@ -433,24 +396,24 @@ input, textarea{
overflow-x: hidden !important; overflow-x: hidden !important;
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
.center-tabs{ .center-tabs {
.el-tabs__header{ .el-tabs__header {
margin-bottom: 0!important; margin-bottom: 0 !important;
} }
.el-tabs__item{ .el-tabs__item {
width: 50%; width: 50%;
text-align: center; text-align: center;
} }
.el-tabs__nav{ .el-tabs__nav {
width: 100%; width: 100%;
} }
} }
.reg-item{ .reg-item {
padding: 12px 6px; padding: 12px 6px;
background: #f8f8f8; background: #f8f8f8;
position: relative; position: relative;
border-radius: 4px; border-radius: 4px;
.close-btn{ .close-btn {
position: absolute; position: absolute;
right: -6px; right: -6px;
top: -6px; top: -6px;
@ -465,16 +428,16 @@ input, textarea{
z-index: 1; z-index: 1;
cursor: pointer; cursor: pointer;
font-size: 12px; font-size: 12px;
&:hover{ &:hover {
background: rgba(210, 23, 23, 0.5) background: rgba(210, 23, 23, 0.5);
} }
} }
& + .reg-item{ & + .reg-item {
margin-top: 18px; margin-top: 18px;
} }
} }
.action-bar{ .action-bar {
& .el-button+.el-button { & .el-button + .el-button {
margin-left: 15px; margin-left: 15px;
} }
& i { & i {
@ -485,37 +448,37 @@ input, textarea{
} }
} }
.custom-tree-node{ .custom-tree-node {
width: 100%; width: 100%;
font-size: 14px; font-size: 14px;
.node-operation{ .node-operation {
float: right; float: right;
} }
i[class*="el-icon"] + i[class*="el-icon"]{ i[class*="el-icon"] + i[class*="el-icon"] {
margin-left: 6px; margin-left: 6px;
} }
.el-icon-plus{ .el-icon-plus {
color: #409EFF; color: #409eff;
} }
.el-icon-delete{ .el-icon-delete {
color: #157a0c; color: #157a0c;
} }
} }
.left-scrollbar .el-scrollbar__view{ .left-scrollbar .el-scrollbar__view {
overflow-x: hidden; overflow-x: hidden;
} }
.el-rate{ .el-rate {
display: inline-block; display: inline-block;
vertical-align: text-top; vertical-align: text-top;
} }
.el-upload__tip{ .el-upload__tip {
line-height: 1.2; line-height: 1.2;
} }
$selectedColor: #f6f7ff; $selectedColor: #f6f7ff;
$lighterBlue: #409EFF; $lighterBlue: #409eff;
.container { .container {
position: relative; position: relative;
@ -534,14 +497,14 @@ $lighterBlue: #409EFF;
transition: transform 0ms !important; transition: transform 0ms !important;
} }
} }
.components-draggable{ .components-draggable {
padding-bottom: 20px; padding-bottom: 20px;
} }
.components-title{ .components-title {
font-size: 14px; font-size: 14px;
color: #222; color: #222;
margin: 6px 2px; margin: 6px 2px;
.svg-icon{ .svg-icon {
color: #666; color: #666;
font-size: 18px; font-size: 18px;
} }
@ -554,7 +517,7 @@ $lighterBlue: #409EFF;
cursor: move; cursor: move;
border: 1px dashed $selectedColor; border: 1px dashed $selectedColor;
border-radius: 3px; border-radius: 3px;
.svg-icon{ .svg-icon {
color: #777; color: #777;
font-size: 15px; font-size: 15px;
} }
@ -574,7 +537,7 @@ $lighterBlue: #409EFF;
top: 0; top: 0;
height: 100vh; height: 100vh;
} }
.left-scrollbar{ .left-scrollbar {
height: calc(100vh - 42px); height: calc(100vh - 42px);
overflow: hidden; overflow: hidden;
} }
@ -591,7 +554,7 @@ $lighterBlue: #409EFF;
margin: 0 350px 0 260px; margin: 0 350px 0 260px;
box-sizing: border-box; box-sizing: border-box;
} }
.empty-info{ .empty-info {
position: absolute; position: absolute;
top: 46%; top: 46%;
left: 0; left: 0;
@ -601,27 +564,27 @@ $lighterBlue: #409EFF;
color: #ccb1ea; color: #ccb1ea;
letter-spacing: 4px; letter-spacing: 4px;
} }
.action-bar{ .action-bar {
position: relative; position: relative;
height: 42px; height: 42px;
text-align: right; text-align: right;
padding: 0 15px; padding: 0 15px;
box-sizing: border-box;; box-sizing: border-box;
border: 1px solid #f1e8e8; border: 1px solid #f1e8e8;
border-top: none; border-top: none;
border-left: none; border-left: none;
.delete-btn{ .delete-btn {
color: #F56C6C; color: #f56c6c;
} }
} }
.logo-wrapper{ .logo-wrapper {
position: relative; position: relative;
height: 42px; height: 42px;
background: #fff; background: #fff;
border-bottom: 1px solid #f1e8e8; border-bottom: 1px solid #f1e8e8;
box-sizing: border-box; box-sizing: border-box;
} }
.logo{ .logo {
position: absolute; position: absolute;
left: 12px; left: 12px;
top: 6px; top: 6px;
@ -630,16 +593,16 @@ $lighterBlue: #409EFF;
font-weight: 600; font-weight: 600;
font-size: 17px; font-size: 17px;
white-space: nowrap; white-space: nowrap;
> img{ > img {
width: 30px; width: 30px;
height: 30px; height: 30px;
vertical-align: top; vertical-align: top;
} }
.github{ .github {
display: inline-block; display: inline-block;
vertical-align: sub; vertical-align: sub;
margin-left: 15px; margin-left: 15px;
> img{ > img {
height: 22px; height: 22px;
} }
} }
@ -682,32 +645,33 @@ $lighterBlue: #409EFF;
background-color: $selectedColor; background-color: $selectedColor;
} }
.active-from-item { .active-from-item {
& > .el-form-item{ & > .el-form-item {
background: $selectedColor; background: $selectedColor;
border-radius: 6px; border-radius: 6px;
} }
& > .drawing-item-copy, & > .drawing-item-delete{ & > .drawing-item-copy,
& > .drawing-item-delete {
display: initial; display: initial;
} }
& > .component-name{ & > .component-name {
color: $lighterBlue; color: $lighterBlue;
} }
} }
.el-form-item{ .el-form-item {
margin-bottom: 15px; margin-bottom: 15px;
} }
} }
.drawing-item{ .drawing-item {
position: relative; position: relative;
cursor: move; cursor: move;
&.unfocus-bordered:not(.activeFromItem) > div:first-child { &.unfocus-bordered:not(.activeFromItem) > div:first-child {
border: 1px dashed #ccc; border: 1px dashed #ccc;
} }
.el-form-item{ .el-form-item {
padding: 12px 10px; padding: 12px 10px;
} }
} }
.drawing-row-item{ .drawing-row-item {
position: relative; position: relative;
cursor: move; cursor: move;
box-sizing: border-box; box-sizing: border-box;
@ -718,19 +682,19 @@ $lighterBlue: #409EFF;
.drawing-row-item { .drawing-row-item {
margin-bottom: 2px; margin-bottom: 2px;
} }
.el-col{ .el-col {
margin-top: 22px; margin-top: 22px;
} }
.el-form-item{ .el-form-item {
margin-bottom: 0; margin-bottom: 0;
} }
.drag-wrapper{ .drag-wrapper {
min-height: 80px; min-height: 80px;
} }
&.active-from-item{ &.active-from-item {
border: 1px dashed $lighterBlue; border: 1px dashed $lighterBlue;
} }
.component-name{ .component-name {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
@ -740,17 +704,20 @@ $lighterBlue: #409EFF;
padding: 0 6px; padding: 0 6px;
} }
} }
.drawing-item, .drawing-row-item{ .drawing-item,
.drawing-row-item {
&:hover { &:hover {
& > .el-form-item{ & > .el-form-item {
background: $selectedColor; background: $selectedColor;
border-radius: 6px; border-radius: 6px;
} }
& > .drawing-item-copy, & > .drawing-item-delete{ & > .drawing-item-copy,
& > .drawing-item-delete {
display: initial; display: initial;
} }
} }
& > .drawing-item-copy, & > .drawing-item-delete{ & > .drawing-item-copy,
& > .drawing-item-delete {
display: none; display: none;
position: absolute; position: absolute;
top: -10px; top: -10px;
@ -764,26 +731,25 @@ $lighterBlue: #409EFF;
cursor: pointer; cursor: pointer;
z-index: 1; z-index: 1;
} }
& > .drawing-item-copy{ & > .drawing-item-copy {
right: 56px; right: 56px;
border-color: $lighterBlue; border-color: $lighterBlue;
color: $lighterBlue; color: $lighterBlue;
background: #fff; background: #fff;
&:hover{ &:hover {
background: $lighterBlue; background: $lighterBlue;
color: #fff; color: #fff;
} }
} }
& > .drawing-item-delete{ & > .drawing-item-delete {
right: 24px; right: 24px;
border-color: #F56C6C; border-color: #f56c6c;
color: #F56C6C; color: #f56c6c;
background: #fff; background: #fff;
&:hover{ &:hover {
background: #F56C6C; background: #f56c6c;
color: #fff; color: #fff;
} }
} }
} }
</style> </style>