{"version":3,"sources":["webpack:////Volumes/NVME/projects/nguonhangchina/admin/node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.js","webpack:///./src/views/Reports/bao-cao-doanh-thu.vue","webpack:///src/views/Reports/bao-cao-doanh-thu.vue","webpack:///./src/views/Reports/bao-cao-doanh-thu.vue?cd0c","webpack:///./src/views/Reports/bao-cao-doanh-thu.vue?5173"],"names":["defaultMenuProps","offsetY","offsetOverflow","transition","extend","name","props","autoSelectFirst","type","Boolean","default","filter","Function","item","queryText","itemText","toLocaleLowerCase","indexOf","hideNoData","menuProps","options","noFilter","searchInput","String","lazySearch","this","computed","classes","call","selectedIndex","filteredItems","selectedItems","map","getValue","hideSelected","some","hasItem","length","selectedItem","getText","isSearching","internalSearch","allItems","value","text","val","$emit","searchIsDirty","multiple","isFocused","hasDisplayedItems","$_menuProps","contentClass","trim","find","i","valueComparator","internalValue","data","listData","items","virtualizedItems","watch","document","addEventListener","onCopy","$refs","input","select","removeEventListener","blur","updateSelf","hasSlot","oldVal","isMenuActive","activateMenu","setSearch","methods","preSelectedItem","menu","listIndex","setMenuIndex","findIndex","$nextTick","getTiles","updateMenuDimensions","updateDimensions","keyCode","left","right","backspace","delete","deleteCurrentItem","curIndex","curItem","isInteractive","getDisabled","lastIndex","nextIndex","nextItem","selectItem","setValue","clearableCallback","genInput","attrs","autocomplete","domProps","slot","genInputSlot","role","genSelections","e","onFocus","isAppendInner","target","badInput","validity","ctrlKey","home","end","includes","onKeyDown","changeSelectedIndex","onTabDown","preventDefault","setSelectedItems","selectedValues","event","_a","_b","currentItem","currentItemText","clipboardData","setData","_c","scopedSlots","_vm","fn","callback","expression","model","dateRange","reportType","uidSelected","headers","_u","staticClass","_v","_s","DiscountAmount","_f","AmountVND","TotalCost","TotalProfit","dic_summary","_e","staticRenderFns","render","pagination","_objectSpread","configs","PAGINATION","items_per_page","ITEMS_PER_PAGE","viewName","startDate","moment","utc","Date","now","startOf","toISOString","substr","endDate","endOf","menuStart","menuEnd","recharge_methods","RECHARGE_METHODS","staffName","method","report_types","user_list","user_title","handler","filterConditions","$store","state","commons","_","isEmpty","filter_data","deep","customers","staffs","mapState","report","revenues","loading","all_users","o","RoleID","ROLE_TYPE","Sale","computedStartDateFormatted","format","SHORT_DATE_FORMAT","computedEndDateFormatted","roleAdmin","authentication","user","roleid","Admin","Payment","sumBy","filterable","dataType","DATA_TYPE","align","filter_params","param","startTime","SQL_DATE_FORMAT","endTime","report_type","sortDesc","sortBy","chartOptions","categories","ReportDate","revenueData","profitData","costData","chart","height","title","xAxis","crosshair","yAxis","min","tooltip","shared","useHTML","formatter","s","x","points","forEach","point","color","series","y","toLocaleString","plotOptions","column","pointPadding","borderWidth","credits","enabled","dispatch","exportData","mounted","$root","$on","beforeDestroy","$off","component"],"mappings":"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","file":"js/chunk-59ec703f.b69bcc22.js","sourcesContent":["// Styles\nimport \"../../../src/components/VAutocomplete/VAutocomplete.sass\"; // Extensions\n\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect';\nimport VTextField from '../VTextField/VTextField'; // Utilities\n\nimport mergeData from '../../util/mergeData';\nimport { getObjectValueByPath, getPropertyFromItem, keyCodes } from '../../util/helpers';\nconst defaultMenuProps = { ...VSelectMenuProps,\n  offsetY: true,\n  offsetOverflow: true,\n  transition: false\n};\n/* @vue/component */\n\nexport default VSelect.extend({\n  name: 'v-autocomplete',\n  props: {\n    autoSelectFirst: {\n      type: Boolean,\n      default: false\n    },\n    filter: {\n      type: Function,\n      default: (item, queryText, itemText) => {\n        return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1;\n      }\n    },\n    hideNoData: Boolean,\n    menuProps: {\n      type: VSelect.options.props.menuProps.type,\n      default: () => defaultMenuProps\n    },\n    noFilter: Boolean,\n    searchInput: {\n      type: String\n    }\n  },\n\n  data() {\n    return {\n      lazySearch: this.searchInput\n    };\n  },\n\n  computed: {\n    classes() {\n      return { ...VSelect.options.computed.classes.call(this),\n        'v-autocomplete': true,\n        'v-autocomplete--is-selecting-index': this.selectedIndex > -1\n      };\n    },\n\n    computedItems() {\n      return this.filteredItems;\n    },\n\n    selectedValues() {\n      return this.selectedItems.map(item => this.getValue(item));\n    },\n\n    hasDisplayedItems() {\n      return this.hideSelected ? this.filteredItems.some(item => !this.hasItem(item)) : this.filteredItems.length > 0;\n    },\n\n    currentRange() {\n      if (this.selectedItem == null) return 0;\n      return String(this.getText(this.selectedItem)).length;\n    },\n\n    filteredItems() {\n      if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems;\n      return this.allItems.filter(item => {\n        const value = getPropertyFromItem(item, this.itemText);\n        const text = value != null ? String(value) : '';\n        return this.filter(item, String(this.internalSearch), text);\n      });\n    },\n\n    internalSearch: {\n      get() {\n        return this.lazySearch;\n      },\n\n      set(val) {\n        // emit update event only when the new\n        // search value is different from previous\n        if (this.lazySearch !== val) {\n          this.lazySearch = val;\n          this.$emit('update:search-input', val);\n        }\n      }\n\n    },\n\n    isAnyValueAllowed() {\n      return false;\n    },\n\n    isDirty() {\n      return this.searchIsDirty || this.selectedItems.length > 0;\n    },\n\n    isSearching() {\n      return this.multiple && this.searchIsDirty || this.searchIsDirty && this.internalSearch !== this.getText(this.selectedItem);\n    },\n\n    menuCanShow() {\n      if (!this.isFocused) return false;\n      return this.hasDisplayedItems || !this.hideNoData;\n    },\n\n    $_menuProps() {\n      const props = VSelect.options.computed.$_menuProps.call(this);\n      props.contentClass = `v-autocomplete__content ${props.contentClass || ''}`.trim();\n      return { ...defaultMenuProps,\n        ...props\n      };\n    },\n\n    searchIsDirty() {\n      return this.internalSearch != null && this.internalSearch !== '';\n    },\n\n    selectedItem() {\n      if (this.multiple) return null;\n      return this.selectedItems.find(i => {\n        return this.valueComparator(this.getValue(i), this.getValue(this.internalValue));\n      });\n    },\n\n    listData() {\n      const data = VSelect.options.computed.listData.call(this);\n      data.props = { ...data.props,\n        items: this.virtualizedItems,\n        noFilter: this.noFilter || !this.isSearching || !this.filteredItems.length,\n        searchInput: this.internalSearch\n      };\n      return data;\n    }\n\n  },\n  watch: {\n    filteredItems: 'onFilteredItemsChanged',\n    internalValue: 'setSearch',\n\n    isFocused(val) {\n      if (val) {\n        document.addEventListener('copy', this.onCopy);\n        this.$refs.input && this.$refs.input.select();\n      } else {\n        document.removeEventListener('copy', this.onCopy);\n        this.blur();\n        this.updateSelf();\n      }\n    },\n\n    isMenuActive(val) {\n      if (val || !this.hasSlot) return;\n      this.lazySearch = null;\n    },\n\n    items(val, oldVal) {\n      // If we are focused, the menu\n      // is not active, hide no data is enabled,\n      // and items change\n      // User is probably async loading\n      // items, try to activate the menu\n      if (!(oldVal && oldVal.length) && this.hideNoData && this.isFocused && !this.isMenuActive && val.length) this.activateMenu();\n    },\n\n    searchInput(val) {\n      this.lazySearch = val;\n    },\n\n    internalSearch: 'onInternalSearchChanged',\n    itemText: 'updateSelf'\n  },\n\n  created() {\n    this.setSearch();\n  },\n\n  destroyed() {\n    document.removeEventListener('copy', this.onCopy);\n  },\n\n  methods: {\n    onFilteredItemsChanged(val, oldVal) {\n      // TODO: How is the watcher triggered\n      // for duplicate items? no idea\n      if (val === oldVal) return;\n\n      if (!this.autoSelectFirst) {\n        const preSelectedItem = oldVal[this.$refs.menu.listIndex];\n\n        if (preSelectedItem) {\n          this.setMenuIndex(val.findIndex(i => i === preSelectedItem));\n        } else {\n          this.setMenuIndex(-1);\n        }\n\n        this.$emit('update:list-index', this.$refs.menu.listIndex);\n      }\n\n      this.$nextTick(() => {\n        if (!this.internalSearch || val.length !== 1 && !this.autoSelectFirst) return;\n        this.$refs.menu.getTiles();\n\n        if (this.autoSelectFirst && val.length) {\n          this.setMenuIndex(0);\n          this.$emit('update:list-index', this.$refs.menu.listIndex);\n        }\n      });\n    },\n\n    onInternalSearchChanged() {\n      this.updateMenuDimensions();\n    },\n\n    updateMenuDimensions() {\n      // Type from menuable is not making it through\n      this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions();\n    },\n\n    changeSelectedIndex(keyCode) {\n      // Do not allow changing of selectedIndex\n      // when search is dirty\n      if (this.searchIsDirty) return;\n\n      if (this.multiple && keyCode === keyCodes.left) {\n        if (this.selectedIndex === -1) {\n          this.selectedIndex = this.selectedItems.length - 1;\n        } else {\n          this.selectedIndex--;\n        }\n      } else if (this.multiple && keyCode === keyCodes.right) {\n        if (this.selectedIndex >= this.selectedItems.length - 1) {\n          this.selectedIndex = -1;\n        } else {\n          this.selectedIndex++;\n        }\n      } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n        this.deleteCurrentItem();\n      }\n    },\n\n    deleteCurrentItem() {\n      const curIndex = this.selectedIndex;\n      const curItem = this.selectedItems[curIndex]; // Do nothing if input or item is disabled\n\n      if (!this.isInteractive || this.getDisabled(curItem)) return;\n      const lastIndex = this.selectedItems.length - 1; // Select the last item if\n      // there is no selection\n\n      if (this.selectedIndex === -1 && lastIndex !== 0) {\n        this.selectedIndex = lastIndex;\n        return;\n      }\n\n      const length = this.selectedItems.length;\n      const nextIndex = curIndex !== length - 1 ? curIndex : curIndex - 1;\n      const nextItem = this.selectedItems[nextIndex];\n\n      if (!nextItem) {\n        this.setValue(this.multiple ? [] : null);\n      } else {\n        this.selectItem(curItem);\n      }\n\n      this.selectedIndex = nextIndex;\n    },\n\n    clearableCallback() {\n      this.internalSearch = null;\n      VSelect.options.methods.clearableCallback.call(this);\n    },\n\n    genInput() {\n      const input = VTextField.options.methods.genInput.call(this);\n      input.data = mergeData(input.data, {\n        attrs: {\n          'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n          autocomplete: getObjectValueByPath(input.data, 'attrs.autocomplete', 'off')\n        },\n        domProps: {\n          value: this.internalSearch\n        }\n      });\n      return input;\n    },\n\n    genInputSlot() {\n      const slot = VSelect.options.methods.genInputSlot.call(this);\n      slot.data.attrs.role = 'combobox';\n      return slot;\n    },\n\n    genSelections() {\n      return this.hasSlot || this.multiple ? VSelect.options.methods.genSelections.call(this) : [];\n    },\n\n    onClick(e) {\n      if (!this.isInteractive) return;\n      this.selectedIndex > -1 ? this.selectedIndex = -1 : this.onFocus();\n      if (!this.isAppendInner(e.target)) this.activateMenu();\n    },\n\n    onInput(e) {\n      if (this.selectedIndex > -1 || !e.target) return;\n      const target = e.target;\n      const value = target.value; // If typing and menu is not currently active\n\n      if (target.value) this.activateMenu();\n      if (!this.multiple && value === '') this.deleteCurrentItem();\n      this.internalSearch = value;\n      this.badInput = target.validity && target.validity.badInput;\n    },\n\n    onKeyDown(e) {\n      const keyCode = e.keyCode;\n\n      if (e.ctrlKey || ![keyCodes.home, keyCodes.end].includes(keyCode)) {\n        VSelect.options.methods.onKeyDown.call(this, e);\n      } // The ordering is important here\n      // allows new value to be updated\n      // and then moves the index to the\n      // proper location\n\n\n      this.changeSelectedIndex(keyCode);\n    },\n\n    onSpaceDown(e) {},\n\n    onTabDown(e) {\n      VSelect.options.methods.onTabDown.call(this, e);\n      this.updateSelf();\n    },\n\n    onUpDown(e) {\n      // Prevent screen from scrolling\n      e.preventDefault(); // For autocomplete / combobox, cycling\n      // interfers with native up/down behavior\n      // instead activate the menu\n\n      this.activateMenu();\n    },\n\n    selectItem(item) {\n      VSelect.options.methods.selectItem.call(this, item);\n      this.setSearch();\n    },\n\n    setSelectedItems() {\n      VSelect.options.methods.setSelectedItems.call(this); // #4273 Don't replace if searching\n      // #4403 Don't replace if focused\n\n      if (!this.isFocused) this.setSearch();\n    },\n\n    setSearch() {\n      // Wait for nextTick so selectedItem\n      // has had time to update\n      this.$nextTick(() => {\n        if (!this.multiple || !this.internalSearch || !this.isMenuActive) {\n          this.internalSearch = !this.selectedItems.length || this.multiple || this.hasSlot ? null : this.getText(this.selectedItem);\n        }\n      });\n    },\n\n    updateSelf() {\n      if (!this.searchIsDirty && !this.internalValue) return;\n\n      if (!this.multiple && !this.valueComparator(this.internalSearch, this.getValue(this.internalValue))) {\n        this.setSearch();\n      }\n    },\n\n    hasItem(item) {\n      return this.selectedValues.indexOf(this.getValue(item)) > -1;\n    },\n\n    onCopy(event) {\n      var _a, _b;\n\n      if (this.selectedIndex === -1) return;\n      const currentItem = this.selectedItems[this.selectedIndex];\n      const currentItemText = this.getText(currentItem);\n      (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/plain', currentItemText);\n      (_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText);\n      event.preventDefault();\n    }\n\n  }\n});\n//# sourceMappingURL=VAutocomplete.js.map","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-container',{attrs:{\"grid-list-xl\":\"\",\"fluid\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"lg3\":\"\",\"pl-6\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"justify-end\":\"\"}},[_c('v-menu',{attrs:{\"close-on-content-click\":false,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"max-width\":\"290px\",\"min-width\":\"290px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-text-field',_vm._g({attrs:{\"label\":\"Từ ngày\",\"hint\":\"DD-MM-YYYY\",\"persistent-hint\":\"\",\"prepend-icon\":\"event\",\"readonly\":\"\"},model:{value:(_vm.computedStartDateFormatted),callback:function ($$v) {_vm.computedStartDateFormatted=$$v},expression:\"computedStartDateFormatted\"}},on))]}}]),model:{value:(_vm.menuStart),callback:function ($$v) {_vm.menuStart=$$v},expression:\"menuStart\"}},[_c('v-date-picker',{attrs:{\"no-title\":\"\"},on:{\"input\":function($event){_vm.menuStart = false}},model:{value:(_vm.dateRange.startDate),callback:function ($$v) {_vm.$set(_vm.dateRange, \"startDate\", $$v)},expression:\"dateRange.startDate\"}})],1)],1)],1),_c('v-flex',{attrs:{\"lg3\":\"\",\"pl-6\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"justify-end\":\"\"}},[_c('v-menu',{attrs:{\"close-on-content-click\":false,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"max-width\":\"290px\",\"min-width\":\"290px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-text-field',_vm._g({attrs:{\"label\":\"Đến ngày\",\"hint\":\"DD-MM-YYYY\",\"persistent-hint\":\"\",\"prepend-icon\":\"event\",\"readonly\":\"\"},model:{value:(_vm.computedEndDateFormatted),callback:function ($$v) {_vm.computedEndDateFormatted=$$v},expression:\"computedEndDateFormatted\"}},on))]}}]),model:{value:(_vm.menuEnd),callback:function ($$v) {_vm.menuEnd=$$v},expression:\"menuEnd\"}},[_c('v-date-picker',{attrs:{\"no-title\":\"\"},on:{\"input\":function($event){_vm.menuEnd = false}},model:{value:(_vm.dateRange.endDate),callback:function ($$v) {_vm.$set(_vm.dateRange, \"endDate\", $$v)},expression:\"dateRange.endDate\"}})],1)],1)],1),(_vm.roleAdmin)?_c('v-flex',{attrs:{\"lg2\":\"\",\"pl-6\":\"\",\"pt-0\":\"\"}},[_c('v-select',{attrs:{\"label\":\"Báo cáo theo\",\"items\":_vm.report_types,\"item-text\":\"name\",\"item-value\":\"value\"},model:{value:(_vm.reportType),callback:function ($$v) {_vm.reportType=$$v},expression:\"reportType\"}})],1):_vm._e(),(_vm.reportType !== 'all' && _vm.roleAdmin)?_c('v-flex',{attrs:{\"lg2\":\"\",\"pl-6\":\"\",\"pt-0\":\"\"}},[_c('v-autocomplete',{attrs:{\"label\":_vm.user_title,\"items\":_vm.user_list,\"item-text\":\"Username\",\"item-value\":\"ID\"},model:{value:(_vm.uidSelected),callback:function ($$v) {_vm.uidSelected=$$v},expression:\"uidSelected\"}})],1):_vm._e(),_c('v-flex',{attrs:{\"lg2\":\"\",\"pl-6\":\"\"}},[_c('v-btn',{attrs:{\"color\":\"#a41c21\",\"outlined\":\"\"},on:{\"click\":_vm.filter_data}},[_vm._v(\"Xem\")])],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[(_vm.items && _vm.items.length > 0)?_c('v-flex',{attrs:{\"lg12\":\"\"}},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-card-title',[_vm._v(\"Biểu đồ doanh thu\")]),_c('v-card-text',[_c('highcharts',{attrs:{\"options\":_vm.chartOptions}})],1)],1)],1):_vm._e()],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[(_vm.items)?_c('v-flex',{attrs:{\"lg12\":\"\"}},[_c('v-data-table',{attrs:{\"hide-default-footer\":\"\",\"headers\":_vm.headers,\"items\":_vm.items,\"server-items-length\":_vm.items.length,\"must-sort\":true,\"loading\":_vm.loading,\"mobile-breakpoint\":100},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('tr',[_c('td',[_vm._v(_vm._s(item.ReportDate))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.NumberOfCode)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.NumberOfPack)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.Weight,'', 1)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.Volume,'', 2)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.Deposit,'¥', 1)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.FeeShipVND)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.DiscountAmount)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.AmountVND)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.TotalCost)))]),_c('td',{staticClass:\"text-end\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.TotalProfit)))])])]}},{key:\"body.append\",fn:function(){return [_c('tr',[_c('td',{staticClass:\"font-weight-bold\"},[_vm._v(\"TỔNG\")]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.NumberOfCode)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.NumberOfPack)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.Weight,'', 1)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.Volume,'', 2)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.Deposit,'¥', 1)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.FeeShipVND)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.DiscountAmount)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.AmountVND)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.TotalCost)))]),_c('td',{staticClass:\"text-end font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dic_summary.TotalProfit)))])])]},proxy:true}],null,false,2658249638)})],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <v-container grid-list-xl fluid>\n        <v-layout row wrap>\n            <v-flex lg3 pl-6>\n                <v-layout row wrap justify-end>\n                    <v-menu\n                        v-model=\"menuStart\"\n                        :close-on-content-click=\"false\"\n                        transition=\"scale-transition\"\n                        offset-y\n                        max-width=\"290px\"\n                        min-width=\"290px\"\n                        >\n                        <template v-slot:activator=\"{ on }\">\n                            <v-text-field\n                            v-model=\"computedStartDateFormatted\"\n                            label=\"Từ ngày\"\n                            hint=\"DD-MM-YYYY\"\n                            persistent-hint\n                            prepend-icon=\"event\"\n                            readonly\n                            v-on=\"on\"\n                            ></v-text-field>\n                        </template>\n                        <v-date-picker v-model=\"dateRange.startDate\" no-title @input=\"menuStart = false\"></v-date-picker>\n                    </v-menu>\n                </v-layout>\n            </v-flex>\n            <v-flex lg3 pl-6>\n                <v-layout row wrap justify-end>\n                    <v-menu\n                        v-model=\"menuEnd\"\n                        :close-on-content-click=\"false\"\n                        transition=\"scale-transition\"\n                        offset-y\n                        max-width=\"290px\"\n                        min-width=\"290px\"\n                        >\n                        <template v-slot:activator=\"{ on }\">\n                            <v-text-field\n                            v-model=\"computedEndDateFormatted\"\n                            label=\"Đến ngày\"\n                            hint=\"DD-MM-YYYY\"\n                            persistent-hint\n                            prepend-icon=\"event\"\n                            readonly\n                            v-on=\"on\"\n                            ></v-text-field>\n                        </template>\n                        <v-date-picker v-model=\"dateRange.endDate\" no-title @input=\"menuEnd = false\"></v-date-picker>\n                    </v-menu>\n                </v-layout>\n            </v-flex>\n            <v-flex lg2 pl-6 pt-0 v-if=\"roleAdmin\">\n                <v-select label=\"Báo cáo theo\" :items=\"report_types\" v-model=\"reportType\" item-text=\"name\" item-value=\"value\"></v-select>\n            </v-flex>\n            <v-flex lg2 pl-6 pt-0 v-if=\"reportType !== 'all' && roleAdmin\">\n                <v-autocomplete :label=\"user_title\" :items=\"user_list\" v-model=\"uidSelected\" item-text=\"Username\" item-value=\"ID\"></v-autocomplete>\n            </v-flex>\n            <v-flex lg2 pl-6>\n                <v-btn @click=\"filter_data\" color=\"#a41c21\" outlined>Xem</v-btn>\n            </v-flex>\n        </v-layout>\n        <v-layout row wrap>\n            <v-flex lg12 v-if=\"items && items.length > 0\">\n                <v-card class=\"mb-4\">\n                    <v-card-title>Biểu đồ doanh thu</v-card-title>\n                    <v-card-text>\n                        <highcharts :options=\"chartOptions\"></highcharts>\n                    </v-card-text>\n                </v-card>\n            </v-flex>\n        </v-layout>\n        <v-layout row wrap>\n            <v-flex lg12 v-if=\"items\">\n                <v-data-table hide-default-footer :headers=\"headers\" :items=\"items\" :server-items-length=\"items.length\" :must-sort=\"true\" :loading=\"loading\" :mobile-breakpoint=\"100\">\n                    <template v-slot:item=\"{ item }\">\n                        <tr>\n                            <td>{{ item.ReportDate }}</td>\n                            <td class=\"text-end\">{{ item.NumberOfCode | currency }}</td>\n                            <td class=\"text-end\">{{ item.NumberOfPack | currency }}</td>\n                            <td class=\"text-end\">{{ item.Weight | currency('', 1) }}</td>\n                            <td class=\"text-end\">{{ item.Volume | currency('', 2) }}</td>\n                            <td class=\"text-end\">{{ item.Deposit | currency('¥', 1) }}</td>\n                            <td class=\"text-end\">{{ item.FeeShipVND | currency }}</td>\n                            <td class=\"text-end\">{{ item.DiscountAmount | currency }}</td>\n                            <td class=\"text-end\">{{ item.AmountVND | currency }}</td>\n                            <td class=\"text-end\">{{ item.TotalCost | currency }}</td>\n                            <td class=\"text-end\">{{ item.TotalProfit | currency }}</td>\n                        </tr>\n                    </template>\n                    <template v-slot:body.append>\n                        <tr>\n                            <td class=\"font-weight-bold\">TỔNG</td>\n                            <td class=\"text-end font-weight-bold\">{{dic_summary.NumberOfCode | currency}}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.NumberOfPack | currency }}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.Weight | currency('', 1) }}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.Volume | currency('', 2) }}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.Deposit | currency('¥', 1) }}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.FeeShipVND | currency }}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.DiscountAmount | currency }}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.AmountVND | currency }}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.TotalCost | currency }}</td>\n                            <td class=\"text-end font-weight-bold\">{{ dic_summary.TotalProfit | currency }}</td>\n                        </tr>\n                    </template>\n                </v-data-table>\n            </v-flex>\n        </v-layout>\n    </v-container>\n  </div>\n</template>\n<script>\nimport { mapState } from \"vuex\";\nimport configs from \"../../configs\";\nimport Filtering from \"@/components/Filtering\";\nimport { request_list } from '@/commons/hpod';\nimport Vue from 'vue';\nimport _ from \"lodash\";\nimport moment from \"moment\"\nexport default {\n    data() {\n        return {\n            pagination: {...configs.PAGINATION},\n            items_per_page: {...configs.ITEMS_PER_PAGE},\n            viewName: \"thong-ke-nap-tien\",\n            dateRange: {\n                startDate: moment.utc(Date.now()).startOf('month').toISOString().substr(0, 10),\n                endDate: moment.utc(Date.now()).endOf('month').toISOString().substr(0, 10),\n            },\n            menuStart: false,\n            menuEnd: false,\n            recharge_methods: configs.RECHARGE_METHODS,\n            staffName: '',\n            method: 0,\n            report_types: [{'value': 'all', 'name': 'Công ty'}, {'value': 'customer', 'name': 'Khách hàng'}, {'value': 'sale', 'name': 'Sale'}],\n            reportType: 'all',\n            user_list: [],\n            uidSelected: 0,\n            user_title: 'Chọn khách hàng'\n        };\n    },\n    watch: {\n        pagination: {\n            handler: function (val, oldVal) {\n                let filterConditions = this.$store.state.commons.filterConditions;\n                this.filterConditions = !_.isEmpty(filterConditions) ? filterConditions[this.viewName] : []\n                this.filter_data();\n            },\n            deep: true\n        },\n        reportType() {\n            if(this.reportType == 'customer') {\n                this.user_title = 'Chọn khách hàng';\n                this.user_list = this.customers;\n            }\n            else if(this.reportType == 'sale') {\n                this.user_title = 'Chọn sale';\n                this.user_list = this.staffs;\n            }\n        }\n    },\n    computed: {\n        ...mapState({\n            items: state => state.report.revenues.data,\n            loading: state => state.report.loading,\n            staffs: state =>\n                _.filter(state.commons.all_users, function(o) {\n                return (\n                    o.RoleID == configs.ROLE_TYPE.Sale\n                );\n            }),\n            customers: state => state.commons.customers,\n        }),\n        computedStartDateFormatted () {\n            return moment(this.dateRange.startDate).format(configs.SHORT_DATE_FORMAT);\n        },\n        computedEndDateFormatted () {\n            return moment(this.dateRange.endDate).format(configs.SHORT_DATE_FORMAT);\n        },\n        roleAdmin() {\n            return this.$store.state.authentication.user.roleid == configs.ROLE_TYPE.Admin || this.$store.state.authentication.user.roleid == configs.ROLE_TYPE.Payment;\n        },\n        dic_summary() {\n            return {\n                'NumberOfCode': _.sumBy(this.items, 'NumberOfCode'),\n                'NumberOfPack': _.sumBy(this.items, 'NumberOfPack'),\n                'Weight': _.sumBy(this.items, 'Weight'),\n                'Volume': _.sumBy(this.items, 'Volume'),\n                'Deposit': _.sumBy(this.items, 'Deposit'),\n                'FeeShipVND': _.sumBy(this.items, 'FeeShipVND'),\n                'DiscountAmount': _.sumBy(this.items, 'DiscountAmount'),\n                'AmountVND': _.sumBy(this.items, 'AmountVND'),\n                'TotalCost': _.sumBy(this.items, 'TotalCost'),\n                'TotalProfit': _.sumBy(this.items, 'TotalProfit'),\n            };\n        },\n        headers() {\n            return [\n                {\n                    text: \"Ngày\",\n                    value: \"ReportDate\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Date\"]\n                },\n                {\n                    text: \"Số bill\",\n                    value: \"NumberOfCode\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Số kiện\",\n                    value: \"NumberOfPack\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Cân nặng\",\n                    value: \"Weight\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Thể tích\",\n                    value: \"Volume\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Chi tệ\",\n                    value: \"Deposit\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Phí ship\",\n                    value: \"FeeShipVND\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Chiết khấu\",\n                    value: \"DiscountAmount\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Thành tiền\",\n                    value: \"AmountVND\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Chi phí\",\n                    value: \"TotalCost\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n                {\n                    text: \"Lợi nhuận\",\n                    value: \"TotalProfit\",\n                    align: \"end\",\n                    filterable: true,\n                    dataType: configs.DATA_TYPE[\"Number\"]\n                },\n            ];\n        },\n        filter_params() {\n            let param = {\n                startTime: moment(this.dateRange.startDate).format(configs.SQL_DATE_FORMAT),\n                endTime: moment(this.dateRange.endDate).format(configs.SQL_DATE_FORMAT),\n                report_type: this.reportType,\n                uidSelected: this.uidSelected,\n                pagination: {\n                    sortDesc: this.pagination.sortDesc,\n                    sortBy: this.pagination.sortBy\n                }\n            }\n            if(this.staffName != '') {\n                param.staffName = this.staffName;\n            }\n            if(this.method != 0) {\n                param.method = this.method;\n            }\n            return param;\n        },\n        chartOptions() {\n            if (!this.items || this.items.length === 0) {\n                return {};\n            }\n            \n            const categories = this.items.map(item => item.ReportDate);\n            const revenueData = this.items.map(item => item.AmountVND);\n            const profitData = this.items.map(item => item.TotalProfit);\n            const costData = this.items.map(item => item.TotalCost);\n            \n            return {\n                chart: {\n                    type: 'column',\n                    height: 400\n                },\n                title: {\n                    text: ''\n                },\n                xAxis: {\n                    categories: categories,\n                    crosshair: true\n                },\n                yAxis: {\n                    min: 0,\n                    title: {\n                        text: 'Số tiền (VNĐ)'\n                    }\n                },\n                tooltip: {\n                    shared: true,\n                    useHTML: true,\n                    formatter: function() {\n                        let s = '<b>' + this.x + '</b><br/>';\n                        this.points.forEach(point => {\n                            s += '<span style=\"color:' + point.color + '\">\\u25CF</span> ' + \n                                 point.series.name + ': <b>' + \n                                 point.y.toLocaleString('vi-VN') + ' VNĐ</b><br/>';\n                        });\n                        return s;\n                    }\n                },\n                plotOptions: {\n                    column: {\n                        pointPadding: 0.2,\n                        borderWidth: 0\n                    }\n                },\n                series: [\n                    {\n                        name: 'Thành tiền',\n                        data: revenueData,\n                        color: '#2196F3'\n                    },\n                    {\n                        name: 'Chi phí',\n                        data: costData,\n                        color: '#FF5722'\n                    },\n                    {\n                        name: 'Lợi nhuận',\n                        data: profitData,\n                        color: '#4CAF50'\n                    }\n                ],\n                credits: {\n                    enabled: false\n                }\n            };\n        }\n    },\n    methods: {\n        filter_data: function () {\n            this.$store.dispatch(\"report/getRevenueReport\", this.filter_params);\n        },\n        exportData() {\n            this.$store.dispatch(\"report/exportList\", this.filter_params);\n        }\n    },\n    mounted() {\n        this.$store.dispatch(\"commons/getAllUsers\");\n        this.$store.dispatch(\"commons/getAllCustomer\");\n        this.filter_data();\n        this.$root.$emit('REQUEST_ROOT_OPTION', {});\n        this.$root.$on(\"REQUEST_REFRESH_DATA\", this.filter_data);\n        this.$root.$on(\"REQUEST_EXPORT_ACTION\", this.exportData);\n    },\n    beforeDestroy() {\n        this.$root.$off(\"REQUEST_REFRESH_DATA\", this.filter_data);\n        this.$root.$off(\"REQUEST_EXPORT_ACTION\", this.exportData);\n    }\n};\n</script>","import mod from \"-!../../../../../../../nguonhangchina/admin/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../nguonhangchina/admin/node_modules/thread-loader/dist/cjs.js!../../../../../../../nguonhangchina/admin/node_modules/babel-loader/lib/index.js!../../../../../../../nguonhangchina/admin/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../nguonhangchina/admin/node_modules/vue-loader/lib/index.js??vue-loader-options!./bao-cao-doanh-thu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../nguonhangchina/admin/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../nguonhangchina/admin/node_modules/thread-loader/dist/cjs.js!../../../../../../../nguonhangchina/admin/node_modules/babel-loader/lib/index.js!../../../../../../../nguonhangchina/admin/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../nguonhangchina/admin/node_modules/vue-loader/lib/index.js??vue-loader-options!./bao-cao-doanh-thu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./bao-cao-doanh-thu.vue?vue&type=template&id=6c23046b&\"\nimport script from \"./bao-cao-doanh-thu.vue?vue&type=script&lang=js&\"\nexport * from \"./bao-cao-doanh-thu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../nguonhangchina/admin/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}