{"remainingRequest":"/Users/admin/projects/dms/src/dealer_admin/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/admin/projects/dms/src/dealer_admin/src/views/data_strategy/index.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/admin/projects/dms/src/dealer_admin/src/views/data_strategy/index.vue","mtime":1713161556000},{"path":"/Users/admin/projects/dms/src/dealer_admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/Users/admin/projects/dms/src/dealer_admin/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/Users/admin/projects/dms/src/dealer_admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/Users/admin/projects/dms/src/dealer_admin/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport * as echarts from 'echarts';\nimport * as OrderAPI from \"@/api/order.js\";\nimport * as SalesAPI from \"@/api/sales_amis.js\";\nimport * as SalesOpportunityAPI from \"@/api/sales_opportunity.js\";\nimport DashBoardFilterModal from \"../dashboard/admin/components/DashBoardFilterModal.vue\";\nimport _ from \"lodash\";\nimport {priceNumFilter} from \"@/filters/index.js\";\nimport { Pie } from '@antv/g2plot';\nimport {numMul,numAdd,numDiv} from \"@/utils/index.js\";\n\nexport default {\n  name: \"DashboardAdmin\",\n  components: {\n    DashBoardFilterModal\n  },\n  data() {\n    return {\n      statisticData:{\n        invoiceMonthMoney:0,\n        invoiceYearMoney:0,\n        orderBookMoney:0,\n        salesOpportunityMoney:0,\n        nowMonthAmisMoney:0,\n        nowYearAmisMoney:0,\n        monthPercent:0.00,\n        yearPercent:0.00\n      },\n      orderChart: null,\n      orderDateList:[],\n      orderList:[],\n      orderQueryParams:{\n        startDate:'',\n        endDate:''\n      },\n      salesChart:null,\n      salesDateList:[],\n      salesList:[],\n      salesQueryParams:{\n        startDate:'',\n        endDate:''\n      },\n      dealer_str:'全部',\n      filterQuery:{\n        dealerId:'',\n      },\n      winValue:100,\n      salesMapPlot:null,\n      salesMapData:[],\n      salesTotalMoney:0,\n      salesShowType: 1,  //销售额显示情况 1:图表模式 2:表格模式\n      exportSalesLoading: false, //是否正在导出\n    };\n  },\n  methods: {\n    init(){\n      this.getDataStatistic();\n      //this.getOrderStatisticList();\n      this.getSalesStatisticList();\n      this.getTotalPieStatistic();\n    },\n    selectOrderList(){\n      let orderDateList = this.orderDateList;\n      if(!orderDateList || orderDateList.length <= 1){\n        return;\n      }\n      let startDate = orderDateList[0];\n      let endDate = orderDateList[1];\n      if(startDate == '' || endDate == ''){\n        return;\n      }\n      this.orderQueryParams.startDate = startDate;\n      this.orderQueryParams.endDate = endDate;\n      this.getOrderStatisticList();\n    },\n    selectSalesList(){\n      let salesDateList = this.salesDateList;\n      if(!salesDateList || salesDateList.length <= 1){\n        return;\n      }\n      let startDate = salesDateList[0];\n      let endDate = salesDateList[1];\n      if(startDate == '' || endDate == ''){\n        return;\n      }\n      this.salesQueryParams.startDate = startDate;\n      this.salesQueryParams.endDate = endDate;\n      this.getSalesStatisticList();\n    },\n    async getDataStatistic(){\n\n      let query = {};\n      query = Object.assign(query, this.filterQuery);\n      const res = await OrderAPI.getDataStatistic(query);\n      this.statisticData = res.result;\n    },\n    async getSalesStatisticList(){\n\n      let query = _.cloneDeep(this.salesQueryParams);\n      query = Object.assign(query, this.filterQuery);\n\n      const res = await SalesAPI.getSalesAmisStatisticList(query);\n      this.salesList = res.result.list;\n      this.initSalesChart();\n\n    },\n    initSalesChart() {\n      let list = this.salesList;\n      let xList = [];  //日期\n      let yList = [];  //预测销售额\n      let zList=[];    //目标销售额\n      let kList = [];  //实际销售额\n      list.map((v) => {\n        xList.push(v.date);\n        v.predict = Math.floor(numAdd(numAdd(v.actual,v.orderAmount),numDiv(numMul(v.amis,this.winValue),100)));\n        yList.push(v.predict);\n        zList.push(v.amis);\n        kList.push(v.actual);\n      })\n      if(!this.salesChart){\n        this.salesChart = echarts.init(document.getElementById('salesChatMain'));\n      }\n      this.salesChart.setOption({\n        tooltip: {\n          formatter: function (params) {\n              return params.data + \"元\";\n          }\n        },\n        grid: {\n          left: '1%',\n          right: '1%',\n          bottom: '4%',\n          containLabel: true\n        },\n        legend: {\n            data: ['实际销售额', '目标销售额','预测销售额']\n        },\n        tooltip: {},\n        xAxis: {\n          type: 'category',\n          data: xList\n        },\n        yAxis: {\n            type: 'value'\n        },\n        series: [\n          {\n            name:'实际销售额',\n            data: kList,\n            smooth: true,\n            type: 'bar',\n            barWidth: '10%',\n            itemStyle: {\n                color: '#4EC478'\n            },\n            areaStyle: {}\n          },\n          {\n            name:'目标销售额',\n            data: zList,\n            smooth: true,\n            barWidth: '10%',\n            type: 'bar',\n            itemStyle: {\n                color: '#FBA33F'\n            },\n            areaStyle: {}\n          },\n          {\n            name:'预测销售额',\n            data: yList,\n            smooth: true,\n            type: 'bar',\n            barWidth: '10%',\n            itemStyle: {\n                color: '#51B3E0'\n            },\n            areaStyle: {}\n          },\n        ],\n        dataZoom: [\n          {\n            show: true,\n            start: 0,\n            end: 100\n          },\n        ],\n      })\n    },\n    filterChoice(e){\n      let {\n        dealerId,\n        dealer_name,\n        industry\n      } = e;\n      if(dealerId && dealerId != undefined){\n        this.dealer_str = dealer_name;\n      }else{\n        this.dealer_str = \"全部\";\n      }\n      let filterQuery = this.filterQuery;\n      filterQuery.dealerId = dealerId;\n      if(industry){\n        filterQuery.industry = industry;\n      }\n      this.filterQuery = {};\n      this.filterQuery = filterQuery; \n      this.init();\n    },\n    showFilter(){\n      this.$nextTick(() => {\n        this.$refs.dashBoardFilterModal.init();\n      })\n    },\n    winChange(e){\n      this.initSalesChart();\n    },\n    async getTotalPieStatistic(){\n\n      let query = _.cloneDeep(this.orderQueryParams);\n      query = Object.assign(query, this.filterQuery);\n\n      const res = await SalesOpportunityAPI.getTotalPieStatistic(query);\n      console.log(\"list:\",res.result);\n      this.salesMapData = [];\n      this.salesMapData = res.result.list;\n      this.salesTotalMoney = priceNumFilter(res.result.totalMoney);\n      this.initSalesMap();\n\n    },\n    initSalesMap(){\n\n      if(this.salesMapPlot){\n        this.salesMapPlot.changeData(this.salesMapData);\n        this.salesMapPlot.render();\n        return false;\n      }\n\n      this.salesMapPlot = new Pie('salesMap', {\n        appendPadding: 10,\n        data: this.salesMapData,\n        angleField: 'money',\n        colorField: 'type',\n        color:[\"#51B3E0\",\"#4EC478\",\"#FBA33F\"],\n        radius: 1,\n        innerRadius:0.7,\n        legend:{\n          layout: 'horizontal',\n          position: 'bottom',\n          itemName:{\n            style: {\n              fontSize: 14,\n              fill:\"#000000\",\n              fontWeight:500\n            },\n            formatter: (text,item,index) => {\n              return`${this.salesMapData[index].value}%`\n            },\n          },\n          itemValue: {\n            style: {\n              fontSize:14,\n              fill:\"#BEC0C6\",\n              textAlign:\"center\"\n            },\n            formatter: (text,item,index) => {\n              if(text == 'In Progress'){\n                return `\\n\\n${text}`;\n              }else if(text == 'Won'){\n                return `\\n\\n${text}        `;\n              }else if(text == 'Lost'){\n                return `\\n\\n${text}        `;\n              }\n              return `\\n\\n${text}`;\n            },\n          }\n        },\n        pieStyle:(item) => {\n          if(item.type == \"In Progress\"){\n            return {\n              fill: \"#51B3E0\",\n              shadowColor: \"#51B3E0\",\n              shadowBlur: 10,\n              shadowOffsetX: 0,\n              shadowOffsetY: 0\n            }\n          }else if(item.type == \"Won\"){\n            return {\n              fill:\"#4EC478\",\n              shadowColor: \"#4EC478\",\n              shadowBlur: 10,\n              shadowOffsetX: 0,\n              shadowOffsetY: 0\n            }\n          }else if(item.type == \"Lost\"){\n            return {\n              fill: \"#FBA33F\",\n              shadowColor: \"#FBA33F\",\n              shadowBlur: 10,\n              shadowOffsetX: 0,\n              shadowOffsetY: 0\n            }\n          }\n          \n        },\n        statistic: {\n          title: {\n            formatter: () => '总金额',\n          },\n          content: {\n            formatter: () => this.salesTotalMoney,\n          },\n        },\n      });\n\n      this.salesMapPlot.render();\n    },\n    filterChoice(e){\n      console.log(\"e:\",e);\n      let {\n        dealerId,\n        dealer_name,\n        industry,\n        industryList,\n      } = e;\n      if(dealerId && dealerId != undefined){\n        this.dealer_str = dealer_name;\n      }else{\n        this.dealer_str = \"全部\";\n      }\n      let filterQuery = this.filterQuery;\n      filterQuery.dealerId = dealerId;\n      if(industry){\n        filterQuery.industry = industry;\n      }\n      if(industryList){\n        filterQuery.industryList = JSON.stringify(industryList);\n      }\n      this.filterQuery = {};\n      this.filterQuery = filterQuery; \n      this.init();\n    },\n    showFilter(){\n      this.$nextTick(() => {\n        this.$refs.dashBoardFilterModal.init();\n      })\n    },\n    toggleSalesShow(){\n      this.salesShowType = (this.salesShowType == 1 ? 2 : 1);\n    },\n    exportSalesExcel() {\n      this.exportSalesLoading = true;\n      import(\"@/vendor/Export2Excel\").then((excel) => {\n        const tHeader = [\n          \"日期\",\n          \"实际销售额\",\n          \"目标销售额\",\n          \"预测销售额\",\n        ];\n        const filterVal = [\n          \"date\",\n          \"actual\",\n          \"amis\",\n          \"predict\",\n        ];\n        const newList = this.salesList.map((e) => {\n          //console.log(e);\n          return {\n            ...e\n          };\n        });\n        const data = this.formatJson(filterVal, newList);\n        excel.export_json_to_excel({\n          header: tHeader,\n          data,\n          filename: \"销售额列表\",\n        });\n        this.exportSalesLoading = false;\n      });\n    },\n    formatJson(filterVal, jsonData) {\n      return jsonData.map((v) =>\n        filterVal.map((j) => {\n          if (j == \"predict\" || j == \"actual\" || j == \"amis\") {\n            return priceNumFilter(v[j]);\n          }else {\n            return v[j];\n          }\n        })\n      );\n    },\n  },\n  created(){\n    this.init();\n  }\n};\n",null]}