ZhangXianQiang
2024-05-06 72f13e697d40c8fffc7aa0197fec4509bbe41569
src/views/system/check/result/detail/detail.vue
File was renamed from src/views/system/result/detail/detail.vue
@@ -1,6 +1,6 @@
<template>
  <div class="app-container">
    <el-page-header @back="goBack" content="详情页面">
    <el-page-header @back="goBack()" content="详情页面">
    </el-page-header>
    <el-container>
@@ -17,35 +17,40 @@
                type="text"
                icon="el-icon-edit"
                @click="handleRuleUpdate(scope.row)"
              >修改</el-button>
              >修改
              </el-button>
            </template>
          </el-table-column>
        </el-table>
        <pagination
          v-show="total>0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="getRuleList"
        />
      </el-main>
    </el-container>
    <el-container>
      <el-main>
        <h2>考核成绩</h2>
        <el-row :gutter="10" class="mb8">
          <el-col :span="1.5">
        <el-row :gutter="10" class="mb5">
          <el-col :span="1.5" style="margin-right: 20px">
            <el-button
              type="warning"
              plain
              icon="el-icon-download"
              size="mini"
              @click="handleExport"
            >导出</el-button>
            >导出
            </el-button>
          </el-col>
          <right-toolbar :showSearch.sync="showSearch" @queryTable="getRuleList"></right-toolbar>
          <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
            <el-form-item label="考核日期" prop="name">
              <el-date-picker v-model="date" format="yyyy-MM" value-format="yyyy-MM" type="month" placeholder="选择日期"
                              @change="dateChange">
              </el-date-picker>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
            </el-form-item>
          </el-form>
        </el-row>
        <el-table  v-loading="loading" :data="dataMap" @selection-change="handleSelectionChange">
@@ -64,23 +69,23 @@
              :key="item.ruleName"
              :label="item.ruleName"
              align="center"
              width = "120px"
              width="180px"
            >
              <template slot-scope="scope">
                <span>{{ scope.row[item.ruleIndex] }}</span>
              </template>
            </el-table-column>
          </template>
          <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  fixed="right">
            <template slot-scope="scope">
              <el-button
                size="mini"
                type="text"
                icon="el-icon-edit"
                @click="handleIndexUpdate(scope.row,scope.index)"
              >修改</el-button>
            </template>
          </el-table-column>
          <!--          <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  fixed="right">-->
          <!--            <template slot-scope="scope">-->
          <!--              <el-button-->
          <!--                size="mini"-->
          <!--                type="text"-->
          <!--                icon="el-icon-edit"-->
          <!--                @click="handleIndexUpdate(scope.row,scope.index)"-->
          <!--              >修改</el-button>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
        </el-table>
      </el-main>
    </el-container>
@@ -92,7 +97,7 @@
          <el-input v-model="ruleForm.checkRuleName" placeholder="请输入规则名称" disabled/>
        </el-form-item>
        <el-form-item label="规则权重" prop="weight">
          <el-input-number v-model="ruleForm.weight" :precision="1" placeholder="请输入规则权重" />
          <el-input-number v-model="ruleForm.weight" :precision="1" :step="0.1" placeholder="请输入规则权重"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -105,16 +110,12 @@
    <el-dialog :title="title" :visible.sync="indexOpen" width="600px" append-to-body>
      <el-form ref="form" :model="indexForm" :rules="rules" label-width="150px">
        <el-form-item label="考核日期" prop="create_time">
          <el-input v-model="ruleForm.create_time" placeholder="请输入规则名称" disabled>
          <el-input v-model="formattedCreateTime" placeholder="" disabled>
          </el-input>
        </el-form-item>
<!--        <el-form-item label="考核对象" prop="checkRuleName">-->
<!--          <el-input v-model="ruleForm.checkRuleName" placeholder="请输入规则名称" disabled/>-->
<!--        </el-form-item>-->
        <div v-for="item in tableData" :key="item.ruleIndex">
          <el-form-item :label="item.ruleName" :prop="item.ruleIndex">
            <el-input-number v-model="indexForm[item.ruleIndex]" :precision="4" placeholder="请输入指标"></el-input-number>
            <el-input-number v-model="indexForm[item.ruleIndex]" :precision="4" :step="0.1" placeholder="请输入指标"></el-input-number>
          </el-form-item>
        </div>
      </el-form>
