记录一下我在做公司后台管理系统的难点与心得

公司的项目大致就长这个样子
刚进入页面的时候是两个请求,左侧的内容跟右侧的内容分别是两个不同的请求,这里我使用的是aioxs的并发请求,axios.all()

axios提供了两个并发请求 axios.all(iterable) axios.spread(callback) 两个辅助函数用于处理同时发送多个请求,可以实现在多个请求都完成后再执行一些逻辑。

因为我的想法是在两个请求都结束以后再关闭loading,显示出来,否在会出现白屏的情况,
在这里插入图片描述
在这里插入图片描述
我这里是这样使用的

async getOperatorinfo () {
   
	const res = await axios.all([this.$api.vipManage.operatorinfo({
   
	        params: {
   
	          oiid: this.$local.getList('userdata').data.oiid
	        }
	      }), this.$api.vipManage.dashboard({
   
	        params: {
   
	          type1: this.$store.state.Service.dictions,
	          oiid: this.$local.getList('userdata').data.oiid,
	          spid: this.$local.getList('userdata').spid,
	          days: this.value
	        },
	        showLoading: true
	      })
	 ])
	      // 一系列处理....
})

异步请求,返回的是一个数组,数组中第一项是第一个请求的值,第二个是第二个请求的。
整个管理系统使用的是element的标签页,使用keep-alive进行缓存,使用component来显示组件。所有的标签页都以组件的形式显示

component是一个占位符,:is属性可以用来指定要展示的组件名称 加v-if是因为我在写的过程中出现的问题,如果不加v-if的话,当我开了多个会员的详情,或者服务的详情情况下,刷新以后,所有的会员详情以及服务详情全部变成同一个人的了,加个v-if进行判断,会从新加载。每次点击以后都会从新请求

<el-tabs v-model="editableTabsValue"
         type="card"
         :closable='isClosable'
         @tab-remove="removeTab"
         @tab-click="handleClick"
         :lazy='true'>
  <el-tab-pane v-for="item in editableTabs"
               :key="item.name"
               :label="item.title"
               :name="checkName(item)">
      <keep-alive>
          <component :is="item.view"
                     v-if="item.flag"></component>
      </keep-alive>
  </el-tab-pane>
</el-tabs>

并且在做这个页面的时候,需要有的页面一次开多个,有的页面只能开一个,二级菜单都是只能打开一个,当前二级菜单下的所有三级标签,都是可以开多个的存在。所以在这里我使用了多层判断,

  • 第一,判断是不是二级菜单,二级菜单跟三级标签页唯一的差别就是没有少一个id参数,(会员id或者服务id之类的),新增服务除外,因为他有两种可能
  • 第二,如果不是二级菜单,那么那么就要判断它不是新增服务页面,并且他的id唯一的时候,这个时候就添加一个标签页,随后还要在进行判断,判断传进来的值中当id或者name其中一个不唯一的时候,比如我打开了一个会员的不同服务,(因为我有个服务前跟服务后。)这个时候如果还按唯一来判断就出只显示一个。在这个时候我还要在判断是不是新增服务页面,如果是的话,那就说明之前以及存在了一个新增服务页面,这个时候就是需要使用findindex获取name为新增服务的返回的值(i),将标签数组中的下标为i的值进行替换。如果不替换的话就会出现两个新增服务,如果不是新增服务,那么就是使用findindex获取id为当前传过来的值所返回的值(a),替换数组中下标为a的数。
  • 第三,判断是否为新增服务,是的话就添加数组中进去。这个时候经过了第一步判断是不是二级菜单,万一是含有id的新增服务。那么就会到第二个判断,在判断name是不存在的,这个时候就到了第三个,添加了新增服务的页面。如果新增页面以及存在,那么就会在第二个判断那里进行替换。
  • 第四,判断是否为二级菜单,如果是那么就直接添加到标签数组中
  • 第五,因为刚进入页面的时候进入的是欢迎页这个页面只有在第一次进入页面的时候才有,当我单击左侧任何的标签的时候,他都会消失。
    if (this.editableTabs[0].title === '欢迎页') { this.editableTabs.splice(0, 1) }
  • 第六,当我每次单击标签或者左侧二级标签的时候都要循环加判断,将当前点击的标签的flag值改为true,否则整个页面为空白。
for (var i = 0; i < this.editableTabs.length; i++) {
   
        if (tab.label === this.editableTabs[i].title) {
   
          this.editableTabs[i].flag = true
        }
      }
  • 第七,在第一次进入页面的时候&#
  • 7
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Vue后台管理系统难点主要体现在以下几个方面: 1. 复杂的业务逻辑:后台管理系统通常需要处理大量的数据和复杂的业务逻辑,包括用户权限管理、数据的增删改查以及各种业务模块的集成等。这些复杂的业务逻辑需要在前端进行处理和展示,对前端开发者来说是一项挑战。 2. 大量的表单操作:后台管理系统中通常包含大量的表单,包括数据的录入、修改和校验等。这些表单操作需要对数据进行实时的校验和处理,并且要求界面友好、操作流畅,这对前端开发来说是一个难点。 3. 数据的可视化展示:后台管理系统通常需要对数据进行可视化的展示,包括各种图表、统计数据等。这需要前端开发者有一定的数据处理和展示的能力,能够运用各种图表库和可视化工具。 4. 性能的优化:后台管理系统通常会处理大量的数据和复杂的业务逻辑,因此性能优化是一个非常重要的难点。前端开发者需要合理地设计数据结构和算法,并对页面进行性能优化,保证系统的响应速度和流畅度。 5. 兼容性和适配性:后台管理系统通常需要兼容不同的浏览器和设备,并且适应不同屏幕的大小和分辨率。同时还需要考虑不同用户的需求,提供灵活的布局和样式,并且保证系统在不同环境中的稳定性和可用性。 综上所述,Vue后台管理系统难点主要集中在复杂的业务逻辑、大量的表单操作、数据的可视化展示、性能的优化以及兼容性和适配性等方面。对于前端开发者来说,需要具备扎实的技术基础和丰富的实战经验,才能够应对这些挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值