var app = getApp(); var that; var chart1; var chart2; var chart3; var AParse = require('../../../Component/aParse/aParse.js'); import 'dingtalk-jsapi/entry/union'; import { setCache, getCache } from '../../../utils/util' import { contactAdminToUseApp } from 'dingtalk-design-libs'; import { openSubscribeMiniApp, disposeSubscribeData} from 'dingtalk-service-window-libs/lib/openSubscribeMiniApp'; import moment from 'moment' // 时间库 Page({ data: { headDayBs: {}, userData: {}, isBh: false, chartData: [],//折线图数据 pieData: [1],//饼型图数据 isAdministrator: app.globalData.isAdministrator,//是否管理员角色 rankingTotal: 0, rankingList: [], getRole_four: app.globalData.isCreator,//是否系统管理员 setECharts: [],//柱形图数据 pieTotal: 1, total: '', menuList: [ { name: '审批', imgUrl: '../../../image/sp.png', url: '../my_approve/my_approve', code: 'creator admin' }, { name: '任务', imgUrl: '../../../image/a7.png', url: '../../statistics/my_task/my_task', code: 'admin employee' }, { name: '复核', imgUrl: '../../../image/fuhe.png', url: '../review/review', code: 'creator admin employee',isNoShow:true }, { name: '奖扣B分', imgUrl: '../../../image/point_entry.png', url: '../jk_B/jk_B?type=B', code: 'creator admin' }, { name: '指派任务', imgUrl: '../../../image/my_publish.png', url: '../../statistics/assaign/assaign', code: 'creator admin' }, { name: '申请积分', imgUrl: '../../../image/a_apply.png', url: '../apply/apply', code: 'admin employee' }, { name: '奖扣A分', imgUrl: '../../../image/a_entry.png', url: '../jk_B/jk_B?type=A', code: 'creator admin' }, { name: '抢任务', imgUrl: '../../../image/task_hall.png', url: '../../statistics/getTask/getTask', code: 'admin employee' }, { name: '发布抢单', imgUrl: '../../../image/caback6.png', url: '../../statistics/offerAreward/offerAreward', code: 'creator admin' }, // { name: '发放奖票', imgUrl: '../../../image/add_ticket.png', url: '../../statistics/grant/grant', code: 'creator admin' }, { name: '全部', imgUrl: '../../../image/all2.png', url: 'all', code: 'creator admin employee' }, ], isUpdate: false, title: '',//系统消息标题 textId: '',//系统消息ID isSubject: false,//判断是否是个人版进入 mainCorpId: '',//如果是个人版,这个企业ID是登录者所在的企业ID,不是钉钉那边提供的隐藏企业ID noticeTitle:'', isGz:false, islog:true, announcementList:[], isSuperAdministrator:app.globalData.isSuperAdministrator, //是否是超级管理员 isShowAn:true, selectPlItem:{}, isShowDate:false, dateArr:[ {dateIndex:1,max:60,min:31,}, {dateIndex:2,max:30,min:8}, {dateIndex:3,max:7,min:4}, {dateIndex:4,max:3,min:0}, ], day:0, dateIndex:0, isShowVlink:false,//是否显示关注 }, onLoad() { that = this; chart1, chart2, chart3 = ''; }, onShow() { disposeSubscribeData((options)=>{ if(options.subscribe=='cancel'){ this.vlinkConfig() }else{ this.vlinkConfig() } }) if (app.globalData.userData) { dd.setNavigationBar({ title: app.globalData.userData.name }); that.getUserData(); that.getGg(); that.getNotice(); that.opneWebSocket(); if(app.globalData.isSuperAdministrator){ //套餐 that.getCorp(); } if(!getCache('init_rule_check')){ app.globalData.userData.init_rule_check? '':that.setData({ isGz: true}) } if (app.globalData.isCreator) { that.setMenuList("creator"); } else if (app.globalData.isAdministrator) { that.setMenuList("admin"); } else if (!app.globalData.isCreator && !app.globalData.isAdministrator) { that.setMenuList("employee"); } that.setData({ isAdministrator: app.globalData.isAdministrator, getRole_four: app.globalData.isCreator, isSubject: app.globalData.userData.is_personal == 1 ? true : false, mainCorpId: app.globalData.userData.main_corp_id, isShowAn:getCache('isShowAn')? false:true, }) if(app.globalData.isSuperAdministrator&&that.data.isShowAn){ //指南 that.getAnnouncement(); } if(app.globalData.isSuperAdministrator&&app.globalData.userData.vlink.status=='UNFOLLOW'&&!getCache('vlink')){ //关注 this.setData({ isShowVlink:true }) } } else { app.login(app.globalData.corpId,function (is) { if (is) { dd.setNavigationBar({ title: app.globalData.userData.name }); that.getUserData(); that.getGg(); that.getNotice(); that.opneWebSocket(); if(app.globalData.isSuperAdministrator){ that.getCorp(); } if(!getCache('init_rule_check')){ app.globalData.userData.init_rule_check? '':that.setData({ isGz: true}) } if (app.globalData.isCreator) { that.setMenuList("creator"); } else if (app.globalData.isAdministrator) { that.setMenuList("admin"); } else if (!app.globalData.isCreator && !app.globalData.isAdministrator) { that.setMenuList("employee"); } that.setData({ isAdministrator: app.globalData.isAdministrator, getRole_four: app.globalData.isCreator, isSubject: app.globalData.userData.is_personal == 1 ? true : false, mainCorpId: app.globalData.userData.main_corp_id, isShowAn:getCache('isShowAn')? false:true, }) if(app.globalData.isSuperAdministrator&&that.data.isShowAn){ that.getAnnouncement(); } } else { dd.reLaunch({ url: '../../noJurisdiction/noJurisdiction' }) } },function(){},true) } }, onTap() { return openSubscribeMiniApp({ panelHeight: 'percent40', path: 'pages/index/index', float: true, extraData: { clientId: '55493', authToken: 'v00dfd6ff9ca66a4ae187dab8a5b6004495', }, options:{ // snsMessageSendAuthEnable参数仅对个人小程序有效,非个人小程序请勿设置此参数。 // 在使用 snsMessageSendAuthEnable 参数时 // 需要为应用申请OfficialAccount.SnsMessage.Send权限后方可使用。 // snsMessageSendAuthEnable:true } }); }, vlinkConfig(){ setCache('vlink',true); this.setData({ isShowVlink:false }) }, dayConfig(e){ var index = e.target.dataset.index; if(index==1){ dd.navigateTo({ url: '../../deploy/addMoney/addMoney' }) }else{ setCache('dateIndex',that.data.dateIndex); that.setData({ isShowDate:false, }) } }, //获取套餐信息 getCorp() { app.$get2('api/order/corp', {corp_id:app.globalData.corpId}).then(res => { let corpMessage = res.data.data; const startDate = moment(corpMessage.expire_time).format('YYYY-MM-DD'); const endDate = moment().format('YYYY-MM-DD'); let day=moment(startDate).diff(endDate, 'day'); // let day=4 this.data.dateArr.forEach(item=>{ if(item.max>=day&&item.min<=day){ let dateIndex=getCache('dateIndex') if(!dateIndex){ that.setData({ dateIndex:item.dateIndex, isShowDate:true, day:day }) }else if(dateIndex!=item.dateIndex){ that.setData({ dateIndex:item.dateIndex, isShowDate:true, day:day }) } } }) }); }, closeAn(){ setCache('isShowAn',true); this.setData({ isSuperAdministrator:false, }) }, openaN(e){ var index = e.target.dataset.index; dd.navigateTo({ url: '../noticeDetailTow/noticeDetailTow?id=' + this.data.announcementList[index].id+'&index='+index }) }, getAnnouncement(){ app.$get2("api/announcement/list",{type:3}).then((res) => { let list=res.data.data.list; that.setData({ announcementList:list}) }) }, gettrees(fn) { app.$get2("api/integral/rule/trees", {cycle_type: 3 }).then((res)=>{ var rule_tree = res.data.data.rule_tree if(rule_tree.length==0&&app.globalData.isCreator){ fn(false) }else{ fn(true) } }) }, opneWebSocket() { let data={type:"es_info",recorder_id:app.globalData.userData.id,month:app.globalData.month}; app.globalData.socketApi.sendData(data, (res) => { if (res.code == 1&&res.type=='es_info') { let data = res.result; var task = data.task; var ratio = task.ratio.enable== 0 ? '-' : `${task.ratio.reward_ratio}:1` var target_ratio = task.ratio.target <= 0 ? '0:1' : `${task.ratio.target}:1` data.ratio = { ratio: ratio, target_ratio: target_ratio } that.getLsit(); that.setData({ userData: data }) app.globalData.socketApi.closewebsocket(); } }, true); }, openWs(){ if(!that.data.islog){ return false; } that.setData({ islog:false }) app.globalData.socketApi.sendData({type:'init_rule'}, function(e){ that.setData({islog:true}) setCache('init_rule_check',true) if (e.type == 'init_rule') { if(e.code==1&&e.msg=='done'){ that.setData({ isGz:false}) app.globalData.showToast('已导入'); app.globalData.socketApi.closewebsocket(); }else{ // app.globalData.showToast(e.msg); } } },true); }, openWs2(){ app.$post("api/integral/employee/init_rule_notice").then((res) => { app.globalData.showToast('已发送通知'); setCache('init_rule_check',true) that.setData({ isGz:false}) }, (err) => { }) }, openGly() { contactAdminToUseApp({ id: '55493', corpId: that.data.mainCorpId }) .catch((err) => { // 入参不正确,或者遇到技术异常时才会进入这个链路 console.error(err); }) }, openUrl(e) { var url = e.target.dataset.url; if (url == 'all') { dd.switchTab({ url: '../../statistics/index/index' }) return } dd.navigateTo({ url: url }) }, openUrl2() { dd.navigateTo({ url: '../noticeDetail/noticeDetail?id=' + that.data.noticeId }) }, openText() { that.colseText(); dd.navigateTo({ url: '../../deploy/upgradeDetail/upgradeDetail?id=' + that.data.textId }) }, //获取缓存的公告 getReviewerObj(fuc) { dd.getStorage({ key: 'isShowMessage', success: function (res) { if (res.data) { fuc(res.data); } else { fuc({}); } } }); }, // 获取公告 getNotice() { app.$get2("api/information/index", { page: 1, page_size: 1 }).then((res) => { let data= res.data.data; that.setData({ noticeTitle: data[0]? data[0].name:'', noticeId: data[0]? data[0].id:'', }); }) }, // 获取公告 getGg() { let accedence_time=moment(app.globalData.userData.accedence_time).format('YYYY-MM-DD'); // let accedence_time='2023-10-12' let date = moment().format('YYYY-MM-DD'); console.log(accedence_time,date) if (that.data.title||accedence_time==date) { return } app.$get2("api/announcement/list", { page: 1, page_size: 1 }).then((res) => { var data = res.data.data.list[0]; AParse.aParse('article', 'html', data.focus, that, 5); that.setData({ title: data.title, textId: data.id }); that.getReviewerObj(function (res) { if (res != data.id) { that.colseText(); dd.setStorage({ key: 'isShowMessage', data: data.id, }); } }) }) }, setMenuList(str) { var arr = []; that.data.menuList.forEach(item => { if (item.code.indexOf(str) >= 0) { arr.push(item) } }) that.setData({ menuList: arr }) }, colseText() { this.setData({ isUpdate: !this.data.isUpdate }) }, showText() { this.setData({ isBh: !this.data.isBh }) }, openViewRanking() { var item = this.data.selectPlItem var url = ''; if (item.type == 'normal') { url = '../../statistics/sectionRanking/sectionRanking'; } else if (item.type == 'all') { url = '../../statistics/B_ranking/B_ranking'; } else { url = '../../statistics/C_ranking/C_ranking?id=' + item.target_id + '&name=' + item.group_name + '&date_interval=' + item.date_interval; } dd.navigateTo({ url: url }) }, //跳转 openView(e) { var index = e.target.dataset.index - 1; var urls; if (e.target.dataset.item) { urls = [ { url: '../statistics_B/statistics_B', query: '' }, { url: '../statistics_A/statistics_A', query: '' }, { url: '../jk_B/jk_B', query: 'type=B' }, { url: '../jk_B/jk_B', query: 'type=A' }, { url: '../apply/apply', query: '' }, { url: '../my_approve/my_approve', query: '' }, { url: '../prize_buckle/prize_buckle', query: '' }, { url: '../../statistics/prizeBuckleDetail/prizeBuckleDetail', query: 'id=' + e.target.dataset.item.id }, { url: '../../statistics/integralEvent/integralEvent', query: '' }, { url: '../../statistics/userRamking/userRamking', query: '' }, { url: '../../statistics/glz_execute/glz_execute', query: '' }, ]; } else { urls = [ { url: '../statistics_B/statistics_B', query: '' }, { url: '../statistics_A/statistics_A', query: '' }, { url: '../jk_B/jk_B', query: 'type=B' }, { url: '../jk_B/jk_B', query: 'type=A' }, { url: '../apply/apply', query: '' }, { url: '../my_approve/my_approve', query: '' }, { url: '../prize_buckle/prize_buckle', query: '' }, { url: '../../statistics/prizeBuckleDetail/prizeBuckleDetail', query: '' }, { url: '../../statistics/integralEvent/integralEvent', query: '' }, { url: '../../statistics/userRamking/userRamking', query: '' }, { url: '../../statistics/glz_execute/glz_execute', query: '' }, ]; } dd.navigateTo({ url: urls[index].url + '?' + urls[index].query }) }, //则线图 onInitChart(F2, config) { chart1 = new F2.Chart(config); chart1.source(that.data.chartData, { date: { tickCount: 4 } }); chart1.tooltip({ showCrosshairs: true, showItemMarker: true, onShow: function onShow(ev) { const items = ev.items; items[0].name = "月份:" + items[0].origin.date; items[0].value = "分值:" + items[0].value; } }); chart1.axis('date', { label: function label(text, index, total) { const textCfg = {}; if (index === 0) { textCfg.textAlign = 'left'; } else if (index === total - 1) { textCfg.textAlign = 'right'; } return textCfg; } }); chart1.line().position('date*value'); chart1.point().position('date*value').style({ stroke: '#fff', lineWidth: 1 }); chart1.render(); return chart1; }, //饼型图 onInitChart2(F2, config) { chart2 = new F2.Chart(config); chart2.source(that.data.pieData, { percent: { formatter: function formatter(val) { return val * 100 + '%'; } } }); chart2.legend({ position: 'right', itemFormatter: function itemFormatter(val, index) { var str = ''; that.data.pieData.forEach(item => { if (item.name == val) { str = val + ' ' + item.point + '分'; } }) return str; } }); chart2.tooltip(false); chart2.coord('polar', { transposed: true, radius: 0.85 }); chart2.axis(false); chart2.interval() .position('a*percent') .color('name', ['#1890FF', '#13C2C2', '#2FC25B', '#FACC14', '#F04864', '#8543E0']) .adjust('stack') .style({ lineWidth: 1, stroke: '#fff', lineJoin: 'round', lineCap: 'round' }).animate({ appear: { duration: 1200, easing: 'bounceOut' } }); chart2.render(); // 注意:需要把chart return 出来 // that.getLsit(); return chart2; }, //柱形图 onInitChart3(F2, config) { chart3 = new F2.Chart(config); chart3.source(that.data.setECharts, { date: { tickCount: 5 } }); chart3.axis('field', { grid: { lineDash: null, stroke: '#e8e8e8', lineWidth: 1 } }); chart3.legend(false); chart3.interval().position('name*val').color('type', (type) => { // 通过回调函数 if (type === '奖分') { return 'l(90) 0:#4ECFFF 1:#26A2FF'; } return 'l(90) 0:#F8C748 1:#F2A640'; }).adjust({ type: 'dodge', marginRatio: 0.05 // 设置分组间柱子的间距 }); chart3.render() return chart3; }, //获取统计数据 getLsit() { var date1 = new Date(); var date2 = new Date(date1); date2.setDate(date1.getDate() - 30); var start_date = date2.getFullYear() + "-" + (date2.getMonth() + 1) + "-" + date2.getDate(); var incident = app.$get2("api/integral/statistics/b", { employee_id: 0, start_date: start_date, end_date: app.globalData.day, show_type: '1' }); Promise.all([incident]).then(resArr => { if (resArr[0].data.code == 1) { const { b, chart, good, bad } = resArr[0].data.data const points = chart.reward.map((rewardItem, index) => { return { date: rewardItem.date, value: rewardItem.point - (chart.deduction[index].point || 0) } }) chart1.changeData(points); that.setData({ data_b: b, data_good: good, data_bad: bad, }); } }).catch(e => { console.error(e) }) }, //获取个人统计 getUserData() { var http2 = app.$get2("api/integral/statistics/integral", { month: app.globalData.month, page: 1, page_size: 5, order_key:'update_time', employee_ids: app.globalData.isCreator ? '' : app.globalData.userData.id }) var http3 = app.$get2("api/integral/review/list", { type: 'waiting', source_type: 0, page: 1, pt_id: 0,reviewer_id:app.globalData.userData.id }) var ranking = app.$get2('api/integral/statistics/ranking/list', { page: 1, page_size: 100 })// 获取排行榜 var task = app.$get2('api/integral/statistics/task/pie', { month: app.globalData.month })// 管理者奖扣任务柱状图 var work = app.$get2('api/integral/work/list', { status: 'running', page: 1, pt_id: 0, source_type: 0 })// 管理者奖扣任务柱状图 var headDayBs = app.$get2("api/integral/statistics", { employee_id: app.globalData.userData.id, day: app.globalData.day },'application/vnd.test.v3+json')//获取个人统计-当天B分 - V2 var config = app.$get2('api/integral/site/config',{})// 系统配置 Promise.all([http2, http3, ranking, task, work, headDayBs,config]).then(function (values) { if (values[0]) { let data = values[0].data.data.list; data.map((item) => { item.ptObj = app.getTypesItem(item.pt_id); }) that.setData({ incidentLsit: data, incidentLsitTotal: values[0].data.data.total }) } if (values[1]) { let data = values[1].data.data; that.setData({ total: data.total }) } if (values[2]) { let list=values[2].data.data.list; that.setData({ rankingList: list, rankingTotal: values[2].data.data.total }) if(that.data.selectPlItem.group_name){ list.some(item=>{ if(item.target_id==0&&that.data.selectPlItem.group_name==item.group_name){ that.setData({ selectPlItem:item }) return true } if(item.target_id!=0&&item.target_id==that.data.selectPlItem.target_id){ that.setData({ selectPlItem:item }) return true } }) }else{ that.setData({ selectPlItem:values[2].data.data.list[0] }) } that.tabPositions({target:{dataset:{item:that.data.selectPlItem}}}); } if (values[3]) { if (that.data.isAdministrator) { var data = values[3].data.data.list if (data.length > 5) { data.pop() } that.setData({ pieTotal: values[3].data.data.total }) if (that.data.pieTotal != 0) { var employees = []; data.forEach((item) => { var obj = [{ type: '奖分', name: item.employee_name, val: item.reward }, { type: '扣分', name: item.employee_name, val: item.deduction }] employees.push(...obj) }) // chart3.changeData(employees); } } } if (values[4]) { let data = values[4].data.data; that.setData({ workTotal: data.total }) } if(values[5]){ let data = values[5].data.data; that.setData({ headDayBs:data }) } if(values[6]){ let data = values[6].data.data; app.globalData.config=data; let menuList=JSON.parse(JSON.stringify( that.data.menuList)) //福利 if(data.shop_status==1){ if(menuList[menuList.length-2].name!='福利兑换'){ menuList.splice(menuList.length-1,0, { name: '福利兑换', imgUrl: '../../../image/fl.png', url: '../../exchange/exchange/exchange', code: 'creator admin employee' }) } }else{ if(menuList[menuList.length-2].name=='福利兑换'){ menuList.splice(menuList.length-2,1) } } //复核 if(app.globalData.isCreator){ menuList.forEach(item=>{ if(item.name=='复核'){ item.isNoShow=false; } }) that.setData({ menuList:menuList }) return false } if(data.event_review_manager==1){ //不是管理者 if(app.globalData.isSuperAdministrator){ menuList.forEach(item=>{ if(item.name=='复核'){ item.isNoShow=false; } }) } }else{ if(data.event_special){ let ids=data.event_special.map(e=> e.id); if(ids.length>0&&ids.indexOf(app.globalData.userData.id)!=-1){ menuList.forEach(item=>{ if(item.name=='复核'){ item.isNoShow=false; } }) } } } that.setData({ menuList:menuList }) } }) }, tabPositions(e) { var item = e.target.dataset.item; this.setData({ selectPlItem:item }) if (item.type == 'normal') { this.departmentOfRanking(); } else if (item.type == 'all') { this.addUpRanking(); } else if (item.type == 'custom') { this.customRanking(item.target_id, item.date_interval); } }, departmentOfRanking(){ let data={ dept_id: 0, sort: 'DESC', pt_id: 3, time_type: 1, page: 1, page_size: 4, position: 'all', month: moment().format('YYYY-MM'), index_ranking: 1, } app.$get('api/integral/statistics/ranking',data,'application/vnd.test.v2+json').then((res) => { let list=res.data.data.list if(list[0]&&list[0].employee_id!=app.globalData.userData.id){ let data={ employee_id: app.globalData.userData.id, employee_img_url: app.globalData.userData.img_url, employee_name: app.globalData.userData.name, rank: '--', } list.unshift(data); } this.setData({ rankingListDetails:list }) }) }, addUpRanking() { //累计B分排名 let params = { dept_id: 0, sort: 'DESC', page: 1, page_size: 4, pt_id: 3, type: 'all', index_ranking: 1 }; app.$get('/api/integral/statistics/ranking', params, 'application/vnd.test.v2+json').then(res => { let list=res.data.data.list if(list[0].employee_id!=app.globalData.userData.id){ let data={ employee_id: app.globalData.userData.id, employee_img_url: app.globalData.userData.img_url, employee_name: app.globalData.userData.name, rank: '--', } list.unshift(data); } this.setData({ rankingListDetails:list }) }) }, //分组排行榜 customRanking(target_id, date_interval) { //自定义排名 date_interval=时间 let data = { group_id: target_id, pt_id: 3, index_ranking: 1, page_size:4 }; data.date = date_interval == 1 ? moment().format('YYYYMM') : date_interval == 2 ? moment().format('YYYYQ') : date_interval == 3 ? moment().format('YYYY') : '0'; app.$get('/api/integral/statistics/groups/rank', data,'application/vnd.test.v2+json').then(res => { let lists = res.data.data.list; let rankingList = []; let arr = false; for (let i in lists) { let rankingJson = {}; if (lists[i].employee_name) { arr = true; } else { arr = false; rankingJson.employee_id = lists[i].employee_id; rankingJson.employee_img_url = lists[i].img_url; rankingJson.employee_name = lists[i].name; rankingJson.point = lists[i].point; rankingJson.rank = lists[i].rank; rankingJson.status_remark = ''; rankingList.push(rankingJson); } } if (arr) { if(lists[0].employee_id!=app.globalData.userData.id){ let data={ employee_id: app.globalData.userData.id, employee_img_url: app.globalData.userData.img_url, employee_name: app.globalData.userData.name, rank: '--', } lists.unshift(data); } this.setData({rankingListDetails:lists }) } else { if(rankingList[0].employee_id!=app.globalData.userData.id){ let data={ employee_id: app.globalData.userData.id, employee_img_url: app.globalData.userData.img_url, employee_name: app.globalData.userData.name, rank: '--', } rankingList.unshift(data); } this.setData({rankingListDetails:rankingList}) } }) }, //获取积分事件 getIncidentLsit() { app.$get2("api/integral/statistics/integral", { month: app.globalData.month, page: 1, page_size: 5, employee_ids: app.globalData.userData.id }).then((res) => { var data = res.data.data.list; data.map((item) => { item.ptObj = app.getTypesItem(item.pt_id); }) this.setData({ incidentLsit: data, incidentLsitTotal: res.data.data.total }) }, (err) => { }) }, });