Răsfoiți Sursa

用户管理UI

zhangjie 1 an în urmă
părinte
comite
30ee25b05c

+ 12 - 0
src/assets/svgs/disable.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-禁用</title>
+    <g id="超管" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="06.01-用户管理" transform="translate(-326, -171)">
+            <g id="icon-禁用" transform="translate(326, 171)">
+                <rect id="close-circle-(Background)" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M7.2928915,7.99995184 L4.9810369,5.688097 L5.68814373,4.98099017 L8,7.29284477 L10.3118525,4.98099017 L11.018959,5.68809748 L8.70710468,7.99995184 L11.0190525,10.3118992 L10.311945,11.0190058 L8,8.70705843 L5.68805075,11.0190058 L4.98094392,10.3118992 L7.2928915,7.99995184 Z M15,8 C15,11.8659954 11.8659916,15 8,15 C4.13400483,15 1,11.8659916 1,8 C1,4.13400459 4.13400912,1 8,1 C11.8659954,1 15,4.13400888 15,8 Z M14,8 C14,11.3137102 11.3137064,14 8,14 C4.68628979,14 2,11.3137074 2,8 C2,4.68629003 4.6862936,2 8,2 C11.3137102,2 14,4.68629384 14,8 Z" id="Union" fill="#595959"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/enable.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-启用</title>
+    <g id="超管" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="06.01-用户管理" transform="translate(-256, -171)">
+            <g id="icon-启用" transform="translate(256, 171)">
+                <rect id="poweroff-(Background)" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M7.5,8 L8.5,8 L8.5,1 L7.5,1 L7.5,8 Z M4.9681251,2.74901068 L5.46864629,3.61593938 C3.70486832,4.53193426 2.5,6.37529802 2.5,8.50007534 C2.5,11.5376425 4.96243191,14.0000772 8,14.0000782 C11.0375605,14.0000792 13.5,11.5376453 13.5,8.50007868 C13.5,6.37521648 12.2950335,4.53178954 10.5311413,3.61583114 L11.0316639,2.74890137 C13.0942879,3.83844304 14.5,6.00510025 14.5,8.50007868 C14.5,12.0899305 11.5898457,15.0000782 8,15.0000782 C4.41014647,15.0000782 1.5,12.0899258 1.5,8.50007486 C1.5,6.00518131 2.90561485,3.83858728 4.9681251,2.74901068 Z" id="poweroff" fill="#595959"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/export.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-导出</title>
+    <g id="超管" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="06.01-用户管理" transform="translate(-186, -171)">
+            <g id="icon-导出" transform="translate(186, 171)">
+                <rect id="upload-(Background)" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M7.50118113,2.91421127 L7.50119781,11.4999733 L8.50119781,11.4999714 L8.50118113,2.91421592 L12.2647667,6.67780113 L12.9718733,5.97069454 L8.35473212,1.3535534 C8.15946998,1.15829126 7.8428875,1.15829126 7.64762535,1.35355339 L3.03048337,5.97069502 L3.03048337,5.97069502 L3.73759019,6.67780209 L7.50118113,2.91421127 Z M2,12.9999723 C2,13.5522566 2.44771534,13.9999723 3,13.9999723 L13,13.9999723 C13.5522842,13.9999723 14,13.5522575 14,12.9999723 L14,10.9999723 L13,10.9999723 L13,12.9999723 L3,12.9999723 L3,10.9999723 L2,10.9999723 L2,12.9999723 Z" id="upload" fill="#595959"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/svgs/import.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>icon-导入</title>
+    <g id="超管" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="06.01-用户管理" transform="translate(-116, -171)">
+            <g id="icon-导入" transform="translate(116, 171)">
+                <rect id="download-(Background)" opacity="0" x="0" y="0" width="16" height="16"></rect>
+                <path d="M8.5,9.57746124 L8.49998093,0.5 L7.49998093,0.5 L7.5,9.57745647 L3.73641205,5.81387091 L3.02930534,6.5209775 L7.64644661,11.1381191 C7.84170875,11.3333813 8.15829124,11.3333813 8.35355339,11.1381192 C8.35355339,11.1381191 8.3535534,11.1381191 8.3535534,11.1381191 L12.9706955,6.52097702 L12.9706955,6.52097702 L12.2635889,5.81386995 L8.5,9.57746124 Z M2,13.0000238 C2,13.5523081 2.44771534,14.0000238 3,14.0000238 L13,14.0000238 C13.5522842,14.0000238 14,13.552309 14,13.0000238 L14,11.0000238 L13,11.0000238 L13,13.0000238 L3,13.0000238 L3,11.0000238 L2,11.0000238 L2,13.0000238 Z" id="download" fill="#595959"></path>
+            </g>
+        </g>
+    </g>
+</svg>

