From 43d86830f4696c3ba2250a961d26377e1ff6cc32 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 17 十二月 2025 10:39:43 +0800
Subject: [PATCH] 1、 查询是否除膜优化

---
 UI-Project/src/views/User/userlist.vue |  954 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 531 insertions(+), 423 deletions(-)

diff --git a/UI-Project/src/views/User/userlist.vue b/UI-Project/src/views/User/userlist.vue
index 15a996d..db9da3f 100644
--- a/UI-Project/src/views/User/userlist.vue
+++ b/UI-Project/src/views/User/userlist.vue
@@ -1,461 +1,569 @@
-<script lang="ts" setup>
-import {Search} from "@element-plus/icons-vue";
-import {reactive} from "vue";
-import {useRouter} from "vue-router"
-import { ref } from 'vue'
-
-const router = useRouter()
-const value1 = ref(true)
-const add = ref(false)
-const adda = ref(false)
-
-const changer = ref(false)
-import { ElMessage, ElMessageBox } from 'element-plus'
-
-const tableData = [
-  {
-    id: '1',
-    long: '1005',
-    wide: '183.6',
-    thick: '1991',
-    time: '2024/4/1',
-    type: '寰呰瘑鍒�',
-    typea: '1',
-  },
-  {
-    id: '2',
-    long: '105',
-    wide: '183',
-    time: '2024/4/1',
-    thick: '191',
-    typea: '1',
-    type: '寰呰瘑鍒�'
-  },
-  {
-    id: '2',
-    long: '105',
-    wide: '183',
-    time: '2024/4/1',
-    thick: '191',
-    typea: '1',
-    type: '寰呰瘑鍒�'
-  },
-]
-const open = () => {
-  ElMessageBox.confirm(
-    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
-    '鎻愮ず',
-    {
-      confirmButtonText: '鏄�',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
+<script setup>
+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 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.msg);
     }
-  )
-    .then(() => {
-      ElMessage({
-        type: 'success',
-        message: '鍒犻櫎鎴愬姛锛�',
-      })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: '鍒犻櫎澶辫触',
-      })
-    })
-}
-const getTableRow = (row,type) =>{
-  switch (type) {
-    case 'edit' :{
-      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
-      break
+  } 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);
+      }
     }
-    case 'delete':{
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
-      break
+  } catch (error) {
+    if (error !== "cancel") { // 鎺掗櫎鍙栨秷鎿嶄綔鐨勯敊璇�
+      ElMessage.error( );
+      console.error("閲嶇疆瀵嗙爜澶辫触锛�", error);
     }
   }
-}
-const dialogForm = () => {
-  ElMessageBox.confirm(
-    '鏄惁閲嶇疆瀵嗙爜?',
-    '鎻愮ず',
-    {
-      confirmButtonText: '鏄�',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
-    }
-  )
-  .then(() => {
-    // this.boxa = true
-    // this.box = false
-      
-    })
-}
-const dialogForma = () => {
-  ElMessageBox.confirm(
-    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
-    '鎻愮ず',
-    {
-      confirmButtonText: '鏄�',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
-    }
-  )
-}
-
-const options = [
-  {
-    value: 'Option1',
-    label: 'admin',
-  },
-  {
-    value: 'Option2',
-    label: 'ueser2',
-  },
-  {
-    value: 'Option3',
-    label: 'ueser3',
-  },
-]
-const optionsa = [
-  {
-    valuea: 'Option1',
-    labela: '姝e父',
-  },
-  {
-    valuea: 'Option2',
-    labela: '绂佺敤',
-  },
-]
-
-const data= reactive({
-   tableList:[]//table鏁版嵁
-})
-
-const beforeChange = () => {
-  return new Promise((resolve) => {
-    setTimeout(() => {
-      ElMessage.success("淇敼鎴愬姛锛�");
-      return resolve(true);
-    }, 1000);
-  });
 };
