Przeglądaj źródła

fix: 排行榜导出数据

ystl_myq 2 miesięcy temu
rodzic
commit
54806f2207

+ 1 - 1
src/components/echarts/radar.vue

@@ -4,7 +4,7 @@ import { useDark, useECharts } from "@pureadmin/utils";
 import { getPersonDimensionChartsList } from "@/api/draw";
 const $props = defineProps({
   radarRefList: {
-    type: Array
+    type: Object
   }
 });
 onMounted(() => {

+ 16 - 3
src/components/rankTable/draw.vue

@@ -124,7 +124,7 @@ defineExpose({
 <template>
   <div class="w-full aa">
     <vxe-button class="float-right -top-0 mr-20 mb-4" @click="exportEvent"
-      ><el-icon><Download /></el-icon>导出</vxe-button
+      ><el-icon> <Download /> </el-icon>&nbsp;&nbsp;导出</vxe-button
     >
     <vxe-grid
       v-if="$route.name != 'workerDrak'"
@@ -189,6 +189,7 @@ onMounted(() => {
   }
 });
 const $route = useRoute();
+const fileData = ref();
 const RANK_IMG = [rank1, rank2, rank3];
 const deptName = ref("");
 const name = ref("");
@@ -509,15 +510,25 @@ const loadData = () => {
 
   setTimeout(() => {
     gridOptions.data = tableData;
+    fileData.value = JSON.parse(JSON.stringify(tableData));
+    if ($route.name != "workerDrak") {
+      fileData.value[0].ranking = "平均得分";
+    }
     gridOptions.loading = false;
     useUserStoreHook().tabload = false;
   }, 500);
 };
 
 // 监听年份变化,重新渲染
-watch(selectYear, () => {
+watch($prop.rankTableRefList, newVal => {
+  init(newVal.data, newVal.dept, newVal.name);
   createColumns();
   loadData();
+  gridRef.value.setMergeCells([
+    // 合并第一行前两列
+    { row: 0, col: 0, rowspan: 1, colspan: 2 },
+    { row: 2, col: 1, rowspan: 0, colspan: 0 }
+  ]);
 });
 // 导出
 const exportEvent = () => {
@@ -533,7 +544,9 @@ const exportEvent = () => {
     $grid.exportData({
       type: "xlsx",
       filename: fileName,
-      useStyle: true
+      useStyle: true,
+      isMerge: true,
+      data: fileData.value
     });
   } else {
     ElMessage({

+ 12 - 4
src/components/rankTable/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="w-full aa">
-    <vxe-button class="float-right -top-10 mr-20 mb-4" @click="exportEvent"
-      ><el-icon> <Download /> </el-icon>导出</vxe-button
+    <vxe-button class="float-right -top-20 mr-20 mb-4 z-50" @click="exportEvent"
+      ><el-icon> <Download /> </el-icon>&nbsp;&nbsp;导出</vxe-button
     >
     <vxe-grid
       v-if="$route.name != 'workerDrak'"
@@ -52,6 +52,8 @@ import dayjs from "dayjs";
 import { useRoute } from "vue-router";
 const gridRef = ref(null);
 const gridRef1 = ref(null);
+// 导出数据
+const fileData = ref([]);
 const $route = useRoute();
 const RANK_IMG = [rank1, rank2, rank3];
 const deptName = ref("");
@@ -369,7 +371,10 @@ const loadData = () => {
   originalData.value = [...tableData]; // 保存原始数据
   tableData[0].sortable = true;
   gridOptions.data = tableData;
-
+  fileData.value = JSON.parse(JSON.stringify(tableData));
+  if ($route.name != "workerDrak") {
+    fileData.value[0].ranking = "平均得分";
+  }
   // 使用 nextTick 确保表格渲染完成后再合并单元格
   nextTick(() => {
     if (gridRef.value) {
@@ -384,6 +389,7 @@ const loadData = () => {
 };
 // 监听年份变化,重新渲染
 watch(selectYear, () => {
+  // init(newVal.data, newVal.dept, newVal.name);
   createColumns();
   loadData();
   gridRef.value.setMergeCells([
@@ -421,7 +427,9 @@ const exportEvent = () => {
     $grid.exportData({
       type: "xlsx",
       filename: fileName,
-      useStyle: true
+      useStyle: true,
+      isMerge: true,
+      data: fileData.value
     });
     // $grid.exportData({
     //   type: "xlsx",

+ 1 - 1
src/views/draw/children/department/componements/seach.vue

@@ -68,6 +68,7 @@ const handClickInit1 = value => {
   if (value) {
     const selectedItem = dataList.magList.find(item => item.id === value);
     init.assessmentName = selectedItem.name;
+    localStorage.setItem("fileName", selectedItem.name);
     getTemplateInfoListApi(selectedItem);
   }
   Object.assign(dataList.params, {
@@ -89,7 +90,6 @@ const handClickInit2 = value => {
       item => item.assessmentModelId === value
     );
     init.assessmentModelName = selectedItem.assessmentModelName;
-    localStorage.setItem("fileName", selectedItem.assessmentModelName);
     userPageWhitOrganizationApi(selectedItem, 0);
     postListTreeApi(selectedItem);
   }

+ 3 - 3
src/views/draw/children/head/componements/seach.vue

@@ -43,7 +43,7 @@ const userPageWhitOrganizationApi = async () => {
     dataList.personList = data.records;
   }
 };
-userPageWhitOrganizationApi();
+// userPageWhitOrganizationApi();
 // 考核活动
 // const getAssessmentPageListApi = async () => {
 //   const { data, code } = await getAssessmentList({
@@ -88,6 +88,7 @@ const handClickInit1 = value => {
   if (value) {
     const selectedItem = dataList.magList.find(item => item.id === value);
     init.assessmentName = selectedItem.name;
+    localStorage.setItem("fileName", selectedItem.name);
     getTemplateInfoListApi(selectedItem);
   }
   Object.assign(dataList.params, {
@@ -106,7 +107,6 @@ const handClickInit2 = value => {
       item => item.assessmentModelId === value
     );
     init.assessmentModelName = selectedItem.assessmentModelName;
-    localStorage.setItem("fileName", selectedItem.assessmentModelName);
     getLeaderListApi(selectedItem);
   }
   Object.assign(dataList.params, {
@@ -169,7 +169,7 @@ const getSearchFrom = () => {
       const selectedItems = dataList.teplist.find(
         item => item.assessmentModelId === assessmentModelId
       );
-      userPageWhitOrganizationApi(selectedItems);
+      // userPageWhitOrganizationApi(selectedItems);
       getLeaderListApi(selectedItems);
       setTimeout(() => {
         $emit(

+ 1 - 1
src/views/draw/children/health/componements/seach.vue

@@ -68,6 +68,7 @@ const handClickInit1 = value => {
   if (value) {
     const selectedItem = dataList.magList.find(item => item.id === value);
     init.assessmentName = selectedItem.name;
+    localStorage.setItem("fileName", selectedItem.name);
     getTemplateInfoListApi(selectedItem);
   }
   Object.assign(dataList.params, {
@@ -89,7 +90,6 @@ const handClickInit2 = value => {
       item => item.assessmentModelId === value
     );
     init.assessmentModelName = selectedItem.assessmentModelName;
-    localStorage.setItem("fileName", selectedItem.assessmentModelName);
     postPageGroupApi(selectedItem);
   }
   Object.assign(dataList.params, {

+ 1 - 15
src/views/draw/children/worker/componements/seach.vue

@@ -101,6 +101,7 @@ const handClickInit1 = value => {
   if (value) {
     const selectedItem = dataList.magList.find(item => item.id === value);
     init.assessmentName = selectedItem.name;
+    localStorage.setItem("fileName", selectedItem.name);
     getTemplateInfoListApi(selectedItem);
   }
   Object.assign(dataList.params, {
@@ -123,7 +124,6 @@ const handClickInit2 = value => {
       item => item.assessmentModelId === value
     );
     init.assessmentModelName = selectedItem.assessmentModelName;
-    localStorage.setItem("fileName", selectedItem.assessmentModelName);
     userPageWhitOrganizationApi(selectedItem, 0);
     // postListTreeApi(selectedItem);
   }
@@ -296,20 +296,6 @@ const handClickClear3 = () => {
               :value="item.deptCode"
             />
           </el-select>
-          <!-- <el-tree-select
-            v-model="dataList.params.deptCode"
-            :data="dataList.deptList"
-            check-strictly
-            filterable
-            clearable
-            :props="{
-              label: 'deptName',
-              value: 'deptCode',
-              children: 'childrenRes'
-            }"
-            style="width: 200px"
-            @node-click="handClickInit3"
-          /> -->
         </div>
         <div class="flex mr-2">
           <div class="text-sm leading-8 mr-3">员工</div>

+ 2 - 2
src/views/draw/children/worker/workerDrak.vue

@@ -24,7 +24,7 @@ const rankTableRef = ref();
 const activeName = ref("1");
 const barEchartsRef = ref();
 const barDimEchartsRef = ref();
-const seachParams = ref();
+const seachParams = ref<any>();
 // 排行榜
 const showLength = ref(0);
 const rankTableRefList = reactive({
@@ -136,7 +136,7 @@ const barDimEchartsList = reactive({
   data: null,
   type: null
 });
-const init = (item, type) => {
+const init = (item: any, type: any) => {
   seachParams.value = item;
   barDimEchartsList.data = null;
   barDimEchartsList.type = null;