From 7c0f20e25e870e055f88952f9ec57677730eda67 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 11 十二月 2025 12:06:30 +0800
Subject: [PATCH] Merge branch 'master' of http://159.223.171.199:10439/r/YiWuProject

---
 UI-Project/src/views/User/userlist.vue |  760 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 483 insertions(+), 277 deletions(-)

diff --git a/UI-Project/src/views/User/userlist.vue b/UI-Project/src/views/User/userlist.vue
index 8395779..db9da3f 100644
--- a/UI-Project/src/views/User/userlist.vue
+++ b/UI-Project/src/views/User/userlist.vue
@@ -1,363 +1,569 @@
 <script setup>
-import {Search} from "@element-plus/icons-vue";
-import {reactive} from "vue";
-import {useRouter} from "vue-router"
-const router = useRouter()
-const add = ref(false)
-const adda = ref(false)
-import request from "@/utils/request"
-import { ref, onMounted } from "vue";
-import { ElMessage, ElMessageBox } from 'element-plus'
-import { useI18n } from 'vue-i18n'
-const { t } = useI18n()
-let language = ref(localStorage.getItem('lang') || 'zh')
+import { Search, Lock } from "@element-plus/icons-vue"; // 鏂板Lock鍥炬爣瀵煎叆
+import { reactive, ref, onMounted } from "vue";
+import { useRouter } from "vue-router";
+const router = useRouter();
+import request from "@/utils/request";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { useI18n } from "vue-i18n";
+const { t } = useI18n();
 const selectedProjectNoa = ref(null);
-const userName = ref('');
-const password = ref('');
-const tableData = ref([])
-const slot = ref('')
-// request.post("/loadGlass/sys/user/listByUserName",{
-//   key: ''
-// }).then((res) => {
-//    if (res.code == 200) {
-//    console.log(res.data);
-//    tableData.value = res.data
-//    } else {
-//    ElMessage.warning(res.msg)
-//    }
-//    });
-  const listByUserName = async () => {  
+const userName = ref("");
+const password = ref("");
+const confirmPassword = ref("");
+const editPassword = ref("");
+const editConfirmPassword = ref("");
+const tableData = ref([]);
+const slot = ref("");
+const add = ref(false);
+const adda = ref(false);
+let language = ref(localStorage.getItem("lang") || "zh");
+// 鑾峰彇鐢ㄦ埛鍒楄〃
+const listByUserName = async () => {
   try {
-    const response = await request.post('/loadGlass/sys/user/listByUserName',{
-      key: ''
-     });  
-    if (response.code === 200) {  
-      tableData.value = response.data
-    } else {  
-      ElMessage.warning(response.data);  
-    }  
-  } catch (error) {
-  }  
-}; 
-// 閲嶇疆瀵嗙爜
- const open = async(row) => {  
-  try {
-    const confirmResult = await ElMessageBox.confirm(  
-      t('productStock.repassword'), 
-      t('productStock.prompt'),  
-      {  
-        confirmButtonText: t('productStock.yes'), 
-        cancelButtonText: t('productStock.cancel'),
-        type: 'warning',  
-      } 
-    );
-    if (confirmResult === 'confirm') {
-      var url="/loadGlass/sys/user/resetPassword?userId="+row.id;
-      const response = await request.post(url, {
-        esdId: row.esdId
-    })
+    const response = await request.post("/loadGlass/sys/user/listByUserName", {
+      key: "",
+    });
     if (response.code === 200) {
-      ElMessage.success(response.message);
+      tableData.value = response.data;
+    } else {
+      ElMessage.warning(response.msg);
+    }
+  } catch (error) {
+    ElMessage.error( );
+  }
+};
+// 閲嶇疆瀵嗙爜
+const open = async (row) => {
+  try {
+    const confirmResult = await ElMessageBox.confirm(
+      t("productStock.repassword"),
+      t("productStock.prompt"),
+      {
+        confirmButtonText: t("productStock.yes"),
+        cancelButtonText: t("productStock.cancel"),
+        type: "warning",
+      }
+    );
+    if (confirmResult === "confirm") {
+      const url = "/loadGlass/sys/user/resetPassword?userId=" + row.id;
+      const response = await request.post(url, {
+        esdId: row.esdId,
+      });
+      if (response.code === 200) {
+        ElMessage.success(response.message);
       } else {
-      ElMessage.error(response.msg);
-      }  
-    }  
+        ElMessage.error(response.msg);
+      }
+    }
   } catch (error) {
-  }  
-}; 
+    if (error !== "cancel") { // 鎺掗櫎鍙栨秷鎿嶄綔鐨勯敊璇�
+      ElMessage.error( );
+      console.error("閲嶇疆瀵嗙爜澶辫触锛�", error);
+    }
+  }
+};
 const titleSelectJsona = ref({
-  processType: [],
-})
-onMounted(() => {
-  fetchOptionsa('');
-  listByUserName('');
-}); 
-  // 瑙掕壊涓嬫媺閫�  
-  const fetchOptionsa = async () => {  
+  processTypea: [],
+});
+// 鑾峰彇瑙掕壊鍒楄〃
+const fetchOptionsa = async () => {
   try {
-    const response = await request.post('/loadGlass/sys/role/queryRole',{
-      key: ''
-     });  
-    if (response.code === 200) {  
-    titleSelectJsona.value.processTypea = response.data;
-    } else {  
-      ElMessage.warning(response.data);  
-    }  
+    const response = await request.post("/loadGlass/sys/role/queryRole", {
+      key: "",
+    });
+    if (response.code === 200) {
+      titleSelectJsona.value.processTypea = response.data;
+    } else {
+      ElMessage.warning(response.msg);
+    }
   } catch (error) {
-  }  
-}; 
-// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
-function handleEdit(row) {  
+    ElMessage.error( );
+  }
+};
+// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮
+function handleEdit(row) {
   userName.value = row.userName;
-  if (row.roleList && row.roleList.length > 0) {  
-    const firstRole = row.roleList[0];  
-    selectedProjectNoa.value = firstRole.id; // 璁剧疆涓篒D锛岃�屼笉鏄痭ame  
-  }  
+  editPassword.value = "";
+  editConfirmPassword.value = "";
+  if (row.roleList && row.roleList.length > 0) {
+    const firstRole = row.roleList[0];
+    selectedProjectNoa.value = firstRole.id;
+  }
   adda.value = true;
-  window.localStorage.setItem('id', row.id)
-} 
-function closeDialog(row) {
-     add.value = false;
-     userName.value = '';
-     nickName.value = '';
-     password.value = '';
-     selectedProjectNoa.value = '';
+  window.localStorage.setItem("id", row.id);
 }
