From b0478092cb738ea038216c347835a14da3768baf Mon Sep 17 00:00:00 2001 From: zrlibs <jesting_rr@163.com> Date: 星期四, 20 三月 2025 14:36:27 +0800 Subject: [PATCH] fixed --- src/layout/index.vue | 63 +++++++++++++-- src/views/account/logout.vue | 2 src/assets/account_bg.png | 0 src/views/account/login.vue | 56 ++++++++------ src/views/examples/data-table/dialogs/info.vue | 18 ++-- vite.config.js | 1 src/views/examples/master-slave.vue | 50 +++++++++--- src/assets/login_bg.png | 0 public/web.config.js | 2 9 files changed, 135 insertions(+), 57 deletions(-) diff --git a/public/web.config.js b/public/web.config.js index 28664ca..80b19df 100644 --- a/public/web.config.js +++ b/public/web.config.js @@ -1,2 +1,2 @@ window.apiRoot = 'http://115.29.185.26:5101' -window.skinRoot = '/skin' \ No newline at end of file +window.skinRoot = '/vue/skin' \ No newline at end of file diff --git a/src/assets/account_bg.png b/src/assets/account_bg.png new file mode 100644 index 0000000..4459cb0 --- /dev/null +++ b/src/assets/account_bg.png Binary files differ diff --git a/src/assets/login_bg.png b/src/assets/login_bg.png index 605ccfb..661dd69 100644 --- a/src/assets/login_bg.png +++ b/src/assets/login_bg.png Binary files differ diff --git a/src/layout/index.vue b/src/layout/index.vue index 75fae0c..973e90f 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -54,14 +54,28 @@ </template> </Menu> </div> - <div class="view"> - <RouterView v-slot="{ Component }"> - <template v-if="Component"> - <KeepAlive> - <component :is="Component" :key="$route.fullPath" /> - </KeepAlive> - </template> - </RouterView> + <div class="view-wrap"> + <div class="navigator"> + <Tag + v-for="(view, index) in openedViewList" + :key="index" + type="dot" + :closable="openedViewList.length > 1" + :color="view.query.menuId == activeName ? 'primary' : ''" + @click="onMenuClick(view.query.menuId)" + @on-close="onMenuClose(index)" + >{{ view.title }}</Tag + > + </div> + <div class="view"> + <RouterView v-slot="{ Component }"> + <template v-if="Component"> + <KeepAlive> + <component :is="Component" :key="$route.fullPath" /> + </KeepAlive> + </template> + </RouterView> + </div> </div> </div> </div> @@ -88,6 +102,7 @@ logo: "data:image/png;base64,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", avatar: "http://115.29.185.26:5101/userphoto?login=sa", userName: "鐢ㄦ埛鍚�, + openedViewList: [], }; }, computed: { @@ -123,12 +138,29 @@ this.refMenu.updateOpened(); }); + let menuTitle = this.viewList.find((v) => v.id == id)?.title; + this.$router.push({ name: route.name, query: { menuId: id, }, }); + if (!this.openedViewList.find((view) => view.query.menuId == id)) + this.openedViewList.push({ + name: route.name, + query: { + menuId: id, + }, + title: menuTitle, + }); + }, + onMenuClose(index) { + let nextId; + if (index > 0) nextId = this.openedViewList[index - 1].query.menuId; + else nextId = this.openedViewList[index + 1].query.menuId; + this.openedViewList.splice(index, 1); + this.onMenuClick(nextId); }, showError(ex) { showError(this, ex); @@ -226,9 +258,22 @@ display: none; } } - .view { + .view-wrap { width: calc(100% - 240px); height: 100%; + .navigator { + height: 40px; + padding: 0 9px; + background-color: #f1f1f1; + .ivu-tag { + margin-top: 4px; + margin-right: 9px; + cursor: pointer; + } + } + .view { + height: calc(100% - 40px); + } } } } diff --git a/src/views/account/login.vue b/src/views/account/login.vue index e126806..a59d7eb 100644 --- a/src/views/account/login.vue +++ b/src/views/account/login.vue @@ -5,13 +5,6 @@ <div class="account-logo"> <img src="http://115.29.185.26:5101/userphoto?login=sa" /> </div> - <article class="ivu-typography ivu-text-center ivu-mt"> - <h1 class="ivu-typography">Vue Template<!----></h1> - <div class="ivu-typography"> - 鍩轰簬 Vue3.0銆乂ueRouter 鍜孷iewUIPlus鐨勭鐞嗙郴缁熸ā鏉挎紨绀�- <!----> - </div> - </article> <Form class="account-form" :model="form" @@ -19,12 +12,12 @@ label-position="top" ref="refFormInline" > + <div class="title">Vue浠撳簱绠$悊绯荤粺</div> <div class="ivu-login"> <FormItem prop="user"> <Input type="text" v-model="form.user" - size="large" prefix="ios-person-outline" > </Input> @@ -33,15 +26,12 @@ <Input type="password" v-model="form.password" - size="large" prefix="ios-lock-outline" > </Input> </FormItem> <FormItem> - <Button type="primary" @click="onSignIn" size="large" long - >鐧诲綍</Button - > + <Button type="primary" @click="onSignIn" long>鐧诲綍</Button> </FormItem> </div> </Form> @@ -130,23 +120,13 @@ background-image: url("../../assets/login_bg.png"); background-attachment: fixed; .login-wrap { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; height: 100vh; overflow: auto; } .login-account { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; + width: 280px; padding: 16px 0 0; - max-width: 420px; - margin: 0 auto; + margin: 0 300px 0 auto; margin-top: 100px; } .account-logo { @@ -165,10 +145,38 @@ .account-form { margin-top: 32px; } + .title { + font-size: 30px; + text-align: center; + margin-bottom: 18px; + letter-spacing: 3px; + + font-weight: bold; + background: -webkit-linear-gradient(#009df4, #00e9cf); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + color: transparent; + } + .ivu-login { + padding: 60px 30px 3px; + background-image: url("../../assets/account_bg.png"); + background-repeat: no-repeat; + background-size: 100% 100%; + background-position: right bottom; + } .ivu-form-item { margin-bottom: 24px; vertical-align: top; zoom: 1; + .ivu-icon { + color: #0ba1f8; + } + .ivu-input { + border: 2px solid #0ba1f8; + background-color: transparent; + color: #fff; + } } .ivu-form-item-content { position: relative; diff --git a/src/views/account/logout.vue b/src/views/account/logout.vue index 74f19b6..d45d1f9 100644 --- a/src/views/account/logout.vue +++ b/src/views/account/logout.vue @@ -8,7 +8,7 @@ mounted() { setTimeout(() => { this.$router.replace("/login"); - }, 3 * 1000); + }, 0 * 1000); }, }; </script> diff --git a/src/views/examples/data-table/dialogs/info.vue b/src/views/examples/data-table/dialogs/info.vue index ab53179..4cd97c8 100644 --- a/src/views/examples/data-table/dialogs/info.vue +++ b/src/views/examples/data-table/dialogs/info.vue @@ -124,15 +124,15 @@ Object.assign(this.form, data); }, clear() { - this.code = ""; - this.name = ""; - this.leader = ""; - this.tel = ""; - this.topCode = ""; - this.address = ""; - this.isThisLevel = false; - this.isEscrow = false; - this.isEnable = false; + this.form.code = ""; + this.form.name = ""; + this.form.leader = ""; + this.form.tel = ""; + this.form.topCode = ""; + this.form.address = ""; + this.form.isThisLevel = false; + this.form.isEscrow = false; + this.form.isEnable = false; }, }, watch: { diff --git a/src/views/examples/master-slave.vue b/src/views/examples/master-slave.vue index a359d56..1724a5e 100644 --- a/src/views/examples/master-slave.vue +++ b/src/views/examples/master-slave.vue @@ -13,53 +13,53 @@ <Row> <Col span="6"> <FormItem label="浠撳簱缂栫爜锛�> - <Input v-model="topForm.WH_Code" size="small"></Input> + <Input v-model="topForm.code" size="small"></Input> </FormItem> </Col> <Col span="6"> <FormItem label="浠撳簱鍚嶇О锛�> - <Input v-model="topForm.WH_Code" size="small"></Input> + <Input v-model="topForm.name" size="small"></Input> </FormItem> </Col> <Col span="6"> <FormItem label="浠撳簱璐熻矗浜猴細"> - <Input v-model="topForm.WH_Code" size="small"></Input> + <Input v-model="topForm.leader" size="small"></Input> </FormItem> </Col> <Col span="6"> <FormItem label="浠撳簱鐢佃瘽锛�> - <Input v-model="topForm.WH_Code" size="small"></Input> + <Input v-model="topForm.tel" size="small"></Input> </FormItem> </Col> </Row> <Row> <Col span="6"> <FormItem label="涓婄骇浠撳簱缂栫爜锛�> - <Input v-model="topForm.WH_Code" size="small"></Input> + <Input v-model="topForm.topCode" size="small"></Input> </FormItem> </Col> <Col span="6"> <FormItem label="鍦板潃锛�> - <Input v-model="topForm.WH_Code" size="small"></Input> + <Input v-model="topForm.address" size="small"></Input> </FormItem> </Col> <Col span="4"> <FormItem :label-width="34"> - <Checkbox v-model="topForm.WH_Code" size="small" + <Checkbox v-model="topForm.isThisLevel" size="small" >鏄惁鏈骇</Checkbox > </FormItem> </Col> <Col span="4"> <FormItem :label-width="34"> - <Checkbox v-model="topForm.WH_Code" size="small" + <Checkbox v-model="topForm.isEscorw" size="small" >鏄惁浠g</Checkbox > </FormItem> </Col> <Col span="4"> <FormItem :label-width="34"> - <Checkbox v-model="topForm.WH_Code" size="small" + <Checkbox v-model="topForm.isEnable" size="small" >鏄惁鍚敤</Checkbox > </FormItem> @@ -68,7 +68,9 @@ </Form> </div> <div class="buttons"> - <Button type="warning" size="small">娓呯┖鏌ヨ</Button> + <Button type="warning" size="small" @click="onClearClick" + >娓呯┖鏌ヨ</Button + > </div> <DataTable :tableHeight="tableTopHeight" @@ -115,14 +117,22 @@ data() { return { // 鍒嗛殧姣斾緥 - split: 0.6, + split: 0.8, // 涓昏〃鍙傛暟瀹氫箟 topColumns: [], topData: [], tableTopHeight: 0, tableBottomHeight: 0, topForm: { - WH_Code: "", + code: "", + name: "", + leader: "", + tel: "", + topCode: "", + address: "", + isThisLevel: false, + isEscorw: false, + isEnable: false, }, topPage: 1, topLimit: 30, @@ -278,7 +288,7 @@ // 浠庤〃娴嬭瘯鏁版嵁鍒楄〃 fakeBottomDataList(topDataId) { return new Promise((resolve) => { - let total = Math.floor(Math.random() * 10); + let total = Math.floor(Math.random() * 10 + 1); let fakeList = []; for (let i = 0; i < total; i++) { let row = { @@ -428,6 +438,20 @@ this.topPage = page; this.loadTopData(); }, + onClearClick() { + this.reset(); + }, + reset() { + this.topForm.code = ""; + this.topForm.name = ""; + this.topForm.leader = ""; + this.topForm.tel = ""; + this.topForm.topCode = ""; + this.topForm.address = ""; + this.topForm.isThisLevel = false; + this.topForm.isEscorw = false; + this.topForm.isEnable = false; + }, }, async mounted() { await this.loadTopColumns(); diff --git a/vite.config.js b/vite.config.js index 4217010..9e3d9be 100644 --- a/vite.config.js +++ b/vite.config.js @@ -15,4 +15,5 @@ '@': fileURLToPath(new URL('./src', import.meta.url)) }, }, + base: '/vue/' }) -- Gitblit v1.9.1