riku
2025-09-18 c1d2051abc8ca88cd07f0d7c56c0dbf8165d5c33
src/views/fysp/evaluation/EvalutationRecord.vue
@@ -23,7 +23,11 @@
        v-model:value="formSearch.scenetype"
      ></FYOptionScene>
      <!-- 时间 -->
      <FYOptionTime :initValue="false" type="month" v-model:value="formSearch.time"></FYOptionTime>
      <FYOptionTime
        :initValue="false"
        type="month"
        v-model:value="formSearch.time"
      ></FYOptionTime>
    </template>
    <template #buttons>
      <!-- <el-button icon="Download" size="default" type="success" @click="download"
@@ -43,9 +47,20 @@
    </template>
    <template #table-column="{ size }">
      <el-table-column fixed="left" sortable="custom" 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
        prop="sceneName"
        :show-overflow-tooltip="true"
        label="名称"
        width="300"
      >
      </el-table-column>
      <el-table-column
        prop="subTaskTime"
@@ -54,10 +69,21 @@
        sortable="custom"
        :formatter="timeFormat"
      />
      <el-table-column prop="evaluation.resultscorebef" label="得分" width="90" sortable="custom" />
      <el-table-column prop="evaluation.resultscorebef" label="环信码" width="100">
      <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>
          <span :style="`color: ${toCode(row).color};`">{{
            toCode(row).name
          }}</span>
        </template>
      </el-table-column>
@@ -104,15 +130,26 @@
            @click="scoreShow = true"
            >监测数据得分</el-button
          >
          <el-button v-show="scoreShow" size="small" type="primary" @click="updateMultipleScore"
          <el-button
            v-show="scoreShow"
            size="small"
            type="primary"
            @click="updateMultipleScore"
            :loading="updateLoading"
            >上传</el-button
          >
          <el-button v-show="scoreShow" size="small" type="error" @click="scoreShow = false"
          <el-button
            v-show="scoreShow"
            size="small"
            type="error"
            @click="scoreShow = false"
            >取消</el-button
          >
        </template>
        <template #default="{ row }">
          <el-button type="primary" size="small" @click="editRow(row)">查看</el-button>
          <el-button type="primary" size="small" @click="editRow(row)"
            >查看</el-button
          >
        </template>
      </el-table-column>
    </template>
@@ -130,12 +167,25 @@
export default {
  setup() {
    const { cellClick, cellClassName, handlePaste, setTableData, addRefreshEvent, tableData } =
      useTablePaste({
        score1: 8,
        score2: 9
      });
    return { cellClick, cellClassName, handlePaste, setTableData, addRefreshEvent, tableData };
    const {
      cellClick,
      cellClassName,
      handlePaste,
      setTableData,
      addRefreshEvent,
      tableData
    } = useTablePaste({
      score1: 8,
      score2: 9
    });
    return {
      cellClick,
      cellClassName,
      handlePaste,
      setTableData,
      addRefreshEvent,
      tableData
    };
  },
  components: { CompReport },
  data() {
@@ -161,7 +211,8 @@
          name: '监测数据月均值超区域月均值20%以上或数据明显异常'
        }
      },
      scoreShow: false
      scoreShow: false,
      updateLoading: false
    };
  },
  computed: {
@@ -208,9 +259,28 @@
        evaluateApi.fetchAutoEvaluation(this.area).then((res) => {
          if (res.data) {
            this.tableData = res.data;
            this.tableData.forEach((v) => {
              // 将原始的得分展示到表格中
              if (v.itemEvaluations) {
                for (const key in this.ruleName) {
                  const value = this.ruleName[key];
                  const itemEva = v.itemEvaluations.find((ie) => {
                    return ie.esrguid == value.id && ie.extension1 == 'true';
                  });
                  if (itemEva) {
                    v[key] = itemEva.value;
                  }
                }
              }
            });
            this.orginData = useCloned(this.tableData).cloned;
            console.log(this.orginData);
            this.getFilters(res.data);
            if (typeof func === 'function') {
              func({ data: this.tableData });
            }
          } else {
            this.tableData = [];
            this.orginData = [];
            if (typeof func === 'function') {
              func({ data: this.tableData });
            }
@@ -229,45 +299,55 @@
        if (res.data.length > 0) {
          this.evaluationRule = res.data[0];
          // 获取具体子规则
          return evaluateApi.getSubRules(this.evaluationRule.guid).then((res) => {
            this.evaluationSubRule = res.data;
            // 查找可导入得分的规则id
            for (const key in this.ruleName) {
              const value = this.ruleName[key];
              const subrule = this.evaluationSubRule.find((v) => {
                return v.itemname == value.name;
              });
              value.id = subrule.guid;
            }
          });
          return evaluateApi
            .getSubRules(this.evaluationRule.guid)
            .then((res) => {
              this.evaluationSubRule = res.data;
              // 查找可导入得分的规则id
              for (const key in this.ruleName) {
                const value = this.ruleName[key];
                const subrule = this.evaluationSubRule.find((v) => {
                  return v.itemname == value.name;
                });
                if (subrule) {
                  value.id = subrule.guid;
                }
              }
            });
        }
      });
    },
    // 批量更新监测数据得分
    updateMultipleScore() {
      this.updateLoading = true;
      useMessageBoxTip({
        confirmMsg: '是否上传监测数据得分',
        confirmTitle: '上传监测数据得分',
        onConfirm: () => {
        onConfirm: async () => {
          if (this.evaluationRule) {
            const param = this.tableData.map((v) => {
            const subTaskEvaList = this.tableData.map((v) => {
              const subRule = [];
              for (const key in this.ruleName) {
                const value = this.ruleName[key];
                subRule.push({
                  first: value.id,
                  second: v[key].trim() != ''
                  id: value.id,
                  selected: v[key] && (v[key] + '').trim() != ''
                });
              }
              return {
                ...this.area,
                subTaskId: v.subTaskId,
                ruleId: this.evaluationRule.guid,
                subRule
              };
            });
            const param = {
              ...this.area,
              subTaskEvaList
            };
            evaluateApi.updateMultipleScore(param);
            return await evaluateApi
              .updateMultipleScore(param)
              .finally(() => (this.updateLoading = false));
          }
        }
      });