3用户信息展示

基于echarts的大屏信息展示10套.zip 基于echarts的大屏信息展示 立即下载
上一篇完成了AdminLTE的整合,接下来就要把页面中的逻辑一一填充进来了,先从展示用户信息开始吧。
我们需要用户点击账户信息按钮后被导航到账户信息页。所以需要给账户信息按钮添加router-link,点击时调用router进行页面跳转。

账户信息按钮

第一步:在账户信息的HTML代码处添加事件
<router-link to="/userProfile/travelCount">
    <button href="#" class="btn btn-primary btn-flat ch">账户信息</button>
</router-link>
第二步:新建一个userProfile.vue和一个travelCount.vue。userProfile用来展示用户的基本信息,travelCount用来展示用户的出差记录。travelCount是被嵌套在userProfile中的。

userProfile.vue:

<template>
    <!-- Main content -->
    <section class="content">
        <div class="row">
            <div class="col-md-3">
                <!-- Profile Image -->
                <div class="box box-primary">
                    <div class="box-body box-profile">
                        <img class="profile-user-img img-responsive img-circle" src="../assets/img/avatar5.png" alt="User profile picture">
                        <h3 class="profile-username text-center ch">{{displayName}}</h3>
                        <p class="text-muted text-center ch">{{duty}}</p>
                        <ul class="list-group list-group-unbordered">
                            <li class="list-group-item">
                                <b class="ch">用户名:</b> <b class="pull-right ch">{{displayName}}</b>
                            </li>
                            <li class="list-group-item">
                                <b class="ch">登录名:</b> <b class="pull-right ch">{{name}}</b>
                            </li>
                            <li class="list-group-item">
                                <b class="ch">邮箱地址:</b> <b class="pull-right ch">{{email}}</b>
                            </li>
                            <li class="list-group-item">
                                <b class="ch">所属部门:</b> <b class="pull-right ch">{{department}}</b>
                            </li>
                            <li class="list-group-item">
                                <b class="ch">职务:</b> <b class="pull-right ch">{{duty}}</b>
                            </li>
                            <li class="list-group-item">
                                <b class="ch">办公地点:</b> <b class="pull-right ch">{{location}}</b>
                            </li>
                            <li class="list-group-item">
                                <b class="ch">办公电话:</b> <b class="pull-right ch">{{tel}}</b>
                            </li>
                            <li class="list-group-item">
                                <b class="ch">手机:</b> <b class="pull-right ch">{{phone}}</b>
                            </li>
                            <li class="list-group-item">
                                <b class="ch">上级领导:</b> <b class="pull-right ch">{{superior}}</b>
                            </li>
                        </ul>

                        <strong class="ch"><i class="fa fa-pencil margin-r-5"></i>技能标签</strong>
                        <p style="padding-top:5px">
                            <button v-for="skill in skills" class="label btn-primary ch" style="margin:2px; color:white">{{skill}}</button>
                        </p>
                    </div>
                    <!-- /.box-body -->
                </div>
                <!-- /.box -->
            </div>
            <!-- /.col -->
            <div class="col-md-9">
                <div class="nav-tabs-custom">
                    <ul class="nav nav-tabs">
                        <li class="ch active" data-toggle="tab">
                            <router-link to="/userProfile/travelCount">
                                <span>出差统计</span>
                            </router-link>
                        </li>
                        <li class="ch" data-toggle="tab">
                            <router-link to="/userProfile/workCircle">
                                <span>我的工作圈</span>
                            </router-link>
                        </li>
                    </ul>
                    <div class="tab-content">
                        <router-view></router-view><!--这里是要显示travelCount内容的地方-->
                    </div>
                    <!-- /.content -->
                </div>
            </div>
        </div>
    </section>
</template>

<script>
    export default {
        data() {//这里对应用户的基本信息
            return {
                displayName: null,
                duty: null,
                name: null,
                email: null,
                department: null,
                location: null,
                tel: null,
                phone: null,
                superior: null,
                skills: null
            }
        },
        mounted (){//使用mounted在挂在DOM时通过restful api获取用户基本信息并填充到data中。这个之后详细说明。
            this.$http.get(
                'https://192.168.227.1:8443/userInfo' , 
                {
                    headers: {'token' : localStorage.token}//在requestHeader中携带之前产生的token用来在后端验证用户权限。
                }
            )
                .then(
                    //success
                    response => {
                        this.displayName = response.data.displayName;
                        this.duty = response.data.duty;
                        this.name = response.data.name;
                        this.email = response.data.email;
                        this.department = response.data.department;
                        this.location = response.data.location;
                        this.tel = response.data.tel;
                        this.phone = response.data.phone;
                        this.superior = response.data.superior;
                        this.skills = response.data.skills;
                    }, 
                    //error
                    response => {

                    }
                )
        }
    }
