xiaodai2017 2 лет назад
Родитель
Сommit
caa03eae01

+ 38 - 0
src/api/interest/role/index.ts

@@ -0,0 +1,38 @@
+import { http } from "/@/utils/http";
+import { loadEnv } from "@build/index";
+const { VITE_PROXY_DOMAIN_REAL, VITE_PROXY_USER_REAL } = loadEnv();
+const userAPi = VITE_PROXY_DOMAIN_REAL;
+const yewuApi = VITE_PROXY_USER_REAL + "/admin/";
+interface ResponseType extends Promise<any> {
+  data?: object;
+  code?: number;
+  msg?: string;
+}
+// 添加
+export const httpAdd = (data: object): ResponseType => {
+  return http.request("post", `${yewuApi}roleadd`, { data });
+};
+// 列表
+export const httpList = (data: object): ResponseType => {
+  return http.request("post", `${yewuApi}rolelist`, { data });
+};
+// 详情
+export const httpDetail = (data: object): ResponseType => {
+  return http.request("post", `${yewuApi}roleinfo`, { data });
+};
+// 更新
+export const httpUpdate = (data: object): ResponseType => {
+  return http.request("post", `${yewuApi}rolesave`, { data });
+};
+// 状态
+export const httpStatus = (data: object): ResponseType => {
+  return http.request("post", `${yewuApi}rolestatus`, { data });
+};
+// 删除
+export const httpDelete = (data: object): ResponseType => {
+  return http.request("post", `${yewuApi}menustatus`, { data });
+};
+// 全部菜单按钮
+export const httpMenuAll = (data: object): ResponseType => {
+  return http.request("post", `${yewuApi}menuactionlist`, { data });
+};

+ 1 - 1
src/api/system/setBtn/index.ts

@@ -26,7 +26,7 @@ export const httpEdit = (data: object): ResponseType => {
 export const httpStatus = (data: object): ResponseType => {
   return http.request("post", `${yewuApi}menuactionstatus`, { data });
 };
-// 菜单删除
+// 按钮删除
 export const httpDelete = (data: object): ResponseType => {
   return http.request("post", `${yewuApi}menustatus`, { data });
 };

+ 2 - 42
src/views/interest/account/columns.tsx

@@ -55,7 +55,7 @@ export function useColumns() {
     },
     {
       label: "创建时间",
-      width: 180,
+      width: 145,
       prop: "createTime",
       formatter: ({ createTime }) =>
         dayjs(createTime).format("YYYY-MM-DD HH:mm:ss")
@@ -63,51 +63,11 @@ export function useColumns() {
     {
       label: "操作",
       fixed: "right",
-      width: 55,
+      width: 145,
       slot: "operation"
     }
   ]);
 
-  function onChange({ row, index }) {
-    ElMessageBox.confirm(
-      `确认要<strong>${
-        row.status === 0 ? "停用" : "启用"
-      }</strong><strong style='color:var(--el-color-primary)'>${
-        row.username
-      }</strong>用户吗?`,
-      "系统提示",
-      {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-        dangerouslyUseHTMLString: true,
-        draggable: true
-      }
-    )
-      .then(() => {
-        switchLoadMap.value[index] = Object.assign(
-          {},
-          switchLoadMap.value[index],
-          {
-            loading: true
-          }
-        );
-        setTimeout(() => {
-          switchLoadMap.value[index] = Object.assign(
-            {},
-            switchLoadMap.value[index],
-            {
-              loading: false
-            }
-          );
-          message.success("已成功修改用户状态");
-        }, 300);
-      })
-      .catch(() => {
-        row.status === 0 ? (row.status = 1) : (row.status = 0);
-      });
-  }
-
   return {
     columns
   };

+ 44 - 79
src/views/interest/account/index.vue

@@ -69,9 +69,6 @@ const handleStatus = async row => {
     ElMessage.error(message);
   }
 };