-function closeDialoga(row) {
-     adda.value = false;
-     userName.value = '';
-     nickName.value = '';
-     password.value = '';
+// 鍏抽棴娣诲姞寮圭獥
+function closeDialog() {
+  add.value = false;
+  userName.value = "";
+  password.value = "";
+  confirmPassword.value = "";
+  selectedProjectNoa.value = "";
 }
-// 娣诲姞 
+// 鍏抽棴缂栬緫寮圭獥
+function closeDialoga() {
+  adda.value = false;
+  userName.value = "";
+  editPassword.value = "";
+  editConfirmPassword.value = "";
+  selectedProjectNoa.value = "";
+}
+// 娣诲姞鐢ㄦ埛
 const getTableRow = async () => {
-   if (!userName.value) {
-    ElMessage.error(t('productStock.inusername'))
-    return
+  // 楠岃瘉鐢ㄦ埛鍚�
+  if (!userName.value) {
+    ElMessage.error(t("productStock.inusername"));
+    return;
   }
-   if (!selectedProjectNoa.value) {
-    ElMessage.error(t('productStock.inrole'))
-    return
+  // 楠岃瘉瑙掕壊
+  if (!selectedProjectNoa.value) {
+    ElMessage.error(t("productStock.inrole"));
+    return;
   }
-   if (!password.value) {
-    ElMessage.error(t('productStock.inpassword'))
-    return
+  // 楠岃瘉瀵嗙爜
+  if (!password.value) {
+    ElMessage.error(t("productStock.inpassword"));
+    return;
+  }
+  // 楠岃瘉纭瀵嗙爜
+  if (!confirmPassword.value) {
+    ElMessage.error(t("productStock.inconfirmpassword"));
+    return;
+  }
+  // 楠岃瘉瀵嗙爜涓�鑷存��
+  if (password.value !== confirmPassword.value) {
+    ElMessage.error(t("productStock.passwordNotMatch"));
+    return;
   }
   try {
-    const response = await request.post('/loadGlass/sys/user/saveUser', {
+    const response = await request.post("/loadGlass/sys/user/saveUser", {
       userName: userName.value,
       nickName: userName.value,
       password: password.value,
       roleList: [
-    {
-      id: selectedProjectNoa.value,
-    }]
-    }); 
+        {
+          id: selectedProjectNoa.value,
+        },
+      ],
+    });
     if (response.code === 200) {
       ElMessage.success(response.message);
-      add.value = false;
-      listByUserName('');
-  // tableData.value = response.data;
+      closeDialog(); // 鍏抽棴寮圭獥骞舵竻绌鸿〃鍗�
+      listByUserName(); // 鍒锋柊鍒楄〃
     } else {
       ElMessage.error(response.message);
     }
   } catch (error) {
+    ElMessage.error( );
   }
 };
-// 缂栬緫
+// 缂栬緫鐢ㄦ埛
 const getTableRowa = async () => {
-   if (!userName.value) {
-    ElMessage.error(t('productStock.inusername'))
-    return
+  // 楠岃瘉鐢ㄦ埛鍚�
+  if (!userName.value) {
+    ElMessage.error(t("productStock.inusername"));
+    return;
   }
-   if (!selectedProjectNoa.value) {
-    ElMessage.error(t('productStock.inrole'))
-    return
+  // 楠岃瘉瑙掕壊
+  if (!selectedProjectNoa.value) {
+    ElMessage.error(t("productStock.inrole"));
+    return;
   }
-   if (!password.value) {
-    ElMessage.error(t('productStock.inpassword'))
-    return
+  if (editPassword.value || editConfirmPassword.value) {
+    if (!editPassword.value) {
+      ElMessage.error(t("productStock.inpassword"));
+      return;
+    }
+    if (!editConfirmPassword.value) {
+      ElMessage.error(t("productStock.inconfirmpassword"));
+      return;
+    }
+    if (editPassword.value !== editConfirmPassword.value) {
+      ElMessage.error(t("productStock.passwordNotMatch"));
+      return;
+    }
   }
-  let id = window.localStorage.getItem('id')
+  let id = window.localStorage.getItem("id");
+  if (!id) {
+    ElMessage.error(t("productStock.userIdError"));
+    return;
+  }
   try {
-    const response = await request.post('/loadGlass/sys/user/updateUser', {
+    const requestData = {
       id: id,
       userName: userName.value,
       roleList: [
-    {
-      id: selectedProjectNoa.value,
-    }]
-  }
-  ); 
+        {
+          id: selectedProjectNoa.value,
+        },
+      ],
+    };
+    if (editPassword.value) {
+      requestData.password = editPassword.value;
+    }
+    const response = await request.post("/loadGlass/sys/user/updateUser", requestData);
     if (response.code === 200) {
       ElMessage.success(response.message);
-      adda.value = false;
-      listByUserName('');
-      tableData.value = response.data;
+      closeDialoga();
+      listByUserName();
     } else {
       ElMessage.error(response.message);
     }
   } catch (error) {
+    ElMessage.error( );
   }
 };
-// 鍒犻櫎 
- const opena = async(row) => {  
+// 鍒犻櫎鐢ㄦ埛
+const opena = async (row) => {
   try {
-    const confirmResult = await ElMessageBox.confirm(  
-      t('productStock.deusername'), 
-      t('productStock.prompt'),  
-      {  
-        confirmButtonText: t('productStock.yes'), 
-        cancelButtonText: t('productStock.cancel'),
-        type: 'warning',  
-      } 
+    const confirmResult = await ElMessageBox.confirm(
+      t("productStock.deusername"),
+      t("productStock.prompt"),
+      {
+        confirmButtonText: t("productStock.yes"),
+        cancelButtonText: t("productStock.cancel"),
+        type: "warning",
+      }
     );
-    if (confirmResult === 'confirm') {
-      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
-    if (response.code === 200) {
-      ElMessage.success(response.message);
-      listByUserName('');
-    } else {
-      ElMessage.error(response.msg);
-      }  
-    }  
+    if (confirmResult === "confirm") {
+      const response = await request.post("/loadGlass/sys/user/deleteUser", [row.id]);
+      if (response.code === 200) {
+        ElMessage.success(response.message);
+        listByUserName(); // 鍒锋柊鍒楄〃
+      } else {
+        ElMessage.error(response.msg);
+      }
+    }
   } catch (error) {
-  }  
-};   
+    if (error !== "cancel") {
+      ElMessage.error( );
+    }
+  }
+};
+onMounted(() => {
+  fetchOptionsa();
+  listByUserName();
+});
 </script>
 <template>
   <div>
-     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  id="searchButton" @click="add = true">{{ $t('productStock.addusers') }}</el-button>
-    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" >
-      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
-        <el-table height="750" ref="table" 
-        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="userName" align="center" :label="$t('productStock.username')" min-width="180" />
-          <el-table-column align="center" :label="$t('productStock.role')" min-width="80">
-            <template #default="scope">  
-             <el-tag v-for="role in scope.row.roleList">  
-            {{role.name}}  
-           </el-tag>   
-         </template> 
-            </el-table-column>
-          <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270">
+    <el-button
+      type="primary"
+      style="margin-top: 10px; margin-left: 10px"
+      id="searchButton"
+      @click="add = true"
+    >
+      {{ $t("productStock.addusers") }}
+    </el-button>
+    <el-card style="flex: 1; margin-left: 10px; margin-top: 20px">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto">
+        <el-table
+          height="750"
+          ref="table"
+          :data="tableData"
+          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"
+        >
+          <el-table-column
+            prop="userName"
+            align="center"
+            :label="$t('productStock.username')"
+            min-width="180"
+          />
+          <el-table-column
+            align="center"
+            :label="$t('productStock.role')"
+            min-width="80"
+          >
             <template #default="scope">
-              <el-button type="text" plain @click="open(scope.row)">{{ $t('productStock.resetpassword') }}</el-button>
-              <el-button type="text" plain @click="handleEdit(scope.row)">{{ $t('productStock.exit') }}</el-button>
-              <el-button type="text" plain @click="opena(scope.row)">{{ $t('productStock.delete') }}</el-button>
+              <el-tag v-for="role in scope.row.roleList" :key="role.id">
+                {{ role.name }}
+              </el-tag>
             </template>
-        </el-table-column>
+          </el-table-column>
+          <el-table-column
+            fixed="right"
+            :label="$t('productStock.operate')"
+            align="center"
+            width="270"
+          >
+            <template #default="scope">
+              <el-button
+                type="text"
+                plain
+                @click="open(scope.row)"
+              >
+                {{ $t('productStock.resetpassword') }}
+              </el-button>
+              <el-button
+                type="text"
+                plain
+                @click="handleEdit(scope.row)"
+              >
+                {{ $t('productStock.exit') }}
+              </el-button>
+              <el-button
+                type="text"
+                plain
+                @click="opena(scope.row)"
+              >
+                {{ $t('productStock.delete') }}
+              </el-button>
+            </template>
+          </el-table-column>
         </el-table>
       </div>
     </el-card>
   </div>
-  <el-dialog v-model="add" top="23vh" width="37%" :title="$t('productStock.addusers')">
-    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
-            <el-form  label-width="150px">
-      <el-form label-width="105px" label-position="right">
-        <el-row style="margin-top: -15px;margin-bottom: -2px;">
-          <el-col :span="6">
-              <div id="dt" style="font-size: 15px;">
-        <div>
-          <el-form-item :label="$t('productStock.usernamea')" :required="true" style="width: 25vw">
-                <el-input v-model="userName" autocomplete="off" style="width: 350px;" :placeholder="$t('productStock.inusername')" />
-              </el-form-item></div></div>
-          </el-col>
-        </el-row>
-        <el-row style="margin-top: 10px;">
-          <el-col :span="6">
-              <div id="dt" style="font-size: 15px;">
-        <div>
-              <el-form-item :label="$t('productStock.rolea')" :required="true" style="width: 25vw;">
-                <el-select
-               v-model="selectedProjectNoa"
-               filterable
-               clearable
-               :placeholder="$t('productStock.inrole')"
-               style="width: 350px;"
-             >
-               <el-option
-            v-for="item in titleSelectJsona['processTypea']"  
-            :key="item.id"
-            :label="item.name"
-            :value="item.id"
-          />
-        </el-select>
-              </el-form-item></div></div>
-          </el-col>
-        </el-row>
-        <el-row style="margin-top: 10px;">
-          <el-col :span="6">
-              <div id="dt" style="font-size: 15px;">
-        <div>
-              <el-form-item :label="$t('productStock.password')" :required="true" style="width: 25vw;">
-                <el-input style="width: 350px;"
-                        v-model="password"
-                        :placeholder="$t('productStock.inpassword')"
-                        autocomplete="off"
-                        :prefix-icon="Lock"
-                        show-password/>
-              </el-form-item></div></div>
-          </el-col>
-        </el-row>
+  <!-- 娣诲姞鐢ㄦ埛寮圭獥 -->
+  <el-dialog
+    v-model="add"
+    top="23vh"
+    width="37%"
+    :title="$t('productStock.addusers')"
+    @close="closeDialog"
+  >
+    <div style="margin-left: -50px; margin-top: 10px; margin-bottom: 10px">
+      <el-form label-width="150px">
+        <el-form label-width="105px" label-position="right">
+          <el-row style="margin-top: -15px; margin-bottom: -2px">
+            <el-col :span="6">
+              <div id="dt" style="font-size: 15px">
+                <el-form-item
+                  :label="$t('productStock.usernamea')"
+                  :required="true"
+                  style="width: 25vw"
+                >
+                  <el-input
+                    v-model="userName"
+                    autocomplete="off"
+                    style="width: 350px"
+                    :placeholder="$t('productStock.inusername')"
+                  />
+                </el-form-item>
+              </div>
+            </el-col>
+          </el-row>
+          <el-row style="margin-top: 10px">
+            <el-col :span="6">
+              <div id="dt" style="font-size: 15px">
+                <el-form-item
+                  :label="$t('productStock.rolea')"
+                  :required="true"
+                  style="width: 25vw"
+                >
+                  <el-select
+                    v-model="selectedProjectNoa"
+                    filterable
+                    clearable
+                    :placeholder="$t('productStock.inrole')"
+                    style="width: 350px"
+                  >
+                    <el-option
+                      v-for="item in titleSelectJsona.processTypea"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    />
+                  </el-select>
+                </el-form-item>
+              </div>
+            </el-col>
+          </el-row>
+          <el-row style="margin-top: 10px">
+            <el-col :span="6">
+              <div id="dt" style="font-size: 15px">
+                <el-form-item
+                  :label="$t('productStock.password')"
+                  :required="true"
+                  style="width: 25vw"
+                >
+                  <el-input
+                    v-model="password"
+                    :placeholder="$t('productStock.inpassword')"
+                    autocomplete="off"
+                    :prefix-icon="Lock"
+                    show-password
+                    style="width: 350px"
+                  />
+                </el-form-item>
+              </div>
+            </el-col>
+          </el-row>
+          <!-- 鏂板纭瀵嗙爜 -->
+          <el-row style="margin-top: 10px">
+            <el-col :span="6">
+              <div id="dt" style="font-size: 15px">
+                <el-form-item
+                  :label="$t('productStock.confirmpassword')"
+                  :required="true"
+                  style="width: 25vw"
+                >
+                  <el-input
+                    v-model="confirmPassword"
+                    :placeholder="$t('productStock.inconfirmpassword')" 
+                    autocomplete="off"
+                    :prefix-icon="Lock"
+                    show-password
+                    style="width: 350px"
+                  />
+                </el-form-item>
+              </div>
+            </el-col>
+          </el-row>
         </el-form>
-            </el-form>
-          </div>
+      </el-form>
+    </div>
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="getTableRow">
           {{ $t('productStock.sure') }}
         </el-button>
-        <el-button @click="closeDialog">{{ $t('productStock.cancel') }}</el-button>
+        <el-button @click="closeDialog">
+          {{ $t('productStock.cancel') }}
+        </el-button>
       </div>
     </template>
-  </el-dialog> 
-  <el-dialog v-model="adda" top="23vh" width="37%" :title="$t('productStock.reusername')" >
-    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
-            <el-form ref="formRef" label-width="150px">
-      <el-form label-width="105px" label-position="right">
-        <el-row style="margin-top: -15px;margin-bottom: -2px;">
-          <el-col :span="6">
-              <div id="dt" style="font-size: 15px;">
-        <div>
-          <el-form-item :label="$t('productStock.usernamea')" :required="true" style="width: 25vw">
-                <el-input :placeholder="$t('productStock.inusername')" v-model="userName" autocomplete="off" style="width: 350px;"/>
-              </el-form-item></div></div>
-          </el-col>
-        </el-row>
-        <el-row style="margin-top: 10px;">
-          <el-col :span="6">
-              <div id="dt" style="font-size: 15px;">
-        <div>
-              <el-form-item :label="$t('productStock.rolea')" :required="true" style="width: 25vw;">
-                <el-select
-               v-model="selectedProjectNoa"
-               filterable
-               clearable
-               :placeholder="$t('productStock.inrole')"
-               style="width: 350px;"
-             >
-               <el-option
-         v-for="item in titleSelectJsona['processTypea']"
-            :key="item.id"
-            :label="item.name"
-            :value="item.id"
-          />
-        </el-select>
-              </el-form-item></div></div>
-          </el-col>
-        </el-row>
+  </el-dialog>
+  <!-- 缂栬緫鐢ㄦ埛寮圭獥 -->
+  <el-dialog
+    v-model="adda"
+    top="23vh"
+    width="37%"
+    :title="$t('productStock.reusername')"
+    @close="closeDialoga"
+  >
+    <div style="margin-left: -50px; margin-top: 10px; margin-bottom: 10px">
+      <el-form ref="formRef" label-width="150px">
+        <el-form label-width="105px" label-position="right">
+          <el-row style="margin-top: -15px; margin-bottom: -2px">
+            <el-col :span="6">
+              <div id="dt" style="font-size: 15px">
+                <el-form-item
+                  :label="$t('productStock.usernamea')"
+                  :required="true"
+                  style="width: 25vw"
+                >
+                  <el-input
+                    v-model="userName"
+                    :placeholder="$t('productStock.inusername')"
+                    autocomplete="off"
+                    style="width: 350px"
+                  />
+                </el-form-item>
+              </div>
+            </el-col>
+          </el-row>
+          <el-row style="margin-top: 10px">
+            <el-col :span="6">
+              <div id="dt" style="font-size: 15px">
+                <el-form-item
+                  :label="$t('productStock.rolea')"
+                  :required="true"
+                  style="width: 25vw"
+                >
+                  <el-select
+                    v-model="selectedProjectNoa"
+                    filterable
+                    clearable
+                    :placeholder="$t('productStock.inrole')"
+                    style="width: 350px"
+                  >
+                    <el-option
+                      v-for="item in titleSelectJsona.processTypea"
+                      :key="item.id"
+                      :label="item.name"
+                      :value="item.id"
+                    />
+                  </el-select>
+                </el-form-item>
+              </div>
+            </el-col>
+          </el-row>
+          <!-- 鏂板缂栬緫瀵嗙爜 -->
+          <el-row style="margin-top: 10px">
+            <el-col :span="6">
+              <div id="dt" style="font-size: 15px">
+                <el-form-item
+                  :label="$t('productStock.password')"
+                  :required="false"
+                  style="width: 25vw"
+                >
+                  <el-input
+                    v-model="editPassword"
+                    :placeholder="$t('productStock.inputNewPassword')"
+                    autocomplete="off"
+                    :prefix-icon="Lock"
+                    show-password
+                    style="width: 350px"
+                  />
+                </el-form-item>
+              </div>
+            </el-col>
+          </el-row>
+          <!-- 鏂板缂栬緫纭瀵嗙爜 -->
+          <el-row style="margin-top: 10px">
+            <el-col :span="6">
+              <div id="dt" style="font-size: 15px">
+                <el-form-item
+                  :label="$t('productStock.confirmpassword')"
+                  :required="false"
+                  style="width: 25vw"
+                >
+                  <el-input
+                    v-model="editConfirmPassword"
+                    :placeholder="$t('productStock.inconfirmpassword')"
+                    autocomplete="off"
+                    :prefix-icon="Lock"
+                    show-password
+                    style="width: 350px"
+                  />
+                </el-form-item>
+              </div>
+            </el-col>
+          </el-row>
         </el-form>
-            </el-form>
-          </div>
+      </el-form>
+    </div>
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="getTableRowa">
           {{ $t('productStock.sure') }}
         </el-button>
-        <el-button @click="closeDialoga">{{ $t('productStock.cancel') }}</el-button>
+        <el-button @click="closeDialoga">
+          {{ $t('productStock.cancel') }}
+        </el-button>
       </div>
     </template>
-  </el-dialog> 
+  </el-dialog>
 </template>
 <style scoped>
-#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
-#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
-#dialog-footer{
+#dt {
+  display: block;
+  float: left;
+  line-height: 20px;
+  margin-left: 100px;
+}
+#dta {
+  display: block;
+  float: left;
+  line-height: 20px;
+  margin-left: 80%;
+}
+#dialog-footer {
   text-align: center;
   margin-top: -15px;
 }
-#message{
+#message {
   text-align: center;
   align-items: center;
   color: black;
-   width: 200px;
-   height: 100px;
-   background-color: #337ecc;
-   margin-left: 28%;
+  width: 200px;
+  height: 100px;
+  background-color: #337ecc;
+  margin-left: 28%;
 }
-#awatch{
+#awatch {
   height: 460px;
-  /* margin-top: -60px; */
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0