huangxw il y a 10 mois
Parent
commit
3b5454ea51

BIN
public/favicon.ico


BIN
src/assets/images/goout_icon.png


+ 134 - 1
src/assets/styles/ruoyi.scss

@@ -52,7 +52,51 @@
 .ml20 {
   margin-left: 20px;
 }
-
+.d-flex {
+  display: flex;
+}
+.f-w-w {
+  flex-wrap: wrap;
+}
+.a-c {
+  align-items: center;
+}
+.j-c {
+  justify-content: center;
+}
+.j-ed {
+  justify-content: flex-end;
+}
+.flex-cln {
+  flex-direction: column;
+}
+.j-sb {
+  justify-content: space-between;
+}
+.flex-w {
+  flex-wrap: wrap;
+}
+.flex-at {
+  flex: auto;
+}
+.flex1 {
+  flex: 1;
+}
+.p-rtv {
+  position: relative;
+}
+.f-w-4 {
+  font-weight: 400;
+}
+.f-w-5 {
+  font-weight: 500;
+}
+.f-w-6 {
+  font-weight: 600;
+}
+.f-w-7 {
+  font-weight: 700;
+}
 .h1,
 .h2,
 .h3,
@@ -288,3 +332,92 @@ h6 {
 .top-right-btn {
   margin-left: auto;
 }
+
+
+@for $i from 10 through 20 {
+  .f-s-#{$i} {
+    font-size: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .mb-#{$i} {
+    margin-bottom: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .pb-#{$i} {
+    padding-bottom: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .pd-#{$i} {
+    padding: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .pr-#{$i} {
+    padding-right: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .pt-#{$i} {
+    padding-top: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .pb-#{$i} {
+    padding-bottom: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .pl-#{$i} {
+    padding-left: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .mr-#{$i} {
+    margin-right: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .ml-#{$i} {
+    margin-left: #{$i}px;
+  }
+}
+@for $i from 4 through 40 {
+  .mg-#{$i} {
+    margin: #{$i}px;
+  }
+}
+
+$colors: (
+  333: #333,
+  666: #666,
+  999: #999,
+  fff: #fff,
+  ccc: #ccc,
+  eee: #eee,
+  ddd: #ddd,
+  fa: #FAFAFA,
+  // 主题色
+  primary: #2A6D52,
+  light-black: #4D4D4D,
+  // 成功
+  success: #67C23A,
+  // 警告
+  warning: #E6A23C,
+  // 失败
+  danger: #F56C6C,
+  // 会员绿
+  member-green: #41C06D,
+);
+@each $color, $value in $colors {
+  .c-#{$color} {
+    color: $value;
+  }
+}
+@each $color, $value in $colors {
+  .bg-#{$color} {
+    background-color: $value;
+  }
+}

+ 1 - 1
src/assets/styles/variables.module.scss

