微信用户1055091391
1月前来过
全职 · 350/日  ·  7612/月
工作时间: 工作日09:00-17:30、周末8:30-20:30工作地点: 远程
服务企业: 0家累计提交: 0工时
联系方式:
********
********
********
聊一聊

使用APP扫码聊一聊

个人介绍

开发过uni-app(团队开发)
参与贵州学院官网前后台系统开发
参与宜宾学院前后台系统***,移动端app开发
目前在做成都人大建议,信访,履职系统的开发升级维护,后期小程序app的设计开发上线
所掌握技术js,html,css,jq,vue,uni-app***开发,xxxxxxxxxx
xxxxx

工作经历

  • 2021-10-01 -2023-03-15四川智慧云天科技有限公司前端工程师

    老系统维护升级,新系统的设计开发,app设计开发,与后端人员沟通交流,完成项目规划,闲余时间学习技术 有两年以上经验,掌握vue、react、electron、uniapp主流 前端框,能基于vite或webpack搭建vue、vue、react、 electron、uniapp项目,熟练使用vue全家桶;积极向上,有良 好的人际沟通能力,良好的工作协调能力,踏实肯千的工作 精神,不断学习新技术知识有强烈的求知欲,良好的前端 编程能力和编程习惯,致力于代码的整体结构规范及优化

教育经历

  • 2018-09-01 - 2021-07-01民办四川天一学院移动互联应用技术专科

    安卓软件开发,(96分)jsp(87)Java(78)js(94)sql(67)

技能

Ajax
ES6
axios
iView
小程序
HTML5
CSS
Vue
ElementUI
0
1
2
3
4
5
0
1
2
3
4
5
作品
数字会议管理平台

