wangfei
9 小时以前 71594bd2dc9201834aa533099e9e49a9b84506cd
UI-Project/src/views/User/userlist.vue
@@ -7,30 +7,38 @@
const adda = ref(false)
import request from "@/utils/request"
import { ref, onMounted } from "vue";
// import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
  import { useI18n } from 'vue-i18n'
  const { t } = useI18n()
  let language = ref(localStorage.getItem('lang') || 'zh')
//  import LanguageMixin from './lang/LanguageMixin'
const selectedProjectNoa = ref(null); // 当前选中的角色
// const options = ref<any[]>([]); // 下拉选项列表
  const userName = ref('');
  const password = ref('');
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
let language = ref(localStorage.getItem('lang') || 'zh')
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)
          }
          });
// 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 () => {
  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 {
@@ -43,57 +51,39 @@
        type: 'warning',  
      } 
    );
    if (confirmResult === 'confirm') {
      // 用户点击了“是”,现在调用删除接口
    if (confirmResult === 'confirm') {
      var url="/loadGlass/sys/user/resetPassword?userId="+row.id;
      console.log(url);
      const response = await request.post(url, {
        esdId: row.esdId
    })
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
        // 删除失败,您可以处理错误或显示错误信息给用户
      } else {
      ElMessage.error(response.msg);
        // alert('删除失败:' + deleteResponse.message);
      }  
    }  
  } catch (error) {
    // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等
    console.error('发生错误:', error);
  } catch (error) {
  }  
}; 
const titleSelectJsona = ref({
  processType: [],
})
// const handleInputChangea = async (value: string) => {
//   if (value) {
//     await fetchOptionsa(value);
//   } else {
//     options.value = []; // 清空选项列表
//   }
// };
onMounted(() => {
  // 在组件挂载后调用 fetchOptions('') 来加载初始数据(如果需要)
  fetchOptionsa('');
onMounted(() => {
  fetchOptionsa('');
  listByUserName('');
}); 
  // 角色下拉选  
  const fetchOptionsa = async () => {  
  try {
    // 发送请求到后端接口
  try {
    const response = await request.post('/loadGlass/sys/role/queryRole',{
  key: ''
});
      key: ''
     });
    if (response.code === 200) {  
    titleSelectJsona.value.processTypea = response.data;
    console.log(response.data);
    } else {  
      ElMessage.warning(response.data);  
    }  
  } catch (error) {
    console.error('Error fetching options:', error);
  } catch (error) {
  }  
}; 
// 处理编辑按钮点击  
@@ -103,11 +93,9 @@
    const firstRole = row.roleList[0];  
    selectedProjectNoa.value = firstRole.id; // 设置为ID,而不是name  
  }  
  adda.value = true; // 显示对话框
  adda.value = true;
  window.localStorage.setItem('id', row.id)
function closeDialog(row) {
     add.value = false;
     userName.value = '';
@@ -123,6 +111,18 @@
}
// 添加 
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
  }
  try {
    const response = await request.post('/loadGlass/sys/user/saveUser', {
      userName: userName.value,
@@ -131,29 +131,33 @@
      roleList: [
    {
      id: selectedProjectNoa.value,
      // name: selectedProjectNoa.value.name,
    }]
      // roleList: selectedProjectNoa.value.map(item => ({
      //   id: item.id,
      //   name: item.name
      // }))
    }); 
    if (response.code === 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      add.value = false;
     tableData.value = response.data;
      listByUserName('');
  // tableData.value = response.data;
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理错误
    console.error(error);
  }
};
// 编辑
const getTableRowa = 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
  }
  let id = window.localStorage.getItem('id')
  try {
    const response = await request.post('/loadGlass/sys/user/updateUser', {
@@ -162,22 +166,18 @@
      roleList: [
    {
      id: selectedProjectNoa.value,
      // roleKey: selectedProjectNoa.value.id,
    }]
  }
  ); 
    if (response.code === 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      adda.value = false;
     tableData.value = response.data;
      listByUserName('');
      tableData.value = response.data;
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理错误
    console.error(error);
  }
};
// 删除 
@@ -192,32 +192,25 @@
        type: 'warning',  
      } 
    );
    if (confirmResult === 'confirm') {
      // 用户点击了“是”,现在调用删除接口
    if (confirmResult === 'confirm') {
      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
        // 删除失败,您可以处理错误或显示错误信息给用户
      listByUserName('');
    } else {
      ElMessage.error(response.msg);
        // alert('删除失败:' + deleteResponse.message);
      }  
    }  
  } catch (error) {
    // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等
    console.error('发生错误:', error);
  } catch (error) {
  }  
};   
</script>
<template>
  <div>
     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">{{ $t('productStock.addusers') }}</el-button>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
     <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="240" ref="table"
        @selection-change="handleSelectionChange"
        <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">
@@ -229,9 +222,9 @@
            </el-table-column>
          <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('productStock.resetpassword') }}</el-button>
              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('productStock.exit') }}</el-button>
              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('productStock.delete') }}</el-button>
              <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>
@@ -240,14 +233,14 @@
  </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  size="mini" label-width="150px">
      <el-form label-width="100px" label-position="right">
            <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" :placeholder="$t('productStock.inusername')" />
                <el-input v-model="userName" autocomplete="off" style="width: 350px;" :placeholder="$t('productStock.inusername')" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
@@ -261,10 +254,10 @@
               filterable
               clearable
               :placeholder="$t('productStock.inrole')"
               style="width: 330px"
               style="width: 350px;"
             >
               <el-option
         v-for="item in titleSelectJsona['processTypea']"
            v-for="item in titleSelectJsona['processTypea']"
            :key="item.id"
            :label="item.name"
            :value="item.id"
@@ -278,7 +271,7 @@
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item :label="$t('productStock.password')" :required="true" style="width: 25vw;">
                <el-input style="width: 340px;"
                <el-input style="width: 350px;"
                        v-model="password"
                        :placeholder="$t('productStock.inpassword')"
                        autocomplete="off"
@@ -301,14 +294,14 @@
  </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" size="mini" label-width="150px">
      <el-form label-width="100px" label-position="right">
            <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" />
                <el-input :placeholder="$t('productStock.inusername')" v-model="userName" autocomplete="off" style="width: 350px;"/>
              </el-form-item></div></div>
          </el-col>
        </el-row>
@@ -322,7 +315,7 @@
               filterable
               clearable
               :placeholder="$t('productStock.inrole')"
               style="width: 330px"
               style="width: 350px;"
             >
               <el-option
         v-for="item in titleSelectJsona['processTypea']"
@@ -347,9 +340,7 @@
    </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{