├── README.md ├── app.js ├── app.json ├── app.wxss ├── images ├── admiration-qr.png ├── hj-qr.jpg ├── logo.png └── weapp-qr.jpg ├── pages ├── about │ ├── about.js │ ├── about.json │ ├── about.wxml │ └── about.wxss ├── index │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss ├── list │ ├── list.js │ ├── list.json │ ├── list.wxml │ └── list.wxss └── logs │ ├── logs.js │ ├── logs.json │ ├── logs.wxml │ └── logs.wxss ├── project.config.json ├── project.private.config.json ├── sitemap.json └── utils └── util.js /README.md: -------------------------------------------------------------------------------- 1 | # 955WLB 微信小程序 2 | 3 | 微信小程序版的 [955.WLB](https://github.com/formulahendry/955.WLB),方便用户在手机端实时查看 955 公司名单。 4 | 5 | ![qr](https://s1.ax1x.com/2020/08/07/ahUfFx.jpg) -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | //app.js 2 | App({ 3 | onLaunch: function () { 4 | // 展示本地存储能力 5 | var logs = wx.getStorageSync('logs') || [] 6 | logs.unshift(Date.now()) 7 | wx.setStorageSync('logs', logs) 8 | } 9 | }) -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages": [ 3 | "pages/index/index", 4 | "pages/list/list", 5 | "pages/about/about", 6 | "pages/logs/logs" 7 | ], 8 | "window": { 9 | "backgroundTextStyle": "light", 10 | "navigationBarBackgroundColor": "#fff", 11 | "navigationBarTitleText": "955WLB", 12 | "navigationBarTextStyle": "black" 13 | }, 14 | "tabBar": { 15 | "list": [ 16 | { 17 | "pagePath": "pages/index/index", 18 | "text": "首页" 19 | }, 20 | { 21 | "pagePath": "pages/list/list", 22 | "text": "名单" 23 | }, 24 | { 25 | "pagePath": "pages/about/about", 26 | "text": "内推" 27 | } 28 | ] 29 | }, 30 | "sitemapLocation": "sitemap.json" 31 | } -------------------------------------------------------------------------------- /app.wxss: -------------------------------------------------------------------------------- 1 | /**app.wxss**/ 2 | .container { 3 | height: 100%; 4 | display: flex; 5 | flex-direction: column; 6 | align-items: center; 7 | justify-content: space-between; 8 | padding: 20rpx 20rpx; 9 | box-sizing: border-box; 10 | } 11 | 12 | .header { 13 | font-size: 50rpx; 14 | } 15 | 16 | .body { 17 | font-size: 35rpx; 18 | } 19 | 20 | .paragraph { 21 | padding-top: 30rpx; 22 | } -------------------------------------------------------------------------------- /images/admiration-qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/weapp-955-wlb/b91a20bdcfee9269ad47b7f2c616e758adde7b02/images/admiration-qr.png -------------------------------------------------------------------------------- /images/hj-qr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/weapp-955-wlb/b91a20bdcfee9269ad47b7f2c616e758adde7b02/images/hj-qr.jpg -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/weapp-955-wlb/b91a20bdcfee9269ad47b7f2c616e758adde7b02/images/logo.png -------------------------------------------------------------------------------- /images/weapp-qr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/formulahendry/weapp-955-wlb/b91a20bdcfee9269ad47b7f2c616e758adde7b02/images/weapp-qr.jpg -------------------------------------------------------------------------------- /pages/about/about.js: -------------------------------------------------------------------------------- 1 | // pages/about/about.js 2 | Page({ 3 | 4 | /** 5 | * 页面的初始数据 6 | */ 7 | data: { 8 | 9 | }, 10 | 11 | /** 12 | * 生命周期函数--监听页面加载 13 | */ 14 | onLoad: function (options) { 15 | wx.showShareMenu({ 16 | withShareTicket: true, 17 | menus: ['shareAppMessage', 'shareTimeline'] 18 | }); 19 | }, 20 | 21 | /** 22 | * 生命周期函数--监听页面初次渲染完成 23 | */ 24 | onReady: function () { 25 | 26 | }, 27 | 28 | /** 29 | * 生命周期函数--监听页面显示 30 | */ 31 | onShow: function () { 32 | 33 | }, 34 | 35 | /** 36 | * 生命周期函数--监听页面隐藏 37 | */ 38 | onHide: function () { 39 | 40 | }, 41 | 42 | /** 43 | * 生命周期函数--监听页面卸载 44 | */ 45 | onUnload: function () { 46 | 47 | }, 48 | 49 | /** 50 | * 页面相关事件处理函数--监听用户下拉动作 51 | */ 52 | onPullDownRefresh: function () { 53 | 54 | }, 55 | 56 | /** 57 | * 页面上拉触底事件的处理函数 58 | */ 59 | onReachBottom: function () { 60 | 61 | }, 62 | 63 | /** 64 | * 用户点击右上角分享 65 | */ 66 | onShareAppMessage: function () { 67 | 68 | }, 69 | 70 | previewQr: function() { 71 | wx.previewImage({ 72 | urls: ["https://s2.ax1x.com/2019/12/08/QUTyIe.jpg"] 73 | }) 74 | } 75 | }) -------------------------------------------------------------------------------- /pages/about/about.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /pages/about/about.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 内推 5 | 6 | 7 | 目前名单上的公司在上海的居多,是因为作者我身处上海 IT 圈,对于上海的情况相对了解。并不意味着 955 的公司大多都在上海。 8 | 此外,本人已经成功内推数十人拿到微软 offer。如果对微软有意向,可以在微信中搜索“HJ说”,然后关注“HJ说”公众号,获取最新内推信息! 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /pages/about/about.wxss: -------------------------------------------------------------------------------- 1 | /* pages/about/about.wxss */ 2 | .qr { 3 | margin-top: 20rpx; 4 | margin-bottom: 20rpx; 5 | display: block; 6 | margin-left: auto; 7 | margin-right: auto; 8 | } 9 | 10 | .body { 11 | margin-bottom: 20rpx; 12 | } 13 | 14 | .official-account { 15 | margin-bottom: 180rpx; 16 | margin-left: 20rpx; 17 | margin-right: 20rpx; 18 | } -------------------------------------------------------------------------------- /pages/index/index.js: -------------------------------------------------------------------------------- 1 | //index.js 2 | 3 | Page({ 4 | data: { 5 | motto: 'Hello World' 6 | }, 7 | onLoad: function (options) { 8 | wx.showShareMenu({ 9 | withShareTicket: true, 10 | menus: ['shareAppMessage', 'shareTimeline'] 11 | }); 12 | } 13 | }) 14 | -------------------------------------------------------------------------------- /pages/index/index.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /pages/index/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 955.WLB 5 | 6 | 7 | 旨在让更多的人逃离 996,加入 955 的行列。 8 | 996 工作制:即每天早 9 点到岗,一直工作到晚上 9 点。每周工作 6 天。 9 | 955 工作制:即每天早 9 点到岗,一直工作到下午 5 点。每周工作 5 天。 10 | 955.WLB:工作 955,work–life balance (工作与生活的平衡)。 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /pages/index/index.wxss: -------------------------------------------------------------------------------- 1 | /**index.wxss**/ -------------------------------------------------------------------------------- /pages/list/list.js: -------------------------------------------------------------------------------- 1 | // pages/list/list.js 2 | const companies = [ 3 | "Afterpay - 上海", 4 | "Airbnb - 北京", 5 | "Amazon - 北京/上海", 6 | "AMD - 上海", 7 | "Apple - 北京/上海", 8 | "ArcSoft - 杭州", 9 | "ARM - 上海", 10 | "Autodesk - 北京/上海", 11 | "Booking - 上海", 12 | "Bosch Group - 上海/苏州/无锡", 13 | "Calix - 南京", 14 | "Canva - 北京/武汉", 15 | "Cisco - 北京/上海/杭州/苏州", 16 | "Citrix - 南京", 17 | "Continental AG - 上海/合肥", 18 | "Coolapk (酷安) - 北京/深圳", 19 | "Coupang - 北京/上海", 20 | "CSTC (花旗金融) - 上海", 21 | "Dell - 上海", 22 | "Douban (豆瓣) - 北京", 23 | "Duolingo - 北京", 24 | "eBay - 上海", 25 | "eHealth - 厦门", 26 | "Electronic Arts - 上海", 27 | "EMC - 上海", 28 | "EPAM Systems - 上海/深圳/苏州/成都", 29 | "Ericsson - 上海", 30 | "Flexport - 上海/深圳", 31 | "FreeWheel - 北京", 32 | "GE - 上海", 33 | "Google - 北京/上海", 34 | "Grab - 北京", 35 | "Honeywell - 上海", 36 | "HP - 上海", 37 | "HSBC - 上海/广州/西安", 38 | "Hulu - 北京", 39 | "IBM (GBS除外) - 北京/上海", 40 | "iHerb - 上海", 41 | "Intel - 北京/上海/深圳", 42 | "JetBrains - 北京/上海", 43 | "Kong - 上海", 44 | "LeetCode - 上海", 45 | "LEGO Group - 上海", 46 | "Linkedin - 北京", 47 | "Micro Focus - 上海", 48 | "Microsoft - 北京/上海/苏州", 49 | "MicroStrategy - 杭州", 50 | "Morgan Stanley (IT) - 上海", 51 | "National Instruments - 上海", 52 | "Nike - 上海", 53 | "Nokia - 上海/南京/杭州", 54 | "Nomura - 上海", 55 | "NVIDIA - 北京/上海", 56 | "Optiver - 上海", 57 | "Oracle - 上海", 58 | "PayPal - 上海", 59 | "Philips - 上海/苏州", 60 | "Pivotal - 北京/上海", 61 | "Qualcomm - 北京/上海", 62 | "Rakuten - 上海/大连", 63 | "Red Hat - 北京/上海/深圳/西安/remote", 64 | "RingCentral - 厦门/杭州/香港", 65 | "Rippling - 北京/上海", 66 | "SanDisk - 上海", 67 | "SAP - 上海", 68 | "SmartNews - 北京/上海", 69 | "Snap - 北京/深圳", 70 | "Starbucks - 上海", 71 | "State Street - 杭州", 72 | "SUSE - 北京/上海/深圳", 73 | "The Trade Desk - 上海/深圳", 74 | "ThoughtWorks - 西安/北京/深圳/成都/武汉/上海/香港", 75 | "Trend Micro - 南京", 76 | "Tubi - 北京", 77 | "TuSimple - 北京/上海", 78 | "Two Sigma - 上海", 79 | "Ubisoft - 上海", 80 | "Unity - 上海", 81 | "Vipshop (唯品会) - 上海", 82 | "VMware - 北京/上海", 83 | "WeWork - 上海", 84 | "Wish - 上海", 85 | "Works Applications - 上海", 86 | "XMind - 深圳", 87 | "Zhihu (知乎) - 北京", 88 | "Zoom - 合肥/杭州/苏州" 89 | ]; 90 | const allCities = "全部城市"; 91 | 92 | Page({ 93 | data: { 94 | companies: [], 95 | cities: [], 96 | cityIndex: 0, 97 | }, 98 | 99 | onLoad: function (options) { 100 | const companies = this.getCompanies(); 101 | const cities = this.getCities(companies); 102 | this.setData({ 103 | companies, 104 | cities, 105 | }); 106 | wx.showShareMenu({ 107 | withShareTicket: true, 108 | menus: ['shareAppMessage', 'shareTimeline'] 109 | }); 110 | }, 111 | 112 | getCompanies: function (city = "") { 113 | const list = []; 114 | for (let company of companies) { 115 | const items = company.split(" - "); 116 | if (city) { 117 | const cities = items[1].split("/"); 118 | if (!cities.includes(city)) { 119 | continue; 120 | } 121 | } 122 | list.push({ 123 | name: items[0], 124 | city: items[1] 125 | }); 126 | } 127 | return list; 128 | }, 129 | 130 | getCities: function (companies) { 131 | const citySet = new Set(); 132 | citySet.add(allCities); 133 | for (let company of companies) { 134 | const cities = company.city.split("/"); 135 | for (let city of cities) { 136 | citySet.add(city); 137 | } 138 | } 139 | return Array.from(citySet); 140 | }, 141 | 142 | bindCityPickerChange: function (e) { 143 | console.log('picker发送选择改变,携带值为', e.detail.value) 144 | const cityIndex = e.detail.value; 145 | const city = this.data.cities[cityIndex]; 146 | this.setData({ 147 | companies: this.getCompanies((city === allCities) ? "" : city), 148 | cityIndex, 149 | }); 150 | }, 151 | }) -------------------------------------------------------------------------------- /pages/list/list.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /pages/list/list.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 955 公司名单 5 | 6 | 7 | 8 | 9 | 选择城市:{{cities[cityIndex]}} 10 | 11 | 12 | 13 | 公司数量:{{companies.length}} 14 | 15 | 16 | 17 | 18 | {{item.name}} 19 | {{item.city}} 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /pages/list/list.wxss: -------------------------------------------------------------------------------- 1 | /* pages/list/list.wxss */ 2 | .section { 3 | padding: 10rpx; 4 | font-size: 35rpx; 5 | } 6 | 7 | .picker { 8 | padding-bottom: 5rpx; 9 | border: solid rgb(189, 189, 189); 10 | border-width: 1rpx 0 1rpx; 11 | } 12 | 13 | .company { 14 | background-color: rgb(243, 243, 243); 15 | box-sizing: border-box; 16 | margin: 20rpx; 17 | padding: 20rpx; 18 | width: 700rpx; 19 | border-radius: 15rpx; 20 | } 21 | 22 | .company .name { 23 | font-weight: bolder; 24 | font-size: 30rpx; 25 | line-height: 40rpx; 26 | } 27 | 28 | .company .city { 29 | font-size: 25rpx; 30 | line-height: 40rpx; 31 | float: right; 32 | padding-top: 8rpx; 33 | } -------------------------------------------------------------------------------- /pages/logs/logs.js: -------------------------------------------------------------------------------- 1 | //logs.js 2 | const util = require('../../utils/util.js') 3 | 4 | Page({ 5 | data: { 6 | logs: [] 7 | }, 8 | onLoad: function () { 9 | this.setData({ 10 | logs: (wx.getStorageSync('logs') || []).map(log => { 11 | return util.formatTime(new Date(log)) 12 | }) 13 | }) 14 | } 15 | }) 16 | -------------------------------------------------------------------------------- /pages/logs/logs.json: -------------------------------------------------------------------------------- 1 | { 2 | "navigationBarTitleText": "查看启动日志" 3 | } -------------------------------------------------------------------------------- /pages/logs/logs.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{index + 1}}. {{log}} 5 | 6 | 7 | -------------------------------------------------------------------------------- /pages/logs/logs.wxss: -------------------------------------------------------------------------------- 1 | .log-list { 2 | display: flex; 3 | flex-direction: column; 4 | padding: 40rpx; 5 | } 6 | .log-item { 7 | margin: 10rpx; 8 | } 9 | -------------------------------------------------------------------------------- /project.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目配置文件", 3 | "packOptions": { 4 | "ignore": [], 5 | "include": [] 6 | }, 7 | "setting": { 8 | "urlCheck": true, 9 | "es6": true, 10 | "enhance": true, 11 | "postcss": true, 12 | "preloadBackgroundData": false, 13 | "minified": true, 14 | "newFeature": true, 15 | "coverView": true, 16 | "nodeModules": false, 17 | "autoAudits": false, 18 | "showShadowRootInWxmlPanel": true, 19 | "scopeDataCheck": false, 20 | "uglifyFileName": false, 21 | "checkInvalidKey": true, 22 | "checkSiteMap": true, 23 | "uploadWithSourceMap": true, 24 | "compileHotReLoad": false, 25 | "lazyloadPlaceholderEnable": false, 26 | "useMultiFrameRuntime": false, 27 | "useApiHook": false, 28 | "useApiHostProcess": false, 29 | "babelSetting": { 30 | "ignore": [], 31 | "disablePlugins": [], 32 | "outputPath": "" 33 | }, 34 | "enableEngineNative": false, 35 | "useIsolateContext": false, 36 | "userConfirmedBundleSwitch": false, 37 | "packNpmManually": false, 38 | "packNpmRelationList": [], 39 | "minifyWXSS": true, 40 | "showES6CompileOption": false 41 | }, 42 | "compileType": "miniprogram", 43 | "libVersion": "2.5.0", 44 | "appid": "wxf58102affeaeb9ba", 45 | "projectname": "weapp-955-wlb", 46 | "simulatorType": "wechat", 47 | "simulatorPluginLibVersion": {}, 48 | "condition": {}, 49 | "editorSetting": { 50 | "tabIndent": "insertSpaces", 51 | "tabSize": 2 52 | } 53 | } -------------------------------------------------------------------------------- /project.private.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "projectname": "weapp-955-wlb", 3 | "setting": { 4 | "compileHotReLoad": true 5 | }, 6 | "libVersion": "3.7.7" 7 | } -------------------------------------------------------------------------------- /sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", 3 | "rules": [{ 4 | "action": "allow", 5 | "page": "*" 6 | }] 7 | } -------------------------------------------------------------------------------- /utils/util.js: -------------------------------------------------------------------------------- 1 | const formatTime = date => { 2 | const year = date.getFullYear() 3 | const month = date.getMonth() + 1 4 | const day = date.getDate() 5 | const hour = date.getHours() 6 | const minute = date.getMinutes() 7 | const second = date.getSeconds() 8 | 9 | return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') 10 | } 11 | 12 | const formatNumber = n => { 13 | n = n.toString() 14 | return n[1] ? n : '0' + n 15 | } 16 | 17 | module.exports = { 18 | formatTime: formatTime 19 | } 20 | --------------------------------------------------------------------------------