@@ -127,8 +128,9 @@
</template>
<script>
import { listCheckResult, getCheckResult, delCheckResult, addCheckResult, updateCheckResult,manualScore, publishCheckResult } from "@/api/platform/check-result";
import { listScore, getScoreIndex, delScore, addScore, updateScore } from "@/api/platform/check-score";
import {updateWeight} from "@/api/platform/check-template";
import { areaSelect } from '@/api/system/dept'
export default {
@@ -137,6 +139,8 @@
  data() {
    return {
      id: null,
      examineCategory: null,
      date: '',
      examineTag: null,
      deptId: null,
      areaList:[],
@@ -173,15 +177,22 @@
      //请求参数
      queryParams: {
        id: null,
        date: null,
      },
      // 表单校验
      rules: {}
    };
  },
  computed: {
    formattedCreateTime() {
      // 如果 create_time 存在,则返回日期部分,否则返回空字符串
      return this.indexForm.create_time ? this.indexForm.create_time.split('T')[0] : '';
    },
  },
  created() {
    //考核成绩详情跳转参数接收
    if(this.$route.query.id){
      this.id = this.$route.query.id
      this.queryParams.id = this.$route.query.id
    }
    // 考核积分列表
    this.getList();
@@ -191,7 +202,7 @@
    /** 查询考核计分列表 */
    getList() {
      this.loading = true;
      getScoreIndex(this.id).then(response => {
      getScoreIndex(this.queryParams).then(response => {
        this.checkRuleList = response.data.checkRuleList;
        this.dataMap = response.data.scoreMap.dataMap;
        this.tableData = response.data.scoreMap.tableData
@@ -211,8 +222,7 @@
        checkRuleName: null,
        weight: null,
      };
      this.indexForm = {
      };
      this.indexForm = {};
      this.resetForm(formName);
    },
    translateDeptId(deptId) {
@@ -225,29 +235,23 @@
        this.areaList = res.data;
      })
    },
    cancelManualScore() {
      this.manualScoreForm = {};
      this.manualScoreTitle = "";
      this.manualScoreOpen = false;
    /** 返回按钮 */
    goBack() {
      const obj = { path: "/examine/detail", query: { index: this.$route.query.deptId, examineTag: this.$route.query.examineTag, pageNum: this.$route.query.pageNum } };
      this.$tab.closeOpenPage(obj);
    },
    submitManualScore() {
      if (! this.manualScoreForm.manualScore) {
        this.$modal.msgWarning("请填写分数");
        return
    // 关闭当前tab页签,打开新页签
    closeOpenPage(obj) {
      store.dispatch("tagsView/delView", router.currentRoute);
      if (obj !== undefined) {
        return router.push(obj);
      }
      manualScore(this.manualScoreForm).then(res => {
        this.$modal.msgSuccess("操作成功");
        this.cancelManualScore();
    },
    dateChange() {
      this.queryParams.date = this.date;
      console.log(this.queryParams);
        this.getList();
      })
    },
    handleSetManualScore(row) {
      this.manualScoreForm.id = row.id;
      this.manualScoreForm.manualScore = parseInt(row.manualScore);
      this.manualScoreTitle = row.checkUnitName + '人工打分'
      this.manualScoreOpen = true;
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.getList();
@@ -288,37 +292,21 @@
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.id != null) {
            updateCheckResult(this.form).then(response => {
          if (this.ruleForm.id != null) {
            updateWeight(this.ruleForm).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addCheckResult(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.ruleOpen = false;
              this.getList();
            });
          }
        }
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除考核结果编号为"' + ids + '"的数据项?').then(function() {
        return delCheckResult(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** 导出按钮操作 */
    handleExport() {
      this.download('system/checkResult/export', {
      this.download('/check/score/export', {
        ...this.queryParams
      }, `checkResult_${new Date().getTime()}.xlsx`)
      }, `考核指标_${new Date().getTime()}.xlsx`)
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
@@ -328,57 +316,6 @@
</script>
<style scoped>
.line {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
}
.line-right {
  width: 50px;
}
.input{
  width: 200px;
}
.input-w {
  margin-left: 5px;
  width: 70px;
}
.row-warp {
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  border: solid 1px gray;
  /*padding: 3px;*/
}
.row {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  border-bottom: solid 1px gray;
  padding: 3px;
}
.row:last-of-type {
  border-bottom: none;
}
.row-left {
  flex: 2;
  border-right: solid 1px gray;
}
.row-right {
  flex: 4;
  display: flex;
  flex-direction: row;
  justify-content: center;
}
.header-container {
  display: flex;
  align-items: center; /* 垂直居中 */
}
.header-container h2 {
  margin-right: 10px; /* 根据需要调整标题和菜单之间的间距 */