From fa837d5f98b6d66185d5fb171948d90bd5acd793 Mon Sep 17 00:00:00 2001
From: 艺术家 <10819716+q100102@user.noreply.gitee.com>
Date: 星期三, 11 六月 2025 17:14:37 +0800
Subject: [PATCH] 代码提交

---
 项目代码/伸缩杆/client/src/views/tts/UserManagement/Usermanagement.vue |  306 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 304 insertions(+), 2 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\344\274\270\347\274\251\346\235\206/client/src/views/tts/UserManagement/Usermanagement.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\344\274\270\347\274\251\346\235\206/client/src/views/tts/UserManagement/Usermanagement.vue"
index ee75184..2505a94 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\344\274\270\347\274\251\346\235\206/client/src/views/tts/UserManagement/Usermanagement.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\344\274\270\347\274\251\346\235\206/client/src/views/tts/UserManagement/Usermanagement.vue"
@@ -26,6 +26,12 @@
         >
           鐢ㄦ埛鍗曚綅
         </div>
+        <div
+          :class="['item', isactive == 5 ? 'isactive' : '']"
+          @click="changeactive(5)"
+        >
+          鐢ㄦ埛IP
+        </div>
       </div>
       <div class="serch">
         <div class="time_box">
@@ -150,6 +156,23 @@
             type="primary"
             size="small"
             @click="AddUnit"
+            style="
+              width: 5.5rem;
+              height: 2rem;
+              font-size: 0.88rem;
+              display: flex;
+              align-items: center;
+            "
+            class="text_btn"
+            ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
+            >鏂板缓</el-button
+          >
+          <!-- 鐢ㄦ埛IP鏂板缓 -->
+          <el-button
+            v-if="isactive == 5"
+            type="primary"
+            size="small"
+            @click="Addip"
             style="
               width: 5.5rem;
               height: 2rem;
@@ -557,6 +580,63 @@
                   cursor: 'pointer',
                 }"
                 @click="EditUnit(scope.row)"
+                >缂栬緫</span
+              >
+            </template></el-table-column
+          >
+        </el-table>
+
+        <!-- 鐢ㄦ埛IP -->
+        <el-table
+          empty-text="鏆傛棤鏁版嵁"
+          :height="isMin ? '950' : '450'"
+          v-if="isactive == 5"
+          :data="ipData"
+          style="width: 100%"
+          :header-cell-style="
+            isMin
+              ? {
+                  background: 'rgba(250,250,250,1)',
+                  color: '#101010',
+                  fontSize: '1.5rem',
+                  height: '3rem',
+                  border: 'none',
+                }
+              : {
+                  background: 'rgba(250,250,250,1)',
+                  color: '#101010',
+                  fontSize: '0.88rem',
+                  height: '3rem',
+                  border: 'none',
+                }
+          "
+          :row-style="
+            isMin
+              ? {
+                  color: '#101010',
+                  fontSize: '1.88rem',
+                  height: '3rem',
+                }
+              : {
+                  color: '#101010',
+                  fontSize: '0.88rem',
+                  height: '3rem',
+                }
+          "
+          @selection-change="IpSelectionChange"
+        >
+          <el-table-column type="selection" align="center" />
+          <el-table-column prop="iPaddress" label="ip鍦板潃" align="center" />
+          <el-table-column prop="addressname" label="妫�淇亾" align="center" />
+          <el-table-column label="鎿嶄綔" align="center">
+            <template #default="scope">
+              <span
+                :style="{
+                  color: 'blue',
+                  fontSize: isMin ? '1.88rem' : '0.88rem',
+                  cursor: 'pointer',
+                }"
+                @click="Editip(scope.row)"
                 >缂栬緫</span
               >
             </template></el-table-column
@@ -1271,6 +1351,120 @@
       </template>
     </el-dialog>
 