通过pc管理端系统向app端推送会议场次,并通知指定参会人,指定参会人需要点击会议进入会议从而选择签到模式 数字会议管理平台 {{item}} 登录 import jwt_decode from "jwt-decode"; import service from '../../service.js'; import { mapState, mapMutations } from 'vuex' import mInput from '../../components/m-input.vue' export default { components: { mInput }, data() { return { loginType: 0, loginTypeList: ['账密登录', '*号登录'], mobile: '', code: '', providerList: [], hasProvider: false, username: '', password: '', positionTop: 0, isDevtools: false, codeDuration: 0, focus: false } }, computed: mapState(['forcedLogin']), mounted() { let that = this; //页面加载完成,获取本地存储的用户名及密码 const userName = uni.getStorageSync('username'); const userPsw = uni.getStorageSync('userPsw'); if(userName && userPsw){ that.username = userName; that.password = userPsw; }else{ that.username = ""; that.password = ""; } }, methods: { ...mapMutations(['login']), initProvider() { const filters = ['weixin', 'qq', 'sinaweibo']; uni.getProvider({ service: 'oauth', success: (res) => { console.log("获取供应商:",res) if (res.provider && res.provider.length) { for (let i = 0; i < res.provider.length; i++) { if (~filters.indexOf(res.provider[i])) { console.log("图片路径:",res.provider[i]) this.providerList.push({ value: res.provider[i], image: '../../static/img/' + res.provider[i] + '.png' }); } } this.hasProvider = true; } }, fail: (err) => { console.error('获取服务供应商失败:' + JSON.stringify(err)); } }); }, initPosition() { /** * 使用 absolute 定位,并且设置 bottom 值进行定位。软键盘弹出时,底部会因为窗口变化而被顶上来。 * 反向使用 top 进行定位,可以避免此问题。 */ this.positionTop = uni.getSystemInfoSync().windowHeight - 100; }, async loginByPwd() { /** * 客户端对账号信息进行一些必要的校验。 * 实际开发中,根据业务需要进行处理,这里仅做示例。 */ if (this.username.length == 0) { uni.showToast({ icon: 'none', title: '账号不能为空' }); return; } if (this.password.length < 6) { uni.showToast({ icon: 'none', title: '密码最短为 6 个字符' }); return; } const data = { username: this.username, password: this.password }; console.log('登录按钮') const res = this.$myRequest.post('/app/login',data); console.log(222, res); console.log(33, await res); if(res){ console.log('登录成功:',await res); res.then((datas)=>{ console.log('data-login:',datas) if (datas.code == 0) { uni.setStorageSync('app-token',datas.token); uni.setStorageSync('username',this.username); uni.setStorageSync('userPsw', this.password); // console.log('token333',uni.getStorage( // 'app-token' // )) uni.reLaunch({ url: '../index/index', }); uni.showToast({ title: '登录成功', duration: 2000, icon: 'none' }); }else { uni.showToast({ icon: 'none', title: datas.msg }); } // setTimeout(function() { // // 跳转回原页面 // history.back() // }, 2000); }) } }, loginBySms() { if (!/^1\d{10}$/.test(this.mobile)) { // uni.showModal({ // content: '**填写错误', // showCancel: false // }) uni.showToast({ icon: 'none', title: '**填写错误' }); return } if (this.password.length < 5) { uni.showToast({ icon: 'none', title: '密码最短为 5 个字符' }); return; } let _self = this; const data = { mobile: _self.mobile, password: _self.password } const res=this.$myRequest.post('/app/login',data); if(res){ console.log('登录成功',res.then()); res.then((datas)=>{ console.log('data-login',datas) console.log(jwt_decode(datas.token)) if (datas.code == 0) { uni.setStorageSync('app-token',datas.token); uni.setStorageSync('username',jwt_decode(datas.token).username); uni.reLaunch({ url: '../index/index', }); }else { uni.showToast({ icon: 'none', title: datas.msg }); } }) } }, bindLogin() { console.log("登录按钮") // uni.$myRequest. switch (this.loginType) { case 0: this.loginByPwd() break; case 1: this.loginBySms() break; default: break; } }, oauth(value) { console.log('三方登录只演示登录api能力,暂未关联云端数据'); uni.login({ provider: value, success: (res) => { uni.getUserInfo({ provider: value, success: (infoRes) => { /** * 实际开发中,获取用户信息后,需要将信息上报至服务端。 * 服务端可以用 userInfo.openId 作为用户的唯一标识新增或绑定用户信息。 */ this.loginLocal(infoRes.userInfo.nickName); }, fail() { uni.showToast({ icon: 'none', title: '登陆失败' }); } }); }, fail: (err) => { console.error('授权登录失败:' + JSON.stringify(err)); } }); }, // getUserInfo({ // detail // }) { // console.log('三方登录只演示登录api能力,暂未关联云端数据'); // if (detail.userInfo) { // this.loginLocal(detail.userInfo.nickName); // } else { // uni.showToast({ // icon: 'none', // title: '登陆失败' // }); // } // }, // loginLocal(nickName) { // uni.setStorageSync('login_type', 'local') // uni.setStorageSync('username', nickName) // this.toMain(nickName); // }, // toMain(userName) { // this.login(userName); // /** // * 强制登录时使用reLaunch方式跳转过来 // * 返回首页也使用reLaunch方式 // */ // if (this.forcedLogin) { // uni.reLaunch({ // url: '../main/main', // }); // } else { // uni.navigateBack(); // } // } }, onLoad() { // #ifdef APP-PLUS // this.$myRequest.get('/app/upgradeInfo/12').then((e) => { this.$myRequest.get('/app/upgradeInfo/' + (plus.runtime.version).split('.').join('')).then((e) => { console.log(e) if (!e) { // 与当前版本相同 console.log(23122) if (uni.getStorageSync("app-token")) { uni.reLaunch({ url: '../index/index', }); } }else { uni.navigateTo({ url: '../fullScreen/fullScreen' }); } // if (uni.getStorageSync("app-token")) { // uni.reLaunch({ // url: '../index/index', // }); // } }) // #endif }, onReady() { this.initPosition(); this.initProvider(); // #ifdef MP-WEIXIN this.isDevtools = uni.getSystemInfoSync().platform === 'devtools'; // #endif this.focus = true } } .appName { font-size: larger; margin-bottom: 20px; } .login-title-logo { margin-bottom: 20px; } .red { color: #fff; background-color: rgb(255, 0, 0); } .login-box{ /* width: 40vw; */ } .login-title { text-align: center; /* font-size: 50rpx; */ color: rgb(255, 0, 0); } .login-title-logo image { width: 150rpx; height: 150rpx; } .login-type { display: flex; justify-content: center; } /* .login-box { border: 2px solid #000000; } */ .login-type-btn { line-height: 30px; margin: 0px 15px; } .login-type-btn.act { color: #0FAEFF; border-bottom: solid 1px #0FAEFF; } .send-code-btn { width: 120px; text-align: center; background-color: #0FAEFF; color: #FFFFFF; } .action-row { display: flex; flex-direction: row; justify-content: center; } .action-row navigator { color: #007aff; padding: 0 10px; } .oauth-row { display: flex; flex-direction: row; justify-content: center; position: absolute; top: 0; left: 0; width: 100%; } .oauth-image { position: relative; width: 50px; height: 50px; border: 1px solid #dddddd; border-radius: 50px; margin: 0 20px; background-color: #ffffff; } .oauth-image image { width: 30px; height: 30px; margin: 10px; } .oauth-image button { position: absolute; left: 0; top: 0; width: 100%; height: 100%; opacity: 0; }

0
2023-03-28 04:25
干部人事管理

简单的一个uniapp,甲方用来统计干部人员 技术点:二次封装uni.request请求,数据缓存,引入vant-ui import store from '@/store' import config from '@/config' import { getToken } from '@/utils/auth' import errorCode from '@/utils/errorCode' import { toast, showConfirm, tansParams } from '@/utils/common' let timeout = 10000 const baseUrl = config.baseUrl const request = config => { // 是否需要设置 token const isToken = (config.headers || {}).isToken === false config.header = config.header || {} if (getToken() && !isToken) { config.header['Authorization'] = 'Bearer ' + getToken() } // get请求映射params参数 if (config.params) { let url = config.url + '?' + tansParams(config.params) url = url.slice(0, -1) config.url = url } return new Promise((resolve, reject) => { uni.request({ method: config.method || 'get', timeout: config.timeout || timeout, url: config.baseUrl || baseUrl + config.url, data: config.data, header: config.header, dataType: 'json' }).then(response => { let [error, res] = response if (error) { toast('后端接口连接异常') reject('后端接口连接异常') return } const code = res.data.code || 200 const msg = errorCode[code] || res.data.msg || errorCode['default'] if (code === 401) { showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => { if (res.confirm) { store.dispatch('LogOut').then(res => { uni.reLaunch({ url: '/pages/login' }) }) } }) reject('无效的会话,或者会话已过期,请重新登录。') } else if (code === 500) { toast(msg) reject('500') } else if (code !== 200) { toast(msg) reject(code) } resolve(res.data) }) .catch(error => { let { message } = error if (message === 'Network Error') { message = '后端接口连接异常' } else if (message.includes('timeout')) { message = '系统接口请求超时' } else if (message.includes('Request failed with status code')) { message = '系统接口' + message.substr(message.length - 3) + '异常' } toast(message) reject(error) }) }) } export default request

0
2023-03-28 04:28
青羊人大建议系统

1、完全响应式布局(支持电脑、平板、*等所有主流设 备)。 2、支持按钮及数据权限,可自定义部门数据权限 3、对常用is插件进行二次封装使is代码变得简洁,模块化 更加易维护 国际化支持服务端及客户端支持 完盖的日志记录体系 简单注解即可实现支持服务监控,数据监控,缓存监控功 能。 主要功能:用户管理部门管理,岗位管理位管理角色管 理,角色管理,角色管理,通知公告,通知公告,登录日志,在线 用户定时任务,系统接口,缓存监控,流程图,案件统计,文件上传 下载 http://221.237.10886:8001(《成都市青羊区使用中》),http://118.24.254.66:8081

0
2023-03-28 04:38
更新于: 2022-03-01 浏览: 99