From c41e6fff7f768923ee87fc136f348f2467576dd5 Mon Sep 17 00:00:00 2001 From: gaoshp <291585735@qq.com> Date: 星期日, 02 六月 2024 15:19:41 +0800 Subject: [PATCH] update --- src/views/dnc/setting/FTP.vue | 68 +++++ src/components/scDialog/index.vue | 152 ++++++++----- src/components/scForm/index.vue | 353 ++++++++++++++++--------------- src/views/vab/dialog/index.vue | 79 +++--- 4 files changed, 375 insertions(+), 277 deletions(-) diff --git a/src/components/scDialog/index.vue b/src/components/scDialog/index.vue index cfd065d..4c83821 100644 --- a/src/components/scDialog/index.vue +++ b/src/components/scDialog/index.vue @@ -9,76 +9,108 @@ <template> <div class="sc-dialog" ref="scDialog"> - <el-dialog ref="dialog" v-model="dialogVisible" :fullscreen="isFullscreen" v-bind="$attrs" :show-close="false"> - <template #header> - <slot name="header"> - <span class="el-dialog__title">{{ title }}</span> - </slot> - <div class="sc-dialog__headerbtn"> - <button v-if="showFullscreen" aria-label="fullscreen" type="button" @click="setFullscreen"> - <el-icon v-if="isFullscreen" class="el-dialog__close"><el-icon-bottom-left /></el-icon> - <el-icon v-else class="el-dialog__close"><el-icon-full-screen /></el-icon> - </button> - <button v-if="showClose" aria-label="close" type="button" @click="closeDialog"> - <el-icon class="el-dialog__close"><el-icon-close /></el-icon> - </button> + <el-dialog ref="dialog" v-model="dialogVisible" :fullscreen="isFullscreen" v-bind="$attrs" :show-close="false"> + <template #header> + <slot name="header"> + <span class="el-dialog__title">{{ title }}</span> + </slot> + <div class="sc-dialog__headerbtn"> + <button v-if="showFullscreen" aria-label="fullscreen" type="button" @click="setFullscreen"> + <el-icon v-if="isFullscreen" class="el-dialog__close"><el-icon-bottom-left /></el-icon> + <el-icon v-else class="el-dialog__close"><el-icon-full-screen /></el-icon> + </button> + <button v-if="showClose" aria-label="close" type="button" @click="closeDialog"> + <el-icon class="el-dialog__close"><el-icon-close /></el-icon> + </button> + </div> + </template> + <div v-loading="loading"> + <slot></slot> </div> - </template> - <div v-loading="loading"> - <slot></slot> - </div> - <template #footer> - <slot name="footer"></slot> - </template> - </el-dialog> + <template #footer> + <slot name="footer"></slot> + </template> + </el-dialog> </div> </template> <script> - export default { - props: { - modelValue: { type: Boolean, default: false }, - title: { type: String, default: "" }, - showClose: { type: Boolean, default: true }, - showFullscreen: { type: Boolean, default: true }, - loading: { type: Boolean, default: false } - }, - data() { - return { - dialogVisible: false, - isFullscreen: false - } - }, - watch:{ - modelValue(){ - this.dialogVisible = this.modelValue - if(this.dialogVisible){ - this.isFullscreen = false - } - } - }, - mounted() { +export default { + props: { + modelValue: { type: Boolean, default: false }, + title: { type: String, default: "" }, + showClose: { type: Boolean, default: true }, + showFullscreen: { type: Boolean, default: true }, + loading: { type: Boolean, default: false } + }, + data() { + return { + dialogVisible: false, + isFullscreen: false + } + }, + watch: { + modelValue() { this.dialogVisible = this.modelValue - }, - methods: { - //鍏抽棴 - closeDialog(){ - this.dialogVisible = false - }, - //鏈�澶у寲 - setFullscreen(){ - this.isFullscreen = !this.isFullscreen + if (this.dialogVisible) { + this.isFullscreen = false } } + }, + mounted() { + this.dialogVisible = this.modelValue + }, + methods: { + //鍏抽棴 + closeDialog() { + this.dialogVisible = false + }, + //鏈�澶у寲 + setFullscreen() { + this.isFullscreen = !this.isFullscreen + } } +} </script> <style scoped> - .sc-dialog__headerbtn {position: absolute;top: var(--el-dialog-padding-primary);right: var(--el-dialog-padding-primary);} - .sc-dialog__headerbtn button {padding: 0;background: transparent;border: none;outline: none;cursor: pointer;font-size: var(--el-message-close-size,16px);margin-left: 15px;color: var(--el-color-info);} - .sc-dialog__headerbtn button:hover .el-dialog__close {color: var(--el-color-primary);} - .sc-dialog:deep(.el-dialog).is-fullscreen {display: flex;flex-direction: column;top:0px !important;left:0px !important;} - .sc-dialog:deep(.el-dialog).is-fullscreen .el-dialog__header {} - .sc-dialog:deep(.el-dialog).is-fullscreen .el-dialog__body {flex:1;overflow: auto;} - .sc-dialog:deep(.el-dialog).is-fullscreen .el-dialog__footer {padding-bottom: 10px;border-top: 1px solid var(--el-border-color-base);} +.sc-dialog__headerbtn { + position: absolute; + top: var(--el-dialog-padding-primary); + right: var(--el-dialog-padding-primary); +} + +.sc-dialog__headerbtn button { + padding: 0; + background: transparent; + border: none; + outline: none; + cursor: pointer; + font-size: var(--el-message-close-size, 16px); + margin-left: 15px; + color: var(--el-color-info); +} + +.sc-dialog__headerbtn button:hover .el-dialog__close { + color: var(--el-color-primary); +} + +.sc-dialog:deep(.el-dialog).is-fullscreen { + display: flex; + flex-direction: column; + top: 0px !important; + left: 0px !important; +} + +.sc-dialog:deep(.el-dialog).is-fullscreen .el-dialog__header {} + +.sc-dialog:deep(.el-dialog).is-fullscreen .el-dialog__body { + flex: 1; + overflow: auto; +} + +.sc-dialog:deep(.el-dialog).is-fullscreen .el-dialog__footer { + padding-bottom: 10px; + border-top: 1px solid var(--el-border-color-base); +} </style> diff --git a/src/components/scForm/index.vue b/src/components/scForm/index.vue index 146acdf..e3f1d76 100644 --- a/src/components/scForm/index.vue +++ b/src/components/scForm/index.vue @@ -3,46 +3,51 @@ * @version: 1.0 * @Author: sakuya * @Date: 2021骞�9鏈�22鏃�09:26:25 - * @LastEditors: - * @LastEditTime: + * @LastEditors: Sneed + * @LastEditTime: 2024-06-02 15:06:45 --> <template> - <el-skeleton v-if="renderLoading || Object.keys(form).length==0" animated /> + <el-skeleton v-if="renderLoading || Object.keys(form).length == 0" animated /> - <el-form v-else ref="form" :model="form" :label-width="config.labelWidth" :label-position="config.labelPosition" v-loading="loading" element-loading-text="Loading..."> + <el-form v-else ref="form" :model="form" :label-width="config.labelWidth" :label-position="config.labelPosition" + v-loading="loading" element-loading-text="Loading..."> <el-row :gutter="15"> <template v-for="(item, index) in config.formItems" :key="index"> <el-col :span="item.span || 24" v-if="!hideHandle(item)"> - <sc-title v-if="item.component=='title'" :title="item.label"></sc-title> + <sc-title v-if="item.component == 'title'" :title="item.label"></sc-title> <el-form-item v-else :prop="item.name" :rules="rulesHandle(item)"> <template #label> - {{item.label}} + {{ item.label }} <el-tooltip v-if="item.tips" :content="item.tips"> <el-icon><el-icon-question-filled /></el-icon> </el-tooltip> </template> <!-- input --> - <template v-if="item.component=='input'" > - <el-input v-model="form[item.name]" :placeholder="item.options.placeholder" clearable :maxlength="item.options.maxlength" show-word-limit></el-input> + <template v-if="item.component == 'input'"> + <el-input v-model="form[item.name]" :placeholder="item.options.placeholder" clearable + :maxlength="item.options.maxlength" show-word-limit></el-input> </template> <!-- checkbox --> - <template v-else-if="item.component=='checkbox'" > - <template v-if="item.name" > - <el-checkbox v-model="form[item.name][_item.name]" :label="_item.label" v-for="(_item, _index) in item.options.items" :key="_index"></el-checkbox> + <template v-else-if="item.component == 'checkbox'"> + <template v-if="item.name"> + <el-checkbox v-model="form[item.name][_item.name]" :label="_item.label" + v-for="(_item, _index) in item.options.items" :key="_index"></el-checkbox> </template> - <template v-else > - <el-checkbox v-model="form[_item.name]" :label="_item.label" v-for="(_item, _index) in item.options.items" :key="_index"></el-checkbox> + <template v-else> + <el-checkbox v-model="form[_item.name]" :label="_item.label" + v-for="(_item, _index) in item.options.items" :key="_index"></el-checkbox> </template> </template> <!-- checkboxGroup --> - <template v-else-if="item.component=='checkboxGroup'" > + <template v-else-if="item.component == 'checkboxGroup'"> <el-checkbox-group v-model="form[item.name]"> - <el-checkbox v-for="_item in item.options.items" :key="_item.value" :label="_item.value">{{_item.label}}</el-checkbox> + <el-checkbox v-for="_item in item.options.items" :key="_item.value" + :label="_item.value">{{ _item.label }}</el-checkbox> </el-checkbox-group> </template> <!-- upload --> - <template v-else-if="item.component=='upload'" > + <template v-else-if="item.component == 'upload'"> <el-col v-for="(_item, _index) in item.options.items" :key="_index"> <el-form-item :prop="_item.name"> <sc-upload v-model="form[_item.name]" :title="_item.label"></sc-upload> @@ -50,58 +55,65 @@ </el-col> </template> <!-- switch --> - <template v-else-if="item.component=='switch'" > + <template v-else-if="item.component == 'switch'"> <el-switch v-model="form[item.name]" /> </template> <!-- select --> - <template v-else-if="item.component=='select'" > - <el-select v-model="form[item.name]" :multiple="item.options.multiple" :placeholder="item.options.placeholder" clearable filterable style="width: 100%;"> - <el-option v-for="option in item.options.items" :key="option.value" :label="option.label" :value="option.value"></el-option> + <template v-else-if="item.component == 'select'"> + <el-select v-model="form[item.name]" :multiple="item.options.multiple" + :placeholder="item.options.placeholder" clearable filterable style="width: 100%;"> + <el-option v-for="option in item.options.items" :key="option.value" + :label="option.label" :value="option.value"></el-option> </el-select> </template> <!-- cascader --> - <template v-else-if="item.component=='cascader'" > - <el-cascader v-model="form[item.name]" :options="item.options.items" clearable></el-cascader> + <template v-else-if="item.component == 'cascader'"> + <el-cascader v-model="form[item.name]" :options="item.options.items" + clearable></el-cascader> </template> <!-- date --> - <template v-else-if="item.component=='date'" > - <el-date-picker v-model="form[item.name]" :type="item.options.type" :shortcuts="item.options.shortcuts" :default-time="item.options.defaultTime" :value-format="item.options.valueFormat" :placeholder="item.options.placeholder || '璇烽�夋嫨'"></el-date-picker> + <template v-else-if="item.component == 'date'"> + <el-date-picker v-model="form[item.name]" :type="item.options.type" + :shortcuts="item.options.shortcuts" :default-time="item.options.defaultTime" + :value-format="item.options.valueFormat" + :placeholder="item.options.placeholder || '璇烽�夋嫨'"></el-date-picker> </template> <!-- number --> - <template v-else-if="item.component=='number'" > + <template v-else-if="item.component == 'number'"> <el-input-number v-model="form[item.name]" controls-position="right"></el-input-number> </template> <!-- radio --> - <template v-else-if="item.component=='radio'" > + <template v-else-if="item.component == 'radio'"> <el-radio-group v-model="form[item.name]"> - <el-radio v-for="_item in item.options.items" :key="_item.value" :label="_item.value">{{_item.label}}</el-radio> + <el-radio v-for="_item in item.options.items" :key="_item.value" + :label="_item.value">{{ _item.label }}</el-radio> </el-radio-group> </template> <!-- color --> - <template v-else-if="item.component=='color'" > + <template v-else-if="item.component == 'color'"> <el-color-picker v-model="form[item.name]" /> </template> <!-- rate --> - <template v-else-if="item.component=='rate'" > + <template v-else-if="item.component == 'rate'"> <el-rate style="margin-top: 6px;" v-model="form[item.name]"></el-rate> </template> <!-- slider --> - <template v-else-if="item.component=='slider'" > + <template v-else-if="item.component == 'slider'"> <el-slider v-model="form[item.name]" :marks="item.options.marks"></el-slider> </template> <!-- tableselect --> - <template v-else-if="item.component=='tableselect'" > + <template v-else-if="item.component == 'tableselect'"> <tableselect-render v-model="form[item.name]" :item="item"></tableselect-render> </template> <!-- editor --> - <template v-else-if="item.component=='editor'" > + <template v-else-if="item.component == 'editor'"> <sc-editor v-model="form[item.name]" placeholder="璇疯緭鍏�" :height="400"></sc-editor> </template> <!-- noComponent --> <template v-else> - <el-tag type="danger">[{{item.component}}] Component not found</el-tag> + <el-tag type="danger">[{{ item.component }}] Component not found</el-tag> </template> - <div v-if="item.message" class="el-form-item-msg">{{item.message}}</div> + <div v-if="item.message" class="el-form-item-msg">{{ item.message }}</div> </el-form-item> </el-col> </template> @@ -117,156 +129,155 @@ </template> <script> - import http from "@/utils/request" +import http from "@/utils/request" - import { defineAsyncComponent } from 'vue' - const tableselectRender = defineAsyncComponent(() => import('./items/tableselect')) - const scEditor = defineAsyncComponent(() => import('@/components/scEditor')) +import { defineAsyncComponent } from 'vue' +const tableselectRender = defineAsyncComponent(() => import('./items/tableselect')) +const scEditor = defineAsyncComponent(() => import('@/components/scEditor')) - export default { - props: { - modelValue: { type: Object, default: () => {} }, - config: { type: Object, default: () => {} }, - loading: { type: Boolean, default: false }, - }, - components: { - tableselectRender, - scEditor - }, - data() { - return { - form: {}, - renderLoading: false +export default { + props: { + modelValue: { type: Object, default: () => { } }, + config: { type: Object, default: () => { } }, + loading: { type: Boolean, default: false }, + }, + components: { + tableselectRender, + scEditor + }, + data() { + return { + form: {}, + renderLoading: false + } + }, + watch: { + modelValue() { + if (this.hasConfig) { + this.deepMerge(this.form, this.modelValue) } }, - watch:{ - modelValue(){ - if(this.hasConfig){ - this.deepMerge(this.form, this.modelValue) - } - }, - config(){ - this.render() - }, - form:{ - handler(val){ - this.$emit("update:modelValue", val) - }, - deep: true - } + config() { + this.render() }, - computed: { - hasConfig(){ - return Object.keys(this.config).length>0 + form: { + handler(val) { + this.$emit("update:modelValue", val) }, - hasValue(){ - return Object.keys(this.modelValue).length>0 - } + deep: true + } + }, + computed: { + hasConfig() { + return Object.keys(this.config).length > 0 }, - created() { + hasValue() { + return Object.keys(this.modelValue).length > 0 + } + }, + created() { - }, - mounted() { - if(this.hasConfig){ - this.render() - } - }, - methods: { - //鏋勫缓form瀵硅薄 - render() { - this.config.formItems.forEach((item) => { - if(item.component == 'checkbox'){ - if(item.name){ - const value = {} - item.options.items.forEach((option) => { - value[option.name] = option.value - }) - this.form[item.name] = value - }else{ - item.options.items.forEach((option) => { - this.form[option.name] = option.value - }) - } - }else if(item.component == 'upload'){ - if(item.name){ - const value = {} - item.options.items.forEach((option) => { - value[option.name] = option.value - }) - this.form[item.name] = value - }else{ - item.options.items.forEach((option) => { - this.form[option.name] = option.value - }) - } - }else{ - this.form[item.name] = item.value - } - }) - if(this.hasValue){ - this.form = this.deepMerge(this.form, this.modelValue) - } - this.getData() - }, - //澶勭悊杩滅▼閫夐」鏁版嵁 - getData() { - this.renderLoading = true - var remoteData = [] - this.config.formItems.forEach((item) => { - if(item.options && item.options.remote){ - var req = http.get(item.options.remote.api, item.options.remote.data).then(res=>{ - item.options.items = res.data + }, + mounted() { + if (this.hasConfig) { + this.render() + } + }, + methods: { + //鏋勫缓form瀵硅薄 + render() { + this.config.formItems.forEach((item) => { + if (item.component == 'checkbox') { + if (item.name) { + const value = {} + item.options.items.forEach((option) => { + value[option.name] = option.value }) - remoteData.push(req) + this.form[item.name] = value + } else { + item.options.items.forEach((option) => { + this.form[option.name] = option.value + }) } - }) - Promise.all(remoteData).then(()=>{ - this.renderLoading = false - }) - }, - //鍚堝苟娣辩粨鏋勫璞� - deepMerge(obj1, obj2) { - let key; - for (key in obj2) { - obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" && (obj2[key] && obj2[key].toString() === "[object Object]") ? this.deepMerge(obj1[key], obj2[key]) : (obj1[key] = obj2[key]) + } else if (item.component == 'upload') { + if (item.name) { + const value = {} + item.options.items.forEach((option) => { + value[option.name] = option.value + }) + this.form[item.name] = value + } else { + item.options.items.forEach((option) => { + this.form[option.name] = option.value + }) + } + } else { + this.form[item.name] = item.value } - return obj1 - //return JSON.parse(JSON.stringify(obj1)) - }, - //澶勭悊鍔ㄦ�侀殣钘� - hideHandle(item){ - if(item.hideHandle){ - const exp = eval(item.hideHandle.replace(/\$/g,"this.form")) - return exp - } - return false - }, - //澶勭悊鍔ㄦ�佸繀濉� - rulesHandle(item){ - if(item.requiredHandle){ - const exp = eval(item.requiredHandle.replace(/\$/g,"this.form")) - var requiredRule = item.rules.find(t => 'required' in t) - requiredRule.required = exp - } - return item.rules - }, - //鏁版嵁楠岃瘉 - validate(valid, obj){ - return this.$refs.form.validate(valid, obj) - }, - scrollToField(prop){ - return this.$refs.form.scrollToField(prop) - }, - resetFields(){ - return this.$refs.form.resetFields() - }, - //鎻愪氦 - submit(){ - this.$emit("submit", this.form) + }) + if (this.hasValue) { + this.form = this.deepMerge(this.form, this.modelValue) } + this.getData() + }, + //澶勭悊杩滅▼閫夐」鏁版嵁 + getData() { + this.renderLoading = true + var remoteData = [] + this.config.formItems.forEach((item) => { + if (item.options && item.options.remote) { + var req = http.get(item.options.remote.api, item.options.remote.data).then(res => { + item.options.items = res.data + }) + remoteData.push(req) + } + }) + Promise.all(remoteData).then(() => { + this.renderLoading = false + }) + }, + //鍚堝苟娣辩粨鏋勫璞� + deepMerge(obj1, obj2) { + let key; + for (key in obj2) { + obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" && (obj2[key] && obj2[key].toString() === "[object Object]") ? this.deepMerge(obj1[key], obj2[key]) : (obj1[key] = obj2[key]) + } + return obj1 + //return JSON.parse(JSON.stringify(obj1)) + }, + //澶勭悊鍔ㄦ�侀殣钘� + hideHandle(item) { + if (item.hideHandle) { + const exp = eval(item.hideHandle.replace(/\$/g, "this.form")) + return exp + } + return false + }, + //澶勭悊鍔ㄦ�佸繀濉� + rulesHandle(item) { + if (item.requiredHandle) { + const exp = eval(item.requiredHandle.replace(/\$/g, "this.form")) + var requiredRule = item.rules.find(t => 'required' in t) + requiredRule.required = exp + } + return item.rules + }, + //鏁版嵁楠岃瘉 + validate(valid, obj) { + return this.$refs.form.validate(valid, obj) + }, + scrollToField(prop) { + return this.$refs.form.scrollToField(prop) + }, + resetFields() { + return this.$refs.form.resetFields() + }, + //鎻愪氦 + submit() { + this.$emit("submit", this.form) } } +} </script> -<style> -</style> +<style></style> diff --git a/src/views/dnc/setting/FTP.vue b/src/views/dnc/setting/FTP.vue index dca0e80..8d196c8 100644 --- a/src/views/dnc/setting/FTP.vue +++ b/src/views/dnc/setting/FTP.vue @@ -1,21 +1,25 @@ <!-- * @Date: 2024-05-26 22:26:35 * @LastEditors: Sneed - * @LastEditTime: 2024-05-26 22:40:36 + * @LastEditTime: 2024-06-02 15:16:59 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/dnc/setting/FTP.vue --> <template> <el-container> <el-header> - <el-button type="primary">鍒涘缓FTP鐩綍</el-button> + <el-button type="primary" @click="addFtp">鍒涘缓FTP鐩綍</el-button> <el-button type="primary" style="margin-right: auto;">鍏宠仈宸ヤ綅</el-button> </el-header> <el-main> <el-row :gutter="20" style="width: 100%;"> <el-col :span="12"> <el-table :data="tableData" style="width: 100%"> - <el-table-column label="鐩綍鍚嶇О" prop="" width=""></el-table-column> - <el-table-column label="鍏宠仈宸ヤ綅" prop="" width=""></el-table-column> + <el-table-column label="鐩綍鍚嶇О" prop="name" width=""></el-table-column> + <el-table-column label="鍏宠仈宸ヤ綅" prop="" width=""> + <template #default="scope"> + <span class="">{{ scope.row.workstationDTOS.map(v => v.name).join(';') }}</span> + </template> + </el-table-column> <el-table-column label="鎿嶄綔" prop="" width=""></el-table-column> </el-table> </el-col> @@ -24,14 +28,66 @@ <div>509</div> </el-col> </el-row> - </el-main> + <scDialog v-model="showAdd"> + <scForm :config="config" :rules="rules"> + + </scForm> + </scDialog> </el-container> </template> <script> -export default { +export default { + data() { + return { + tableData: [], + showAdd: false, + rules: { + name: [ + { required: true, message: '璇疯緭鍏ュ鍚�' } + ] + }, + config: { + labelWidth: 120, + + formItems: [ + { + component: 'input', + label: '鍚嶇О', + name: 'name', + options: { + placeholder: '', + maxlength: 100, + } + }, + { + component: 'input', + label: '鍏宠仈宸ヤ綅', + name: 'workstationIds', + options: { + placeholder: '', + maxlength: 100, + } + } + ] + } + } + }, + created() { + this.getList() + }, + methods: { + getList() { + this.$HTTP.post(`/api/blade-dnc/ftp-director/ftp-workstation-list`, { name: '', workstationIds: [] }).then(res => { + this.tableData = res.data + }) + }, + addFtp() { + this.showAdd = true + } + }, } </script> diff --git a/src/views/vab/dialog/index.vue b/src/views/vab/dialog/index.vue index f03de4f..c455b23 100644 --- a/src/views/vab/dialog/index.vue +++ b/src/views/vab/dialog/index.vue @@ -52,50 +52,49 @@ </template> <script> - import { defineAsyncComponent } from 'vue' +import { defineAsyncComponent } from 'vue' - export default { - name: 'dialogExtend', - components: { - dialog1: defineAsyncComponent(() => import("./dialog1")), - dialog2: defineAsyncComponent(() => import("./dialog2")) - }, - data() { - return { - dialog1: false, - dialog2: false, - dialog3: false, - dialog2Loading: false, - asynDialog1: false, - asynDialog2: false, - } - }, - mounted() { +export default { + name: 'dialogExtend', + components: { + dialog1: defineAsyncComponent(() => import("./dialog1")), + dialog2: defineAsyncComponent(() => import("./dialog2")) + }, + data() { + return { + dialog1: false, + dialog2: false, + dialog3: false, + dialog2Loading: false, + asynDialog1: false, + asynDialog2: false, + } + }, + mounted() { + }, + methods: { + open1() { + this.dialog1 = true }, - methods: { - open1(){ - this.dialog1 = true - }, - open2(){ - this.dialog2 = true - this.dialog2Loading = true - setTimeout(()=>{ - this.dialog2Loading = false - }, 1000) - }, - open3(){ - this.dialog3 = true - }, - asyn1(){ - this.asynDialog1 = true - }, - asyn2(){ - this.asynDialog2 = true - } + open2() { + this.dialog2 = true + this.dialog2Loading = true + setTimeout(() => { + this.dialog2Loading = false + }, 1000) + }, + open3() { + this.dialog3 = true + }, + asyn1() { + this.asynDialog1 = true + }, + asyn2() { + this.asynDialog2 = true } } +} </script> -<style> -</style> +<style></style> -- Gitblit v1.9.3