+    <!-- 鐢ㄦ埛ip鏂板缓/缂栬緫 -->
+    <el-dialog
+      v-model="dialogipVisible"
+      title=""
+      width="40%"
+      :before-close="handleClose"
+      :show-close="false"
+      :align-center="true"
+      @close="resetForm4(formipRef)"
+    >
+      <template #title>
+        <div
+          style="
+            height: 3.63rem;
+            display: flex;
+            border-bottom: 1px solid #e6e6e6;
+          "
+        >
+          <span
+            :style="{
+              color: 'rgb(16, 16, 16)',
+              fontSize: isMin ? '2rem' : '1rem',
+              fontWeight: 'bold',
+            }"
+            >鐢ㄦ埛ip</span
+          >
+        </div>
+      </template>
+      <el-form
+        :model="formip"
+        label-width="auto"
+        label-position="top"
+        ref="formipRef"
+        :rules="ipRules"
+        :hide-required-asterisk="true"
+      >
+        <el-form-item prop="iPaddress">
+          <template #label>
+            <div style="display: flex; align-items: flex-end">
+              <span
+                :style="{
+                  color: 'red',
+                  marginRight: '0.2rem',
+                  fontSize: '2rem',
+                }"
+                >*</span
+              >
+              <span
+                :style="{
+                  fontSize: isMin ? '2rem' : '0.88rem',
+                  color: 'black',
+                  fontWeight: bold,
+                }"
+                >ip鍦板潃</span
+              >
+            </div>
+          </template>
+          <el-input
+            style="height: 2rem"
+            size="small"
+            v-model="formip.iPaddress"
+            placeholder="璇疯緭鍏�"
+          />
+        </el-form-item>
+        <el-form-item prop="addressname">
+          <template #label>
+            <div style="display: flex; align-items: flex-end">
+              <span
+                :style="{
+                  color: 'red',
+                  marginRight: '0.2rem',
+                  fontSize: '2rem',
+                }"
+                >*</span
+              >
+              <span
+                :style="{
+                  fontSize: isMin ? '2rem' : '0.88rem',
+                  color: 'black',
+                  fontWeight: bold,
+                }"
+                >妫�淇亾</span
+              >
+            </div>
+          </template>
+          <el-input
+            style="height: 2rem"
+            size="small"
+            v-model="formip.addressname"
+            placeholder="璇疯緭鍏�"
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer" style="text-align: center">
+          <el-button
+            size="small"
+            @click="dialogipVisible = false"
+            style="height: 2rem; font-size: 0.88rem"
+            >鍙栨秷</el-button
+          >
+
+          <el-button
+            size="small"
+            type="primary"
+            @click="saveIp(formipRef)"
+            style="height: 2rem; font-size: 0.88rem"
+          >
+            淇濆瓨
+          </el-button>
+        </div>
+      </template>
+    </el-dialog>
+
     <el-dialog v-model="imgdialogVisible" width="35%" top="3vh">
       <div
         style="
@@ -1352,6 +1546,10 @@
   AddUserUnit,
   EditUserUnit,
   DeleteUserUnit,
+  GetIPData,
+  AddIP,
+  EditIP,
+  DeleteIP,
 } from "@/api/user";
 import { useRouter } from "vue-router";
 import { formatTime } from "@/utils/index.js";
@@ -1681,6 +1879,19 @@
     unitName: "",
   };
 };
+const resetForm4 = (formEl) => {
+  if (!formEl) return;
+  formEl.resetFields();
+  formip.value = {
+    creater: "",
+    createDate: "",
+    modifier: "",
+    modifyDate: "",
+    id: 0,
+    iPaddress: "",
+    addressname: "",
+  };
+};
 
 const handlePictureCardPreview = (uploadFile) => {
   dialogImageUrl.value = uploadFile.url;
@@ -1879,6 +2090,19 @@
     trigger: "blur",
   },
 });