+ 0 - 1
src/components/Layout.vue

@@ -54,7 +54,6 @@ import { HomeOutlined } from "@ant-design/icons-vue";
 import { logout } from "@/api/loginPage";
 import { routeLogout } from "@/router";
 import { useMainStore } from "@/store";
-import { message } from "ant-design-vue";
 import useAuth from "@/hooks/auth";
 import { menuRelative } from "@/constants/menu";
 import type { MenuItem } from "@/constants/menu";

+ 1 - 2
src/components/ProjectsSelect.vue

@@ -1,9 +1,8 @@
 <template>
   <a-select
-    placeholder="请选择项目"
+    placeholder="请选择"
     allowClear
     :disabled="disabled"
-    style="width: 140px"
     :mode="isMultiple ? 'multiple' : undefined"
     :value="value"
     @change="handleChange"

+ 2 - 2
src/components/RoleSelect.vue

@@ -1,9 +1,9 @@
 <template>
   <a-select
-    placeholder="请选择角色"
+    placeholder="请选择"
     allowClear
     :value="valueStr"
-    style="width: 140px"
+    title="角色"
     @change="handleChange"
   >
     <a-select-option

+ 2 - 2
src/components/RootOrgSelect.vue

@@ -1,9 +1,9 @@
 <template>
   <a-select
-    placeholder="请选择学校"
+    placeholder="请选择"
     allowClear
     :value="valueStr"
-    style="width: 140px"
+    title="学校"
     @change="handleChange"
   >
     <a-select-option

+ 2 - 2
src/components/StateSelect.vue

@@ -1,10 +1,10 @@
 <template>
   <a-select
-    placeholder="状态"
+    placeholder="请选择"
     allowClear
     :disabled="props.disabled"
     :value="valueStr"
-    style="width: 80px"
+    title="状态"
     @change="handleChange"
   >
     <a-select-option value="true">启用</a-select-option>

+ 1 - 1
src/components/SvgIcon.vue

@@ -18,7 +18,7 @@ const props = defineProps({
   },
   color: {
     type: String,
-    default: "#262626",
+    default: "#595959",
     // active:#165DFF
   },
 });

+ 6 - 6
src/constants/menu.ts

