ソースを参照

feature(优化、Bug):
1、优化产品信息页面展示
2、修复角色管理修改页面选择问题
3、更新默认用户头像
4、更新前端写死数据

ZZH-wl 2 年 前
コミット
27948848f0

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 # 租户码
-VUE_APP_TENANT=cp5vbwxy
+VUE_APP_TENANT=8b9ec443
 
 # GateWay地址
 VUE_APP_MicroSrvProxy_API=http://1.15.100.104:9982/

+ 1 - 1
package.json

@@ -56,7 +56,7 @@
     "eslint-plugin-prettier": "^4.0.0",
     "eslint-plugin-vue": "^8.2.0",
     "filemanager-webpack-plugin": "3.1.1",
-    "image-webpack-loader": "^8.0.1",
+    "image-webpack-loader": "^8.1.0",
     "lint-staged": "^12.1.2",
     "plop": "^3.0.5",
     "postcss-html": "^1.3.0",

+ 3 - 3
src/store/modules/user.js

@@ -15,7 +15,7 @@ const state = () => ({
   username: '游客',
   nickName: '',
   phone: '',
-  avatar: 'https://i.gtimg.cn/club/item/face/img/2/15922_100.gif',
+  avatar: require('@/assets/login_images/user_avatar.png'),
   isFirstLogin: false,
 })
 const getters = {
@@ -74,7 +74,7 @@ const actions = {
    */
   setVirtualRoles({ commit, dispatch }) {
     dispatch('acl/setFull', true, { root: true })
-    commit('setAvatar', 'https://i.gtimg.cn/club/item/face/img/2/15922_100.gif')
+    commit('setAvatar', require('@/assets/login_images/user_avatar.png'))
     commit('setUsername', 'admin(未开启登录拦截)')
   },
   /**
@@ -162,7 +162,7 @@ const actions = {
    */
   async resetAll({ commit, dispatch }) {
     commit('setUsername', '游客')
-    commit('setAvatar', 'https://i.gtimg.cn/club/item/face/img/2/15922_100.gif')
+    commit('setAvatar', require('@/assets/login_images/user_avatar.png'))
     commit('routes/setRoutes', [], { root: true })
     await dispatch('setToken', '')
     await dispatch('acl/setFull', false, { root: true })

+ 7 - 19
src/vab/components/VabTabs/index.vue

@@ -10,15 +10,8 @@
       type="card"
       @tab-click="handleTabClick"
       @tab-remove="handleTabRemove">
-      <el-tab-pane
-        v-for="item in visitedRoutes"
-        :key="item.path"
-        :closable="!isNoClosable(item)"
-        :name="item.path">
-        <span
-          slot="label"
-          style="display: inline-block"
-          @contextmenu.prevent="openMenu($event, item)">
+      <el-tab-pane v-for="item in visitedRoutes" :key="item.path" :closable="!isNoClosable(item)" :name="item.path">
+        <span slot="label" style="display: inline-block" @contextmenu.prevent="openMenu($event, item)">
           <template v-if="theme.showTabsIcon">
             <vab-icon
               v-if="item.meta && item.meta.icon"
@@ -89,8 +82,7 @@
       <li
         class="el-dropdown-menu__item"
         :class="{
-          'is-disabled':
-            visitedRoutes.indexOf(hoverRoute) === visitedRoutes.length - 1,
+          'is-disabled': visitedRoutes.indexOf(hoverRoute) === visitedRoutes.length - 1,
         }"
         @click="closeRightTabs">
         <vab-icon icon="arrow-right-line" />
@@ -162,8 +154,7 @@
         delAllVisitedRoutes: 'tabs/delAllVisitedRoutes',
       }),
       handleTabClick(tab) {
-        if (this.isActive(tab.name))
-          this.$baseEventBus.$emit('reload-router-view')
+        if (this.isActive(tab.name)) this.$baseEventBus.$emit('reload-router-view')
         else this.$router.push(this.visitedRoutes[tab.index])
       },
       handleVisibleChange(val) {
@@ -220,8 +211,7 @@
         if (this.hoverRoute) {
           await this.$router.push(this.hoverRoute)
           await this.delOthersVisitedRoutes(this.hoverRoute.path)
-        } else
-          await this.delOthersVisitedRoutes(handleActivePath(this.$route, true))
+        } else await this.delOthersVisitedRoutes(handleActivePath(this.$route, true))
         await this.closeMenu()
       },
       /**
@@ -232,8 +222,7 @@
         if (this.hoverRoute) {
           await this.$router.push(this.hoverRoute)
           await this.delLeftVisitedRoutes(this.hoverRoute.path)
-        } else
-          await this.delLeftVisitedRoutes(handleActivePath(this.$route, true))
+        } else await this.delLeftVisitedRoutes(handleActivePath(this.$route, true))
         await this.closeMenu()
       },
       /**
@@ -244,8 +233,7 @@
         if (this.hoverRoute) {
           await this.$router.push(this.hoverRoute)
           await this.delRightVisitedRoutes(this.hoverRoute.path)
-        } else
-          await this.delRightVisitedRoutes(handleActivePath(this.$route, true))
+        } else await this.delRightVisitedRoutes(handleActivePath(this.$route, true))
         await this.closeMenu()
       },
       /**

+ 7 - 7
src/vab/styles/default.scss

@@ -4024,7 +4024,7 @@ $--background-color-base: $base-color-background;
 
 .el-avatar {
   color: $base-color-white;
-  background: $--color-text-placeholder;
+  background: $base-color-white;
 }
 
 .el-drawer {
@@ -4049,7 +4049,7 @@ $--background-color-base: $base-color-background;
     align-items: center;
     font-size: 14px;
     padding-right: 8px;
-    >span:first-child {
+    > span:first-child {
       flex: 1;
       overflow: hidden;
       text-overflow: ellipsis;
@@ -4089,22 +4089,22 @@ $--background-color-base: $base-color-background;
     border-right: 6px solid #f6f8f9;
     display: flex;
     flex-direction: column;
-    background: #fff; 
+    background: #fff;
     .el-tree {
-      flex:1;
+      flex: 1;
       overflow: auto;
     }
     footer {
-      flex:0 0 32px;
+      flex: 0 0 32px;
       display: flex;
       .el-button {
-        flex:1;
+        flex: 1;
       }
     }
   }
   .tree-table {
     width: calc(100% - 216px);
-    padding:0 6px;
+    padding: 0 6px;
     background: #fff;
   }
   .info-side {

+ 1 - 1
src/views/base/distributor/components/DistrEdit.vue

@@ -106,7 +106,7 @@
           <!-- <el-form-item label="销售人员" prop="businessScope">
             <el-input v-model.trim="form.businessScope" />
           </el-form-item> -->
-          <select-user ref="selectUser" :query-params="{ roles: ['Sales', 'SalesManager'] }" @save="selectUser" />
+          <select-user ref="selectUser" :query-params="{ roles: ['SalesEngineer'] }" @save="selectUser" />
           <el-form-item label="销售人员" prop="belongSale">
             <el-input v-model="form.belongSale" readonly>
               <el-button slot="append" icon="el-icon-search" @click="choose" />

+ 123 - 92
src/views/base/product/index.vue

@@ -1,94 +1,114 @@
 <template>
   <div class="user-management-container">
-    <vab-query-form>
-      <vab-query-form-top-panel>
-        <el-form :inline="true" :model="queryForm" @submit.native.prevent>
-          <el-form-item>
-            <el-input v-model.trim="queryForm.prodCode" clearable placeholder="产品编码" />
-          </el-form-item>
+    <div class="side-layout">
+      <div class="tree-side">
+        <div class="head-container">
+          <span style="font-size: 25px">产品类别</span>
+        </div>
+        <el-tree
+          ref="tree"
+          class="filter-tree"
+          :data="prodClassOptions"
+          highlight-current
+          node-key="key"
+          :props="defaultProps"
+          @node-click="handleNodeClick" />
+      </div>
+      <div class="tree-table">
+        <vab-query-form>
+          <vab-query-form-top-panel>
+            <el-form :inline="true" :model="queryForm" @submit.native.prevent>
+              <el-form-item>
+                <el-input v-model.trim="queryForm.prodCode" clearable placeholder="产品编码" />
+              </el-form-item>
+              <el-form-item>
+                <el-input v-model.trim="queryForm.prodName" clearable placeholder="产品名称" />
+              </el-form-item>
+              <el-form-item>
+                <el-select v-model="queryForm.prodClass" placeholder="产品类别" style="width: 100%">
+                  <el-option v-for="item in prodClassOptions" :key="item.key" :label="item.value" :value="item.key" />
+                </el-select>
+              </el-form-item>
+              <el-form-item>
+                <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
+                <el-button icon="el-icon-refresh-right" @click="reset">重置</el-button>
+              </el-form-item>
+            </el-form>
+          </vab-query-form-top-panel>
+          <vab-query-form-left-panel>
+            <el-button
+              v-permissions="['base:product:add']"
+              icon="el-icon-plus"
+              type="primary"
+              @click="handleEdit($event)">
+              添加
+            </el-button>
+          </vab-query-form-left-panel>
+          <vab-query-form-right-panel>
+            <table-tool :check-list.sync="checkList" :columns="columns" />
+          </vab-query-form-right-panel>
+        </vab-query-form>
 
-          <el-form-item>
-            <el-input v-model.trim="queryForm.prodName" clearable placeholder="产品名称" />
-          </el-form-item>
-          <el-form-item>
-            <el-select v-model="queryForm.prodClass" placeholder="产品类别" style="width: 100%">
-              <el-option v-for="item in classOptions" :key="item.value" :label="item.value" :value="item.value" />
-            </el-select>
-          </el-form-item>
-          <el-form-item>
-            <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
-            <el-button icon="el-icon-refresh-right" @click="reset">重置</el-button>
-          </el-form-item>
-        </el-form>
-      </vab-query-form-top-panel>
-    </vab-query-form>
-    <vab-query-form-left-panel>
-      <el-button v-permissions="['base:product:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
-        添加
-      </el-button>
-    </vab-query-form-left-panel>
-    <vab-query-form-right-panel>
-      <table-tool :check-list.sync="checkList" :columns="columns" />
-    </vab-query-form-right-panel>
-
-    <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
-      <el-table-column align="center" label="序号" show-overflow-tooltip width="80">
-        <template #default="{ $index }">
-          {{ $index + 1 }}
-        </template>
-      </el-table-column>
-      <el-table-column
-        v-for="(item, index) in finallyColumns"
-        :key="index"
-        align="center"
-        :label="item.label"
-        :min-width="item.minWidth"
-        :prop="item.prop"
-        show-overflow-tooltip
-        :sortable="item.sortable"
-        :width="item.width">
-        <template #default="{ row }">
-          <el-button v-if="item.prop === 'prodName'" style="font-size: 14px" type="text" @click="handleDetail(row)">
-            {{ row.prodName }}
-          </el-button>
-          <span v-else-if="item.prop === 'prodClass'">
-            {{ row.prodClass }}
-          </span>
-          <span v-else-if="item.prop === 'prodCode'">
-            {{ row.prodCode }}
-          </span>
-          <span v-else-if="item.prop === 'agentPrice'">
-            {{ formatPrice(row.agentPrice) }}
-          </span>
-          <span v-else-if="item.prop === 'distPrice'">
-            {{ formatPrice(row.distPrice) }}
-          </span>
-          <span v-else-if="item.prop === 'guidPrice'">
-            {{ formatPrice(row.guidPrice) }}
-          </span>
-          <span v-else-if="item.prop === 'marketPrice'">
-            {{ formatPrice(row.marketPrice) }}
-          </span>
-        </template>
-      </el-table-column>
-      <el-table-column align="center" fixed="right" label="操作" show-overflow-tooltip width="120">
-        <template #default="{ row }">
-          <el-button v-permissions="['base:product:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button v-permissions="['base:product:delete']" type="text" @click="handleDelete(row)">删除</el-button>
-        </template>
-      </el-table-column>
-      <template #empty>
-        <el-image class="vab-data-empty" :src="require('@/assets/empty_images/data_empty.png')" />
-      </template>
-    </el-table>
-    <el-pagination
-      background
-      :current-page="queryForm.pageNum"
-      :layout="layout"
-      :page-size="queryForm.pageSize"
-      :total="total"
-      @current-change="handleCurrentChange"
-      @size-change="handleSizeChange" />
+        <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
+          <el-table-column align="center" label="序号" show-overflow-tooltip width="80">
+            <template #default="{ $index }">
+              {{ $index + 1 }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-for="(item, index) in finallyColumns"
+            :key="index"
+            align="center"
+            :label="item.label"
+            :min-width="item.minWidth"
+            :prop="item.prop"
+            show-overflow-tooltip
+            :sortable="item.sortable"
+            :width="item.width">
+            <template #default="{ row }">
+              <el-button v-if="item.prop === 'prodName'" style="font-size: 14px" type="text" @click="handleDetail(row)">
+                {{ row.prodName }}
+              </el-button>
+              <span v-else-if="item.prop === 'prodClass'">
+                {{ selectDictLabel(prodClassOptions, row.prodClass) }}
+              </span>
+              <span v-else-if="item.prop === 'prodCode'">
+                {{ row.prodCode }}
+              </span>
+              <span v-else-if="item.prop === 'agentPrice'">
+                {{ formatPrice(row.agentPrice) }}
+              </span>
+              <span v-else-if="item.prop === 'distPrice'">
+                {{ formatPrice(row.distPrice) }}
+              </span>
+              <span v-else-if="item.prop === 'guidPrice'">
+                {{ formatPrice(row.guidPrice) }}
+              </span>
+              <span v-else-if="item.prop === 'marketPrice'">
+                {{ formatPrice(row.marketPrice) }}
+              </span>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" fixed="right" label="操作" show-overflow-tooltip width="120">
+            <template #default="{ row }">
+              <el-button v-permissions="['base:product:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+              <el-button v-permissions="['base:product:delete']" type="text" @click="handleDelete(row)">删除</el-button>
+            </template>
+          </el-table-column>
+          <template #empty>
+            <el-image class="vab-data-empty" :src="require('@/assets/empty_images/data_empty.png')" />
+          </template>
+        </el-table>
+        <el-pagination
+          background
+          :current-page="queryForm.pageNum"
+          :layout="layout"
+          :page-size="queryForm.pageSize"
+          :total="total"
+          @current-change="handleCurrentChange"
+          @size-change="handleSizeChange" />
+      </div>
+    </div>
     <edit ref="edit" @fetch-data="fetchData" />
   </div>
 </template>
@@ -110,7 +130,9 @@
         queryForm: {
           pageNum: 1,
           pageSize: 10,
-          userName: '',
+          prodCode: '',
+          prodClass: '',
+          prodName: '',
         },
         checkList: [],
         columns: [
@@ -161,7 +183,11 @@
             sortable: false,
           },
         ],
-        classOptions: [], //产品分类
+        defaultProps: {
+          key: 'key',
+          label: 'value',
+        },
+        prodClassOptions: [], //产品分类
       }
     },
     computed: {
@@ -177,6 +203,11 @@
       this.fetchData()
     },
     methods: {
+      // 节点单击事件
+      handleNodeClick(data) {
+        this.queryForm.prodClass = data.key
+        this.fetchData()
+      },
       setSelectRows(val) {
         this.selectRows = val
       },
@@ -190,9 +221,9 @@
         }
       },
       getOptions() {
-        Promise.all([this.getDicts('product_type')])
+        Promise.all([this.getDicts('base_product_class')])
           .then(([productType]) => {
-            this.classOptions = productType.data.values || []
+            this.prodClassOptions = productType.data.values || []
           })
           .catch((err) => console.log(err))
       },

+ 5 - 10
src/views/base/productAuth/index.vue

@@ -10,7 +10,7 @@
   <div class="product-auth-container">
     <vab-query-form>
       <vab-query-form-left-panel>
-        <el-form :inline="true" :model="queryForm" @submit.native.prevent>
+        <el-form ref="queryForm" :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item>
             <el-input v-model="queryForm.keyWords" placeholder="姓名" />
           </el-form-item>
@@ -49,7 +49,6 @@
       :current-page="queryForm.pageNum"
       :layout="layout"
       :page-size="queryForm.pageSize"
-      :page-sizes="[5, 10]"
       :total="total"
       @current-change="handleCurrentChange"
       @size-change="handleSizeChange" />
@@ -75,6 +74,7 @@
   import proAuthApi from '@/api/base/productAuth'
   import TableTool from '@/components/table/TableTool'
   import to from 'await-to-js'
+
   export default {
     name: 'ProductAuthorize',
     components: {
@@ -85,9 +85,9 @@
         total: 0,
         queryForm: {
           pageNum: 1,
-          pageSize: 5,
+          pageSize: 10,
           keyWords: '',
-          deptId: 2,
+          deptId: 1001,
         },
         layout: 'total, sizes, prev, pager, next, jumper',
         listLoading: false,
@@ -167,12 +167,7 @@
         })
       },
       reset() {
-        this.queryForm = {
-          pageNum: 1,
-          pageSize: 10,
-          keyWords: '',
-          deptId: 2,
-        }
+        this.resetForm('queryForm')
         this.fetchData()
       },
       handleSizeChange(val) {

+ 49 - 31
src/views/base/region/index.vue

@@ -1,33 +1,10 @@
 <template>
   <div class="region-container">
-    <vab-query-form>
-      <vab-query-form-top-panel>
-        <el-form :inline="true" :model="queryForm" @submit.native.prevent>
-          <el-form-item>
-            <el-input v-model="filterText" placeholder="输入关键字进行过滤" />
-          </el-form-item>
-          <el-form-item prop="custCode">
-            <el-input v-model="queryForm.custCode" clearable placeholder="客户编码" />
-          </el-form-item>
-
-          <el-form-item prop="custName">
-            <el-input v-model="queryForm.custName" clearable placeholder="客户名称" />
-          </el-form-item>
-          <el-form-item label="" prop="custIndustry">
-            <el-select v-model="custIndustry" placeholder="请选择客户行业" style="width: 100%">
-              <el-option v-for="item in industryOptions" :key="item.value" :label="item.value" :value="item.value" />
-            </el-select>
-          </el-form-item>
-
-          <el-form-item>
-            <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
-            <el-button icon="el-icon-refresh-right" @click="reset">重置</el-button>
-          </el-form-item>
-        </el-form>
-      </vab-query-form-top-panel>
-    </vab-query-form>
     <div class="side-layout">
       <div class="tree-side">
+        <div class="head-container">
+          <span style="font-size: 25px">销售大区</span>
+        </div>
         <el-tree
           ref="tree"
           class="filter-tree"
@@ -67,6 +44,34 @@
       </div>
       <div class="tree-table">
         <vab-query-form>
+          <vab-query-form-top-panel>
+            <el-form :inline="true" :model="queryForm" @submit.native.prevent>
+              <el-form-item>
+                <el-input v-model="filterText" placeholder="输入关键字进行过滤" />
+              </el-form-item>
+              <el-form-item prop="custCode">
+                <el-input v-model="queryForm.custCode" clearable placeholder="客户编码" />
+              </el-form-item>
+
+              <el-form-item prop="custName">
+                <el-input v-model="queryForm.custName" clearable placeholder="客户名称" />
+              </el-form-item>
+              <el-form-item label="" prop="custIndustry">
+                <el-select v-model="custIndustry" placeholder="请选择客户行业" style="width: 100%">
+                  <el-option
+                    v-for="item in industryOptions"
+                    :key="item.value"
+                    :label="item.value"
+                    :value="item.value" />
+                </el-select>
+              </el-form-item>
+
+              <el-form-item>
+                <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
+                <el-button icon="el-icon-refresh-right" @click="reset">重置</el-button>
+              </el-form-item>
+            </el-form>
+          </vab-query-form-top-panel>
           <vab-query-form-left-panel>
             <el-button
               v-permissions="['base:regionDetail:add']"
@@ -92,12 +97,16 @@
             :key="index"
             align="center"
             :label="item.label"
+            :min-width="item.minWidth"
             :prop="item.prop"
             show-overflow-tooltip
             :sortable="item.sortable"
             :width="item.width">
             <template #default="{ row }">
-              <span>{{ row[item.prop] }}</span>
+              <span v-if="item.prop === 'createdTime'">
+                {{ parseTime(row.createdTime, '{y}-{m}-{d}') }}
+              </span>
+              <span v-else>{{ row[item.prop] }}</span>
             </template>
           </el-table-column>
           <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
@@ -166,27 +175,36 @@
         columns: [
           {
             label: '省份',
-            width: '200px',
             prop: 'custProvince',
+            minWidth: '200px',
+            width: 'auto',
             sortable: false,
           },
           {
-            label: '客户数量',
+            label: '市',
+            prop: 'custCity',
+            minWidth: '200px',
             width: 'auto',
+            sortable: false,
+          },
+          {
+            label: '客户数量',
             prop: 'count',
+            minWidth: '200px',
+            width: 'auto',
             sortable: false,
             disableCheck: true,
           },
           {
             label: '创建人',
-            width: 'auto',
             prop: 'createdName',
+            width: '120',
             sortable: false,
             disableCheck: true,
           },
           {
             label: '创建时间',
-            width: 'auto',
+            width: '120',
             prop: 'createdTime',
             sortable: false,
             disableCheck: true,

+ 3 - 8
src/views/base/regionAuth/index.vue

@@ -9,7 +9,7 @@
 <template>
   <div class="region-auth-container">
     <vab-query-form>
-      <el-form>
+      <el-form ref="queryForm">
         <vab-query-form-left-panel>
           <el-form-item>
             <el-input v-model="queryForm.keyWords" placeholder="姓名" />
@@ -146,7 +146,7 @@
           pageNum: 1,
           pageSize: 10,
           keyWords: '',
-          deptId: 2,
+          deptId: 1001,
         },
         layout: 'total, sizes, prev, pager, next, jumper',
         listLoading: false,
@@ -239,12 +239,7 @@
         this.fetchData()
       },
       reset() {
-        this.queryForm = {
-          pageNum: 1,
-          pageSize: 10,
-          keyWords: '',
-          deptId: 2,
-        }
+        this.resetForm('queryForm')
         this.fetchData()
       },
       handleSizeChange(val) {

+ 1 - 1
src/views/customer/components/Allocate.vue

@@ -20,7 +20,7 @@
       <el-button size="mini" @click="visible = false">取消</el-button>
     </span>
     <!--    <Transfer ref="transfer" />-->
-    <select-user ref="selectUser" :query-params="{ roles: ['Sales', 'SalesManager'] }" @save="selectUser" />
+    <select-user ref="selectUser" :query-params="{ roles: ['SalesEngineer'] }" @save="selectUser" />
   </el-dialog>
 </template>
 

+ 1 - 1
src/views/customer/components/Shift.vue

@@ -8,7 +8,7 @@
 -->
 <template>
   <el-dialog title="转移客户" :visible.sync="visible" width="30%" @close="handleClose">
-    <select-user ref="selectUser" :query-params="{ roles: ['Sales', 'SalesManager'] }" @save="selectUser" />
+    <select-user ref="selectUser" :query-params="{ roles: ['SalesEngineer'] }" @save="selectUser" />
     <el-form ref="form" label-width="80px" :model="form" :rules="rules">
       <el-form-item label="接收对象" prop="SalesName">
         <el-input v-model="form.salesName" readonly>

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

@@ -132,15 +132,7 @@
         immediate: true,
       },
     },
-    mounted() {
-      this.form.username = 'admin'
-      this.form.password = '123456'
-      // 为了演示效果,会在官网演示页自动登录到首页,正式开发可删除
-      if (document.domain === 'vue-admin-beautiful.com' || document.domain === 'chu1204505056.gitee.io')
-        this.timer = setTimeout(() => {
-          this.handleLogin()
-        }, 5000)
-    },
+    mounted() {},
     methods: {
       ...mapActions({
         login: 'user/login',
@@ -178,31 +170,38 @@
   .login-container {
     height: 100vh;
     background-size: cover;
+
     .container {
       width: 1160px;
       height: 100%;
       margin: 0 auto;
     }
+
     header {
       height: 100px;
       background: #fff;
+
       .container {
         display: flex;
         align-items: center;
       }
     }
+
     footer {
       height: 130px;
       background: #fff;
+
       .container {
         display: flex;
         align-items: center;
         justify-content: space-between;
+
         .links a {
           color: #6e717c;
           font-size: 18px;
           letter-spacing: 1px;
           padding-left: 10px;
+
           & + a {
             margin-left: 10px;
             border-left: 1px solid #6e717c;
@@ -210,15 +209,18 @@
         }
       }
     }
+
     .content {
       display: flex;
       height: calc(100% - 230px);
       background: url('~@/assets/login_images/login_bgd.png') center center fixed no-repeat;
       background-size: cover;
+
       .container {
         display: flex;
         align-items: center;
       }
+
       .login {
         width: 100%;
         height: 580px;
@@ -228,6 +230,7 @@
         background: #fff;
         box-shadow: 0px 3px 20px 1px rgba(0, 0, 0, 0.16);
       }
+
       .left {
         width: 60%;
         height: 100%;

+ 1 - 1
src/views/proj/business/components/BusinessEdit.vue

@@ -180,7 +180,7 @@
       :query-params="queryContact"
       @save="selectContact" />
     <!-- 选择销售工程师弹窗 -->
-    <select-user ref="selectSales" :query-params="{ roles: ['Sales', 'SalesManager'] }" @save="selectSales" />
+    <select-user ref="selectSales" :query-params="{ roles: ['SalesEngineer'] }" @save="selectSales" />
     <!-- 选择经销商弹窗 -->
     <select-distributor ref="selectDistributor" @save="selectDistributor" />
     <!-- 选择产品弹窗 -->

+ 12 - 3
src/views/system/role/components/RoleDataScopeEdit.vue

@@ -25,6 +25,7 @@
           :check-strictly="!form.deptCheckStrictly"
           class="tree-border"
           :data="treeList"
+          :default-checked-keys="form.deptIds"
           default-expand-all
           empty-text="加载中,请稍后"
           node-key="id"
@@ -90,6 +91,10 @@
     },
     methods: {
       close() {
+        if (this.$refs.dept) {
+          this.$refs.dept.setCheckedKeys([])
+        }
+
         this.$refs['form'].resetFields()
         this.form = this.$options.data().form
         this.openDataScope = false
@@ -110,9 +115,7 @@
       /** 查询角色部门树结构 */
       getRoleDeptTreeselect(id) {
         roleApi.getRoleDeptTreeselect({ id: id }).then((response) => {
-          if (this.$refs.dept) {
-            this.$refs.dept.setCheckedKeys(response.data, true)
-          }
+          this.form.deptIds = response.data
         })
       },
       /** 分配数据权限操作 */
