Riku
2024-09-28 dad10a883e2995704b17132f50474107f5a45a9a
1. 修改评估记录排序功能
已修改3个文件
80 ■■■■ 文件已修改
src/components.d.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/table/FYTable.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/evaluation/EvalutationRecord.vue 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components.d.ts
@@ -29,7 +29,6 @@
    ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
    ElDialog: typeof import('element-plus/es')['ElDialog']
    ElDivider: typeof import('element-plus/es')['ElDivider']
    ElDrawer: typeof import('element-plus/es')['ElDrawer']
    ElEmpty: typeof import('element-plus/es')['ElEmpty']
    ElForm: typeof import('element-plus/es')['ElForm']
    ElFormItem: typeof import('element-plus/es')['ElFormItem']
@@ -37,7 +36,6 @@
    ElIcon: typeof import('element-plus/es')['ElIcon']
    ElImage: typeof import('element-plus/es')['ElImage']
    ElInput: typeof import('element-plus/es')['ElInput']
    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
    ElMain: typeof import('element-plus/es')['ElMain']
    ElMenu: typeof import('element-plus/es')['ElMenu']
    ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
@@ -45,7 +43,6 @@
    ElOption: typeof import('element-plus/es')['ElOption']
    ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
    ElPagination: typeof import('element-plus/es')['ElPagination']
    ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
    ElPopover: typeof import('element-plus/es')['ElPopover']
    ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
@@ -56,7 +53,6 @@
    ElStep: typeof import('element-plus/es')['ElStep']
    ElSteps: typeof import('element-plus/es')['ElSteps']
    ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
    ElSwitch: typeof import('element-plus/es')['ElSwitch']
    ElTable: typeof import('element-plus/es')['ElTable']
    ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
    ElTag: typeof import('element-plus/es')['ElTag']
src/components/table/FYTable.vue
@@ -91,7 +91,7 @@
      fontSize: 'default'
    };
  },
  emits: ['search', 'cellClick', 'tablePaste'],
  emits: ['search', 'cellClick', 'tablePaste', 'sortChange'],
  watch: {
    currentPage(nValue, oValue) {
      if (nValue != oValue) {
@@ -177,11 +177,14 @@
    handlePaste(event) {
      this.$emit('tablePaste', event);
    },
    doLayout(){
    doLayout() {
      this.$refs.tableRef.doLayout();
    },
    handleSortChange({column, prop, order }){
    handleSortChange({ column, prop, order }) {
      this.$emit('sortChange', { column, prop, order });
    },
    clearSort(){
      this.$refs.tableRef.clearSort();
    }
  },
  mounted() {
src/views/fysp/evaluation/EvalutationRecord.vue
@@ -6,6 +6,7 @@
    @cell-click="cellClick"
    :cell-class-name="cellClassName"
    @table-paste="handlePaste"
    @sort-change="handleSortChange"
  >
    <template #options>
      <!-- 区县 -->
@@ -42,7 +43,7 @@
    </template>
    <template #table-column>
      <el-table-column fixed="left" sortable prop="sceneIndex" label="编号" width="80">
      <el-table-column fixed="left" sortable="custom" prop="sceneIndex" label="编号" width="80">
      </el-table-column>
      <el-table-column prop="sceneName" :show-overflow-tooltip="true" label="名称" width="300">
      </el-table-column>
@@ -50,16 +51,10 @@
        prop="subTaskTime"
        label="巡查日期"
        width="110"
        sortable
        sortable="custom"
        :formatter="timeFormat"
      />
      <el-table-column
        prop="evaluation.resultscorebef"
        label="得分"
        width="90"
        sortable
        :sort-method="sortScore"
      />
      <el-table-column prop="evaluation.resultscorebef" label="得分" width="90" sortable="custom" />
      <el-table-column prop="evaluation.resultscorebef" label="环信码" width="100">
        <template #default="{ row }">
          <span :style="`color: ${toCode(row).color};`">{{ toCode(row).name }}</span>
@@ -107,6 +102,7 @@
import { envCreditCode } from '@/constants/index';
import CompReport from './components/CompReport.vue';
import { useTablePaste } from '@/composables/tablePaste';
import { useCloned } from '@vueuse/core';
export default {
  setup() {
@@ -125,7 +121,9 @@
        scenetype: {},
        time: dayjs().add(-1, 'M').date(1).toDate()
      },
      townFilters: []
      townFilters: [],
      // 原始数据,用于排序取消后
      orginData: []
    };
  },
  methods: {
@@ -152,10 +150,13 @@
      this.$refs.tableRef.onSearch();
    },
    onSearch(page, func) {
      this.$refs.tableRef.clearSort();
      const area = this._getParam();
      evaluateApi.fetchAutoEvaluation(area).then((res) => {
        if (res.data) {
          this.tableData = res.data;
          this.orginData = useCloned(this.tableData).cloned;
          console.log(this.orginData);
          this.getFilters(res.data);
          if (typeof func === 'function') {
            func({ data: this.tableData });
@@ -210,6 +211,50 @@
      const s2 = b.evaluation ? parseInt(b.evaluation.resultscorebef) : 0;
      return s1 - s2;
    },
    handleSortChange({ column, prop, order }) {
      console.log(column, prop, order);
      if (order == null) {
        this.orginData.forEach((e, i) => {
          this.tableData[i] = e;
        });
      } else if (prop == 'evaluation.resultscorebef') {
        this.tableData.sort((a, b) => {
          const s1 = a.evaluation ? parseInt(a.evaluation.resultscorebef) : 0;
          const s2 = b.evaluation ? parseInt(b.evaluation.resultscorebef) : 0;
          if (order == 'ascending') {
            return s1 - s2;
          } else if (order == 'descending') {
            return s2 - s1;
          }
        });
      } else if (prop == 'sceneIndex') {
        this.tableData.sort((a, b) => {
          if (order == 'ascending') {
            if (a.sceneIndex === b.sceneIndex) {
              return a.subTaskTime > b.subTaskTime ? 1 : -1;
            } else {
              return a.sceneIndex - b.sceneIndex;
            }
          } else if (order == 'descending') {
            if (a.sceneIndex === b.sceneIndex) {
              return b.subTaskTime > a.subTaskTime ? 1 : -1;
            } else {
              return b.sceneIndex - a.sceneIndex;
            }
          }
        });
      } else if (prop == 'subTaskTime') {
        this.tableData.sort((a, b) => {
          if (order == 'ascending') {
            return a[prop] > b[prop] ? 1 : -1;
            // return dayjs(a).isAfter(dayjs(b)) ? 1 : -1;
          } else if (order == 'descending') {
            return b[prop] > a[prop] ? 1 : -1;
            // return dayjs(b).isAfter(dayjs(a)) ? 1 : -1;
          }
        });
      }
    }
  },
  mounted() {
    this.addRefreshEvent(this.$refs.tableRef.doLayout);