-
-// //js灞傦紝瀹炴垬鐗堟湰,涓庡悗鍙版帴鍙d氦浜�
-// const gettableList = (id) = >{
-//   xxx鎺ュ彛.({
-//    id:id
-// }).then((res)=>{
-//    //灏嗘暟鎹紶缁檈l-table缁戝畾鐨�:data=>data.tableList
-//    data.tableList = res.data
-   
-// })
-// }
- 
-// //鏈�鍚庡皢璇锋眰鍑芥暟鎸傝浇鍒皏ue瑙嗗浘涓�
-// onMounted(() => {
-//   gettableList ()
-
-// })
-// const delete = () => {
-//   ElMessageBox.confirm(
-//     '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
-//     '鎻愮ず',
-//     {
-//       confirmButtonText: '鏄�',
-//       cancelButtonText: '鍙栨秷',
-//       type: 'warning',
-//     }
-//   )
-//   .then(() => {
-      
-//     })
-// }
-const gridOptions = reactive({
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },
-  data:  [
-    {
-      'id': '1',
-      'long': '5',
-      'wide': '1005',
-      'thick': '183.6',
-      'time': '2024/4/1',
+const titleSelectJsona = ref({
+  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.msg);
     }
-  ]
-})
-
+  } catch (error) {
+    ElMessage.error( );
+  }
+};
+// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮
+function handleEdit(row) {
+  userName.value = row.userName;
+  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() {
+  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 (!selectedProjectNoa.value) {
+    ElMessage.error(t("productStock.inrole"));
+    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", {
+      userName: userName.value,
+      nickName: userName.value,
+      password: password.value,
+      roleList: [
+        {
+          id: selectedProjectNoa.value,
+        },
+      ],
+    });
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      closeDialog(); // 鍏抽棴寮圭獥骞舵竻绌鸿〃鍗�
+      listByUserName(); // 鍒锋柊鍒楄〃
+    } else {
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    ElMessage.error( );
+  }
+};
+// 缂栬緫鐢ㄦ埛
+const getTableRowa = async () => {
+  // 楠岃瘉鐢ㄦ埛鍚�
+  if (!userName.value) {
+    ElMessage.error(t("productStock.inusername"));
+    return;
+  }
+  // 楠岃瘉瑙掕壊
+  if (!selectedProjectNoa.value) {
+    ElMessage.error(t("productStock.inrole"));
+    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");
+  if (!id) {
+    ElMessage.error(t("productStock.userIdError"));
+    return;
+  }
+  try {
+    const requestData = {
+      id: id,
+      userName: userName.value,
+      roleList: [
+        {
+          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);
+      closeDialoga();
+      listByUserName();
+    } else {
+      ElMessage.error(response.message);
+    }
+  } catch (error) {
+    ElMessage.error( );
+  }
+};
+// 鍒犻櫎鐢ㄦ埛
+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",
+      }
+    );
+    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;"  size="mini" id="searchButton" @click="add = true">娣诲姞鐢ㄦ埛</el-button>
-        <el-input
-          clearable
-          placeholder="璇疯緭鍏ョ敤鎴峰悕"
-          size="mini"
-          style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;"
-        />
-        <el-input
-          clearable
-          placeholder="璇疯緭鍏ラ偖绠�"
-          size="mini"
-          style="margin-right: 20px; width: 200px;margin-left: 10px;margin-top: 10px;"
-        />
-        <el-button type="primary" size="mini" @click="searchSubmit" style="margin-top: 10px;">鏌ヨ</el-button >
-        <el-button type="primary" size="mini" @click="empty" style="margin-top: 10px;">娓呯┖</el-button>
-    <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
-      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
-        <el-table height="100%" ref="table" 
-        @selection-change="handleSelectionChange"
-        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="id" align="center" label="鐢ㄦ埛鍚�" min-width="80" />
-          <el-table-column prop="long" align="center" label="閭" min-width="120" />
-          <el-table-column prop="time" align="center" label="鍒涘缓鏃堕棿" min-width="120" />
-          <el-table-column  align="center" prop="changer"  label="鏄惁绂佺敤"   min-width="140"  >
-           <template #default="scope">
-           <el-switch  v-model="scope.row.changer"  :before-change="beforeChange" />
-         </template>
-         </el-table-column>
-
-          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
-            <template #default>
-              <el-button size="mini" type="text" plain  @click="dialogForm">閲嶇疆瀵嗙爜</el-button>
-              <el-button size="mini" type="text" plain  @click="adda = true">缂栬緫</el-button>
-              <el-button size="mini" type="text" plain  @click="dialogForma">鍒犻櫎</el-button>
+    <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" :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="娣诲姞鐢ㄦ埛" >
-    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
-            <el-form  size="mini" label-width="150px">
-      <el-form label-width="100px" 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="鐢ㄦ埛鍚嶏細" :required="true" style="width: 25vw">
-                <el-input  autocomplete="off" />
-              </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="瑙掕壊锛�" :required="true" style="width: 25vw;">
-                <el-select
-               v-model="value"
-               clearable
-               placeholder="璇烽�夋嫨瑙掕壊"
-               style="width: 330px"
-             >
-               <el-option
-            v-for="item in options"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </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="閭锛�" :required="true" style="width: 25vw;">
-                <el-input autocomplete="off" />
-              </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="鏄惁绂佺敤" :required="true" style="width: 25vw;">
-                <el-select
-               v-model="value"
-               clearable
-               placeholder="璇烽�夋嫨鏄惁绂佺敤"
-               style="width: 330px"
-             >
-               <el-option
-            v-for="item in optionsa"
-            :key="item.valuea"
-            :label="item.labela"
-            :value="item.valuea"
-          />
-        </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="瀵嗙爜锛�" :required="true" style="width: 25vw;">
-                <el-input autocomplete="off" />
-              </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('edit')">
-          纭
+        <el-button type="primary" @click="getTableRow">
+          {{ $t('productStock.sure') }}
         </el-button>
