|
|
@@ -0,0 +1,190 @@
|
|
|
+const _Http = getApp().globalData.http;
|
|
|
+Component({
|
|
|
+ options: {
|
|
|
+ addGlobalClass: true,
|
|
|
+ },
|
|
|
+ properties: {
|
|
|
+ update: {
|
|
|
+ type: Function
|
|
|
+ }
|
|
|
+ },
|
|
|
+ lifetimes: {
|
|
|
+ attached: function () {
|
|
|
+ getApp().globalData.Language.getLanguagePackage(this)
|
|
|
+ this.setData({
|
|
|
+ dates: this.data.dates.map(v => {
|
|
|
+ v.name = getApp().globalData.Language.getMapText(v.value);
|
|
|
+ v.color = v.value == this.data.content.dateType ? "#3874F6" : "";
|
|
|
+ return v
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data: {
|
|
|
+ "content": {
|
|
|
+ dateType: "本年",
|
|
|
+ dataid: wx.getStorageSync('userMsg').userid,
|
|
|
+ username: wx.getStorageSync('userMsg').name,
|
|
|
+ type: 0,
|
|
|
+ "where": {
|
|
|
+ isleave: "1"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ detaShow: false,
|
|
|
+ dates: [{
|
|
|
+ value: "全部"
|
|
|
+ }, {
|
|
|
+ value: "本年"
|
|
|
+ }, {
|
|
|
+ value: "本季"
|
|
|
+ }, {
|
|
|
+ value: "本月"
|
|
|
+ }, {
|
|
|
+ value: "去年"
|
|
|
+ }, ],
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getList() {
|
|
|
+ let content = this.data.content;
|
|
|
+ _Http.basic({
|
|
|
+ "id": 20231018110404,
|
|
|
+ content
|
|
|
+ }).then(res => {
|
|
|
+ console.log("项目数据概况", res)
|
|
|
+ if (res.code != '1') return wx.showToast({
|
|
|
+ title: res.msg,
|
|
|
+ icon: "none"
|
|
|
+ })
|
|
|
+ const getMapText = getApp().globalData.Language.getMapText;
|
|
|
+ let list = [{
|
|
|
+ title: '项目总数',
|
|
|
+ value: res.data.totalqty,
|
|
|
+ tips: getMapText('项目总数:统计所有项目的数量'),
|
|
|
+ link: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '报备项目数',
|
|
|
+ value: res.data.reportProject,
|
|
|
+ tips: getMapText('报备项目数:统计已报备的项目数量'),
|
|
|
+ link: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '进行中项目数',
|
|
|
+ value: res.data.dealProject,
|
|
|
+ tips: getMapText('进行中项目数:进行中状态的项目数量'),
|
|
|
+ link: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '项目成交数',
|
|
|
+ value: res.data.dealProject,
|
|
|
+ tips: getMapText('项目成交数:统计有关联审核过的订单的项目数量'),
|
|
|
+ link: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '项目成交率',
|
|
|
+ value: res.data.cjl + '%',
|
|
|
+ tips: getMapText('项目成交率=有关联审核订单的项目数÷项目总数×100%'),
|
|
|
+ link: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '项目失败数',
|
|
|
+ value: res.data.failedproject,
|
|
|
+ tips: getMapText('项目失败数:已失败状态的项目数量'),
|
|
|
+ link: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '项目失败率',
|
|
|
+ value: Math.round(((res.data.sbl) * 100) / 100) + '%',
|
|
|
+ tips: getMapText('项目失败率=已失败项目数÷项目总数×100%'),
|
|
|
+ link: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '参与项目数',
|
|
|
+ value: res.data.joinProject,
|
|
|
+ tips: getMapText('参与项目数:参与的并且至少有一次跟进的项目数量'),
|
|
|
+ link: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '参与项目成交数',
|
|
|
+ value: res.data.joinDealProject,
|
|
|
+ tips: getMapText('参与项目成交数:参与的并且至少有一次跟进的项目的成交数量'),
|
|
|
+ link: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '参与项目成交率',
|
|
|
+ value: Math.round(((res.data.joinDealProjectcjl) * 100) / 100) + '%',
|
|
|
+ tips: getMapText('参与项目成交率=参与项目成交数 ÷ 参与项目数 ×100%'),
|
|
|
+ link: false
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ try {
|
|
|
+ list = list.concat(res.data.projecttype.map(v => {
|
|
|
+ return {
|
|
|
+ title: v.value,
|
|
|
+ value: v.qty,
|
|
|
+ tips: "",
|
|
|
+ link: true
|
|
|
+ }
|
|
|
+ }))
|
|
|
+ } catch (error) {
|
|
|
+
|
|
|
+ }
|
|
|
+ this.setData({
|
|
|
+ list,
|
|
|
+ content
|
|
|
+ })
|
|
|
+ this.onCancel()
|
|
|
+ })
|
|
|
+ },
|
|
|
+ showTips(e) {
|
|
|
+ const {
|
|
|
+ tips
|
|
|
+ } = e.currentTarget.dataset;
|
|
|
+ wx.showModal({
|
|
|
+ content: tips,
|
|
|
+ showCancel: false,
|
|
|
+ confirmText: getApp().globalData.Language.getMapText('确定'),
|
|
|
+ })
|
|
|
+ },
|
|
|
+ toDetail(e) {
|
|
|
+ const {
|
|
|
+ item
|
|
|
+ } = e.currentTarget.dataset;
|
|
|
+ },
|
|
|
+ openDateType() {
|
|
|
+ this.setData({
|
|
|
+ detaShow: true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ dateOnSelect(event) {
|
|
|
+ const {
|
|
|
+ value
|
|
|
+ } = event.detail;
|
|
|
+ if (this.data.content.dateType == value) return this.onCancel();
|
|
|
+ this.setData({
|
|
|
+ "content.dateType": value,
|
|
|
+ dates: this.data.dates.map(item => {
|
|
|
+ item.color = item.value == value ? "#3874F6" : "";
|
|
|
+ item.loading = item.value == value ? true : false;
|
|
|
+ return item
|
|
|
+ }),
|
|
|
+ })
|
|
|
+ this.getList(true)
|
|
|
+ },
|
|
|
+ onCancel() {
|
|
|
+ this.setData({
|
|
|
+ actionShow: false,
|
|
|
+ detaShow: false,
|
|
|
+ list: this.data.list.map(item => {
|
|
|
+ item.loading = false;
|
|
|
+ return item
|
|
|
+ }),
|
|
|
+ dates: this.data.dates.map(item => {
|
|
|
+ item.loading = false;
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ }
|
|
|
+})
|