市北党建引领小程序初始化
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

597 lines
16 KiB

2 years ago
2 years ago
const app = getApp()
const api = require("../../utils/api")
const homeApi = require("../../utils/home")
const global = require("../../utils/config")
import { getTimestamp } from "../../utils/common"
import checkoutVersion from "../../utils/checkVersion"
// import regeneratorRuntime from "../../utils/runtime.js"
Page({
data: {
statusHeight: 0, // 自定义头部状态栏高度
navigationHeight: 0, // 自定义头部导航栏高度
bannerList: [], // banner列表
newsList: [], // 新闻列表
projectList: [], // 项目列表
infoList: [], // 消息列表
unReadNum: 0, // 未读数量
loadMoreType: "none",
loadMoreVisible: false,
pageNo: 1, // 新闻列表-分页页码
pageSize: 10, // 新闻列表-分页页长
timestamp: "", // 时间戳
sudokuState: { // 九宫格显隐状态
consultAvailable: "0", // 网格专员
appraiseAvailable: "0", // 请您监督,
talkAndNeedAndPartyAvaliable: "0" // 随时讲、需求清单、党群服务中心
},
completeInfoDialogVisible: false, // 完善信息弹框显隐
gridId: "", // 网格id
departmentName: "", // 所在网格
departmentId: "",//1191534416067149825所在网格id
street: "",//所在街道
isCarryLoad: false,
userId: "",
userInfo: {
nickname: "",
mobile: "",
faceImg: ""
},
visible: false,
signMsg: "",
signCode: 0,
isSignUp: 0,
communityId: "" // 社区id
},
2 years ago
2 years ago
async onLoad(options) {
wx.showLoading({
title: "加载中,请稍后",
mask: true
})
if (options.shareType) {
const para = {
shareType: options.shareType,
detailId: options.detailId,
infoCompleted: options.infoCompleted ? options.infoCompleted : "",
type: options.detailType ? options.detailType : "",
showClassify: options.showClassify ? options.showClassify : "",
nowGridId: options.nowGridId ? options.nowGridId : ""
}
wx.setStorageSync("shareObj", JSON.stringify(para))
}
if (options.scene) {
this.setData({
statusHeight: app.globalData.deviceInfo.statusHeight,
navigationHeight: app.globalData.deviceInfo.navigationHeight,
gridId: options.scene,
})
} else {
this.setData({
statusHeight: app.globalData.deviceInfo.statusHeight,
navigationHeight: app.globalData.deviceInfo.navigationHeight,
})
}
// 切换网格的时候,更换网格id
if (options.departmentId) {
this.setData({
departmentId: options.departmentId
})
}
await this.getUserState()
this.data.isCarryLoad = true
},
onTabItemTap() {
this.getUserState()
},
onShow() {
// 检查版本更新
checkoutVersion()
this.getFirstInfo()
},
onReachBottom() {
this.setData({
loadMoreVisible: true
})
if (this.data.loadMoreType === "loading") {
this.data.pageNo += 1
this.getNewsList()
}
},
// 根据微信code查询用户当前状态
getUserState() {
let that = this
wx.login({
success(res) {
if (res.code) {
let code = res.code
api.getToken(code).then(res => {
wx.hideLoading()
const state = res.data.userState
app.globalData.infoCompleted = state
wx.setStorageSync("topGridName", res.data.grid)
wx.setStorageSync("gridId", res.data.gridId) //当前网格id,新闻、议题、项目分享时用
wx.setStorageSync("token", res.data.token)
that.setData({
departmentName: res.data.grid,
departmentId: res.data.gridId,
userId: res.data.userId
})
that.getComplete()
that.getUserLoginlog()
// 扫码进入
if (that.data.gridId !== "") {
// 扫的是网格长码
if (that.data.gridId == "gridLeader") {
wx.redirectTo({
url: "/pages/gridLeaderRegister/gridLeaderRegister"
})
// 扫的是网格码
} else {
wx.redirectTo({
url: `/pages/formid/formid?gid=${that.data.gridId}`
})
}
} else {
if (state == "4") {
// 非扫码进入,通过搜索小程序直接进入的情况
if (wx.getStorageSync("shareObj")) {
const para = JSON.parse(wx.getStorageSync("shareObj"))
wx.redirectTo({
url: "/pages/formid/formid?gid=" + para.nowGridId
})
} else {
wx.redirectTo({
url: "/pages/toRegister/toRegister"
})
}
} else {
if (wx.getStorageSync("shareObj")) {
const para = JSON.parse(wx.getStorageSync("shareObj"))
if (para.shareType === "newsDetail") {
wx.navigateTo({
url: `/subpages/home/pages/newsDetail/newsDetail?id=${para.detailId}`
})
} else if (para.shareType === "discussionDetail") {
wx.navigateTo({
url: `/subpages/discussion/pages/discussionDetail/discussionDetail?detailId=${para.detailId}&type=${para.type}&showClassify=${para.showClassify}`
})
}
wx.removeStorageSync("shareObj")
}
that.initLoad()
}
}
})
} else {
console.log("登录失败" + res.errMsg)
}
}
})
},
// 获取小程序用户登录日志
async getUserLoginlog() {
let data = {
userId: this.data.userId
}
await api.userLoginlog(data)
},
// 获取banner列表
getBannerList() {
api.bannerList("0").then(res => {
console.log("首页banner列表", res)
this.setData({
bannerList: res.data
})
}).catch(() => {
console.log("获取banner列表失败")
this.setData({
bannerList: []
})
})
},
// 获取新闻列表
getNewsList() {
let para = {
pageIndex: this.data.pageNo,
pageSize: this.data.pageSize,
timestamp: this.data.timestamp
}
api.newsList(para).then((res) => {
console.log("首页新闻列表", res)
this.setData({
loadMoreType: res.data.length === this.data.pageSize ? "loading" : "none",
newsList: this.data.newsList.concat(res.data)
})
}).catch(() => {
console.log("首页新闻列表获取失败")
this.setData({
loadMoreType: "none",
newsList: []
})
})
},
// 获取项目列表
getProjectList() {
const para = {
pageIndex: 1,
pageSize: 10,
timestamp: this.data.timestamp,
searchContent: "",
firstCategoryCode: ""
}
api.getProjectList(para).then(res => {
console.log("项目列表", res)
this.setData({
projectList: res.data,
})
}).catch((err) => {
console.log("获取项目列表失败", err)
this.setData({
projectList: []
})
})
},
// 获取最新一条消息-主要获取消息未读数
getUnreadNum() {
api.getFirstInfo().then(res => {
console.log("获取消息未读数", res)
this.setData({
unReadNum: res.data.amount
})
}).catch(() => {
console.log("获取消息未读数失败")
})
},
// 获取消息列表
getInfoList() {
let para = {
pageIndex: 1,
pageSize: 10,
timestamp: this.data.timestamp
}
homeApi.getInfoList(para).then(res => {
console.log("消息列表", res)
this.setData({
infoList: res.data
})
}).catch(() => {
console.log("获取消息列表失败")
})
},
// 九宫格检查状态
getIndexSudokuState() {
api.getIndexSudokuState().then(res => {
console.log("九宫格状态", res)
let consultAvailable = "0"
let appraiseAvailable = "0"
if (res.data.length > 0) {
res.data.forEach(item => {
if (item.name === "咨询" && item.availableFlag === "1") {
consultAvailable = "1"
} else if (item.name === "干部评价" && item.availableFlag === "1") {
appraiseAvailable = "1"
}
})
}
this.setData({
sudokuState: {
consultAvailable,
appraiseAvailable
}
})
}).catch(() => {
console.log("获取九宫格状态失败")
this.setData({
sudokuState: {
consultAvailable: "0",
appraiseAvailable: "0"
}
})
})
},
// 跳转到需求清单
navigateToDemand () {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/demand/pages/demandList/demandList"
})
},
// 行程上报
navigateToTripReport () {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/extend/pages/tripReport/tripReport"
})
},
// 党群服务中心
navigateToPartyMasses () {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/partyMassesServiceCenter/pages/partyMassesMap/partyMassesMap"
})
},
// 问卷调查
navigateToQuestionnaire () {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/questionnaire/pages/index/index"
})
},
// 办事指南
navigateToServiceGuide () {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/workguide/pages/index/index"
})
},
// 党员风采
navigatetoPartyElegant () {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: `/subpages/partyElegant/pages/partyElegant/partyElegant?communityId=${this.data.communityId}`
})
},
// 联建活动
navigatetoUnionBuild () {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: `/subpages/unionBuild/pages/list/list?communityId=${this.data.communityId}`
})
},
// 跳转到随时讲
navigateToAnytimeSay() {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/discussion/pages/anytimeSay/anytimeSay"
})
},
// 跳转到有奖举报
navigateToAnytimeSay_cc() {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/discussion/pages/anytimeSay/anytimeSay?isCreateCity=1"
})
},
// 跳转到我要报事
navigateToAddIssue() {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/discussion/pages/addIssue/addIssue"
})
},
// 跳转到网格专员
navigatetoConsultion() {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
wx.navigateTo({
url: "/subpages/home/pages/consultation/consultation"
})
},
// 跳转到通知公告
navigateToNotice() {
wx.navigateTo({
url: "/subpages/home/pages/notice/notice"
})
},
// 获取完整机构
getComplete() {
api.getComplete(this.data.departmentId).then((res) => {
this.setData({
street: res.data.street,
departmentId: res.data.gridId,
communityId: res.data.communityId
})
}).catch((err) => {
console.log(err)
})
},
// 跳转到请您监督
navigatetoAppraise() {
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
const token = wx.getStorageSync("token")
// https://lyljdgs.qingdaoshibei.cn/app/mobileapp/mszj/index.aspx?deptName=延安路街道&gridId=123467521122
wx.navigateTo({
url: `/subpages/home/pages/webview/webview?url=${global.WEBROOT()}&token=${token}&deptName=${this.data.street}&gridId=${this.data.departmentId}`
})
},
// 初始化加载
initLoad() {
this.setData({
pageNo: 1,
pageSize: 10,
timestamp: getTimestamp(),
newsList: [],
loadMoreType: "loading",
loadMoreVisible: false
})
this.getBannerList()
this.getIndexSudokuState()
this.getProjectList()
this.getInfoList()
this.getUnreadNum()
this.getNewsList()
this.getUserInfo()
this.getAppMenu()
},
// onShow() {
// this.getUnreadNum()
// },
// 切换网格,跳转到网格列表
changeGrid() {
wx.navigateTo({ url: "/subpages/changegrid/pages/changeGrid/changeGrid" })
},
// 跳转到新闻详情
navigatetoNewsDetail(e) {
wx.navigateTo({ url: `/subpages/home/pages/newsDetail/newsDetail?id=${e.detail.newsId}` })
},
// 跳转到 项目详情
navigatetoItemDetail(e) {
wx.navigateTo({
url: `/subpages/discussion/pages/discussionDetail/discussionDetail?type=project&detailId=${e.detail.itemId}&showClassify=show`
})
},
// 跳转到消息列表
navigateToInfoList() {
wx.navigateTo({ url: "/subpages/home/pages/info/info" })
},
// 跳转到banner详情
navigatetoBannerDetail(e) {
const { id, url, newsFlag } = e.detail
if (newsFlag == "0") {
wx.navigateTo({
url: `/subpages/home/pages/webview/webview?url=${url}`
})
} else if (newsFlag == "1") {
wx.navigateTo({
url: `/subpages/home/pages/newsDetail/newsDetail?id=${id}`
})
}
},
getFirstInfo() {
api.getFirstInfo().then((res) => {
console.log("infoObj", res.data)
})
},
//下拉刷新
async onPullDownRefresh() {
await this.initLoad()
wx.stopPullDownRefresh();
},
// 获取用户信息
getUserInfo() {
api.getUserInfo().then(res => {
console.log("用户信息", res)
const userInfo = {}
for (const key in this.data.userInfo) {
userInfo[key] = res.data[key]
}
this.setData({
userInfo,
isSignUp: res.data.isSignUp ? res.data.isSignUp : 0
})
}).catch(err => {
this.setData({
userInfo: {
faceImg: "",
nickname: "",
partyFlag: "0",
isSignUp: 0
}
})
console.log(err)
})
},
//签到 2020.07.31
toSignIn () {
console.log(app.globalData.infoCompleted, this.data.isSignUp)
if (app.globalData.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return false
}
if (this.data.isSignUp == 1) {
return
}
api.userInfoSignUp().then(res => {
console.log(res.data)
if (res.code === 0) {
// 显示提醒
this.setData({
signCode: res.code,
signMsg: res.data,
visible: true
});
} else {
this.setData({
signCode: res.code,
signMsg: res.msg,
visible: true
});
}
})
},
// 关闭签到提醒
onClose() {
this.getUserInfo()
this.setData({
visible: false
});
},
// 获取小程序菜单权限
getAppMenu () {
const params = {
deptId: wx.getStorageSync("gridId")
}
api.getAppMenu(params).then(res => {
console.log("获取首页菜单权限", res)
this.setData({
"sudokuState.talkAndNeedAndPartyAvaliable": res.data || "0"
})
})
}
})