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,iVBORw0KGgoAAAANSUhEUgAAAI4AAAAcCAYAAAC3U4dAAAAAAXNSR0IArs4c6QAACSpJREFUaEPtmwesZVUVhr+FvfeusccSS+wVsStRrCD2blARKwI2REWxgQUL2Im9YCG2OIJiCPaWKFEpIorKKCAWFMss8032nuw5c8495829c53gXcnLZO7b+5y91/r3v/619n3BnJaZJwPXm/GYo4GHR8Q5Q2Myc3/gucDlBsasB14eEYfNudzV9AV5IOZ9zgTg/AzYB/h8RGT3fZl5aeCTwL2AC6yAM29EljN/GcD5l6AB9gVOjQj/T2b67ksBewDPB646Y8srxlkOHia/ZRnAcTF/B74KvBM4EdgAXBZ4KPAU4GojK14BZ3JIlzNwWcCpu/kL8CvgXODawJWAHSZsdRJwMvP6wFU6Ke+kiPjdDH118bKWKzZjfg2cXtmxJ72aUm9Y1l9/7eE4LSLWZ+ZFgesC9Zn/BE4CzupL1z3Pv0SZXzWfLH1yRPyhbx+Zec3C3u0eHOq8s4G/AX+NiD9N8PWkIcsGzqRF9QyaCpwXAnsDV26ecXBE+NkWlpmC9k7Aq4GdmgHvAV4VEacNzBOcH2/mqN2+D7w4ItZlpsXC64Bdy3yD90bgfcAZs8CTmQL5fsBLgNuU+WcCe0aE79xkmXl14GbAI4AbA3fprPfPZV2nAr8AjvLfiPj31gaizju/Aec6wLuBuwMXLJsUdDtFhCJ9M8vMywPPBl4EXLjDOILtqIj4RydYgm134CPN5wLDNPzKiDivBzgOdczBgKBcP1AoCBqLBPVgC4ItgJOZMtozgWcBMtwUe0upTgcr3CkPccz5CjhuKDP31DmdNPJB4KkRYcrYaIVtDI5McPseh30BeE5E2G5oT7lgU+zLVJp67TvAXhHxvfLsLuPU+YLnTcBh3bSTmRcD7t0DGuf2AeegAppL1i0BPwG+1SzXw2DRYcpTFnymgHsFnG7AM/NawBHAjg3rSNk7R8TxDXBMN88rPy3b1CHqsWcAR7ask5mPBQRiCwb7SwdUYA4wTh2vzngzcGhEnFWAdhHgvoX5KiDbrW0GnMwULF8rqawefvXMrhFhOqqHo2otiw/98kfg6C6L9hya0Y+2NeMoGH8DKE4VdgZQYewp1VmW41cop0KBZ6XVJ5YnaZzGYU8HXtM0FH3fx4Anl1RiGjMlmF6k/CEzOD7rRFNLZnpyrQ5v3bDNDwub/ah5/xDjtOB5G3AIIEDvIRMAdxxYSBc4+uwbwE2b8eqWxwHHKNBHIz/ngG0BHIN0CvDjIszUFm7EzeskwaSY9JRbPRgMxaxCTzF4W+Dmnby9VuB4wj4A3LNhHYG7W0Qcm5nS936mosZ/vyw6xMrsMuVzU5sd7SMi4tzMfFIRuHWalP/2wjYb+1OFQcaA4zDnCtzjylruOiOWXeDouyOLiL5QfW3xu4DS96ZPAS/LLNwWDRyV+1eALwMGwoafDDPJMvMagIETPA8oAlFmWhNwSvAeWASsrKYZWJ1t+pFt1BrSd/2dQNPpis07NAtWtzyxrEG2uUUTKDXFoyPCfzfZQKqyDXF6YasqZgWPh+xWzXTH+JmptlqfxtmtiG2Zuo2jB9fxP9f/wA+Add01TgrIjEGLAo79gy8B7yrlnumpdaSnQlHpOE9LvXoQVPZL7DO042Uiy8udS9AM/pruqkpZ+yHgwU36c10vBXbx/qx55U+LoBYYAmev0g+qoHqtPRjgDQ2DyZ5vLWyzWXk7ABwBaDoynTwEqEzRbv33gJWPrKwOmgUcr2rcm2v1oPXF8j9FIri/TwOfWlQaWwRwjgE+B3wxIuwKW7HYIPMkeHJNO7KI6cPKwd9V4OhwA+JpNKVJscfXPkMpl2/nqQa+udZLzsy0N7OuCZKs47usMGo6ErwC3lL67My8CfCOUtLXwP0WMAj1dLt+97pLRMiym9kM4FjGq6/UX3bNWz1nShGY7y+M+NFZwCl+1p/qHAW1fnr8AEnIQurMQ4HDF9EIXARw1CV2Z88p9093LifKUlewGCAZpK9ycZ9uyhPmCbbiUGR+vZyOMzNTR5tSNkSEQZ9smWmas9/ysBmTFLc27kyvgl4msD/ixay6q8/s7djgs0kooCYDJyJOKcASJHVdFg2mTist9/xIYBQ49aWlylIr3qAASAYylXXNtLWfTcrJThwYuAjg7BARGzLzRkVs3r9USpaMU64Tuks7rwjHE4APK3JlIPsuvmetG85MezTfHphnwCylX9FqscwU8HZ57zNwY29H+W5DQJ7FOAKnAFQ9p0D3ru71pr2mPF8TcBoA1YtjfX/L0mpwD9UU+3tHhMwzl80NnOIET6iNNzu3dj8XYaYxG2Y22w7ZWnFXGEsA2pbvmn0dm3wbG3edADyhaJIqoOuvZZgDTDdDQJ4CnOI32w/+eIcliDfaFMbJTLWYKfO9fX2ZzJTlrQK7IBE4drDnsrmBk5mKOXOrKWnu5/XsxrRg+jKd2FdZs2WmVYs03ZraSqcOpZua5qzO2jSrttkxIs4YWshU4MyYP8o4makOq4fBuzZLbw9Z1ZgyjunUbnQ1U/0+EfGJNTuxM2HuQGemjjS3bktTOB4UETbM1mxFtyg6H9NMPhZ41MjNudWPjTrTSrU9IkIxPWhLAs7hpUJTIMvOsk+byo2t+rCVC96T7T9rz1OduwjgjH11dOpaZo2zLyFwtopii2iXdb5bHGmFcWBEeGpnWjnZ9nEMkEWAX6cYm9PXADQd7l41zgjwpjCOVZmMafPUOAqQrqYUTKZW06Bi228K2F+b2/4vgKOXSs63cnmQpb3fPJzS08hMq0bvvrzb2jciFM1jwPG7Rl602i+qZrp9WkTYlBubLyhaVlPrmWI+252YmRYjgtlri7Zp6FDf5VWLLQ73vDBbJnBEvmV3e1elgLP8HVvHXIyzMG+tHrTJA2MBG3XVhC+r+wzLQBtlflXBuxmp086wp9/mlT2IWWtZAWc0EssdsAzgKNysaA4s3eVNDbPMtHx/QRGtQ38ao0dWwFkuLkbftgzgKES967Er2vfnMTYOrRDsNNdv7XUXvgLOaCiXO2ARwPF6oC1Xuzvw5vhlsxp4mWkH1UpCzdNnXkV4x2I5ubLtwAOLAI73LXaLt2CTsj+/EnFcRCiMe61cV3gZatOtz9RIJ0SEt7wr2w48MDdwtoM9rJbwP/DAfwEGg7pKrm8BNAAAAABJRU5ErkJggg==",
       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