{"version":3,"sources":["webpack:///./src/hooks/Reporting/useHandleCollapse.ts","webpack:///./src/hooks/Reporting/useYear.ts","webpack:///./src/views/System/NSTGroupMSRP/NSTGroupMSRP/utils.ts","webpack:///./src/hooks/Reporting/useExportExcel.ts","webpack:///./src/API/report.ts","webpack:///./src/hooks/Reporting/useBuMakeTP.ts","webpack:///./src/hooks/Reporting/useHeaderTip.ts","webpack:///./src/hooks/Reporting/useFindBu.ts"],"names":["useHandleCollapse","tableHeight","isOpen","handleCollapse","value","tablePosition","useYear","year","add","format","openYear","handlerOpenChange","status","handlerPanelChange","time","tableData","saveData","baseColCount","columnsWidth","monthHeader","displayName","monthMaps","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","monthKeys","getFirstHeader","allYear","baseHeader","pastMonth","slice","futureMonth","doubleFutureMonth","map","item","flat","concat","getSecondHeader","getDataKeys","baseKeys","pastMonthKeys","doubleFutureMonthKeys","setColumnWidth","sheet","secondHeader","forEach","index","setFilterButtonVisible","rowFilter","dataKeys","keyInd","length","filterButtonVisible","setHeader","spread","console","log","getActiveSheet","suspendPaint","setRowCount","Spread","Sheets","SheetArea","colHeader","header","setColumnCount","viewport","range","Range","Filter","HideRowFilter","filterDialogVisibleInfo","sortByColor","row","cell","setValue","getCell","backColor","getRange","hAlign","HorizontalAlign","right","left","center","ranges","autoMerge","AutoMerge","AutoMergeDirection","AutoMergeMode","free","column","rowHeader","resumePaint","bindDataTable","data","spreadNS","canEdit","Style","locked","fontColor","foreColor","rowIndex","isMsrp","setFormatter","msrp","override","setStyle","setBorder","LineBorder","LineStyle","thin","all","setRowHeight","autoFitRow","brand","typeClass","frozenColumnCount","initSpread","options","rowHeaderVisible","tabNavigationVisible","tabStripVisible","scrollbarMaxAlign","scrollByPixel","isProtected","sheetStyle","getDefaultStyle","vAlign","VerticalAlign","setDefaultStyle","fontBlackColor","setData","args","type","codeValue","col","newValue","isNaN","Number","error","resumeEvent","key","rowData","cellData","isChange","text","numNext","valueOf","toString","i","itemData","id","overrideValue","nstGroupName","nstGroup","month","ind","findIndex","push","splice","bind","Events","ValueChanged","e","RangeChanged","sender","action","RangeChangedAction","clear","changedCells","arg","isCopy","ClipboardPasting","info","option","allowSelectLockedCells","allowSelectUnlockedCells","allowFilter","allowSort","allowResizeRows","allowResizeColumns","allowEditObjects","allowDragInsertRows","allowDragInsertColumns","allowInsertRows","allowInsertColumns","allowDeleteRows","allowDeleteColumns","protectionOptions","usetableHeight","idTop","resizeHandler","clientHeight","document","body","tableOffsetTop","querySelector","getBoundingClientRect","top","style","height","window","addEventListener","LicenseKey","useExportExcel","workbook","fileName","times","Date","toJSON","substr","replace","excelIo","json","columnHeadersAsFrozenRows","includeAutoMergedCells","save","getStructureList","saveTree","params","getItemList","postItem","unBindItem","sid","itemId","BindItem","paramsId","controllingReportProgram","controllingReportVehicle","salesReport","getSIConfigurationStr","useBuMakeTP","queryParams","isNst","store","buOptions","makeOptions","modelOptions","brandOptions","typeClassOptions","resetObj","intoFull","target","isMultiple","bu","make","model","buNameIdMap","state","user","buList","reduce","maps","nameCn","buNameIdMapList","handleFocus","isAll","buId","b","nsttype","Promise","resolve","reject","then","res","catch","err","Object","assign","tipText","setId","toolTipElement","getHitInfo","x","y","cellStyle","cellRect","context","sheetArea","processMouseEnter","hitinfo","this","formal","div","createElement","position","border","boxShadow","font","background","padding","whiteSpace","innerText","transform","display","appendChild","toolTipElementWidth","offsetWidth","totalWidth","Zs","width","bounds","processMouseLeave","hitInfo","CellTypes","ColumnHeader","useHeaderTip","headerArr","setCellType","TipCellType","useFindBu","buIdMap","obj","nameEn","findBu","mbIndex","initIndex"],"mappings":"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","file":"js/chunk-645c58d2.0f1bfb50.js","sourcesContent":["import { ref, nextTick } from 'vue'\nimport useTableHeight from \"@/hooks/useTableHeight\";\nconst useHandleCollapse = () => {\n const { tableHeight } = useTableHeight();\n // 折叠控制\n const isOpen = ref(false)\n\n const handleCollapse = () => {\n isOpen.value = !isOpen.value\n nextTick(() => {\n const tablePosition = useTableHeight(true, '.pagination-container', true);\n tableHeight.value = tablePosition.tableHeight.value\n })\n }\n return {\n handleCollapse,\n isOpen\n }\n}\nexport default useHandleCollapse","import { ref } from 'vue';\nimport moment from \"moment\";\nexport default function useYear() {\n // 年份\n const year = ref(moment().add('month', 1).format('YYYY'));\n const openYear = ref(false);\n const handlerOpenChange = (status: boolean): void => {\n openYear.value = status;\n };\n const handlerPanelChange = (value: string): void =>{\n const time = moment(value).format('YYYY');\n year.value = time as string;\n openYear.value = false;\n }\n return {\n year,\n openYear,\n handlerOpenChange,\n handlerPanelChange\n }\n}","import GC from '@grapecity/spread-sheets'\nimport { reactive, toRefs, onMounted, } from 'vue';\nimport { HeaderData, NstGroupData, MsrpData } from '../types'\nimport { getMonth } from '@/utils'\nimport { message } from 'ant-design-vue'\ninterface TablePosition {\n tableHeight: number;\n}\n\ninterface SaveData {\n make?: any;\n id: string;\n overrideValue: number;\n version?: string;\n year?: string;\n month: string;\n brand: string | null;\n typeClass: string | null;\n nstGroup: string | null; \n nstGroupName: string | null; \n}\n\n// 当前月\nconst currentMonth = getMonth();\n\nlet tableData: NstGroupData[];\n\nexport let saveData: SaveData[] = [];\n\n// 表格确定列数量\nconst baseColCount = 4;\n\nconst columnsWidth = {\n 'Brand': 70,\n 'Type Class': 85,\n 'NST Group': 150,\n 'NST Group Name': 170,\n}\n\nconst monthHeader = [{\n displayName: 'Jan',\n},{\n displayName: 'Feb',\n},{\n displayName: 'Mar',\n},{\n displayName: 'Apr',\n},{\n displayName: 'May',\n},{\n displayName: 'Jun',\n},{\n displayName: 'Jul',\n},{\n displayName: 'Aug',\n},{\n displayName: 'Sep',\n},{\n displayName: 'Oct',\n},{\n displayName: 'Nov',\n},{\n displayName: 'Dec',\n}]\n\nconst monthMaps = {\n jan: '1',\n feb: '2',\n mar: '3',\n apr: '4',\n may: '5',\n jun: '6',\n jul: '7',\n aug: '8',\n sep: '9',\n oct: '10',\n nov: '11',\n dec: '12'\n}\n\nconst monthKeys = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']\n\nconst getFirstHeader = (allYear: number) => {\n const baseHeader = [{\n displayName: 'Vehicle',\n },{\n displayName: 'Vehicle',\n },{\n displayName: 'Vehicle',\n },{\n displayName: 'Vehicle',\n }];\n const pastMonth = monthHeader.slice(0, allYear)\n const futureMonth = monthHeader.slice(allYear)\n debugger\n const doubleFutureMonth = futureMonth.map((item) => {\n return [item, item]\n }).flat()\n\n return baseHeader.concat(pastMonth, doubleFutureMonth) \n}\n\nconst getSecondHeader = (allYear: number) => {\n const baseHeader = [{\n displayName: 'Brand',\n },{\n displayName: 'Type Class',\n },{\n displayName: 'NST Group',\n },{\n displayName: 'NST Group Name',\n }];\n const pastMonth = monthHeader.slice(0, allYear).map((item) => {\n return {\n displayName: ''\n }\n })\n\n const futureMonth = monthHeader.slice(allYear)\n \n const doubleFutureMonth = futureMonth.map(() => {\n return [{\n displayName: 'MSRP',\n },{\n displayName: 'Override',\n }]\n }).flat()\n return baseHeader.concat(pastMonth, doubleFutureMonth) \n}\n\nconst getDataKeys = (allYear: number) => {\n const baseKeys = ['brand', 'typeClass', 'nstGroup', 'nstGroupName'];\n const pastMonthKeys = monthKeys.slice(0, allYear)\n const futureMonth = monthKeys.slice(allYear)\n \n const doubleFutureMonthKeys = futureMonth.map((item) => {\n return [item, item]\n }).flat()\n\n return baseKeys.concat(pastMonthKeys, doubleFutureMonthKeys) \n}\n\n// const firstHeader = getFirstHeader()\n// const secondHeader = getSecondHeader()\n// const dataKeys: string[] = getDataKeys()\n// 设置表格的头部,可以不占用单元格\n// const header: HeaderData[][] = [\n// firstHeader, secondHeader\n// ]\n\n// 设置列宽度\nconst setColumnWidth = (sheet: GC.Spread.Sheets.Worksheet, secondHeader: {displayName: string}[]) => {\n secondHeader.forEach((item, index) => {\n if (!columnsWidth[item.displayName]) {\n sheet.setColumnWidth(index, 120)\n } else {\n sheet.setColumnWidth(index, columnsWidth[item.displayName])\n }\n })\n}\n\nconst setFilterButtonVisible = (rowFilter: GC.Spread.Sheets.Filter.HideRowFilter, dataKeys: string[]) => {\n for (let keyInd = 0; keyInd < dataKeys.length; keyInd++) { \n if (keyInd > baseColCount || keyInd === baseColCount)\n rowFilter.filterButtonVisible(keyInd, false)\n }\n}\n\n// 设置表头\nexport const setHeader = (spread: GC.Spread.Sheets.Workbook, allYear: number ) => {\n console.log(allYear, 'allYear')\n const sheet = spread.getActiveSheet();\n //挂起\n sheet.suspendPaint();\n\n //设置header行数为2行\n sheet.setRowCount(2, GC.Spread.Sheets.SheetArea.colHeader);\n\n // 文字换行\n // const row = sheet.getRange(-1, -1, -1, -1, GC.Spread.Sheets.SheetArea.viewport);\n // row.wordWrap(true);\n const header: HeaderData[][] = [\n getFirstHeader(allYear), getSecondHeader(allYear)\n ] \n setColumnWidth(sheet, getSecondHeader(allYear));\n sheet.setColumnCount(getSecondHeader(allYear).length, GC.Spread.Sheets.SheetArea.viewport)\n const range = new GC.Spread.Sheets.Range(-1, 0, -1, getSecondHeader(allYear).length);\n const rowFilter = new GC.Spread.Sheets.Filter.HideRowFilter(range);\n sheet.rowFilter(rowFilter);\n rowFilter.filterDialogVisibleInfo({\n sortByColor: false,\n })\n const dataKeys: string[] = getDataKeys(allYear)\n setFilterButtonVisible(rowFilter, dataKeys)\n //set header 设置头的样式\n for (let row = 0; row < header.length; row++) {\n for (let cell = 0; cell < header[row].length; cell++) {\n sheet.setValue(row, cell, header[row][cell].displayName, GC.Spread.Sheets.SheetArea.colHeader);\n sheet.getCell(row, cell, GC.Spread.Sheets.SheetArea.colHeader).backColor('#bfbfbf')\n }\n // sheet.setRowHeight(row, 40, GC.Spread.Sheets.SheetArea.colHeader);\n }\n\n for (let index = 0; index < header[0].length; index++) {\n if (index > baseColCount - 1) {\n sheet.getRange(-1, index, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign.right)\n // sheet.getRange(1, index, 1, 1, GC.Spread.Sheets.SheetArea.colHeader).hAlign(GC.Spread.Sheets.HorizontalAlign.right)\n } else {\n sheet.getRange(-1, index, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign.left)\n // sheet.getRange(1, index, 1, 1, GC.Spread.Sheets.SheetArea.colHeader).hAlign(GC.Spread.Sheets.HorizontalAlign.left)\n\n }\n }\n sheet.getRange(-1, 0, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign.center)\n sheet.getRange(-1, 1, -1, 1).hAlign(GC.Spread.Sheets.HorizontalAlign.center)\n\n // // 必须加上这两个才能折叠展开\n // sheet.options.protectionOptions.allowOutlineRows = true\n // sheet.options.protectionOptions.allowOutlineColumns = true\n // 自动合并\n const ranges = new GC.Spread.Sheets.Range(-1, -1, -1, -1);\n sheet.autoMerge(ranges, GC.Spread.Sheets.AutoMerge.AutoMergeDirection.row, GC.Spread.Sheets.AutoMerge.AutoMergeMode.free, GC.Spread.Sheets.SheetArea.colHeader);\n sheet.autoMerge(ranges, GC.Spread.Sheets.AutoMerge.AutoMergeDirection.column, GC.Spread.Sheets.AutoMerge.AutoMergeMode.free, GC.Spread.Sheets.SheetArea.rowHeader);\n //重绘\n sheet.resumePaint();\n}\n\n\n\n// 绑定数据\nexport const bindDataTable = (spread: GC.Spread.Sheets.Workbook, data: NstGroupData[], allYear: number) => {\n tableData = data;\n // 清空之前的saveData\n saveData = [];\n // 挂起\n spread.suspendPaint();\n const sheet = spread.getActiveSheet();\n const spreadNS = GC.Spread.Sheets;\n // 设置多少行和列\n sheet.setRowCount(data.length, GC.Spread.Sheets.SheetArea.viewport)\n // sheet.setColumnCount(secondHeader.length, GC.Spread.Sheets.SheetArea.viewport)\n const canEdit = new spreadNS.Style();\n canEdit.locked = false;\n\n // const range = new GC.Spread.Sheets.Range(-1, 0, -1, secondHeader.length);\n // const rowFilter = new GC.Spread.Sheets.Filter.HideRowFilter(range);\n // sheet.rowFilter(rowFilter);\n // rowFilter.filterDialogVisibleInfo({\n // sortByColor: false,\n // })\n\n // setFilterButtonVisible(rowFilter)\n\n const fontColor = new spreadNS.Style();\n fontColor.foreColor = 'red'\n fontColor.locked = false;\n const dataKeys = getDataKeys(allYear)\n console.log(dataKeys);\n // 设置表单数据和样式\n data.forEach((item, rowIndex) => {\n let isMsrp = true;\n for (let keyInd=0; keyInd {\n spread.suspendPaint();\n const sheet = spread.getActiveSheet();\n const spreadNS = GC.Spread.Sheets;\n // 过滤\n // const range = new GC.Spread.Sheets.Range(-1, 0, -1, 18);\n // const rowFilter = new GC.Spread.Sheets.Filter.HideRowFilter(range);\n // sheet.rowFilter(rowFilter);\n // rowFilter.filterDialogVisibleInfo({\n // sortByColor: false,\n // })\n // 设置单元格宽高\n // sheet.defaults.rowHeight = 40;\n // 设置列宽度\n // setColumnWidth(sheet);\n\n // 设置列数\n // sheet.setColumnCount(firstHeader.length);\n\n // 设置隐藏列头\n sheet.options.rowHeaderVisible = false\n // sheet.options.colHeaderVisible = true\n // sheet.options.clipBoardOptions = spreadNS.ClipboardPasteOptions.values;\n\n // sheet是否显示x\n spread.options.tabNavigationVisible = false\n spread.options.tabStripVisible = false\n \n //填充铺满整个canvas\n spread.options.scrollbarMaxAlign = true;\n spread.options.scrollByPixel = true;\n\n // 要设置允保护,不允许的才能生效\n sheet.options.isProtected = true;\n // 不允许单个格子编辑,是样式控制\n const sheetStyle = sheet.getDefaultStyle();\n //修改并设置表的默认样式locked为false.\n sheetStyle.locked = true;\n\n //默认对其方式\n sheetStyle.hAlign = spreadNS.HorizontalAlign.center;\n sheetStyle.vAlign = spreadNS.VerticalAlign.center;\n sheet.setDefaultStyle(sheetStyle);\n\n const fontColor = new spreadNS.Style();\n fontColor.foreColor = 'red'\n fontColor.locked = false;\n\n const fontBlackColor = new spreadNS.Style();\n fontBlackColor.foreColor = 'black'\n fontBlackColor.locked = false;\n const dataKeys = getDataKeys(allYear)\n const secondHeader = getSecondHeader(allYear)\n const setData = (args: any, type: boolean) => {\n let codeValue = ''\n if (type) {\n codeValue = sheet.getCell(args.row, args.col).value()\n } else {\n codeValue = args.newValue\n }\n \n if (isNaN(Number(args.newValue)) && !type) {\n message.error('请输入数字类型');\n sheet.resumeEvent();\n return;\n }\n const row = args.row;\n const col = args.col;\n if (allYear + baseColCount > col || row > tableData.length - 1 ) {\n return\n }\n const key = dataKeys[col]\n const rowData = tableData[row];\n const cellData = rowData[key] as MsrpData\n let isChange = true;\n let text: any = new Number(codeValue)\n const numNext = text.valueOf()\n if (typeof(numNext) === 'number') {\n if (numNext === 0 || isNaN(numNext)) {\n text = null; \n } else {\n text = text.toString()\n }\n } else {\n text = null; \n } \n\n if (cellData.override === text) {\n // override数据没发生个变化\n isChange = false;\n }\n \n // override数据没发生个变化,对应后面月份数据自动改变\n for (let i=col ; i {\n return item.id === cellData.id\n })\n\n // 当前数据不存在于saveData则存入saveData 或 和原数据不相等\n if (ind === -1 && isChange) {\n saveData.push(itemData)\n // 编辑过的Override单元格变成红色字体\n sheet.setStyle(row, i, fontColor);\n } else if (ind !== -1 && isChange){\n // 当前数据存在于saveData且变化则修改该数据\n saveData[ind].overrideValue = itemData.overrideValue; \n sheet.setStyle(row, i, fontColor); \n } else if (ind !== -1 && isChange === false){\n // 在saveData中,但是和原数据相比未变化,删除\n saveData.splice(ind, 1)\n // 回复原有样式\n if (cellData.status !== '2') {\n sheet.setStyle(row, i, fontColor);\n } else {\n sheet.setStyle(row, i, fontBlackColor);\n } \n } else {\n // 没修改,也不存在于saveData中(相当于从来没编辑过)\n if (cellData.status !== '2' && cellData.override) {\n sheet.setStyle(row, i, fontColor);\n } else {\n sheet.setStyle(row, i, fontBlackColor);\n } \n return\n } \n\n // 当前行对应修改月份后面月份的Override都变\n sheet.setValue(row, i + 2, text, GC.Spread.Sheets.SheetArea.viewport);\n\n // 数据格式设置(放在setStyle前面不生效)\n // sheet.setFormatter(row, i, \"#,##0.00\", spreadNS.SheetArea.viewport);\n sheet.setFormatter(row, i, \"#,##\", spreadNS.SheetArea.viewport);\n\n i += 2;\n }\n }\n\n spread.bind(spreadNS.Events.ValueChanged, function (e: any, args: any) {\n setData(args, false)\n });\n\n sheet.bind(GC.Spread.Sheets.Events.RangeChanged, function (sender: any, args: any) {\n if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {\n args.changedCells.forEach((arg: any) => {\n setData({...arg, newValue: null}, false)\n })\n }\n })\n\n let isCopy = false;\n\n sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (e: any, info: any) {\n isCopy = true;\n });\n\n sheet.bind(spreadNS.Events.RangeChanged, (e: any, info: any) => {\n // 只处理粘贴进来的\n if (isCopy === true) {\n info.changedCells.forEach((item: any) => {\n setData(item, true )\n })\n isCopy = false\n }\n }) \n\n const option = {\n allowSelectLockedCells: true,\n allowSelectUnlockedCells: true,\n allowFilter: true,\n allowSort: true,\n allowResizeRows: false,\n allowResizeColumns: true,\n allowEditObjects: false,\n allowDragInsertRows: true,\n allowDragInsertColumns: true,\n allowInsertRows: false,\n allowInsertColumns: false,\n allowDeleteRows: false,\n allowDeleteColumns: false\n };\n sheet.options.protectionOptions = option;\n\n spread.resumePaint();\n}\n\n// 计算表格的高度\nexport const usetableHeight = (id: string, idTop?: string) => {\n const tablePosition = reactive({tableHeight: 200});\n const resizeHandler = (): void => {\n try {\n // 获取body的高度\n const clientHeight: number = document.body.clientHeight;\n const tableOffsetTop: number = (document.querySelector(id) as HTMLDivElement).getBoundingClientRect().top;\n \n tablePosition.tableHeight = clientHeight - tableOffsetTop - 20;\n (document.querySelector(id) as HTMLDivElement).style.height = tablePosition.tableHeight + 'px'\n } catch (e) {\n console.log(e);\n }\n }\n onMounted(() => {\n resizeHandler();\n window.addEventListener('resize', resizeHandler);\n })\n\n return toRefs(tablePosition);\n}","import GC from '@grapecity/spread-sheets';\nimport '@grapecity/spread-sheets-print';\nimport * as ExcelIO from '@grapecity/spread-excelio';\nimport { saveAs } from 'file-saver';\nGC.Spread.Sheets.LicenseKey = (ExcelIO as any).LicenseKey =\n 'oasis.mercedes-benz.com.cn|oasis-training.mercedes-benz.com.cn|oasis-uat.mercedes-benz.com.cn|oasis-dev.mercedes-benz.com.cn,858593977834555#B0j3vnNr3SYhRHVj5kbqtkWXRDMW3SNqFFON9GaMJ7YaV7QjVkZENjR7kXZ6RHeBpEN58WT6QUY42WeJ36ZEt4azlnZ9kXR624VtZzcrAlRTJ4LudWSMlDVul5KG3CeNNXOEZVVwInV6I6LUVTO486cwRldIdDepBHNYJ6cDJWbT36L0RXT6BFT7cTWHBHeQNncygXT59UTmh7bLdmNRtiY6RmTHRlciNnZ9ljQGtmSvUXS5J4KyUHMYRUNRRnU5lkYjN5ThJnMYZ5ayN4dMlFVtR6TmJXY5UUUrsyc9M4N9ZjNMplcxllMtRTTxxkeSZTbw3mMn5WW054LRdFelNFZvcHelNkTHFWUTV7VyUjR7hjMOJVaJdXO5plZyI6T5ZDcIVnc6NnZ55kbwFzV9cERiojITJCLiYUMGFTQDZUNiojIIJCLxIDN8ETMyETN0IicfJye&Qf35VfiUURJZlI0IyQiwiI4EjL6BCITpEIkFWZyB7UiojIOJyebpjIkJHUiwiIzATNwkDMgYDM4ATMyAjMiojI4J7QiwiIuNmLt36YuonblJWLzVGZlNmcl5mL6VGZtMXazF6bs86Yu46bj9ieuVmYtMXZkV6YyVWbuQXY55ycpNXYvxibj9SbvNmL09WZi5yclRWZjJXZt9yZulmbpFmc45ycpNXYvxibj9SbvNmL09WZi5yclRWZjJXZt9ycpNXYvJiOiMXbEJCLig1jlzahlDZmpnInmTYtoXpimrLjl1Yjl7KukfKplL9ilb8plTLimLiOiEmTDJCLiUTN5QzM8czN9MTO5gTN8IiOiQWSiwSflNHbhZmOiI7ckJye0ICbuFkI1pjIEJCLi4TPRR5QoFHTzgDdslEZiB5dDJGarFkR5QmNNFFcvBnYLRkWXBlfzCX';\nconst useExportExcel = (workbook: GC.Spread.Sheets.Workbook, fileName: string) => {\n const times = new Date(+new Date() + 8 * 3600 * 1000)\n .toJSON()\n .substr(0, 19)\n .replace('T', '')\n .replace(/-/g, '')\n .replace(/:/g, '')\n .substr(0, 12);\n const excelIo = new ExcelIO.IO();\n const json = workbook.toJSON({\n columnHeadersAsFrozenRows: true,\n includeAutoMergedCells: true\n });\n excelIo.save(json, function (data: any) {\n saveAs(data, fileName + '-' + times);\n });\n};\nexport default useExportExcel;\n","import { fetchGet, fetchPost, fetchPostPic, fetchGetMess } from './index'\nimport { string } from 'vue-types';\n// import type { InterestInfoItem, InterestInfo, InterestMonthTotalAmount } from '@/views/Closing/type'\nexport interface HeaderProps {\n name: string;\n formal?: string;\n}\nexport interface ReportProgramResponse {\n firstRight: HeaderProps[];\n secondRight: HeaderProps[];\n tableData: string[][];\n}\nexport interface ReportVehicleResponse {\n [key: string]: string | number | null | boolean;\n}\nexport interface ReportSIConfiguration{\n bu: string;\n buName: string;\n typeClassCode: string;\n exclude_fa_form: string[][];\n fa_fa_buydown_form: string[][];\n}\nexport interface ReportSIConfigurationStr{\n bu: string;\n buName: string;\n typeClassCode: string;\n exclude_fa_form: ReportVehicleResponse[];\n fa_fa_buydown_form: ReportVehicleResponse[];\n}\n// 获取structure列表信息\nexport const getStructureList = (): Promise => {\n return fetchGet('/pcapi/report/structure/tree')\n}\n// 批量保存接口\nexport const saveTree = (params = {}): Promise => {\n return fetchPost('/pcapi/report/structure/upsert', params)\n}\n// 获取item选项列表数据\nexport const getItemList = (): Promise => {\n return fetchGet('/pcapi/report/structure/validReportItems');\n}\n\n// 添加item选项接口\nexport const postItem = (params = {}): Promise => {\n return fetchPost('/pcapi/report/structure/addReportItem', params)\n}\n\n// 解绑item选项\nexport const unBindItem = (params: any): Promise => {\n return fetchGet('/pcapi/report/structure/unbindReportStructItem/' + params.sid + '/' + params.itemId);\n}\n\n// 绑定item选项\nexport const BindItem = (params = {},paramsId=null,): Promise => {\n return fetchGet('/pcapi/report/structure/bindReportStructItem/' + paramsId ,params);\n}\n\n// 基于program维度的budget报表\nexport const controllingReportProgram = (params = {}): Promise => {\n return fetchGet('/bgapi/controlling/report/program', params);\n}\n\n// 基于program维度的budget报表\nexport const controllingReportVehicle = (params = {}): Promise => {\n return fetchGet('/bgapi/controlling/report/vehicle', params);\n}\n\nexport const salesReport = (params = {}): Promise => {\n return fetchPost('/bgapi/sales/report', params)\n}\n// [OASIS-8742] 获取 SI Configuration 报告\nexport const getSIConfiguration = (params = {}): Promise => {\n return fetchGet('/pgapi/report/get_si_configuration', params);\n}\n// [OASIS-8742] 获取 SI Configuration 报告\nexport const getSIConfigurationStr = (params = {}): Promise => {\n return fetchGet('/pgapi/report/get_si_configuration_str', params);\n}\n\n\n","import { ref } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { findBuVehicleList } from \"@/API/approve\";\n// import deepClone from '@/utils/deepClone'\nexport interface BuOptionProps {\n id: string;\n name: string;\n}\nconst useBuMakeTP = (queryParams: T, isNst = false) => {\n const store = useStore();\n const buOptions = ref([]);\n const makeOptions = ref();\n const modelOptions = ref();\n //brand options\n const brandOptions = ref();\n const typeClassOptions = ref();\n const resetObj = {};\n const data = ref(queryParams);\n // 获取bu make brand typeclass联动的接口\n const intoFull = (target: string, isMultiple: boolean) => {\n switch (target) {\n case \"buId\":\n buOptions.value = [];\n data.value.bu = isMultiple ? [] : \"\";\n break;\n case \"make\":\n makeOptions.value = [];\n data.value.make = isMultiple ? [] : \"\";\n break;\n case \"brand\":\n brandOptions.value = [];\n data.value.brand = isMultiple ? [] : \"\";\n break;\n case \"model\":\n modelOptions.value = [];\n data.value.model = isMultiple ? [] : \"\";\n break;\n case \"typeClass\":\n typeClassOptions.value = [];\n data.value.typeClass = isMultiple ? [] : \"\";\n break;\n }\n };\n // 因为下拉接口要buId\n const buNameIdMap = () => {\n return store.state.user.buList.reduce((maps: any, bu: any) => {\n return { ...maps, [bu.nameCn]: bu.id };\n }, {});\n };\n\n const buNameIdMapList = buNameIdMap();\n // 获取焦点获取数据\n const handleFocus = (target: string, isMultiple: boolean, isAll = false) => {\n const params = {\n buId: typeof data.value.bu === 'string' ? buNameIdMapList[data.value.bu] : data.value.bu.map((b: any) => {\n return buNameIdMapList[b];\n }),\n brand: data.value.brand,\n make: data.value.make,\n typeClass: data.value.typeClass,\n model: data.value.model,\n nsttype: !isNst ? \"\" : \"nst\",\n target,\n };\n intoFull(target, isMultiple);\n\n return new Promise((resolve, reject) => {\n findBuVehicleList(params)\n .then((res: BuOptionProps[]) => {\n switch (target) {\n case \"buId\":\n buOptions.value = res;\n break;\n case \"make\":\n makeOptions.value = res;\n break;\n case \"brand\":\n brandOptions.value = res;\n break;\n case \"model\":\n modelOptions.value = res;\n break;\n case \"typeClass\":\n typeClassOptions.value = res;\n break;\n }\n resolve(res);\n })\n .catch((err) => {\n reject(err);\n });\n });\n };\n Object.assign(resetObj, queryParams);\n return {\n handleFocus,\n buOptions,\n makeOptions,\n brandOptions,\n typeClassOptions,\n modelOptions,\n resetObj,\n buNameIdMap,\n };\n};\nexport default useBuMakeTP;\n","\nimport GC from '@grapecity/spread-sheets'\n\ninterface HitInfo {\n x: number;\n y: number;\n row: any;\n col: any;\n cellStyle: any;\n cellRect: any;\n sheetArea: any;\n sheet: any;\n}\ninterface HeaderProps {\n name: string;\n formal?: string;\n}\n\nclass TipCellType extends GC.Spread.Sheets.CellTypes.ColumnHeader {\n header: HeaderProps[];\n tipText: string;\n setId: string;\n top: number;\n toolTipElement?: HTMLDivElement;\n\n\n constructor(header: HeaderProps[], tipText: string, setId: string, top: number, toolTipElement: any = null) {\n super();\n this.header = header;\n this.tipText = tipText;\n this.setId = setId\n this.top = top\n toolTipElement = null;\n }\n\n\n getHitInfo(x: number, y: number, cellStyle: any, cellRect: any, context: any): HitInfo {\n return {\n x: x,\n y: y,\n row: context.row,\n col: context.col,\n cellStyle: cellStyle,\n cellRect: cellRect,\n sheetArea: context.sheetArea,\n sheet: context.sheet\n };\n }\n\n processMouseEnter(hitinfo: HitInfo): boolean {\n if (!this.header[hitinfo.col].formal) {\n return false;\n }\n if (!this.toolTipElement) {\n const div = document.createElement(\"div\");\n div.style.position = 'absolute';\n div.style.border = '1px #C0C0C0 solid';\n div.style.boxShadow = '1px 2px 5px rgba(0,0,0,0.4)';\n div.style.font = '12px';\n div.style.background = 'white';\n div.style.padding = '5px';\n div.style.whiteSpace = 'nowrap'\n this.toolTipElement = div;\n }\n this.toolTipElement.innerText = this.header[hitinfo.col].formal!;\n this.toolTipElement.style.left = hitinfo.x + 'px';\n this.toolTipElement.style.transform = 'translateX(-50%)';\n this.toolTipElement.style.display = 'block';\n (document.querySelector(this.setId) as Element).appendChild(this.toolTipElement);\n this.toolTipElement.style.top = this.top + 'px';\n const toolTipElementWidth = this.toolTipElement.offsetWidth;\n const totalWidth = hitinfo.sheet.Zs.width;\n if (hitinfo.x + toolTipElementWidth / 2 > totalWidth) {\n const bounds: number = totalWidth - (hitinfo.x + toolTipElementWidth / 2) || 0;\n this.toolTipElement.style.left = hitinfo.x + bounds + 'px';\n }\n return true;\n }\n\n processMouseLeave(hitInfo: HitInfo): boolean {\n if (this.toolTipElement) {\n this.toolTipElement.style.display = 'none';\n }\n return true;\n }\n}\nconst useHeaderTip = (sheet: GC.Spread.Sheets.Worksheet, headerArr: HeaderProps[][], setId: string, top: number) => {\n for (let row = 0; row < headerArr.length; row++) {\n for (let col = 0; col < headerArr[row].length; col++) {\n //设置固定字段的tip提示\n if (headerArr[row][col].formal) {\n console.log(row, col)\n // sheet.setCellType(row, col, new GC.Spread.Sheets.CellTypes.ColumnHeader(), GC.Spread.Sheets.SheetArea.colHeader)\n sheet.setCellType(row, col, new TipCellType(headerArr[1], headerArr[row][col].formal as string, setId, top), GC.Spread.Sheets.SheetArea.colHeader);\n }\n }\n }\n}\nexport default useHeaderTip","import { computed } from \"vue\";\nimport { useStore } from \"vuex\";\nconst useFindBu = () => {\n const { state } = useStore();\n const buList = computed(() => state.user.buList);\n const buIdMap = buList.value.reduce((obj: any, item: any) => {\n return { ...obj, [item.nameEn]: item.id };\n }, {});\n const findBu = () => {\n const mbIndex = buList.value.findIndex((i: any) => {\n return i.nameEn === \"MBPC\";\n });\n const initIndex = mbIndex === -1 ? 0 : mbIndex;\n return buList.value[initIndex].nameEn;\n };\n return {\n buList,\n findBu,\n buIdMap,\n };\n};\nexport default useFindBu;\n"],"sourceRoot":""}