-        <el-button @click="add = false">鍙栨秷</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="淇敼鐢ㄦ埛" >
-    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
-            <el-form  size="mini" label-width="150px">
-      <el-form label-width="100px" 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="鐢ㄦ埛鍚嶏細" :required="true" style="width: 25vw">
-                <el-input  autocomplete="off" />
-              </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="瑙掕壊锛�" :required="true" style="width: 25vw;">
-                <el-select
-               v-model="value"
-               clearable
-               placeholder="璇烽�夋嫨瑙掕壊"
-               style="width: 330px"
-             >
-               <el-option
-            v-for="item in options"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </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="閭锛�" :required="true" style="width: 25vw;">
-                <el-input autocomplete="off" />
-              </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="鏄惁绂佺敤" :required="true" style="width: 25vw;">
-                <el-select
-               v-model="value"
-               clearable
-               placeholder="璇烽�夋嫨鏄惁绂佺敤"
-               style="width: 330px"
-             >
-               <el-option
-            v-for="item in optionsa"
-            :key="item.valuea"
-            :label="item.labela"
-            :value="item.valuea"
-          />
-        </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="瀵嗙爜锛�" :required="true" style="width: 25vw;">
-                <el-input autocomplete="off" />
-              </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="getTableRow('edit')">
-          纭
+        <el-button type="primary" @click="getTableRowa">
+          {{ $t('productStock.sure') }}
         </el-button>
-        <el-button @click="adda = false">鍙栨秷</el-button>
+        <el-button @click="closeDialoga">
+          {{ $t('productStock.cancel') }}
+        </el-button>
       </div>
     </template>
   </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{
-  height: 450px;
-}
-#main-body{
-  margin-top: -20px;
-  margin-left: 300px;
-}
-#main-bodya{
-  margin-top: -10px;
-  margin-left: 100px;
+#awatch {
+  height: 460px;
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0