+const ipRules = reactive({
+  iPaddress: {
+    required: true,
+    message: "璇疯緭鍏P鍦板潃",
+    trigger: "blur",
+  },
+  addressname: {
+    required: true,
+    message: "璇疯緭鍏ユ淇亾",
+    trigger: "blur",
+  },
+});
+
 const formRole = ref({
   roleName: "",
   description: "",
@@ -2044,6 +2268,10 @@
   Unittype.value = "鏂板缓";
   UnitdialogVisible.value = true;
 };
+const Addip = () => {
+  ipType.value = "鏂板缓";
+  dialogipVisible.value = true;
+};
 //鑾峰彇鐢ㄦ埛鍗曚綅
 const getUnit = () => {
   const startTime = formatTime(queryForm.value.selectTime[0]);
@@ -2100,6 +2328,8 @@
   } else if (isactive.value == 4) {
     selectoptions.value = unitOptions;
     getUnit();
+  } else if ((isactive.value = 5)) {
+    getIpData();
   }
 };
 
@@ -2119,6 +2349,10 @@
   ids.value = val.map((item) => item.id);
 };
 const UnitSelectionChange = (val) => {
+  ids.value = [];
+  ids.value = val.map((item) => item.id);
+};
+const IpSelectionChange = (val) => {
   ids.value = [];
   ids.value = val.map((item) => item.id);
 };
@@ -2150,6 +2384,11 @@
     DeleteUserUnit(ids.value).then((res) => {
       ElMessage({ message: "鍒犻櫎鎴愬姛", type: "success" });
       getUnit();
+    });
+  } else if (isactive.value == 5) {
+    DeleteIP(ids.value).then((res) => {
+      ElMessage({ message: "鍒犻櫎鎴愬姛", type: "success" });
+      getIpData();
     });
   }
 };
@@ -2241,11 +2480,74 @@
       ElMessage.error("鏁版嵁鎻愪氦澶辫触");
       onloading.value.close();
       registerdialogVisible.value = false;
-      // hideLoading();
     }
   };
   xmlResquest.send(JSON.stringify({ Base64Image: imgbase64.value }));
 }
+const ipData = ref([]);
+const dialogipVisible = ref(false);
+const ipType = ref("鏂板缓");
+const formip = ref({
+  creater: "",
+  createDate: "",
+  modifier: "",
+  modifyDate: "",
+  id: 0,
+  iPaddress: "",
+  addressname: "",
+});
+const formipRef = ref(null);
+//鑾峰彇ip鏁版嵁
+const getIpData = () => {
+  // 鏌ヨ鏉′欢
+  const startTime = formatTime(queryForm.value.selectTime[0]);
+  const endTime = formatTime(queryForm.value.selectTime[1]);
+  const filter = [
+    {
+      name: queryForm.value.selectType,
+      value: queryForm.value.selectInput,
+      displayType: "like",
+    },
+    { name: "createDate", value: startTime, displayType: "ThanOrEqual" },
+    { name: "createDate", value: endTime, displayType: "LessOrEqual" },
+  ];
+  GetIPData({
+    ...pageQuery.value,
+    filter,
+  }).then((res) => {
+    ipData.value = res.rows;
+    pageTotal.value = res.total;
+  });
+};
+const Editip = (val) => {
+  ipType.value = "淇敼";
+  let obj = Object.assign({}, val);
+  formip.value = obj;
+  dialogipVisible.value = true;
+};
+//淇濆瓨ip
+const saveIp = async (formEl) => {
+  if (!formEl) return;
+  await formEl.validate((valid, fields) => {
+    if (valid) {
+      if (ipType.value == "淇敼") {
+        EditIP(formip.value).then((res) => {
+          ElMessage({ message: "淇敼鎴愬姛", type: "success" });
+          dialogipVisible.value = false;
+          getIpData();
+        });
+      } else {
+        AddIP(formip.value).then((res) => {
+          ElMessage({ message: "娣诲姞鎴愬姛", type: "success" });
+          dialogipVisible.value = false;
+          getIpData();
+        });
+      }
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
+};
 
 onMounted(() => {
   if (window.innerWidth <= 1080) {
@@ -2413,7 +2715,7 @@
       flex-direction: column;
 
       .checkbox {
-        width: 35rem;
+        width: 45rem;
         display: flex;
         justify-content: space-between;
         margin-top: 1rem;

--
Gitblit v1.9.3