From e701c0189210fce7a061b6273d96d6a85cd3a873 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期二, 12 三月 2024 16:00:03 +0800 Subject: [PATCH] 取消登录鉴权 取消路由重定向 创建动态表格组件 配置组件路由 (访问页面直接通过路由访问) --- Source/ProjectWeb/src/router/page/index.js | 19 + /dev/null | 301 ------------------------------ yarn.lock | 4 Source/ProjectWeb/src/page/login/userlogin.vue | 59 +++-- Source/ProjectWeb/src/views/wel/dashboard.vue | 2 Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue | 13 + Source/ProjectWeb/src/permission.js | 152 +++++++------- 7 files changed, 142 insertions(+), 408 deletions(-) diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue new file mode 100644 index 0000000..59ce237 --- /dev/null +++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-table.vue @@ -0,0 +1,13 @@ +<template> + <basic-container>琛ㄦ牸娴嬭瘯椤�</basic-container> +</template> + +<script> +export default { + name: "dynamic-table" +} +</script> + +<style scoped> + +</style> diff --git a/Source/ProjectWeb/src/page/login/userlogin.vue b/Source/ProjectWeb/src/page/login/userlogin.vue index 5ccde5a..f1cbbd9 100644 --- a/Source/ProjectWeb/src/page/login/userlogin.vue +++ b/Source/ProjectWeb/src/page/login/userlogin.vue @@ -165,35 +165,36 @@ done(); }, handleLogin() { - this.$refs.loginForm.validate(valid => { - if (valid) { - const loading = this.$loading({ - lock: true, - text: '鐧诲綍涓�,璇风◢鍚庛�傘�傘��', - spinner: "el-icon-loading" - }); - this.$store.dispatch("LoginByUsername", this.loginForm).then(() => { - if (this.website.switchMode) { - const deptId = this.userInfo.dept_id; - const roleId = this.userInfo.role_id; - if (deptId.includes(",") || roleId.includes(",")) { - this.loginForm.deptId = deptId; - this.loginForm.roleId = roleId; - this.userBox = true; - this.$store.dispatch("LogOut").then(() => { - loading.close(); - }); - return false; - } - } - this.$router.push({path: this.tagWel.value}); - loading.close(); - }).catch(() => { - loading.close(); - - }); - } - }); + this.$router.push({path: this.tagWel.value}); + // this.$refs.loginForm.validate(valid => { + // if (valid) { + // const loading = this.$loading({ + // lock: true, + // text: '鐧诲綍涓�,璇风◢鍚庛�傘�傘��', + // spinner: "el-icon-loading" + // }); + // this.$store.dispatch("LoginByUsername", this.loginForm).then(() => { + // if (this.website.switchMode) { + // const deptId = this.userInfo.dept_id; + // const roleId = this.userInfo.role_id; + // if (deptId.includes(",") || roleId.includes(",")) { + // this.loginForm.deptId = deptId; + // this.loginForm.roleId = roleId; + // this.userBox = true; + // this.$store.dispatch("LogOut").then(() => { + // loading.close(); + // }); + // return false; + // } + // } + // this.$router.push({path: this.tagWel.value}); + // loading.close(); + // }).catch(() => { + // loading.close(); + // + // }); + // } + // }); }, getTenant() { let domain = getTopUrl(); diff --git a/Source/ProjectWeb/src/permission.js b/Source/ProjectWeb/src/permission.js index 2f88c34..8d64cd5 100644 --- a/Source/ProjectWeb/src/permission.js +++ b/Source/ProjectWeb/src/permission.js @@ -1,76 +1,76 @@ -/** - * 鍏ㄧ珯鏉冮檺閰嶇疆 - * - */ -import router from './router/router' -import store from './store' -import {validatenull} from '@/util/validate' -import {getToken} from '@/util/auth' -import NProgress from 'nprogress' // progress bar -import 'nprogress/nprogress.css' // progress bar style -NProgress.configure({showSpinner: false}); -const lockPage = store.getters.website.lockPage; //閿佸睆椤� -router.beforeEach((to, from, next) => { - const meta = to.meta || {}; - const isMenu = meta.menu === undefined ? to.query.menu : meta.menu; - store.commit('SET_IS_MENU', isMenu === undefined); - if (getToken()) { - if (store.getters.isLock && to.path !== lockPage) { //濡傛灉绯荤粺婵�娲婚攣灞忥紝鍏ㄩ儴璺宠浆鍒伴攣灞忛〉 - next({path: lockPage}) - } else if (to.path === '/login') { //濡傛灉鐧诲綍鎴愬姛璁块棶鐧诲綍椤佃烦杞埌涓婚〉 - next({path: '/'}) - } else { - //濡傛灉鐢ㄦ埛淇℃伅涓虹┖鍒欒幏鍙栫敤鎴蜂俊鎭紝鑾峰彇鐢ㄦ埛淇℃伅澶辫触锛岃烦杞埌鐧诲綍椤� - if (store.getters.token.length === 0) { - store.dispatch('FedLogOut').then(() => { - next({path: '/login'}) - }) - } else { - const value = to.query.src || to.fullPath; - const label = to.query.name || to.name; - const meta = to.meta || router.$avueRouter.meta || {}; - const i18n = to.query.i18n; - if (to.query.target) { - window.open(value) - } else if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) { - store.commit('ADD_TAG', { - label: label, - value: value, - params: to.params, - query: to.query, - meta: (() => { - if (!i18n) { - return meta - } - return { - i18n: i18n - } - })(), - group: router.$avueRouter.group || [] - }); - } - next() - } - } - } else { - //鍒ゆ柇鏄惁闇�瑕佽璇侊紝娌℃湁鐧诲綍璁块棶鍘荤櫥褰曢〉 - if (meta.isAuth === false) { - next() - } else { - next('/login') - } - } -}) - -router.afterEach(() => { - NProgress.done(); - let title = store.getters.tag.label; - let i18n = store.getters.tag.meta.i18n; - title = router.$avueRouter.generateTitle(title, i18n); - //鍒ゆ柇鐧诲綍椤电殑鎯呭喌 - if (router.history.current.fullPath === "/login") { - title = "鐧诲綍"; - } - //鏍规嵁褰撳墠鐨勬爣绛句篃鑾峰彇label鐨勫�煎姩鎬佽缃祻瑙堝櫒鏍囬 - router.$avueRouter.setTitle(title); -}); +// /** +// * 鍏ㄧ珯鏉冮檺閰嶇疆 +// * +// */ +// import router from './router/router' +// import store from './store' +// import {validatenull} from '@/util/validate' +// import {getToken} from '@/util/auth' +// import NProgress from 'nprogress' // progress bar +// import 'nprogress/nprogress.css' // progress bar style +// NProgress.configure({showSpinner: false}); +// const lockPage = store.getters.website.lockPage; //閿佸睆椤� +// router.beforeEach((to, from, next) => { +// const meta = to.meta || {}; +// const isMenu = meta.menu === undefined ? to.query.menu : meta.menu; +// store.commit('SET_IS_MENU', isMenu === undefined); +// if (getToken()) { +// if (store.getters.isLock && to.path !== lockPage) { //濡傛灉绯荤粺婵�娲婚攣灞忥紝鍏ㄩ儴璺宠浆鍒伴攣灞忛〉 +// next({path: lockPage}) +// } else if (to.path === '/login') { //濡傛灉鐧诲綍鎴愬姛璁块棶鐧诲綍椤佃烦杞埌涓婚〉 +// next({path: '/'}) +// } else { +// //濡傛灉鐢ㄦ埛淇℃伅涓虹┖鍒欒幏鍙栫敤鎴蜂俊鎭紝鑾峰彇鐢ㄦ埛淇℃伅澶辫触锛岃烦杞埌鐧诲綍椤� +// if (store.getters.token.length === 0) { +// store.dispatch('FedLogOut').then(() => { +// next({path: '/login'}) +// }) +// } else { +// const value = to.query.src || to.fullPath; +// const label = to.query.name || to.name; +// const meta = to.meta || router.$avueRouter.meta || {}; +// const i18n = to.query.i18n; +// if (to.query.target) { +// window.open(value) +// } else if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) { +// store.commit('ADD_TAG', { +// label: label, +// value: value, +// params: to.params, +// query: to.query, +// meta: (() => { +// if (!i18n) { +// return meta +// } +// return { +// i18n: i18n +// } +// })(), +// group: router.$avueRouter.group || [] +// }); +// } +// next() +// } +// } +// } else { +// //鍒ゆ柇鏄惁闇�瑕佽璇侊紝娌℃湁鐧诲綍璁块棶鍘荤櫥褰曢〉 +// if (meta.isAuth === false) { +// next() +// } else { +// next('/login') +// } +// } +// }) +// +// router.afterEach(() => { +// NProgress.done(); +// let title = store.getters.tag.label; +// let i18n = store.getters.tag.meta.i18n; +// title = router.$avueRouter.generateTitle(title, i18n); +// //鍒ゆ柇鐧诲綍椤电殑鎯呭喌 +// if (router.history.current.fullPath === "/login") { +// title = "鐧诲綍"; +// } +// //鏍规嵁褰撳墠鐨勬爣绛句篃鑾峰彇label鐨勫�煎姩鎬佽缃祻瑙堝櫒鏍囬 +// router.$avueRouter.setTitle(title); +// }); diff --git a/Source/ProjectWeb/src/router/page/index.js b/Source/ProjectWeb/src/router/page/index.js index 1136402..3520cc2 100644 --- a/Source/ProjectWeb/src/router/page/index.js +++ b/Source/ProjectWeb/src/router/page/index.js @@ -32,7 +32,6 @@ isTab: false, isAuth: false } - }, { path: '/403', @@ -77,5 +76,23 @@ { path: '*', redirect: '/404' + }, + { + path: '/dynamic-table', + name: '鍔ㄦ�佽〃鏍奸〉闈�', + component: Layout, + children: [ + { + path: '', // 绌鸿矾寰勮〃绀鸿闂� '/dynamic-table' 鏃跺姞杞� Layout 缁勪欢 + component: () => import('@/components/dynamic-components/dynamic-table'), + props: true + } + ] + }, + { + path: '/dynamic-table', + name: '鍔ㄦ�佽〃鏍奸〉闈�', + component: Layout, + props: true } ] diff --git a/Source/ProjectWeb/src/views/system/PasswordManagement/Passwordresultant.vue b/Source/ProjectWeb/src/views/system/PasswordManagement/Passwordresultant.vue deleted file mode 100644 index 5403b64..0000000 --- a/Source/ProjectWeb/src/views/system/PasswordManagement/Passwordresultant.vue +++ /dev/null @@ -1,113 +0,0 @@ -<template> - <basic-container> - <avue-crud v-model="form" :option="option" :data="data" ref="crud" @on-load="onLoad" @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel" :page.sync="page"> - </avue-crud> - </basic-container> -</template> - -<script> -import { - getadd, - getupdata, - getremove, - getPage -} from "@/api/system/passwordresultant"; - -export default { - name: "passwords.vue", - data() { - return { - form:{}, - page: { - pageSize: 10, - currentPage: 1, - total: 100 - }, - - data: [], - option:{ - headerAlign: 'center', - align: 'center', - border: true, - index: true, - rowKey:'id', - column:[ - { - label: '鍚嶇О', - prop: 'name', - align: 'left', - }, - { - label: '鎻忚堪', - prop: 'desc', - } - ] - } - } - }, - - - created() { - this.onLoad() - }, - methods:{ - rowDel(row){ - this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning" - }) - .then(() => { - return getremove(row.id); - }) - .then(() => { - this.$message({ - type: "success", - message: "鎿嶄綔鎴愬姛!" - }); - this.onLoad(); - }); - }, - rowSave(row,done){ - getadd(row).then(()=>{ - this.$message({ - type: "success", - message: "鎿嶄綔鎴愬姛!" - }); - done(row) - this.onLoad() - }).catch((res)=>{ - this.$message({ - type: "success", - message:res - }); - }) - }, - rowUpdate(row,index,done){ - getupdata(row).then(()=>{ - this.onLoad() - this.$message({ - type: "success", - message: "淇敼鎴愬姛!" - }); - done(row) - }) - }, - onLoad(page, params = {}) { - // this.loading = true; - getPage(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => { - // const data = res.data.data; - // this.page.total = data.total; - // this.data = data.records; - // this.loading = false; - // this.selectionClear(); - this.data=res.data.data.records - }); - } - } - -} -</script> - -<style lang="scss"> -</style> diff --git a/Source/ProjectWeb/src/views/system/PasswordManagement/Passwordvalue.vue b/Source/ProjectWeb/src/views/system/PasswordManagement/Passwordvalue.vue deleted file mode 100644 index 3c92156..0000000 --- a/Source/ProjectWeb/src/views/system/PasswordManagement/Passwordvalue.vue +++ /dev/null @@ -1,131 +0,0 @@ -<template> - <basic-container> - <div class="headbox"> - <sapn>缁勫悎鏂瑰紡锛�</sapn> - <el-select v-model="formInline.region" placeholder="娲诲姩鍖哄煙" @change="selectchange"> - <el-option label="澶у啓瀛楁瘝" value="0"></el-option> - <el-option label="灏忓啓瀛楁瘝" value="1"></el-option> - <el-option label="鐗规畩瀛楃" value="2"></el-option> - <el-option label="鏁板瓧" value="3"></el-option> - </el-select> - </div> - <avue-crud ref="crud" v-model="form" :option="option" :data="data" @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel" :page.sync="page" > - - </avue-crud> - </basic-container> -</template> - -<script> -import {getPage} from "@/api/system/passwordvalue"; - -export default { - name: "passwords.vue", - data() { - return { - form:{}, - page: { - pageSize: 10, - currentPage: 1, - total: 100 - }, - formInline:{ - user: '', - region: '' - }, - data: [], - option:{ - headerAlign: 'center', - align: 'center', - border: true, - index: true, - rowKey:'id', - column:[ - { - label: '鍚嶇О', - prop: 'name', - align: 'left', - }, - { - label: '鎻忚堪', - prop: 'text', - } - ] - } - // option:{}, - // option1:{ - // column:[ - // { - // label:'濮撳悕', - // prop:'name', - // search:true - // } - // ] - // }, - // option2:{ - // column:[ - // { - // label:'鐢ㄦ埛鍚�', - // prop:'username', - // search:true - // }, { - // label:'瀵嗙爜', - // prop:'password', - // type:'password', - // search:true - // }, { - // label:'濮撳悕', - // prop:'name', - // search:true - // } - // ] - // }, - } - }, - - - created() { - this.onLoad() - }, - methods:{ - rowDel(row,index,done){ - done(row) - console.log(row,index,done) - console.log(done) - }, - rowSave(row,done){ - console.log(row,done) - }, - rowUpdate(row,index,done){ - done(row) - }, - //涓嬫媺鑿滃崟鍒囨崲锛屾樉绀轰笉鍚岀殑瀵嗙爜鍙栧�兼柟寮� - selectchange(){ - if(this.formInline.region=="shanghai"){ - this.option=this.option1; - }else{ - this.option=this.option2; - } - this.$refs.crud.refreshTable() - }, - onLoad(page, params = {}) { - // this.loading = true; - getPage(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => { - // const data = res.data.data; - // this.page.total = data.total; - // this.data = data.records; - // this.loading = false; - // this.selectionClear(); - console.log(res) - // this.data=res.data.data.content - }); - } - } - -} -</script> - -<style lang="scss"> -.headbox{ - margin-bottom: 20px; -} -</style> diff --git a/Source/ProjectWeb/src/views/system/PasswordManagement/passwords.vue b/Source/ProjectWeb/src/views/system/PasswordManagement/passwords.vue deleted file mode 100644 index 864b72c..0000000 --- a/Source/ProjectWeb/src/views/system/PasswordManagement/passwords.vue +++ /dev/null @@ -1,301 +0,0 @@ -<template> - <basic-container> - <avue-crud v-model="form" :option="option" :data="data" ref="crud" @on-load="onLoad" @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel" :page.sync="page"> - <template slot="icon" slot-scope="scope"> - <i :class="scope.row.icon" style="font-size:24px"></i> - </template> - </avue-crud> - </basic-container> -</template> - -<script> -import { - getPage, - // getOnesearch, - getadd, - getupdata, - getremove -} from "@/api/system/passwords"; -export default { - name: "passwords.vue", - data() { - // 鏈�灏忛暱搴︽鍒欑粦瀹氬�� - let validatePass="" - //鏈�澶ч暱搴︽鍒欑粦瀹氬�� - let validatePass1="" - //鏈�灏忛暱搴︾粦瀹歷alue - let values="" - //鏈�澶ч暱搴︾粦瀹歷alue - let values1="" - //鏈�灏忛暱搴︽鍒欐柟娉� - validatePass = (rule, value,callback) => { - values=value*1 - if(value === ""){ - callback(new Error('璇疯緭鍏ュ瘑鐮佹渶灏忛暱搴�')); - }else if(values >= values1*1){ - callback(new Error('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�')); - } - }; - //鏈�澶ч暱搴︽鍒欐柟娉� - validatePass1= (rule, value,callback) =>{ - values1=value*1 - if(value === ""){ - callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�')); - }else if(values1 <= values){ - callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�')); - } - } - return { - form:{}, - page: { - pageSize: 10, - currentPage: 1, - total: 100 - }, - data: [], - option: { - headerAlign: 'center', - align: 'center', - border: true, - index: true, - rowKey:'id', - column: [ - { - label: '绛栫暐鍚嶇О', - prop: 'strategyName', - align: 'left', - span:24, - rules: [{ - required: true, - message: "璇疯緭鍏ョ瓥鐣ュ悕绉�", - trigger: "blur" - }] - }, - { - label: '瀵嗙爜鏈�灏忛暱搴�', - prop: 'minPwdLen', - labelWidth:118, - span:12, - rules: [{ - required: true, - validator:validatePass, - trigger: "blur" - - }] - }, - { - label: '瀵嗙爜鏈�澶ч暱搴�', - prop: 'maxPwdLen', - labelWidth:118, - span:12, - rules: [{ - required: true, - validator:validatePass1, - trigger: "blur" - }] - }, - { - label: '缁勫悎鏂规硶', - prop: 'combinationNames', - labelWidth: 91, - display:false - }, - { - //鍐欎袱涓粍鍚堟柟娉曟槸鍥犱负id鍜宯ame涓嶈兘鍚屾椂缁戝畾杩欎釜prop鏉ユ覆鏌擄紝涓�涓〃鏍煎仛闅愯棌鏉ユ暟鎹搷浣滐紙琛ㄥ崟闅愯棌锛夛紝鍙︿竴涓〃鏍煎仛鏄剧ず鍙樉绀哄湪椤甸潰锛堣〃鍗曢殣钘忥級銆� - label: '缁勫悎鏂规硶', - prop: 'combinationIds', - type: "checkbox", - labelWidth:91, - hide:true, - rules: [{ - required: true, - message: "璇烽�夋嫨缁勫悎鏂规硶", - trigger: "blur" - }], - dicData: [ - { - label: "鏁板瓧", - value: '1638024706425188354' - }, - { - label: "绗﹀彿", - value: '1638097837516926977' - }, - { - label: "灏忓啓瀛楁瘝", - value: '1638097772983365634' - }, - { - label: "澶у啓瀛楁瘝", - value: '1638097733707902977' - }, - ], - }, - { - label: '蹇呭~绉嶇被', - prop: 'requiredType', - type: 'select', - labelWidth: 91, - rules: [{ - required: true, - message: "璇烽�夋嫨蹇呭~绉嶇被", - trigger: "blur" - }], - dicData:[{ - label:'1绉�', - value:0 - }, - { - label:'2绉�', - value:1 - }, - { - label:'3绉�', - value:2 - }, - { - label:'4绉�', - value:3 - } - ] - - }, - { - label: '杩囨湡鏃堕棿(澶�)', - prop:'expirationTime', - labelWidth:115, - rules: [{ - required: true, - message: "璇疯緭鍏ヨ繃鏈熸椂闂�", - trigger: "blur" - }] - }, - { - label: '鎻愰啋鏃堕棿(澶�)', - prop:'reminderTime', - labelWidth:113, - rules: [{ - required: true, - message: "璇疯緭鍏ユ彁閱掓椂闂�", - trigger: "blur" - }] - }, - { - label: '閿佸畾娆℃暟(娆�)', - prop:'lockingNum', - labelWidth:116, - rules: [{ - required: true, - message: "璇疯緭鍏ラ攣瀹氭鏁�", - trigger: "blur" - }] - }, - { - label: '閿佸畾鏃堕棿(鍒嗛挓)', - prop:'lockingTime', - labelWidth:128, - rules: [{ - required: true, - message: "璇疯緭鍏ラ攣瀹氭椂闂�", - trigger: "blur" - }] - }, - { - label: '鎻忚堪', - prop:'desc', - type: 'textarea', - rows: 5, - rules: [{ - required: true, - message: "璇风畝鎷弿杩�", - trigger: "blur" - }] - }, - { - label: '鏄惁涓洪粯璁ょ瓥鐣�', - prop: 'isDefault', - type: 'switch', - labelWidth: 132, - dicData:[{ - label:'鍚�', - value:0 - },{ - label:'鏄�', - value:1 - }] - } - ], - } - } - - }, - created() { - this.onLoad() - - }, - mount() { - - }, - methods:{ - rowDel(row){ - this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning" - }) - .then(() => { - return getremove(row.id); - }) - .then(() => { - this.$message({ - type: "success", - message: "鎿嶄綔鎴愬姛!" - }); - this.onLoad(); - }); - }, - rowSave(row,done){ - //灏嗗瘑鐮佺粍鍚堟柟寮忕殑鏁版嵁杞崲涓哄瓧绗︿覆 - const spliceId= row.combinationIds.toString() - row.combinationIds=spliceId - getadd(row).then(()=>{ - // this.onLoad(this.page); - this.$message({ - type: "success", - message: "鎿嶄綔鎴愬姛!" - }); - done(row) - this.onLoad() - }).catch((res)=>{ - console.log(res) - }) - }, - rowUpdate(row,index,done){ - getupdata(row).then(()=>{ - this.onLoad() - this.$message({ - type: "success", - message: "淇敼鎴愬姛!" - }); - done() - }) - }, - onLoad(page, params = {}) { - // this.loading = true; - getPage(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => { - // const data = res.data.data; - // this.page.total = data.total; - // this.data = data.records; - // this.loading = false; - // this.selectionClear(); - this.data=res.data.data.content - }); - } - } - -} -</script> - -<style scoped> - -</style> diff --git a/Source/ProjectWeb/src/views/wel/dashboard.vue b/Source/ProjectWeb/src/views/wel/dashboard.vue index 81b1879..ae18591 100644 --- a/Source/ProjectWeb/src/views/wel/dashboard.vue +++ b/Source/ProjectWeb/src/views/wel/dashboard.vue @@ -1,4 +1,4 @@ -<template> +銆併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併�併��<template> <basic-container> <div class="wel"> <basic-block :width="width" diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..fb57ccd --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + -- Gitblit v1.9.3