田源
2024-07-03 a1f78d5809d624cd7e4cd3352d9ece858cad2090
Source/plt-web/plt-web-ui/src/views/system/user/index.vue
@@ -14,6 +14,9 @@
      @current-change="currentChange"
      @selection-change="selectChange"
      @row-click="rowClickHandler"
      @row-save="rowSaveHandler"
      @row-update="rowUpdateHandler"
      @row-del="rowDelHandler"
    >
      <template slot="status" slot-scope="{row}">
        <el-tag v-if="row.status === 0" type="success">启用</el-tag>
@@ -33,22 +36,62 @@
      </template>
      <template slot="menuLeft" slot-scope="scope">
        <el-button icon="el-icon-delete" plain size="small" type="danger">删除</el-button>
        <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">删除</el-button>
        <el-button icon="el-icon-user" plain size="small" type="primary" @click="roleHandler">分配角色</el-button>
        <el-button icon="el-icon-school" plain size="small" type="primary">分配部门</el-button>
        <el-button icon="el-icon-key" plain size="small" type="success">设置密码策略</el-button>
        <el-button icon="el-icon-key" plain size="small" type="success" @click="setPwsHandler">设置密码策略</el-button>
        <el-button icon="el-icon-upload2" plain size="small" type="primary">导入人员</el-button>
        <el-button icon="el-icon-download" plain size="small" type="primary">下载导入模板</el-button>
      </template>
    </avue-crud>
    <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData" :transferTitle="transferTitle" title="分配角色"
              @transferSend="roleSendHandler"></transfer>
    <!-- 分配角色穿梭框   -->
    <transfer ref="transfer" :left-role-data="leftRoleData" :right-role-data="rightRoleData"
              :transferTitle="transferTitle" title="分配角色"
              @transferSend="roleSendHandler">
    </transfer>
    <!-- 设置密码策略对话框   -->
    <el-dialog
      v-dialogDrag
      v-loading="pwdLoading"
      :destroy-on-close="true"
      :visible.sync="pwdVisible"
      append-to-body="true"
      class="avue-dialog"
      style="margin-top: -20vh !important;"
      title="设置密码策略"
      width="30%"
    >
      <div class="password-strategy-container">
        <div><i class="el-icon-setting"/>设置密码策略:</div>
        <el-select v-model="pwdValue" placeholder="请选择密码策略">
          <el-option v-for="(item,index) in pwdList" :key="index" :label="item.name" :value="item.id"></el-option>
        </el-select>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="pwdVisible = false">取 消</el-button>
        <el-button size="small" type="primary" @click="savePwdHandler">确 定</el-button>
      </div>
    </el-dialog>
  </basic-container>
</template>
<script>
import basicOption from '@/util/basic-option'
import {getDataUsers, stopUser, gridRoles, listRoleByUserOid, saveRights, addUser, updateUser, deleteUser} from '@/api/system/user/api'
import {
  getDataUsers,
  stopUser,
  gridRoles,
  listRoleByUserOid,
  saveRights,
  addUser,
  updateUser,
  deleteUser,
  selectPwdStrategyMap,
  saveUserPasswordStrateg
} from '@/api/system/user/api'
import {column} from "./option"
import func from '@/util/func'
@@ -56,10 +99,15 @@
  name: "userManage",
  data() {
    return {
      pwdVisible: false,
      pwdLoading: false,
      pwdValue: '',
      pwdList: [],
      tableLoading: false,
      tableData: [],
      option: {
        ...basicOption,
        dialogWidth: '50%',
        calcHeight: -60,
        column: column
      },
@@ -73,7 +121,7 @@
      selectList: [],
      leftRoleData: [],  // 分配角色穿梭框左侧初始数据
      rightRoleData: [], // 分配角色穿梭框右侧初始数据
      transferTitle:['现有角色', '拥有角色']
      transferTitle: ['现有角色', '拥有角色']
    }
  },
  created() {
@@ -183,7 +231,7 @@
    // 穿梭框组件回填
    roleSendHandler(row) {
      let params = {
        userOid: this.selectList[0].oid,
        userOids: this.selectList[0].oid,
        roleIds: row.join(',')
      }
      saveRights(params).then(res => {
@@ -192,12 +240,130 @@
      }).catch(err => {
        this.$message.error(err)
      })
    },
    // 设置密码策略
    setPwsHandler() {
      if (this.selectList.length <= 0) {
        this.$message.warning('清先选择人员再进行操作!')
        return;
      }
      this.pwdLoading = false;
      selectPwdStrategyMap().then(res => {
        if (res.data.code === 200) {
          this.pwdList = res.data.data;
          this.pwdValue = res.data.data[0].id;
          console.log(res.data)
          this.pwdVisible = true;
          this.pwdLoading = false;
        } else {
          this.$message.error(res.data.msg);
        }
      })
    },
    // 保存密码策略
    savePwdHandler() {
      let params = {
        userIds: this.selectList.map(item => item.oid).join(','),
        passwordStrategId: this.pwdValue
      }
      saveUserPasswordStrateg(params).then(res => {
        this.pwdVisible = false;
        this.$message.success(res.data.obj)
      }).catch(err => {
        this.$message.error(err)
      })
    },
    // 新增
    rowSaveHandler(row, done) {
      if (row.password != row.confirmPassword) {
        this.$message.error('请检查两次密码是否输入一致!')
        return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
      }
      addUser(row).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.getTableList();
        }
      }).catch(err => {
        console.log(err);
      })
      done()
    },
    // 编辑
    rowUpdateHandler(row, index, done) {
      if (row.password != row.confirmPassword) {
        this.$message.error('请检查两次密码是否输入一致!')
        return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
      }
      updateUser(row).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.getTableList();
        }
      }).catch(err => {
        console.log(err);
      });
      done()
    },
    // 删除
    rowDelHandler(row) {
      let params = {
        ids: row.oid
      }
      deleteUser(params).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.getTableList();
        }
      }).catch(err => {
        console.log(err);
      })
    },
    // 多选删除
    allDelHandler() {
      let params = {
        ids: this.selectList.map(item => item.oid).join(',')
      }
      if (this.selectList.length <= 0) {
        this.$message.warning('请至少选择一条数据进行删除!')
        return;
      }
      this.$confirm('您确定要删除所选择的成员吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteUser(params).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.getTableList();
          }
        });
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    }
  }
}
</script>
<style scoped>
<style lang="scss" scoped>
.password-strategy-container {
  padding-left: 20px;
  display: flex;
  //justify-content: center;
  align-items: center;
  gap: 10px;
}
</style>