├── 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 | 
--------------------------------------------------------------------------------
/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 |
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 |
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 |
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 |
--------------------------------------------------------------------------------