@@ -62,7 +62,7 @@ html.dark {
   --tags-view-active-border-color: var(--el-color-primary-light-2);
   // vxe-table 主题
   --vxe-font-color: #98989e;
-  --vxe-primary-color: #2c7ecf;
+  --vxe-primary-color: #2c9049;
   --vxe-icon-background-color: #98989e;
   --vxe-table-font-color: #98989e;
   --vxe-table-resizable-color: #95969a;

+ 1 - 1
src/layout/components/AppMain.vue

@@ -57,7 +57,7 @@ function addIframe() {
 <style lang="scss" scoped>
 .app-main {
   /* 50= navbar  50  */
-  min-height: calc(100vh - 50px);
+  min-height: calc(100vh - 54px);
   width: 100%;
   position: relative;
   overflow: hidden;

+ 12 - 74
src/layout/components/Navbar.vue

@@ -1,82 +1,21 @@
 <template>
   <div class="navbar">
-    <hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container" @toggle-click="toggleSideBar" />
+    <hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container"
+      @toggle-click="toggleSideBar" />
     <breadcrumb v-if="!settingsStore.topNav" id="breadcrumb-container" class="breadcrumb-container" />
     <top-nav v-if="settingsStore.topNav" id="topmenu-container" class="topmenu-container" />
 
     <div class="right-menu flex align-center">
-      <template v-if="appStore.device !== 'mobile'">
-        <el-select
-          v-if="userId === 1 && tenantEnabled"
-          v-model="companyName"
-          class="min-w-244px"
-          clearable
-          filterable
-          reserve-keyword
-          :placeholder="proxy.$t('navbar.selectTenant')"
-          @change="dynamicTenantEvent"
-          @clear="dynamicClearEvent"
-        >
-          <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"> </el-option>
-          <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
-        </el-select>
-
-        <!-- <header-search id="header-search" class="right-menu-item" /> -->
-        <search-menu ref="searchMenuRef" />
-        <el-tooltip content="搜索" effect="dark" placement="bottom">
-          <div class="right-menu-item hover-effect" @click="openSearchMenu">
-            <svg-icon class-name="search-icon" icon-class="search" />
-          </div>
-        </el-tooltip>
-        <!-- 消息 -->
-        <el-tooltip :content="proxy.$t('navbar.message')" effect="dark" placement="bottom">
-          <div>
-            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">
-              <template #reference>
-                <el-badge :value="newNotice > 0 ? newNotice : ''" :max="99">
-                  <svg-icon icon-class="message" />
-                </el-badge>
-              </template>
-              <template #default>
-                <notice></notice>
-              </template>
-            </el-popover>
-          </div>
-        </el-tooltip>
-
-        <el-tooltip :content="proxy.$t('navbar.full')" effect="dark" placement="bottom">
-          <screenfull id="screenfull" class="right-menu-item hover-effect" />
-        </el-tooltip>
-
-        <el-tooltip :content="proxy.$t('navbar.language')" effect="dark" placement="bottom">
-          <lang-select id="lang-select" class="right-menu-item hover-effect" />
-        </el-tooltip>
-
-        <el-tooltip :content="proxy.$t('navbar.layoutSize')" effect="dark" placement="bottom">
-          <size-select id="size-select" class="right-menu-item hover-effect" />
-        </el-tooltip>
-      </template>
-      <div class="avatar-container">
-        <el-dropdown class="right-menu-item hover-effect" trigger="click" @command="handleCommand">
-          <div class="avatar-wrapper">
-            <img :src="userStore.avatar" class="user-avatar" />
-            <el-icon><caret-bottom /></el-icon>
-          </div>
-          <template #dropdown>
-            <el-dropdown-menu>
-              <router-link v-if="!dynamic" to="/user/profile">
-                <el-dropdown-item>{{ proxy.$t('navbar.personalCenter') }}</el-dropdown-item>
-              </router-link>
-              <el-dropdown-item v-if="settingsStore.showSettings" command="setLayout">
-                <span>{{ proxy.$t('navbar.layoutSetting') }}</span>
-              </el-dropdown-item>
-              <el-dropdown-item divided command="logout">
-                <span>{{ proxy.$t('navbar.logout') }}</span>
-              </el-dropdown-item>
-            </el-dropdown-menu>
-          </template>
-        </el-dropdown>
+      <div class="d-flex a-c">
+        <div class="mr10"><el-avatar :size="36"
+            src="https://ta.zycpzs.cn/oss-file/smart-trace/szyy/images/common/cpy_avatar.png" /></div>
+        <div class="d-flex a-c">
+          <span class="f-s-14 c-333 f-w-5">{{ userStore.nickname }}</span>
+          <span class="f-s-12 c-999">({{ userStore.rolesName }})</span>
+        </div>
       </div>
+      <div class="pd-10">|</div>
+      <el-button @click="logout" text> <img class="drop-icon mr5" src="@/assets/images/goout_icon.png" />退出登录</el-button>
     </div>
   </div>
 </template>
@@ -210,7 +149,7 @@ watch(
 }
 
 .navbar {
-  height: 50px;
+  height: 54px;
   overflow: hidden;
   position: relative;
   //background: #fff;
@@ -246,7 +185,6 @@ watch(
   .right-menu {
     float: right;
     height: 100%;
-    line-height: 50px;
     display: flex;
 
     &:focus {

+ 3 - 3
src/settings.ts

@@ -6,7 +6,7 @@ const setting: DefaultSettings = {
    */
   title: import.meta.env.VITE_APP_TITLE,
 
-  theme: '#409EFF',
+  theme: '#2c9049',
 
   /**
    * 侧边栏主题 深色主题theme-dark,浅色主题theme-light
@@ -15,7 +15,7 @@ const setting: DefaultSettings = {
   /**
    * 是否系统布局配置
    */
-  showSettings: true,
+  showSettings: false,
 
   /**
    * 是否显示顶部导航
@@ -25,7 +25,7 @@ const setting: DefaultSettings = {
   /**
    * 是否显示 tagsView
    */
-  tagsView: true,
+  tagsView: false,
 
   /**
    * 是否固定头部

+ 3 - 0
src/store/modules/user.ts

@@ -14,6 +14,7 @@ export const useUserStore = defineStore('user', () => {
   const avatar = ref('');
   const roles = ref<Array<string>>([]); // 用户角色编码集合 → 判断路由权限
   const permissions = ref<Array<string>>([]); // 用户权限编码集合 → 判断按钮权限
+  const rolesName = ref<string>(''); // 用户角色名称集合
 
   /**
    * 登录
@@ -42,6 +43,7 @@ export const useUserStore = defineStore('user', () => {
       if (data.roles && data.roles.length > 0) {
         // 验证返回的roles是否是一个非空数组
         roles.value = data.roles;
+        rolesName.value = user?.roles.map((item: any) => item.roleName || item.remark).join(',');
         permissions.value = data.permissions;
       } else {
         roles.value = ['ROLE_DEFAULT'];
@@ -74,6 +76,7 @@ export const useUserStore = defineStore('user', () => {
     tenantId,
     token,
     nickname,
+    rolesName,
     avatar,
     roles,
     permissions,

+ 52 - 56
src/views/dgtmedicine/member/index.vue

@@ -1,31 +1,27 @@
 <template>
   <div class="p-2">
-    <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
-      :leave-active-class="proxy?.animate.searchAnimate.leave">
-      <div class="search" v-show="showSearch">
-        <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
-          <el-form-item label="企业名称" prop="cpyName">
-            <el-input v-model="queryParams.cpyName" placeholder="请输入企业名称" clearable style="width: 240px"
+    <div class="search" v-show="showSearch">
+      <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
+        <el-form-item label="企业名称" prop="cpyName">
+          <el-input v-model="queryParams.cpyName" placeholder="请输入企业名称" clearable style="width: 240px"
+            @keyup.enter="handleQuery" />
+        </el-form-item>
+        <el-form-item label="日期范围" prop="dateRange">
+          <el-date-picker clearable v-model="queryParams.dateRange" type="daterange" range-separator="至"
+            start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD" @change="handleDateRangeChange" />
+        </el-form-item>
+        <el-form-item label="审核状态" prop="reviewStatus">
+          <el-select v-model="queryParams.reviewStatus" placeholder="请选择" clearable style="width: 240px">
+            <el-option v-for="dict in cpy_res_status" :key="dict.value" :label="dict.label" :value="dict.value"
               @keyup.enter="handleQuery" />
-          </el-form-item>
-          <el-form-item label="日期范围" prop="dateRange">
-            <el-date-picker clearable v-model="queryParams.dateRange" type="daterange" range-separator="至"
-              start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD"
-              @change="handleDateRangeChange" />
-          </el-form-item>
-          <el-form-item label="审核状态" prop="reviewStatus">
-            <el-select v-model="queryParams.reviewStatus" placeholder="请选择" clearable style="width: 240px">
-              <el-option v-for="dict in cpy_res_status" :key="dict.value" :label="dict.label" :value="dict.value"
-                @keyup.enter="handleQuery" />
-            </el-select>
-          </el-form-item>
-          <el-form-item>
-            <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
-            <el-button icon="Refresh" @click="resetQuery">重置</el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-    </transition>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+          <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
 
     <el-card shadow="never">
       <template #header>
@@ -33,66 +29,66 @@
           <el-col :span="2" v-for="level in memberLevelCountList" :key="level.type">
             <el-button type="text" @click="handleQuery(level)"
               :style="{ fontWeight: queryParams.vipLevel === level.type ? 'bold' : 'normal', color: queryParams.vipLevel === level.type ? 'black' : 'inherit' }">{{
-              level.name }}({{ level.num }})</el-button>
+                level.name }}({{ level.num }})</el-button>
           </el-col>
           <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
       </template>
-      <el-table v-loading="loading" :data="memberList" @selection-change="handleSelectionChange">
-        <el-table-column label="企业名称" align="center" prop="cpyName" width="220" />
-        <el-table-column label="法人姓名" align="center" prop="legalPersonName" />
-        <el-table-column label="法人电话" align="center" prop="legalPersonPhone" width="150" />
-        <el-table-column label="当前等级" align="center" prop="vipLevel">
+      <vxe-table :loading="loading" border :data="memberList">
+        <vxe-column title="企业名称" align="center" field="cpyName" width="220" />
+        <vxe-column title="法人姓名" align="center" field="legalPersonName" />
+        <vxe-column title="法人电话" align="center" field="legalPersonPhone" width="150" />
+        <vxe-column title="当前等级" align="center" field="vipLevel">
           <template #default="scope">
             <dict-tag :value="scope.row.vipLevel" :options="vip_level" />
           </template>
-        </el-table-column>
-        <el-table-column label="申请等级" align="center" prop="applyLevel">
+        </vxe-column>
+        <vxe-column title="申请等级" align="center" field="applyLevel">
           <template #default="scope">
             <dict-tag :value="scope.row.applyLevel" :options="vip_level" />
           </template>
-        </el-table-column>
-        <el-table-column label="开始时间" align="center" prop="startDate" width="100">
+        </vxe-column>
+        <vxe-column title="开始时间" align="center" field="startDate" width="100">
           <template #default="scope">
             <span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
           </template>
-        </el-table-column>
-        <el-table-column label="结束时间" align="center" prop="endDate" width="100">
+        </vxe-column>
+        <vxe-column title="结束时间" align="center" field="endDate" width="100">
           <template #default="scope">
             <span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
           </template>
-        </el-table-column>
-        <!-- <el-table-column label="业务类型" align="center" prop="cpyBusType" /> -->
-        <el-table-column label="审核状态" align="center" prop="reviewStatus">
+        </vxe-column>
+        <!-- <vxe-column label="业务类型" align="center" prop="cpyBusType" /> -->
+        <vxe-column title="审核状态" align="center" field="reviewStatus">
           <template #default="scope">
             <dict-tag :value="scope.row.reviewStatus" :options="cpy_res_status" />
           </template>
-        </el-table-column>
-        <el-table-column label="审核信息" align="center" prop="reviewMsg" />
-        <el-table-column label="审核时间" align="center" prop="reviewTime" width="180">
+        </vxe-column>
+        <vxe-column title="审核信息" align="center" field="reviewMsg" />
+        <vxe-column title="审核时间" align="center" field="reviewTime" width="180">
           <template #default="scope">
             <span>{{ parseTime(scope.row.reviewTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
           </template>
-        </el-table-column>
-        <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        </vxe-column>
+        <vxe-column title="创建时间" align="center" field="createTime" width="180">
           <template #default="scope">
             <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
           </template>
-        </el-table-column>
-        <!-- <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        </vxe-column>
+        <!-- <vxe-column label="更新时间" align="center" prop="updateTime" width="180">
           <template #default="scope">
             <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
           </template>
-        </el-table-column> -->
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        </vxe-column> -->
+        <vxe-column title="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-button link type="primary" @click="showApp(scope.row)"
               v-if="scope.row.reviewStatus == '0'">审批</el-button>
-            <el-button link type="primary" 
-              @click="memberDetail(scope.row)" v-if="scope.row.reviewStatus != '0'">详情</el-button>
+            <el-button link type="primary" @click="memberDetail(scope.row)"
+              v-if="scope.row.reviewStatus != '0'">详情</el-button>
           </template>
-        </el-table-column>
-      </el-table>
+        </vxe-column>
+      </vxe-table>
 
       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
         v-model:limit="queryParams.pageSize" @pagination="getList" />
@@ -190,9 +186,9 @@
           </el-col>
         </el-row>
         <el-table v-loading="loading" :data="form.plantingInfo">
-          <el-table-column label="品种名称" align="center" prop="variety" />
-          <el-table-column label="种植面积" align="center" prop="plantingArea" />
-          <el-table-column label="种植地点" align="center" prop="plantingPlace" />
+          <vxe-column label="品种名称" align="center" prop="variety" />
+          <vxe-column label="种植面积" align="center" prop="plantingArea" />
+          <vxe-column label="种植地点" align="center" prop="plantingPlace" />
         </el-table>
         <el-row :gutter="20">
           <el-col>

+ 1 - 1
vite.config.ts

@@ -25,7 +25,7 @@ export default defineConfig(({ mode, command }: ConfigEnv): UserConfig => {
       open: true,
       proxy: {
         [env.VITE_APP_BASE_API]: {
-          target: 'http://192.168.1.68:8080',
+          target: 'http://dm.yujin.shuziyunyao.com/api',
           changeOrigin: true,
           ws: true,
           rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')