@@ -6,18 +6,18 @@ export interface MenuItem {
 type OriginMenuItem = MenuItem & { privileges: string[] };
 
 export const menuList = [
-  {
-    name: "学校管理",
-    icon: "school-manage",
-    url: "RoutOrg",
-    privileges: ["SUPER_ADMIN"],
-  },
   {
     name: "授权管理",
     icon: "auth-manage",
     url: "AuthManagement",
     privileges: ["SUPER_ADMIN"],
   },
+  {
+    name: "学校管理",
+    icon: "school-manage",
+    url: "RoutOrg",
+    privileges: ["SUPER_ADMIN"],
+  },
   {
     name: "用户管理",
     icon: "user-manage",

+ 10 - 0
src/env.d.ts

@@ -1,9 +1,19 @@
 /// <reference types="vite/client" />
 /// <reference types="vue/macros-global" />
 
+import { FilterType } from "./filters";
+
 declare module "*.vue" {
   import { DefineComponent } from "vue";
   // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
   const component: DefineComponent<{}, {}, any>;
   export default component;
 }
+
+export {};
+
+declare module "vue" {
+  interface ComponentCustomProperties {
+    $filters: FilterType;
+  }
+}

+ 18 - 53
src/features/rootOrg/RootOrg.vue

@@ -1,57 +1,22 @@
 <template>
-  <div>
-    <div class="tw-bg-white tw-p-5 tw-rounded-xl tw-mb-5">
-      <a-input
-        v-model:value="code"
-        style="width: 178px"
-        placeholder="学校代码"
-        allowClear
-      ></a-input>
-      <span class="tw-mr-4"></span>
-      <a-input
-        v-model:value="name"
-        class="tw-mr-4"
-        style="width: 178px"
-        placeholder="学校名称"
-        allowClear
-      ></a-input>
-      <span class="tw-mr-4"></span>
-      <StateSelect v-model:value="enable" />
-      <span class="tw-mr-4"></span>
-      <a-button class="query-btn" @click="clickSearch">查询</a-button>
-
-      <a-button style="float: right" @click="handleRootOrgSync">同步</a-button>
-    </div>
-
-    <div class="tw-bg-white tw-p-5 tw-rounded-xl">
-      <a-table
-        rowKey="code"
-        :columns="columns"
-        :data-source="data"
-        :pagination="{
-          pageSize: pageSize,
-          current: pageNo,
-          total: totalElements,
-          showTotal: () => ``,
-          onChange: (pageNoChanged, pageSizeChanged) => {
-            pageNo = pageNoChanged;
-            pageSize = pageSizeChanged;
-          },
-        }"
-      >
-        <template #enable="{ text }">
-          <a>{{ $filters.booleanEnableDisableFilter(text) }}</a>
-        </template>
-        <template #action="{ record }">
-          <span>
-            <a-button @click="showModal(record)">编辑</a-button>
-            <a-button @click="editRootOrgSettings(record.id)"
-              >特殊设置</a-button
-            >
-          </span>
-        </template>
-      </a-table>
-    </div>
+  <div class="part-box">
+    <a-button style="float: right" @click="handleRootOrgSync">同步</a-button>
+
+    <a-table
+      rowKey="code"
+      :columns="columns"
+      :data-source="data"
+      :pagination="false"
+    >
+      <template #enable="{ text }"> </template>
+      <template #action="{ record }">
+        <span>
+          <a-button @click="showModal(record)">编辑</a-button>
+          <a-button @click="editRootOrgSettings(record.id)">特殊设置</a-button>
+        </span>
+      </template>
+    </a-table>
+
     <a-modal
       v-model:visible="visible"
       title="学校信息页"

+ 88 - 72
src/features/userManagement/UserManagement.vue

@@ -1,51 +1,74 @@
 <template>
   <div>
-    <div class="tw-bg-white tw-p-5 tw-rounded-xl tw-mb-5">
-      <template v-if="store.isSuperAdmin">
-        <RootOrgSelect v-model:value="rootOrgId" />
-        <span class="tw-mr-4"></span>
-      </template>
-      <a-input
-        v-model:value="name"
-        class="tw-mr-4"
-        style="width: 178px"
-        placeholder="姓名"
-        allowClear
-      ></a-input>
-      <span class="tw-mr-4"></span>
-      <a-input
-        v-model:value="loginName"
-        style="width: 178px"
-        placeholder="登录名"
-        allowClear
-      ></a-input>
-      <span class="tw-mr-4"></span>
-      <RoleSelect v-model:value="role" :rootOrgId="rootOrgId" />
-      <span class="tw-mr-4"></span>
-      <StateSelect v-model:value="enable" />
-      <span class="tw-mr-4"></span>
-      <a-button class="query-btn" @click="clickSearch">查询</a-button>
+    <div class="part-box">
+      <a-space class="filter-line" :size="12">
+        <RootOrgSelect v-if="store.isSuperAdmin" v-model:value="rootOrgId" />
+        <a-input
+          v-model:value="name"
+          prefix="姓名"
+          placeholder="请输入"
+          allowClear
+        >
+        </a-input>
+        <a-input
+          v-model:value="loginName"
+          prefix="登录名"
+          placeholder="请输入"
+          allowClear
+        ></a-input>
+        <RoleSelect v-model:value="role" :rootOrgId="rootOrgId" />
+        <StateSelect v-model:value="enable" />
+        <a-button type="primary" @click="clickSearch">查询</a-button>
+      </a-space>
     </div>
 
-    <div class="tw-flex tw-gap-2 tw-my-4">
-      <a-button type="primary" @click="newUser">新增</a-button>
-      <a-button @click="importModalVisible = true">批量导入</a-button>
-      <a-button @click="handleExport">批量导出</a-button>
-      <a-button @click="handleToggleUsers(true, selectIds)">
-        批量启用
-      </a-button>
-      <a-button @click="handleToggleUsers(false, selectIds)">
-        批量禁用
-      </a-button>
-      <a-button @click="handleResetUsers(selectIds)">批量重置密码</a-button>
-    </div>
-
-    <div class="tw-bg-white tw-p-5 tw-rounded-xl">
+    <div class="part-box">
+      <a-space class="part-action" :size="6">
+        <a-button type="text" @click="newUser">
+          <template #icon>
+            <svg-icon name="add"></svg-icon>
+          </template>
+          新增</a-button
+        >
+        <a-divider type="vertical" />
+        <a-button type="text" @click="importModalVisible = true">
+          <template #icon>
+            <svg-icon name="import"></svg-icon>
+          </template>
+          导入
+        </a-button>
+        <a-button type="text" @click="handleExport">
+          <template #icon>
+            <svg-icon name="export"></svg-icon>
+          </template>
+          导出
+        </a-button>
+        <a-button type="text" @click="handleToggleUsers(true, selectIds)">
+          <template #icon>
+            <svg-icon name="enable"></svg-icon>
+          </template>
+          启用
+        </a-button>
+        <a-button type="text" @click="handleToggleUsers(false, selectIds)">
+          <template #icon>
+            <svg-icon name="disable"></svg-icon>
+          </template>
+          禁用
+        </a-button>
+        <a-button type="text" @click="handleResetUsers(selectIds)">
+          <template #icon>
+            <svg-icon name="password"></svg-icon>
+          </template>
+          重置密码
+        </a-button>
+      </a-space>
       <a-table
+        class="page-table"
         rowKey="id"
         :columns="columns"
         :scroll="{ x: 1200 }"
         :data-source="data"
+        size="middle"
         :rowSelection="{
           selectedRowKeys: selectIds,
           onChange: handleRowSelect,
@@ -55,7 +78,7 @@
           current: pageNo,
           total: totalElements,
           showTotal: () => ``,
-          onChange: (pageNoChanged, pageSizeChanged) => {
+          onChange: (pageNoChanged:number, pageSizeChanged:number) => {
             selectIds = [];
             pageNo = pageNoChanged;
             pageSize = pageSizeChanged;
@@ -75,34 +98,26 @@
           <a>{{ $filters.booleanEnableDisableFilter(text) }}</a>
         </template>
         <template #action="{ record }">
-          <span>
-            <a-button @click="showModal(record)">编辑</a-button>
-            <a-button @click="handleToggleUsers(!record.enable, [record.id])">
+          <div class="action-cell">
+            <a-button type="text" @click="showModal(record)">编辑</a-button>
+            <a-button
+              type="text"
+              :danger="record.enable"
+              @click="handleToggleUsers(!record.enable, [record.id])"
+            >
               {{ record.enable ? "禁用" : "启用" }}
             </a-button>
-            <a-popover placement="bottom">
-              <template #content>
-                <div class="tw-flex tw-flex-col">
-                  <a-button
-                    type="text"
-                    style="color: white"
-                    @click="handleResetUsers([record.id])"
-                  >
-                    重置密码
-                  </a-button>
-                  <a-button
-                    v-if="store.isGreaterThanEqualRootOrgAdmin"
-                    type="text"
-                    style="color: white"
-                    @click="handleUserPrivilege(record.id)"
-                  >
-                    权限设置
-                  </a-button>
-                </div>
-              </template>
-              <a-button>更多</a-button>
-            </a-popover>
-          </span>
+            <a-button type="text" @click="handleResetUsers([record.id])">
+              重置密码
+            </a-button>
+            <a-button
+              v-if="store.isGreaterThanEqualRootOrgAdmin"
+              type="text"
+              @click="handleUserPrivilege(record.id)"
+            >
+              权限设置
+            </a-button>
+          </div>
         </template>
       </a-table>
     </div>
@@ -112,6 +127,7 @@
       title="用户信息页"
       okText="确定"
       cancelText="取消"
+      :width="438"
       @ok="handleOk"
     >
       <a-form :labelCol="{ span: 4 }">
@@ -254,14 +270,14 @@ const columns = [
   {
     title: "学校",
     dataIndex: "rootOrgName",
-    width: 200,
+    minWidth: 200,
     slots: { customRender: "rootOrgName" },
     ellipses: true,
   },
   {
     title: "姓名",
     dataIndex: "name",
-    width: 80,
+    minWidth: 120,
   },
   {
     title: "登录名",
@@ -287,7 +303,7 @@ const columns = [
   {
     title: "创建人",
     dataIndex: "creator",
-    width: 80,
+    minWidth: 80,
   },
   {
     title: "更新时间",
@@ -297,14 +313,14 @@ const columns = [
   {
     title: "更新人",
     dataIndex: "updater",
-    width: 80,
+    minWidth: 80,
   },
   {
     title: "操作",
     key: "action",
     slots: { customRender: "action" },
     fixed: "right",
-    width: 270,
+    width: store.isGreaterThanEqualRootOrgAdmin ? 240 : 180,
   },
 ];
 
@@ -371,7 +387,7 @@ function handleResetUsers(ids: number[]) {
   if (checkEmpty(ids)) return;
   Modal.confirm({
     title: "提示",
-    content: "确认重置?",
+    content: "是否重置该用户密码?",
     cancelText: "取消",
     okText: "确定",
     onOk: async () => {

+ 5 - 1
src/filters/index.ts

@@ -1,7 +1,7 @@
 import { PROJECT_STATUS, YYYYMMDDHHmmss } from "@/constants/constants";
 import moment from "moment";
 
-export default {
+const $filters = {
   /** 返回YYYY-MM-DD HH:mm:ss */
   datetimeFilter(epochTime: number) {
     return moment(epochTime).format(YYYYMMDDHHmmss);
@@ -23,3 +23,7 @@ export default {
     return PROJECT_STATUS.find((p) => p.code === val)?.name;
   },
 };
+
+export type FilterType = typeof $filters;
+
+export default $filters;

+ 188 - 0
src/styles/base.less

@@ -0,0 +1,188 @@
+.box-justify {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+/* part */
+.part-box {
+  margin-bottom: 20px;
+  background-color: #fff;
+  border-radius: var(--border-radius-large);
+  padding: 16px;
+
+  &.is-border {
+    border: 1px solid var(--color-border);
+  }
+
+  &.is-nopad {
+    padding: 0;
+  }
+
+  &.is-filter {
+    .a-form-item {
+      margin-bottom: 16px;
+    }
+  }
+
+  &-action {
+    padding-bottom: 16px;
+    white-space: nowrap;
+    display: flex;
+    align-items: flex-end;
+  }
+
+  &-head {
+    .box-justify;
+    min-height: 30px;
+    margin: -10px 0 10px -10px;
+    color: var(--app-main-text-color);
+
+    > h3 {
+      font-size: 17px;
+    }
+  }
+}
+
+.filter-line {
+  .ant-input-affix-wrapper,
+  .ant-select {
+    width: 180px;
+  }
+
+  .ant-input-affix-wrapper {
+    .ant-input-prefix {
+      padding-right: 7px;
+      border-right: 1px solid var(--color-border);
+      color: var(--app-mid-text-color);
+      height: 14px;
+      line-height: 1;
+      margin: 4px 7px 4px 0;
+    }
+  }
+  .ant-select {
+    display: flex;
+    justify-content: space-between;
+    vertical-align: middle;
+    border: 1px solid #d9d9d9;
+    border-radius: 6px;
+
+    &::before {
+      content: attr(title);
+      flex-grow: 0;
+      flex-shrink: 0;
+      line-height: 30px;
+      padding-left: 11px;
+      padding-right: 7px;
+    }
+
+    .ant-select-selector {
+      border: none;
+      flex-grow: 2;
+      box-shadow: none !important;
+      position: relative;
+
+      &::before {
+        content: "";
+        display: block;
+        position: absolute;
+        border-right: 1px solid var(--color-border);
+        height: 14px;
+        top: 50%;
+        left: 0;
+        margin-top: -7px;
+      }
+    }
+  }
+  .ant-select-focused.ant-select:not(.ant-select-disabled):not(
+      .ant-select-customize-input
+    ):not(.ant-pagination-size-changer) {
+    border-color: var(--color-primary);
+  }
+}
+.part-action {
+  .ant-btn-text {
+    padding: 5px 8px;
+
+    .svg-icon {
+      margin-right: 3px;
+      margin-top: -2px;
+    }
+  }
+  .ant-divider {
+    margin: 0;
+    border-color: var(--color-border);
+  }
+}
+
+// page-table
+.page-table {
+  .ant-table-thead {
+    .ant-table-cell {
+      background-color: #fff;
+      color: var(--app-secondary-text-color);
+      font-weight: 400;
+
+      &::before {
+        display: none;
+      }
+    }
+  }
+  .action-cell {
+    .ant-btn-text {
+      padding: 0;
+      height: 22px;
+      line-height: 22px;
+      border: none;
+      background-color: transparent !important;
+
+      + .ant-btn-text {
+        margin-left: 14px;
+      }
+
+      &:hover {
+        opacity: 0.8;
+      }
+    }
+  }
+}
+
+/* table */
+.table {
+  width: 100%;
+  border-spacing: 0;
+  border-collapse: collapse;
+  text-align: left;
+
+  &.table-white {
+    background-color: #fff;
+  }
+
+  th {
+    padding: 12px;
+    line-height: 1.2;
+    letter-spacing: 1px;
+    color: var(--app-main-text-color);
+    border: 1px solid var(--color-border);
+  }
+  td {
+    padding: 14px;
+    line-height: 1.2;
+    color: var(--app-main-text-color);
+    border: 1px solid var(--color-border);
+  }
+
+  &--border {
+    border: 1px solid var(--color-border);
+    border-radius: var(--border-radius-large);
+    th {
+      background-color: #fcfcfd;
+      border: none;
+      border-bottom: 1px solid var(--color-border);
+    }
+    td {
+      border: none;
+      border-bottom: 1px solid var(--color-border);
+    }
+  }
+}

+ 0 - 8
src/styles/global.less

@@ -1,8 +0,0 @@
-.main-text-color {
-  color: var(--app-main-text-color);
-}
-
-.secondary-text {
-  color: var(--app-small-header-text-color);
-  font-size: var(--app-secondary-font-size);
-}

+ 2 - 0
src/styles/home.less

@@ -39,6 +39,7 @@
       padding: 5px 16px;
       border-radius: 6px;
       line-height: 22px;
+      font-weight: 500;
       cursor: pointer;
 
       .svg-icon {
@@ -68,6 +69,7 @@
       margin-right: 8px;
       padding: 5px;
       line-height: 22px;
+      font-weight: 400;
 
       .svg-icon {
         margin-right: 6px;

+ 1 - 0
src/styles/index.less

@@ -1,5 +1,6 @@
 @import "./var.less";
 @import "./reset.less";
+@import "./base.less";
 
 @import "./nprogress.less";
 @import "./ant-custom.less";

+ 1 - 1
src/styles/var.less

@@ -35,6 +35,6 @@
   --color-dark: #262626;
 
   --border-radius: 4px;
-  --border-radius-large: 12px;
+  --border-radius-large: 8px;
   --border-radius-huge: 20px;
 }