-function handleUpdate(row) {
-  console.log(row);
-}
 
 async function handleCurrentChange(val: number) {
   form.page = val;
@@ -218,82 +215,50 @@ onMounted(() => {
           @current-change="handleCurrentChange"
         >
           <template #operation="{ row }">
-            <el-dropdown>
-              <el-button
-                link
-                type="primary"
-                :size="size"
-                :icon="useRenderIcon('more')"
-              />
-              <template #dropdown>
-                <el-dropdown-menu>
-                  <el-dropdown-item>
-                    <el-popconfirm
-                      :title="'确认重置密码?'"
-                      @confirm="resetRwd(row)"
-                    >
-                      <template #reference>
-                        <el-button
-                          class="reset-margin"
-                          link
-                          type="primary"
-                          :size="size"
-                          :icon="useRenderIcon('refresh-right')"
-                          >重置密码</el-button
-                        >
-                      </template></el-popconfirm
-                    >
-                  </el-dropdown-item>
-                  <el-dropdown-item>
-                    <el-button
-                      class="reset-margin"
-                      link
-                      type="primary"
-                      :size="size"
-                      @click="editItem(row.id, 'view', row)"
-                      :icon="useRenderIcon('eye-view')"
-                      >账号详情</el-button
-                    >
-                  </el-dropdown-item>
-                  <el-dropdown-item>
-                    <el-button
-                      class="reset-margin"
-                      link
-                      type="primary"
-                      :size="size"
-                      @click="editItem(row.id, 'edit', row)"
-                      :icon="useRenderIcon('edits')"
-                    >
-                      修改账号
-                    </el-button>
-                  </el-dropdown-item>
-                  <el-dropdown-item>
-                    <el-popconfirm
-                      :title="row.status === '1' ? '改为禁用?' : '改为启用?'"
-                      @confirm="handleStatus(row)"
-                    >
-                      <template #reference>
-                        <el-button
-                          class="reset-margin"
-                          link
-                          type="primary"
-                          :size="size"
-                          :icon="
-                            useRenderIcon(
-                              row.status === '1'
-                                ? 'close-circle-line'
-                                : 'checkbox-circle-line'
-                            )
-                          "
-                        >
-                          修改状态
-                        </el-button></template
-                      ></el-popconfirm
-                    >
-                  </el-dropdown-item>
-                </el-dropdown-menu>
-              </template>
-            </el-dropdown>
+            <el-popconfirm :title="'确认重置密码?'" @confirm="resetRwd(row)">
+              <template #reference>
+                <el-button
+                  class="reset-margin"
+                  link
+                  type="primary"
+                  :size="size"
+                  :icon="useRenderIcon('refresh-right')"
+                /> </template
+            ></el-popconfirm>
+            <el-button
+              class="reset-margin"
+              link
+              type="primary"
+              :size="size"
+              @click="editItem(row.id, 'view', row)"
+              :icon="useRenderIcon('eye-view')"
+            />
+            <el-button
+              class="reset-margin"
+              link
+              type="primary"
+              :size="size"
+              @click="editItem(row.id, 'edit', row)"
+              :icon="useRenderIcon('edits')"
+            />
+            <el-popconfirm
+              :title="row.status === '1' ? '改为禁用?' : '改为启用?'"
+              @confirm="handleStatus(row)"
+            >
+              <template #reference>
+                <el-button
+                  class="reset-margin"
+                  link
+                  type="primary"
+                  :size="size"
+                  :icon="
+                    useRenderIcon(
+                      row.status === '1'
+                        ? 'close-circle-line'
+                        : 'checkbox-circle-line'
+                    )
+                  " /></template
+            ></el-popconfirm>
           </template>
         </PureTable>
       </template>

+ 255 - 0
src/views/interest/role/addEdit.vue

@@ -0,0 +1,255 @@
+<script setup lang="ts">
+import { httpAdd, httpUpdate, httpMenuAll } from "/@/api/interest/role";
+import { ElMessage, FormInstance, FormRules } from "element-plus";
+import { reactive, ref, watch, nextTick } from "vue";
+import menuType from "./types";
+import { useNav } from "/@/layout/hooks/nav";
+import { isMobile } from "/@/utils/validate";
+const { logout } = useNav();
+const formSize = ref("default");
+const ruleFormRef = ref<FormInstance>();
+
+const props = defineProps({
+  itemId: {
+    type: String,
+    default: ""
+  },
+  showModel: {
+    type: Boolean,
+    default: false
+  },
+  isDetails: {
+    type: String,
+    default: "add"
+  },
+  sitem: {
+    type: Object as PropType<menuType>
+  }
+});
+const showModelThis = ref(false);
+const emit = defineEmits<{
+  (e: "cancel"): void;
+  (e: "refresh"): void;
+}>();
+const id = ref("");
+const editType = ref("add");
+const MenuAllList = ref([]);
+const formModel = {
+  id: "", //账户id
+  nickname: "", //真实姓名
+  mobile: "", //手机号
+  email: "", //邮箱
+  role: "" //角色
+};
+const ruleForm = reactive<menuType>(formModel);
+const rules = reactive<FormRules>({
+  nickname: [
+    { required: true, message: "请输入真实姓名", trigger: "blur" },
+    { min: 2, max: 12, message: "长度在 2 到 12 个字符", trigger: "blur" }
+  ],
+  mobile: [
+    {
+      required: true,
+      validator: (rule, value, callback) => {
+        if (value === "") {
+          callback(new Error("手机号不能为空!"));
+        } else if (!isMobile(value)) {
+          callback(new Error("手机号格式不正确!"));
+        } else {
+          callback();
+        }
+      },
+
+      trigger: "blur"
+    }
+  ],
+
+  role: [
+    {
+      required: true,
+      message: "请选择角色",
+      trigger: "change"
+    }
+  ],
+  email: [
+    {
+      required: false,
+      message: "请输入邮箱",
+      trigger: "change"
+    }
+  ]
+});
+const submitForm = async (formEl: FormInstance | undefined) => {
+  if (!formEl) return;
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      if (loading.value === true) return;
+      loading.value = true;
+      const model = Object.assign({}, ruleForm);
+      const { code, message } =
+        editType.value === "add"
+          ? await httpAdd(model)
+          : await httpUpdate(model);
+      loading.value = false;
+      if (code === 0) {
+        ElMessage.success(titleType.value + "成功!");
+        showModelThis.value = false;
+        emit("refresh");
+      } else if (code > 100 && code < 140) {
+        showModelThis.value = false;
+        logout();
+      } else {
+        ElMessage.error(message);
+      }
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
+};
+const resetForm = async (formEl: FormInstance | undefined, item) => {
+  if (!formEl) return;
+  formEl.clearValidate();
+  formEl.resetFields();
+  await nextTick(async () => {
+    for (let key in ruleForm) {
+      if (key === "role") {
+        ruleForm[key] = item["roleid"] || "";
+      } else {
+        ruleForm[key] = item[key];
+      }
+    }
+  });
+};
+const closeDialog = () => {
+  showModelThis.value = false;
+  emit("cancel");
+};
+
+const loading = ref(true);
+const titleType = ref("");
+async function initForm(item: Object) {
+  loading.value = true;
+  switch (editType.value) {
+    case "add":
+      titleType.value = "新建账号";
+      break;
+    case "edit":
+      titleType.value = "编辑账号";
+      break;
+    case "view":
+      titleType.value = "账号详情";
+      break;
+    default:
+      titleType.value = "新建账号";
+  }
+  const { code, data, message } = await httpMenuAll({});
+  if (code === 0) {
+    MenuAllList.value = data ?? [];
+  } else if (code > 100 && code < 140) {
+    logout();
+  } else {
+    ElMessage.error(message);
+  }
+  await resetForm(ruleFormRef.value, item);
+  console.log(ruleForm);
+  loading.value = false;
+}
+watch(
+  () => {
+    return props.showModel;
+  },
+  () => {
+    const { showModel, itemId, isDetails, sitem } = props;
+    showModelThis.value = showModel;
+    if (showModelThis.value) {
+      id.value = itemId;
+      editType.value = isDetails;
+      if (isDetails !== "add") {
+        initForm(sitem);
+      } else {
+        initForm(formModel);
+      }
+    }
+  }
+);
+</script>
+
+<template>
+  <el-dialog
+    :close-on-press-escape="false"
+    v-model="showModelThis"
+    append-to-body
+    :width="'900px'"
+    :title="titleType"
+    v-loading="loading"
+    @close="closeDialog"
+  >
+    <el-form
+      ref="ruleFormRef"
+      :model="ruleForm"
+      :rules="rules"
+      label-width="90px"
+      style="margin-top: -10px"
+      class="demo-ruleForm"
+      :size="formSize"
+      status-icon
+    >
+      <el-row>
+        <el-col :span="8">
+          <el-form-item label="真实姓名" prop="nickname">
+            <el-input
+              v-model="ruleForm.nickname"
+              :disabled="editType === 'view'"
+              placeholder="真实姓名"
+            /> </el-form-item
+        ></el-col>
+        <el-col :span="8">
+          <el-form-item label="手机号" prop="mobile">
+            <el-input
+              v-model="ruleForm.mobile"
+              :disabled="editType === 'view'"
+              :maxlength="11"
+              placeholder="手机号"
+            /> </el-form-item
+        ></el-col>
+        <el-col :span="8">
+          <el-form-item label="邮箱" prop="email">
+            <el-input
+              v-model="ruleForm.email"
+              :disabled="editType === 'view'"
+              placeholder="邮箱"
+            /> </el-form-item
+        ></el-col>
+        <el-col :span="24">
+          <el-form-item label="角色" prop="role">
+            <el-radio-group
+              v-model="ruleForm.role"
+              :disabled="editType === 'view'"
+            >
+              <el-radio
+                v-for="(si, sii) in MenuAllList"
+                :key="si.id + sii"
+                :label="si.id"
+                :disabled="si.status !== '1'"
+                >{{ si.role_name }}</el-radio
+              >
+            </el-radio-group>
+          </el-form-item></el-col
+        >
+      </el-row>
+      <el-col :span="24" class="clear">
+        <el-button
+          v-if="editType === 'add' || editType === 'edit'"
+          type="primary"
+          class="fr"
+          style="margin: 0 0 0 16px"
+          @click="submitForm(ruleFormRef)"
+          >保存</el-button
+        >
+        <el-button class="fr" style="margin: 0 0 0 16px" @click="closeDialog"
+          >关闭</el-button
+        >
+      </el-col>
+    </el-form>
+  </el-dialog>
+</template>

+ 13 - 80
src/views/interest/role/columns.tsx

@@ -1,10 +1,7 @@
 import { ref } from "vue";
 import dayjs from "dayjs";
-import { ElMessageBox } from "element-plus";
-import { Switch, message } from "@pureadmin/components";
-
+import { statusList } from "/@/utils/status";
 export function useColumns() {
-  const switchLoadMap = ref({});
 
   const columns = ref([
     {
@@ -18,55 +15,31 @@ export function useColumns() {
       width: 70,
       hide: ({ checkList }) => !checkList.includes("序号列")
     },
-    {
-      label: "角色编号",
-      prop: "id"
-    },
+
     {
       label: "角色名称",
-      prop: "name"
-    },
-    {
-      label: "角色标识",
-      prop: "code"
+      prop: "role_name"
     },
+
     {
-      label: "角色类型",
-      prop: "type",
+      label: "状态",
+      prop: "status",
       cellRenderer: ({ row, props }) => (
         <el-tag
           size={props.size}
-          type={row.type === 1 ? "danger" : ""}
+          type={
+            (statusList.find(item => item.value == row.status + "") || {})
+              .type || "info"
+          }
           effect="plain"
         >
-          {row.type === 1 ? "内置" : "自定义"}
+          {(statusList.find(item => item.value == row.status + "") || {})
+            .label || "--"}
         </el-tag>
       )
     },
-    {
-      label: "显示顺序",
-      prop: "sort"
-    },
-    {
-      label: "状态",
-      prop: "status",
-      width: 130,
-      cellRenderer: scope => (
-        <Switch
-          size={scope.props.size === "small" ? "small" : "default"}
-          loading={switchLoadMap.value[scope.index]?.loading}
-          v-model:checked={scope.row.status}
-          checkedValue={1}
-          unCheckedValue={0}
-          checked-children="已开启"
-          un-checked-children="已关闭"
-          onChange={() => onChange(scope)}
-        />
-      )
-    },
     {
       label: "创建时间",
-      width: 180,
       prop: "createTime",
       formatter: ({ createTime }) =>
         dayjs(createTime).format("YYYY-MM-DD HH:mm:ss")
@@ -74,51 +47,11 @@ export function useColumns() {
     {
       label: "操作",
       fixed: "right",
-      width: 180,
+      width: 145,
       slot: "operation"
     }
   ]);
 
-  function onChange({ row, index }) {
-    ElMessageBox.confirm(
-      `确认要<strong>${
-        row.status === 0 ? "停用" : "启用"
-      }</strong><strong style='color:var(--el-color-primary)'>${
-        row.name
-      }</strong>角色吗?`,
-      "系统提示",
-      {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-        dangerouslyUseHTMLString: true,
-        draggable: true
-      }
-    )
-      .then(() => {
-        switchLoadMap.value[index] = Object.assign(
-          {},
-          switchLoadMap.value[index],
-          {
-            loading: true
-          }
-        );
-        setTimeout(() => {
-          switchLoadMap.value[index] = Object.assign(
-            {},
-            switchLoadMap.value[index],
-            {
-              loading: false
-            }
-          );
-          message.success("已成功修改角色状态");
-        }, 300);
-      })
-      .catch(() => {
-        row.status === 0 ? (row.status = 1) : (row.status = 0);
-      });
-  }
-
   return {
     columns
   };

+ 137 - 88
src/views/interest/role/index.vue

@@ -1,49 +1,77 @@
 <script setup lang="ts">
 import { useColumns } from "./columns";
-import { getRoleList } from "/@/api/system";
+import { httpList, httpStatus } from "/@/api/interest/role";
 import { reactive, ref, onMounted } from "vue";
 import { type FormInstance } from "element-plus";
+import { ElMessage } from "element-plus";
 import { TableProBar } from "/@/components/ReTable";
 import { type PaginationProps } from "@pureadmin/table";
 import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
-
+import { useNav } from "/@/layout/hooks/nav";
+import { statusList } from "/@/utils/status";
+import menuType from "./types";
+import addEdit from "./addEdit.vue";
+const { logout } = useNav();
 defineOptions({
-  name: "Role"
+  name: "role"
 });
 
 const form = reactive({
-  name: "",
-  code: "",
-  status: ""
+  level: "",
+  role_name: "",
+  status: "",
+  page: 1,
+  size: 15
 });
 
-let dataList = ref([]);
-let loading = ref(true);
+const dataList = ref([]);
+const loading = ref(true);
 const { columns } = useColumns();
-
+const showModel = ref(false);
+const itemId = ref("");
+const isDetails = ref("add");
+const sitem = reactive<menuType>({
+  id: "", //账户id
+  role_name: "", //真实姓名
+  mobile: "", //手机号
+  email: "", //邮箱
+  role: "" //角色
+});
 const formRef = ref<FormInstance>();
 
 const pagination = reactive<PaginationProps>({
   total: 0,
-  pageSize: 10,
+  pageSize: 15,
   currentPage: 1,
   background: true
 });
+//重置密码
 
-function handleUpdate(row) {
-  console.log(row);
-}
-
-function handleDelete(row) {
-  console.log(row);
-}
+//修改状态
+const handleStatus = async row => {
+  const { id, status } = row;
+  const { code, message } = await httpStatus({
+    id,
+    status: status + "" === "1" ? "0" : "1"
+  });
+  if (code === 0) {
+    onSearch();
+  } else if (code > 100 && code < 140) {
+    logout();
+  } else {
+    ElMessage.error(message);
+  }
+};
 
-function handleCurrentChange(val: number) {
-  console.log(`current page: ${val}`);
+async function handleCurrentChange(val: number) {
+  form.page = val;
+  await onSearch();
 }
 
-function handleSizeChange(val: number) {
-  console.log(`${val} items per page`);
+async function handleSizeChange(val: number) {
+  form.size = val;
+  form.page = 1;
+  await onSearch();
 }
 
 function handleSelectionChange(val) {
@@ -52,17 +80,45 @@ function handleSelectionChange(val) {
 
 async function onSearch() {
   loading.value = true;
-  let { data } = await getRoleList();
-  dataList.value = data.list;
-  pagination.total = data.total;
-  setTimeout(() => {
-    loading.value = false;
-  }, 500);
+  const { code, data, message } = await httpList(form);
+  if (code === 0) {
+    const { list, count } = data;
+    dataList.value = list ?? [];
+    pagination.total = count ?? 0;
+    pagination.pageSize = form.size;
+    pagination.currentPage = form.page;
+  } else if (code > 100 && code < 140) {
+    logout();
+  } else {
+    ElMessage.error(message);
+  }
+  loading.value = false;
+}
+async function resetSearch() {
+  form.page = 1;
+  await onSearch();
+}
+//新建/编辑/详情弹窗
+function editItem(id, type, item) {
+  itemId.value = id;
+  isDetails.value = type;
+  for (let key in item) {
+    sitem[key] = item[key];
+  }
+  showModel.value = true;
 }
+const submitRefresh = () => {
+  showModel.value = false;
+  onSearch();
+};
+const submitCancel = () => {
+  showModel.value = false;
+};
 
 const resetForm = (formEl: FormInstance | undefined) => {
   if (!formEl) return;
   formEl.resetFields();
+  form.page = 1;
   onSearch();
 };
 
@@ -77,26 +133,33 @@ onMounted(() => {
       ref="formRef"
       :inline="true"
       :model="form"
+      :label-width="0"
       class="bg-white w-99/100 pl-8 pt-4"
     >
-      <el-form-item label="角色名称:" prop="name">
-        <el-input v-model="form.name" placeholder="请输入角色名称" clearable />
-      </el-form-item>
-      <el-form-item label="角色标识:" prop="code">
-        <el-input v-model="form.code" placeholder="请输入角色标识" clearable />
-      </el-form-item>
-      <el-form-item label="状态:" prop="status">
-        <el-select v-model="form.status" placeholder="请选择状态" clearable>
-          <el-option label="已开启" value="1" />
-          <el-option label="已关闭" value="0" />
+      <el-form-item prop="status">
+        <el-select
+          v-model="form.status"
+          style="width: 100%"
+          placeholder="角色状态"
+          clearable
+        >
+          <el-option
+            v-for="(si, sii) in statusList"
+            :key="'status' + si.value + sii"
+            :label="si.label"
+            :value="si.value"
+          />
         </el-select>
       </el-form-item>
+      <el-form-item prop="role_name">
+        <el-input v-model="form.role_name" placeholder="角色名称" clearable />
+      </el-form-item>
       <el-form-item>
         <el-button
           type="primary"
           :icon="useRenderIcon('search')"
           :loading="loading"
-          @click="onSearch"
+          @click="resetSearch"
         >
           搜索
         </el-button>
@@ -107,20 +170,24 @@ onMounted(() => {
     </el-form>
 
     <TableProBar
-      title="角色列表"
+      title="角色管理"
       :loading="loading"
       :dataList="dataList"
       @refresh="onSearch"
     >
       <template #buttons>
-        <el-button type="primary" :icon="useRenderIcon('add')">
+        <el-button
+          type="primary"
+          :icon="useRenderIcon('add')"
+          @click="editItem('', 'add', {})"
+        >
           新增角色
         </el-button>
       </template>
       <template v-slot="{ size, checkList }">
         <PureTable
           border
-          align="center"
+          align="left"
           showOverflowTooltip
           table-layout="auto"
           :size="size"
@@ -140,65 +207,47 @@ onMounted(() => {
               link
               type="primary"
               :size="size"
-              @click="handleUpdate(row)"
+              @click="editItem(row.id, 'view', row)"
+              :icon="useRenderIcon('eye-view')"
+            />
+            <el-button
+              class="reset-margin"
+              link
+              type="primary"
+              :size="size"
+              @click="editItem(row.id, 'edit', row)"
               :icon="useRenderIcon('edits')"
+            />
+            <el-popconfirm
+              :title="row.status === '1' ? '改为禁用?' : '改为启用?'"
+              @confirm="handleStatus(row)"
             >
-              修改
-            </el-button>
-            <el-popconfirm title="是否确认删除?">
               <template #reference>
                 <el-button
                   class="reset-margin"
                   link
                   type="primary"
                   :size="size"
-                  :icon="useRenderIcon('delete')"
-                  @click="handleDelete(row)"
-                >
-                  删除
-                </el-button>
-              </template>
-            </el-popconfirm>
-            <el-dropdown>
-              <el-button
-                class="ml-3"
-                link
-                type="primary"
-                :size="size"
-                @click="handleUpdate(row)"
-                :icon="useRenderIcon('more')"
-              />
-              <template #dropdown>
-                <el-dropdown-menu>
-                  <el-dropdown-item>
-                    <el-button
-                      class="reset-margin !h-20px !text-gray-500"
-                      link
-                      type="primary"
-                      :size="size"
-                      :icon="useRenderIcon('menu')"
-                    >
-                      菜单权限
-                    </el-button>
-                  </el-dropdown-item>
-                  <el-dropdown-item>
-                    <el-button
-                      class="reset-margin !h-20px !text-gray-500"
-                      link
-                      type="primary"
-                      :size="size"
-                      :icon="useRenderIcon('database')"
-                    >
-                      数据权限
-                    </el-button>
-                  </el-dropdown-item>
-                </el-dropdown-menu>
-              </template>
-            </el-dropdown>
+                  :icon="
+                    useRenderIcon(
+                      row.status === '1'
+                        ? 'close-circle-line'
+                        : 'checkbox-circle-line'
+                    )
+                  " /></template
+            ></el-popconfirm>
           </template>
         </PureTable>
       </template>
     </TableProBar>
+    <addEdit
+      :itemId="itemId"
+      :isDetails="isDetails"
+      :show-model="showModel"
+      @refresh="submitRefresh"
+      @cancel="submitCancel"
+      :sitem="sitem"
+    />
   </div>
 </template>
 

+ 7 - 0
src/views/interest/role/types.ts

@@ -0,0 +1,7 @@
+export interface menuType {
+  roleid?: string; //角色id
+  role_name?: string; //角色名称
+  level?: string; //级别
+  action?: string; //按钮权限
+  private_data?: string; //私有权限
+}

+ 10 - 9
src/views/login/index.vue

@@ -9,7 +9,7 @@ import { loginRules } from "./utils/rule";
 
 import type { FormInstance } from "element-plus";
 import { ElMessage } from "element-plus";
-import { message } from "@pureadmin/components";
+// import { message } from "@pureadmin/components";
 import { storageSession } from "@pureadmin/utils";
 import { ref, reactive, watch, computed, getCurrentInstance } from "vue";
 import { operates, thirdParty } from "./utils/enums";
@@ -60,26 +60,27 @@ const onLogin = async (formEl: FormInstance | undefined) => {
       useUserStoreHook()
         .loginByUsername(ruleForm)
         .then((res: resType) => {
-          const { code, message: msg, data } = res;
-          const { userinfo, token } = data;
-          const { nickname } = userinfo;
+          const { code, message, data } = res;
 
           if (code === 0) {
+            const { userinfo, token } = data ?? {};
+            const { nickname } = userinfo ?? {};
             storageSession.setItem("info", {
-              username: nickname,
-              accessToken: token
+              username: nickname ?? "",
+              accessToken: token ?? ""
             });
-            initRouter().then(ress => {
+            initRouter().then(() => {
               loading.value = false;
               // console.log(ress);
-              message.success("登录成功");
+              ElMessage.success("登录成功");
+              // message.success("登录成功");
               router.push("/");
             });
           } else if (code > 100 && code < 200) {
             loading.value = false;
           } else {
             loading.value = false;
-            ElMessage.success(msg);
+            ElMessage.error(message ?? "");
           }
         });
     } else {