|
|
@@ -0,0 +1,228 @@
|
|
|
+Page({
|
|
|
+ data: {
|
|
|
+
|
|
|
+ },
|
|
|
+ onLoad(options) {
|
|
|
+ this.refreshData() //更新权限等信息
|
|
|
+ this.setData({ //最近使用记录
|
|
|
+ recorded: wx.getStorageSync('recorded') || []
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /* 更新站点信息 */
|
|
|
+ refreshData() {
|
|
|
+ if (wx.getStorageSync('userauth').length != 0) {
|
|
|
+ let authList = {},
|
|
|
+ entrance = [{
|
|
|
+ label: "通用",
|
|
|
+ icon: "icon-tabxiangmu",
|
|
|
+ list: dye([{
|
|
|
+ name: "签到",
|
|
|
+ path: "/packageA/clockIn/index",
|
|
|
+ icon: "icon-a-wodemendianxinxidizhi"
|
|
|
+ }, {
|
|
|
+ name: "任务",
|
|
|
+ path: "/packageA/work/index",
|
|
|
+ icon: "icon-xiaochengxu_xiaoshouyuce"
|
|
|
+ }, {
|
|
|
+ name: "通讯录",
|
|
|
+ path: "/packageA/contacts/index",
|
|
|
+ icon: "icon-xiaochengxutongxunlu"
|
|
|
+ }])
|
|
|
+ }, {
|
|
|
+ label: "营销工具",
|
|
|
+ icon: "icon-tabxiangmu",
|
|
|
+ list: gettool()
|
|
|
+ }, {
|
|
|
+ label: "CRM",
|
|
|
+ icon: "icon-tabxiangmu",
|
|
|
+ list: getcrm()
|
|
|
+ }];
|
|
|
+ //营销工具
|
|
|
+ function gettool() {
|
|
|
+ const paths = [{
|
|
|
+ name: "通告",
|
|
|
+ path: "/pages/annunciate/index",
|
|
|
+ icon: "icon-a-shouyejingangqutonggao"
|
|
|
+ }, {
|
|
|
+ name: "营销物料",
|
|
|
+ path: "/pages/tabbar/smartStore/index",
|
|
|
+ icon: "icon-a-shouyejingangquyingxiaowuliao",
|
|
|
+ openType: "switchTab"
|
|
|
+ }, {
|
|
|
+ name: "推广素材",
|
|
|
+ path: "/pages/promotional/index",
|
|
|
+ icon: "icon-a-shouyejingangqutuiguangsucai"
|
|
|
+ }, {
|
|
|
+ name: "商学院",
|
|
|
+ path: "/pages/college/index",
|
|
|
+ icon: "icon-a-shangxueyuanxuexi"
|
|
|
+ }, {
|
|
|
+ name: "提报",
|
|
|
+ path: "/pages/submission/index",
|
|
|
+ icon: "icon-a-tibaoguanlitibao"
|
|
|
+ }];
|
|
|
+ let tool = getApp().globalData.queryPer.query(wx.getStorageSync('userauth'), ['营销工具'], paths.map(v => v.name)),
|
|
|
+ list = [];
|
|
|
+ tool.forEach(v => {
|
|
|
+ let auth = v.apps[0].meta.auth;
|
|
|
+ if (!auth.some(r => r.option == 'read')) return;
|
|
|
+ authList[v.apps[0].name] = {
|
|
|
+ options: auth.map(a => a.option),
|
|
|
+ optionnames: auth.map(a => a.optionname)
|
|
|
+ };
|
|
|
+ let item = paths.find(s => s.name == v.systemmodulename);
|
|
|
+ item && list.push(item)
|
|
|
+ });
|
|
|
+
|
|
|
+ return dye(list)
|
|
|
+ };
|
|
|
+ //CRM
|
|
|
+ function getcrm() {
|
|
|
+ const paths = [{
|
|
|
+ name: "市场活动",
|
|
|
+ path: "/packageA/activity/index",
|
|
|
+ icon: "icon-shichanghuodong",
|
|
|
+ }, {
|
|
|
+ name: "公海线索",
|
|
|
+ path: "/packageA/publicClue/index",
|
|
|
+ icon: "icon-xiaochengxu_xiaoshoumubiao"
|
|
|
+ }, {
|
|
|
+ name: "销售线索",
|
|
|
+ path: "/packageA/saleClue/index",
|
|
|
+ icon: "icon-xiaoshouxiansuo"
|
|
|
+ }, {
|
|
|
+ name: "公海客户",
|
|
|
+ path: "/packageA/publicCustomer/index",
|
|
|
+ icon: "icon-xiaochengxutongxunlu"
|
|
|
+ }, {
|
|
|
+ name: "客户",
|
|
|
+ path: "/packageA/setclient/index",
|
|
|
+ icon: "icon-kehu"
|
|
|
+ }, {
|
|
|
+ name: "项目商机",
|
|
|
+ path: "/packageA/project/index",
|
|
|
+ icon: "icon-xiangmushangji"
|
|
|
+ }, {
|
|
|
+ name: "报价单",
|
|
|
+ path: "/packageA/offers/index",
|
|
|
+ icon: "icon-xiangmubaojia"
|
|
|
+ }, {
|
|
|
+ name: "竞争对手",
|
|
|
+ path: "/packageA/opponent/index",
|
|
|
+ icon: "icon-jingzhengduishou"
|
|
|
+ }, {
|
|
|
+ name: "合同",
|
|
|
+ path: "/packageA/contract/index",
|
|
|
+ icon: "icon-hetong"
|
|
|
+ }, {
|
|
|
+ name: "销售目标",
|
|
|
+ path: "/packageA/target/index",
|
|
|
+ icon: "icon-xiaochengxu_xiaoshoumubiao"
|
|
|
+ }, {
|
|
|
+ name: "销售预测",
|
|
|
+ path: "/packageA/salesForecasting/index",
|
|
|
+ icon: "icon-xiaochengxu_xiaoshouyuce"
|
|
|
+ }];
|
|
|
+ let crm = getApp().globalData.queryPer.query(wx.getStorageSync('userauth'), ['CRM'], ['销售预测', '销售线索', '销售目标', '合同管理', '客户管理', '项目管理']),
|
|
|
+ list = [];
|
|
|
+ crm.forEach(v => {
|
|
|
+ v.apps.forEach(s => {
|
|
|
+ authList[s.name] = {
|
|
|
+ options: s.meta.auth.map(a => a.option),
|
|
|
+ optionnames: s.meta.auth.map(a => a.optionname),
|
|
|
+ }
|
|
|
+ if (authList[s.name].options.some(s => s == "read")) {
|
|
|
+ let i = paths.findIndex(k => k.name == s.meta.title);
|
|
|
+ if (i != -1) {
|
|
|
+ paths[i].index = i;
|
|
|
+ list.push(paths[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ });
|
|
|
+ return dye(list.sort((a, b) => a.index - b.index))
|
|
|
+ };
|
|
|
+ //染色
|
|
|
+ function dye(list) {
|
|
|
+ let colorList = [{
|
|
|
+ color: "#3874F6",
|
|
|
+ bColor: "#F0F3FF",
|
|
|
+ }, {
|
|
|
+ color: "#5AB73F",
|
|
|
+ bColor: "#F4FAEF",
|
|
|
+ }, {
|
|
|
+ color: "#F29C37",
|
|
|
+ bColor: "#FCF6EF",
|
|
|
+ }, {
|
|
|
+ color: "#EB4B5C",
|
|
|
+ bColor: "#FDF1ED",
|
|
|
+ }, {
|
|
|
+ color: "#3874F6",
|
|
|
+ bColor: "#F0F3FF",
|
|
|
+ }, {
|
|
|
+ color: "#F29C37",
|
|
|
+ bColor: "#FCF6EF",
|
|
|
+ }, {
|
|
|
+ color: "#EB4B5C",
|
|
|
+ bColor: "#FDF1ED",
|
|
|
+ }, {
|
|
|
+ color: "#3874F6",
|
|
|
+ bColor: "#F0F3FF",
|
|
|
+ }, {
|
|
|
+ color: "#5AB73F",
|
|
|
+ bColor: "#F4FAEF",
|
|
|
+ }, {
|
|
|
+ color: "#F29C37",
|
|
|
+ bColor: "#FCF6EF",
|
|
|
+ }, {
|
|
|
+ color: "#5AB73F",
|
|
|
+ bColor: "#F4FAEF",
|
|
|
+ }, {
|
|
|
+ color: "#3874F6",
|
|
|
+ bColor: "#F0F3FF",
|
|
|
+ }, {
|
|
|
+ color: "#F29C37",
|
|
|
+ bColor: "#FCF6EF",
|
|
|
+ }, {
|
|
|
+ color: "#EB4B5C",
|
|
|
+ bColor: "#FDF1ED",
|
|
|
+ }, {
|
|
|
+ color: "#5AB73F",
|
|
|
+ bColor: "#F4FAEF",
|
|
|
+ }];
|
|
|
+ return list.map((v, i) => {
|
|
|
+ return {
|
|
|
+ ...v,
|
|
|
+ ...colorList[i > colorList.length - 1 ? i - colorList.length : i]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ };
|
|
|
+ this.setData({
|
|
|
+ entrance
|
|
|
+ })
|
|
|
+ wx.setStorageSync('auth', authList)
|
|
|
+ } else {
|
|
|
+ setTimeout(this.refreshData, 10);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /* 使用记录 */
|
|
|
+ openRecord(e) {
|
|
|
+ let {
|
|
|
+ item
|
|
|
+ } = e.currentTarget.dataset;
|
|
|
+ if (!item) return;
|
|
|
+ this.data.recorded.unshift(item);
|
|
|
+ let recorded = this.data.recorded.reduce((pre, cur) => {
|
|
|
+ if (!pre.some(v => v.name == cur.name)) pre.push(cur)
|
|
|
+ return pre
|
|
|
+ }, []);
|
|
|
+ this.setData({
|
|
|
+ recorded: recorded.slice(0, 5)
|
|
|
+ })
|
|
|
+ wx.setStorage('recorded', recorded.slice(0, 5))
|
|
|
+ },
|
|
|
+ onShow() {
|
|
|
+ this.getTabBar().init();
|
|
|
+ },
|
|
|
+})
|