@@ -129,8 +132,14 @@
       submitDataScope: function () {
         if (this.form.id != undefined) {
           this.form.deptIds = this.getDeptAllCheckedKeys()
+          if (this.form.deptCheckStrictly) {
+            this.form.deptCheckStrictly = '10'
+          } else {
+            this.form.deptCheckStrictly = '20'
+          }
           let data = {
             roleId: this.form.id,
+            deptCheckStrictly: this.form.deptCheckStrictly,
             dataScope: Number(this.form.dataScope),
             deptIds: this.form.deptIds,
           }

+ 17 - 9
src/views/system/role/components/RoleEdit.vue

@@ -28,7 +28,13 @@
           父子联动
         </el-checkbox>
         <div class="vab-tree-border">
-          <el-tree ref="menu" :check-strictly="!form.menuCheckStrictly" :data="treeList" node-key="id" show-checkbox>
+          <el-tree
+            ref="menu"
+            :check-strictly="!form.menuCheckStrictly"
+            :data="treeList"
+            :default-checked-keys="form.menuIds"
+            node-key="id"
+            show-checkbox>
             <template #default="{ data }">
               <span>{{ data.meta.title }}</span>
             </template>
@@ -85,6 +91,12 @@
         this.dialogFormVisible = true
       },
       close() {
+        if (this.$refs.menu) {
+          this.$refs.menu.setCheckedKeys([])
+        }
+        this.menuExpand = false
+        this.menuNodeAll = false
+
         this.$refs['form'].resetFields()
         this.form = this.$options.data().form
         this.dialogFormVisible = false
@@ -98,9 +110,9 @@
         this.form = data
         this.form.menuCheckStrictly = this.form.menuCheckStrictly === '10'
         this.form.deptCheckStrictly = this.form.deptCheckStrictly === '10'
-        this.$nextTick(() => {
-          this.$refs.menu.setCheckedKeys(this.form.menuIds)
-        })
+        // this.$nextTick(() => {
+        //   this.$refs.menu.setCheckedKeys(this.form.menuIds)
+        // })
       },
       save() {
         // 具体业务请自行调整
@@ -111,11 +123,7 @@
             } else {
               this.form.menuCheckStrictly = '20'
             }
-            if (this.form.deptCheckStrictly) {
-              this.form.deptCheckStrictly = '10'
-            } else {
-              this.form.deptCheckStrictly = '20'
-            }
+
             this.form.menuIds = this.getMenuAllCheckedKeys()
             if (this.form.id) {
               const { msg } = await roleApi.doEdit(this.form)

+ 1 - 1
src/views/system/role/index.vue

@@ -54,7 +54,7 @@
       <el-table-column align="center" label="操作" show-overflow-tooltip width="150">
         <template #default="{ row }">
           <el-button v-permissions="['system:role:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button v-permissions="['system:role:dataScoup']" type="text" @click="handleDataScope(row)">
+          <el-button v-permissions="['system:role:dataScope']" type="text" @click="handleDataScope(row)">
             数据权限
           </el-button>
           <el-button v-permissions="['system:role:delete']" type="text" @click="handleDelete(row)">删除</el-button>

+ 3 - 1
src/views/system/user/index.vue

@@ -82,7 +82,9 @@
           </el-table-column>
           <el-table-column align="center" label="操作" show-overflow-tooltip width="120">
             <template #default="{ row }">
-              <el-button type="text" @click="handleResetPwd(row)">重置</el-button>
+              <el-button v-permissions="['system:user:resetPwd']" type="text" @click="handleResetPwd(row)">
+                重置
+              </el-button>
               <el-button v-permissions="['system:user:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
               <el-button v-permissions="['system:user:delete']" type="text" @click="handleDelete(row)">删除</el-button>
             </template>