</script>

<style scoped>
    @font-face
    {
        font-family: yaHeiFont;
        src: url('../assets/font/yaHei.ttf')
    }
    .ch
    {
        font-family:yaHeiFont;
        color: black;
    }
</style>
第三步,在main.js中引入userProfile.vue文件并且为userProfile添加路由。这里因为userProfile内容要显示的地方是在红框区域内,如下图:

显示区域

而红框区域内的路由出口是在index.vue中定义的,所以如果想要userProfile的内容正确渲染到红框区域内,则需要把userProfile嵌套在index中,需要用到vue-router的嵌套路由。
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource'
import store from './store/store'
//bootstrap
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap/dist/js/bootstrap.min.js'
//AdminLTE
import './assets/css/skins/_all-skins.min.css'
import './assets/css/AdminLTE.min.css'
import './assets/js/app.min.js'
//font-awesome
import 'font-awesome/css/font-awesome.min.css'
//echarts
import echarts from 'echarts'
//components
import App from './App'
import Login from './components/login'
import Index from './components/index'
import DeviceCatalog from './components/deviceCatalog'
import UserProfile from './components/userProfile'
import TravelCount from './components/travelCount'
import WorkCircle from './components/workCircle'

Vue.use(VueRouter)
Vue.use(VueResource)

//注册echarts的一种方法
// Object.defineProperties(Vue.prototype, {
//   $echarts: { get: () => echarts }
// });

//Vue-Resource提交方式设置
Vue.http.options.emulateJSON = true;

const routes = [
  //登录页
  {
    path: '/login',
    component : Login
  },
  //导航页
  {
    path: '/index',
    component: Index,
    //导航页子页面,children中的component将被渲染到之前说的红色区域内
    children: [
      //设备目录页
      {
        path: '/deviceCatalog',
        component: DeviceCatalog
      },
      //账户信息页
      {
        path: '/userProfile',
        component: UserProfile,
        //账户信息子页面
        children: [
          //出差统计页
          {
            path: '/userProfile/travelCount',
            component: TravelCount
          },
          //工作圈子页
          {
            path: '/userProfile/workCircle',
            component: WorkCircle
          }
        ]
      },
    ]
  },
]

const router = new VueRouter({
  routes
})

//默认导航到登录页
// router.push('/login')

/*
全局路由钩子
访问资源时需要验证localStorage中是否存在token
以及token是否过期
验证成功可以继续跳转
失败返回登录页重新登录
 */
router.beforeEach((to, from, next) => {
  if(to.path == '/login'){
    next()
  }
  if(localStorage.token && new Date().getTime() < localStorage.tokenExpired){
    next()
  }
  else{
    next('/login')
  }
})

new Vue({
  el: '#app',
  template: '<App/>',
  components: { App },
  router:router,
  store: store,
  echarts: echarts//注册echarts的另一种方法
  }
})
做完之后点击用户信息按钮应该就可以跳转到用户信息页了,看下效果

用户信息

第四步出差统计信息,这里想使用echarts图表来进行展示(这里我跳了一个坑)。首先在项目中使用npm install echarts –save将echarts下载到项目中。然后在main.js中引用,对应第三步main.js中
import echarts from 'echarts'
在travelCount中使用,travelCount.vue。这里有几点需要注意
1.echarts挂载的dom必须设置一个高度,否则不能显示出来。
2.echarts的配置需要放在mounted中。
3.使用echarts的resize方法配合js中onresize重绘图表以动态适应屏幕尺寸。
<template>
    <div id="main" style="height:730px"></div>
</template>

