150 lines
3.7 KiB
JavaScript
150 lines
3.7 KiB
JavaScript
// index.js
|
|
// 获取应用实例
|
|
const app = getApp()
|
|
|
|
import { debug, info, error } from '../../log.js'
|
|
|
|
import {
|
|
get_camera_rule,
|
|
goto_camera,
|
|
get_phone_model,
|
|
extract_code_from_url,
|
|
} from '../../utils.js'
|
|
|
|
Page({
|
|
data: {
|
|
loading_data: true,
|
|
userInfo: {},
|
|
content: {},
|
|
background_style: '',
|
|
},
|
|
goto_link(e) {
|
|
var link = e.currentTarget.dataset.link;
|
|
if (link) {
|
|
wx.navigateTo({
|
|
url: '/pages/article/article?article_id=' + link,
|
|
});
|
|
}
|
|
},
|
|
patch_url(items) {
|
|
var server_url = app.globalData.server_url;
|
|
for (var x of items) {
|
|
if (x.url && x.url.startsWith('/')) {
|
|
x.url = server_url + x.url;
|
|
}
|
|
if (x.img && x.img.startsWith('/')) {
|
|
x.img = server_url + x.img;
|
|
}
|
|
}
|
|
},
|
|
process_content(c) {
|
|
this.patch_url(c.carousel);
|
|
this.patch_url([c.video]);
|
|
this.patch_url(c.icons);
|
|
this.patch_url(c.static);
|
|
return c;
|
|
},
|
|
load_content(tenant_id, code) {
|
|
console.log("load_content", tenant_id, code);
|
|
var url = app.globalData.server_url + '/api/v1/mini-program-content/?';
|
|
if (tenant_id) {
|
|
url += "tenant=" + tenant_id;
|
|
}
|
|
if (code) {
|
|
url += "&code=" + code;
|
|
}
|
|
console.log(url);
|
|
var r = wx.request({
|
|
url,
|
|
complete: (res) => {
|
|
console.log(res);
|
|
if (res.statusCode == 200) {
|
|
var content = this.process_content(res.data.content);
|
|
console.log(content);
|
|
this.setData({
|
|
content: content,
|
|
background_style: this.gen_background_style(content),
|
|
});
|
|
}
|
|
this.setData({
|
|
loading_data: false,
|
|
});
|
|
}
|
|
})
|
|
},
|
|
onLoad(options) {
|
|
var gd = app.globalData;
|
|
// preload camera rules from server
|
|
get_camera_rule(null, () => {});
|
|
let phone_model = get_phone_model();
|
|
info("phone model", phone_model);
|
|
console.log(options);
|
|
if (options.env == 'dev') {
|
|
console.log("Using dev env settings.");
|
|
gd.server_url = 'https://dev.themblem.com';
|
|
}
|
|
if (options.debug || options.scene == 'debug') {
|
|
gd.debug = true;
|
|
}
|
|
gd.tenant = options.tenant;
|
|
if (options.redirect && options.redirect.length > 0) {
|
|
console.log("Redirecting to", options.redirect);
|
|
wx.redirectTo({
|
|
url: options.redirect,
|
|
});
|
|
return;
|
|
}
|
|
var code = null;
|
|
if (options.q) {
|
|
console.log("options.q", options.q);
|
|
code = extract_code_from_url(decodeURIComponent(options.q));
|
|
console.log("code", code);
|
|
}
|
|
this.load_content(options.tenant, code);
|
|
},
|
|
|
|
doGetUserProfile() {
|
|
return wx.getUserProfile({
|
|
desc: '展示用户信息',
|
|
})
|
|
},
|
|
|
|
async getUserProfile(done_cb) {
|
|
var ui = wx.getStorageSync('userinfo');
|
|
if (!ui || !ui.emblem_id) {
|
|
var res = await this.doGetUserProfile();
|
|
ui = res.userInfo;
|
|
ui.emblem_id = Math.random().toString().substr(2);
|
|
wx.setStorageSync('userinfo', ui);
|
|
}
|
|
this.setData({
|
|
userInfo: ui,
|
|
});
|
|
done_cb(ui);
|
|
},
|
|
|
|
goto_camera: function () {
|
|
this.getUserProfile(() => {
|
|
goto_camera(false);
|
|
});
|
|
},
|
|
|
|
gen_background_style: function(content) {
|
|
var bg = content.background;
|
|
var ret = '';
|
|
if (!bg) return ret;
|
|
if (bg.type == 'color') {
|
|
ret = 'background-image: none; background-color: ' + bg.color;
|
|
}
|
|
if (bg.type == 'gradient') {
|
|
ret = 'background-image: linear-gradient(' + bg.gradiant_begin + ',' + bg.gradiant_end + ');';
|
|
}
|
|
if (bg.type == 'image') {
|
|
var base_url = getApp().globalData.server_url;
|
|
ret = 'background-image: url("' + base_url + bg.image + '");';
|
|
}
|
|
console.log(ret);
|
|
return ret;
|
|
}
|
|
})
|