<script>
export default {
    mounted() {
        var myChart = this.$root.$options.echarts.init(document.getElementById('main'));//这里注意
        var option = {
            grid : {
                left : '1%',
                right : '2%',
                bottom : '1%',
                containLabel : true
            },
            xAxis : {
                type : 'value',
                boundaryGap : [ 0, 0.01 ]
            },
            yAxis : {
                type : 'category',
                axisLabel : {
                    inside : true,
                    textStyle : {
                        fontWeight : 'bold'
                    },
                },
                z : 100,
                data : ['A国:2016-01-01至2016-02-01' , 'B国:2016-03-01至2016-04-01' , 'C国:2016-06-01至2016-06-01']
            },
            series : [ {
                type : 'bar',
                barGap : '10%',
                itemStyle : {
                    normal : {
                        color : 'LightSkyBlue'
                    }
                },
                data : [100 , 200 , 300]
            } ]
        }
        myChart.setOption(option);
        //窗口尺寸变化时重新绘制chart
        window.onresize = () => {
            myChart.resize()    
        }
    }
}
</script>
这里要说下我跳的坑,引入echarts时,上面的代码使用了
this.$root.$options.echarts
如果这样引用的话,需要在main.js的Vue根实例中注册echarts,见第三步main.js配置。还有一种方法可以使用this.$echarts的方式引用(这个方法是Vue论坛中tomi-li老师指点的,谢谢老师)。
这种方法需要使用js的Object.defineProperties将echarts手动添加到Vue对象中,见第三步main.js配置。使用这种方法时不需要在根实例中注册echarts。
Object.defineProperties(Vue.prototype, {
   $echarts: { get: () => echarts }
});
如果没有手动添加的话,在其他Vue文件中使用echarts时会报错,告诉你echarts没有定义过。
看下效果

信息展示

OK,前端的部分完成了,现在出差信息是静态数据,因为来处理、记录这些数据的服务可能还要依赖其他服务,我们先用静态数据代替。但是用户基本信息是从Ldap中取出来的,之前第二步中不是使用了vur-resourse到这个地址获取用户数据么。
this.$http.get(
     'https://192.168.227.1:8443/userInfo' , 
      {
            headers: {'token' : localStorage.token}
      }
)
后端处理这个请求的controller。因为在分布式架构下这个controller通过restful对外提供获取用户信息的服务,所以需要使用@CrossOrigin注解满足跨域的需求。
getUserInfo方法做这几件事情
1.拿到header中的用户token,解密后判断用户凭证是否过期、是否拥有某种权限角色。
2.如果判断没有问题,使用token中的用户名作为入参,调用SpringLdap取得用户信息,并使用EmployeeAttributesMapper 填充我们自己的POJO类。返回response信息。
3.如果判断有问题,返回403表示认证没有通过。
package an.userinfo;

import static org.springframework.ldap.query.LdapQueryBuilder.query;
import java.util.Date;
import javax.naming.directory.Attributes;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.ldap.NamingException;
import org.springframework.ldap.core.AttributesMapper;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import an.entity.Employee;
import io.jsonwebtoken.Jwts;

@RestController("/userInfo")
public class UserInfoWeb {

    //jwt加密密匙
    @Value("${jwt.key}")
    private String jwtKey;

    //ldap模板
    @Autowired
    private LdapTemplate ldapTemplate;

    /**
     * 将域用户属性通过EmployeeAttributesMapper填充到Employee类中,返回一个填充信息的Employee实例
     */
    private class EmployeeAttributesMapper implements AttributesMapper<Employee> {
        public Employee mapFromAttributes(Attributes attrs) throws NamingException, javax.naming.NamingException {
            Employee employee = new Employee();
            employee.setName((String) attrs.get("sAMAccountName").get());
            employee.setDisplayName((String) attrs.get("displayName").get());
            employee.setEmail((String) attrs.get("userprincipalname").get());
            employee.setDuty((String) attrs.get("title").get());
            employee.setDepartment((String) attrs.get("department").get());
            employee.setSuperior((String) attrs.get("manager").get());
            employee.setLocation((String) attrs.get("physicaldeliveryofficename").get());
            employee.setTel((String) attrs.get("homephone").get());
            employee.setPhone((String) attrs.get("mobile").get());
            String skill = (String) attrs.get("description").get();
            String skills[] = skill.split(";");
            employee.setSkills(skills);
            return employee;
        }
    }

    /**
     * 使用用户凭证取得用户信息
     * @param token 用户凭证
     * @return
     */
    @CrossOrigin
    @RequestMapping(method = RequestMethod.GET)
    public ResponseEntity<String> getUserInfo(@RequestHeader("token") String token){
        //解析token
        String username = Jwts.parser().setSigningKey(jwtKey).parseClaimsJws(token).getBody().getSubject();
        String roles = Jwts.parser().setSigningKey(jwtKey).parseClaimsJws(token).getBody().getAudience();
        long expiration = Jwts.parser().setSigningKey(jwtKey).parseClaimsJws(token).getBody().getExpiration().getTime();
        long current = new Date().getTime();
        //验证token过期时间、用户权限
        if(current > expiration || roles.indexOf("ROLE_USER") == -1) {
            return new ResponseEntity<String>(HttpStatus.FORBIDDEN);
        }
        //查询并产生用户信息
        Employee employee = ldapTemplate
                .search(query().where("objectclass").is("person").and("sAMAccountName").is(username),
                        new EmployeeAttributesMapper())
                .get(0);
        return new ResponseEntity<String>(JSON.toJSONString(employee , SerializerFeature.DisableCircularReferenceDetect) , HttpStatus.OK);
    }

}
写完收工,文字表达能力实在是差,各位费眼了。
基于echarts的大屏信息展示 基于echarts 实现的可视化大屏展示,十种不同模板:上市公司全景预览等。我会不定期把积分调成5,已便于大家使用下载。 立即下载

相关推荐

vue 封装 Adminlte3组件的实现

主要介绍了vue 封装 Adminlte3组件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

【亲测免费】 Vue2 AdminLTE 安装和配置指南

Vue2 AdminLTE 安装和配置指南 1. 项目基础介绍和主要编程语言 项目介绍 Vue2 AdminLTE 是一个基于 Vue.js 2.x 的前端框架,旨在将 AdminLTE 管理面板模板转换为 Vue.js 组件。AdminLTE 是一个流行的开源管理控制面板模板,广泛用于构建后台管理系统。Vue2 AdminLTE 项目的目标是提供一个易于使用和集成的 Vue.js 版本的 Adm...

gitblog_07895的博客 693

Android - 蓝牙开发

文章目录科普SIG类型制式编程Classic BluetoothBluetooth Low Energy蓝牙的UUID是什么?有什么用? 科普 https://zh.wikipedia.org/wiki/%E8%97%8D%E7%89%99 蓝牙(英语:Bluetooth),一种无线通讯技术标准,用来让固定与移动设备,在短距离间交换资料,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由 2.4 至 2.485 GHz 的 ISM(工业、科学、医疗)频段来进行通信。1994 年由电信商

qq_43323826的博客 1万+

Vue2-Admin-LTE终极指南:快速构建现代化后台管理界面

Vue2-Admin-LTE是一个基于Vue.js 2.x框架的AdminLTE模板转换项目,专为需要快速搭建专业后台管理系统的开发者设计。这个开源项目将经典的AdminLTE模板完美融入Vue.js生态,让您能够轻松构建功能丰富、界面美观的后台管理界面。 ## 🚀 项目核心优势 **开箱即用的组件库**:Vue2-Admin-LTE提供了超过20个精心设计的Vue组件,包括数据卡片、图表、

gitblog_00040的博客 728

Paraview:Python Calculator Filter

python calculator过滤器 from paraview.simple import * connection = servermanager.Connect('localhost',11111) er = servermanager.sources.EnSightreader(CaseFileName='/.../data.case') er.PointArrays = ['x_velocity','1','y_velocity','1','z_velocity','1','cp','1']

haimianjie2012的专栏 3495

Vitis开发环境下的双核ARM通信:Hello World背后的AMP架构解析

本文深入解析了Vitis开发环境下ZYNQ双核ARM Cortex-A9处理器的AMP架构与通信机制。通过详细的硬件配置、内存分配和核间通信实现步骤,展示了如何构建高效的双核Hello World系统,为嵌入式系统开发者提供了实用的开发指南和性能优化技巧。

weixin_29162439的博客 218

Vue-AdminLTE-Vue-Router:构建高效后台管理系统的理想选择

Vue-AdminLTE-Vue-Router:构建高效后台管理系统的理想选择 在现代Web开发中,高效的后台管理系统对于提高团队生产力和用户体验至关重要。今天,我们要向您推荐一款基于Vue.js、AdminLTE和Vue Router的开源项目——。该项目旨在提供一个简洁、强大的基础框架,帮助开发者快速搭建功能完备的企业级后台系统。 项目简介 Vue-AdminLTE-Vue-Router 是一...

gitblog_00033的博客 495

Wiley:International Journal for Numerical Methods in Biomedical Engineering投稿流程

中间过程省略,这个出版社很人性化,投稿的web UI也很好看。上传word之后,一步步跟着走就行,不用填太多东西。不要最后在最后检查阶段,重新上传word文件,这样会导致,之前针对word的操作全部改变。

Everyday try to become better -Kobe Bryant 2545

AdminLTE与php,如何使用Vue整合AdminLTE模板

这次给大家带来如何使用Vue整合AdminLTE模板,使用Vue整合AdminLTE模板的注意事项有哪些,下面就是实战案例,一起来看一下。上一次搞定了登录验证和跳转的问题,不过存在一处bug。在Vue的main.js中,使用了Vue-router的路由钩子来判断是否可以访问受保护的资源,问题就出在这里,先修复上次的bug。/*全局路由钩子访问资源时需要验证localStorage中是否存在toke...

weixin_33355665的博客 600

线性调频LFM脉冲压缩 连续波雷达仿真&线性调频信号仿真分析压缩matlab程序源码

13、线性调频信号(LFM)压缩感知的稀疏与重构算法(OMP)的matlab仿真程序(一个可以在matlab上运行的压缩感知实例;8、具有多普勒频移的线性调频信号(知道带宽、采样频率、T使用MATLAB仿真线性调频信号即LFM,同时具有多普勒频移时,匹配滤波后的波形变化。19、CW脉冲和LFM信号Matlab仿真(这是matlab仿真程序,实现了常规雷达信号CW和线性调频信号LFM的仿真)18、lfm信号模糊函数图 matlab(用matlab 实现的线性调频信号信号(lfm)的模糊函数图)

2301_77866396的博客 400

大数据数据埋点技术面试题及参考答案(持续更新)

事件:指的是用户执行的具体动作,如页面浏览、按钮点击、商品购买等。事件是触发数据记录的直接原因,是分析用户行为的关键点。属性:是与事件相关的额外信息,可以提供关于事件的更多上下文。例如,用户点击的按钮颜色、大小、页面位置等。属性有助于更细致地分析用户行为,理解事件发生的具体情境。事件和属性共同构成了数据埋点的数据模型,它们使得收集的数据具有可分析性,从而可以用于深入理解用户行为和优化产品。

大模型大数据攻城狮的专栏 2097

adminlte-3-vue 项目推荐

adminlte-3-vue 项目推荐 Adminlte-3-vue 是一个基于 Vue 3 的前端模板项目,主要使用了 Vue.js 作为编程语言。该项目是基于著名的 AdminLTE 管理面板模板开发而成,适用于快速构建具有响应式和高效用户界面的管理系统。 项目的基础介绍 Adminlte-3-vue 项目是一个开源项目,它将 AdminLTE 模板与 Vue 3 相结合,为开发者提供了一个功...

gitblog_00288的博客 509

巡检类机器人电池容量计算方法论(原理+算法+真实案例)

摘要:本文系统阐述了巡检机器人电池容量的计算方法,重点解析了;能量平衡;核心原理和三种主流算法。通过光伏电站履带式巡检机器人的真实案例,详细演示了从工况拆解、功耗采集到容量计算的完整流程。文章指出:室内轻载场景可采用静态平均功耗法,户外常规工况推荐动态负载积分法,而复杂环境需采用融合估算算法。特别强调需考虑温度修正(冬季容量衰减20%)、冗余系数(1.2-1.5)和放电深度(磷酸铁锂DoD取80%)等关键参数。

start_up_go的博客 242

Python3.6+Django2.0.2 实现用户登录+跳转首页--左侧菜单+添加用户信息--展示用户信息

一、环境要求:python版本:Python3.6.4web框架:Django2.0.2开发工具:Eclipse+Pydev数据库:mysqlweb:html+css+JavaScript二、实现需求:1、用户登录:用户登录页面,输入用户名、密码(非加密),通过与数据库比对,验证通过后,登录成功,调整首页2、首页:左侧菜单(粗糙)--多级菜单3、用户管理--添加用户--跳转用户添加页面,提交数据库...

xianjie0318的博客 1万+

【YOLO11改进 - C3k2融合】C3k2融合AKConv(可改变核卷积)二次创新:任意数量的参数和任意采样形状的即插即用的卷积

【YOLO11改进 - C3k2融合】C3k2融合AKConv(可改变核卷积)二次创新:任意数量的参数和任意采样形状的即插即用的卷积

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 407

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

案例:用户信息列表展示||1. 需求 2. 设计 3. 开发4. 测试 5. 部署运维

案例:用户信息列表展示 1. 需求:用户信息的增删改查操作 2. 设计: 1. 技术选型:Servlet+JSP+MySQL+JDBCTemplate+Druid+BeanUtils+tomcat 2. 数据库设计: create database day17; -- 创建数据库 use day17; -- 使...

qq_39368007的博客 554

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[特殊字符]【Vue3进阶】Props 用法全解析

Hey小伙伴们!今天来给大家分享一个 Vue3 中非常实用的功能——**Props** 的使用方法。通过 Props,我们可以在父组件和子组件之间传递数据,使得组件之间的通信变得更加简单和直观。 如果你对 Vue3 感兴趣,或者想学习如何更好地组织和管理组件间的交互,那这篇笔记一定要收藏哦!

Jacklx888的博客 1343

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

BGE Reranker-v2-m3效果展示:绿色高相关卡片显著缩短用户信息筛选时间42%(A/B测试)

本文介绍了如何在星图GPU平台上自动化部署BGE Reranker-v2-m3重排序系统。该平台简化了部署流程,用户可快速搭建本地化文本相关性排序服务。该系统能将海量文本按相关性智能排序,其核心应用场景之一是优化搜索引擎结果,通过直观的绿色高相关卡片,可显著提升用户筛选信息的效率。

DiamondWolf89的博客 608

Vue3组件事件用户信息卡练习

Vue3组件事件用户信息卡练习

2402_84051608的博客 666

Vue3:component(组件:uniapp版本)

Vue3:component(组件:uniapp版本),本文介绍了组件的基本使用,以及父组件如何向子组件传值,子组件怎么向父组件传值,插槽的基本使用,父调子等

MMF博客园 2209

ThinkPHP 3 的CURD管理用户信息 修改和删除

本节课大纲: 一、ThinkPHP 3 的CURD管理用户信息 http://localhost:8080/thinkphp/index.php/User/index 访问User类的index方法 模板不存在[./Home/Tpl/User/index.html] 需要模板文件 C:\wamp\www\thinkphp\Home\Tpl\User 模块名\方法.htm

zhaoyangjian724的专栏 1686

python ldap3获取所有用户信息_Python使用LDAP做用户认证的方法

LDAP(Light Directory Access Portocol)是轻量目录访问协议,基于X.500标准,支持TCP/IP。LDAP目录以树状的层次结构来存储数据。每个目录记录都有标识名(Distinguished Name,简称DN),用来读取单个记录,一般是这样的:cn=username,ou=people,dc=test,dc=com几个关键字的含义如下:base dn:LDAP目录...

weixin_39968722的博客 2204

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GithubProfies(GitHub 个人资料)

基于Vue 3和TailwindCSS的Github用户信息展示组件,通过调用Github API实现用户搜索功能。组件包含表单输入、用户基本信息展示(头像、关注数、仓库数等)以及前5个公开仓库列表。 技术实现上采用Vue 3的Composition API管理状态,使用fetch进行API请求,并通过v-if条件渲染处理不同状态(加载中、错误、用户数据)。

sunbyte带你学 1053

在 Vue 3 项目中使用 ECharts 绘制柱状图,并通过异步请求获取数据来动态更新图表

目录ArticlePublishChart.vue:文章发布热点图 部分2、ArticleTypeHotspotChart.vue:文章类型访问热点统计 部分 部分3、CountTo.vue 部分4、FormDrawer.vue:弹出抽屉式表单窗口,方便用户输入信息, 部分 部分 部分 部分 在 标签内的代码属于 JavaScript,实现组件的逻辑功能,比如从 Vue 和 ECharts 库导入功能函数,获取后端数据、处理数据以及配置和渲染 ECharts 图表等操作 。 2、Article

weixin_62533176的博客 2262
上一篇: 2Vue整合AdminLTE模板
下一篇: 1.1SpringLdap与MSAD使用Ldaps通信
joymod
博客等级 码龄17年 19粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值