fuliqi
2025-01-07 8f38cbf36743746bde6997cef3998eadc6e95e10
src/views/system/contract/score/index.vue
@@ -8,13 +8,13 @@
        </el-select>
      </el-form-item>
      <el-form-item label="审核时间">
        <el-date-picker v-model="daterangeAuditingTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
          type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
        <el-date-picker v-model="daterangeAuditingTime" style="width: 240px" value-format="yyyy-MM-dd"
          type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="handleQuery"></el-date-picker>
      </el-form-item>
      <el-form-item label="创建时间">
        <el-date-picker v-model="daterangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
          type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
        <el-date-picker v-model="daterangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
          type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="handleQuery"></el-date-picker>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
@@ -25,19 +25,15 @@
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
          v-hasPermi="['platform:score:add']">新增</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
          v-hasPermi="['platform:score:edit']">修改</el-button>
          v-hasPermi="['contract:score:add']">新增</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
          v-hasPermi="['platform:score:remove']">删除</el-button>
          v-hasPermi="['contract:score:remove']">删除</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
          v-hasPermi="['platform:score:export']">导出</el-button>
          v-hasPermi="['contract:score:export']">导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
@@ -48,7 +44,7 @@
      <el-table-column label="考核合同" align="center" prop="contractName"/>
      <el-table-column label="考核规则" align="center" prop="ruleName" :show-overflow-tooltip="true" />
      <el-table-column label="扣减方式" align="center" prop="deductCategory"/>
      <el-table-column label="考核指标" align="center" prop="num"/>
      <el-table-column label="超期量值" align="center" prop="num"/>
      <el-table-column label="考核扣分" align="center" prop="score"/>
      <el-table-column label="创建时间" align="center" prop="createTime" width="180px"/>
      <el-table-column label="审核状态" align="center" prop="auditingStatus">
@@ -63,10 +59,10 @@
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)">详情</el-button>
          <el-button size="mini" type="text" icon="el-icon-s-check" @click="handleAuditing(scope.row)"
            v-hasPermi="['default:audit']" v-if="scope.row.auditingStatus === '待审核'">审核</el-button>
            v-hasPermi="['contract:score:audit']" v-if="scope.row.auditingStatus === '待审核'">审核</el-button>
          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
            v-if="scope.row.auditingStatus === '待审核'" v-hasPermi="['system:auditing:edit']">修改</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
             v-hasPermi="['contract:score:edit']">修改</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['contract:score:remove']">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -84,7 +80,7 @@
        <el-form-item label="运维考核规则">
          <el-input v-model="auditingForm.ruleName" type="textarea" autosize disabled />
        </el-form-item>
        <el-form-item label="运维考核指标">
        <el-form-item label="运维超期量值">
          <el-input v-model="auditingForm.num" disabled />
        </el-form-item>
        <el-form-item label="运维考核扣分">
@@ -99,13 +95,13 @@
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitAuditing">确 定</el-button>
        <el-button @click="closeAuditing">取 消</el-button>
        <el-button type="primary" @click="submitAuditing">确 定</el-button>
      </div>
    </el-dialog>
    <!-- 新增或修改 -->
    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
        <el-form-item label="运维考核单位" prop="unitId">
          <el-select v-model="form.unitId" placeholder="运维考核单位" @change="handleChangeUnit">
@@ -119,18 +115,16 @@
              <div class="row-left">
                <div class="block">
                  <span class="demonstration"></span>
                  <el-cascader ref="cascader" v-model="form.ruleIdsArray" :options="options" @change="handleChange">
                  <el-cascader
                    ref="cascader"
                    v-model="form.ruleIdsArray"
                    :options="options"
                    @change="handleChange"
                    :props="{ expandTrigger: 'hover'}"
                  >
                    <template slot-scope="{ data }">
                      <el-tooltip class="item" :disabled="data.label.length < 16 && !data.deductCategory" effect="dark"
                        :content="
                          data.label.length < 16 ?
                            data.deductCategory ?
                                data.deductCategory == '分数乘以数量' ? '扣' + data.calcFraction  + '分*数量 ' : data.deductCategory == '除以数量后乘以分数' ? '扣' + data.calcFraction + '分/' +  data.calcUnit + '小时' : '扣' + data.calcFraction + '分' :
                                '' :
                            (data.deductCategory ?
                                data.label + ' ' + (data.deductCategory == '分数乘以数量' ? '扣' + data.calcFraction  + '分*数量 ' : data.deductCategory == '除以数量后乘以分数' ? '扣' + data.calcFraction + '分/' +  data.calcUnit + '小时' : '扣' + data.calcFraction + '分') :
                                data.label)"
                        placement="left">
                      <el-tooltip class="item" :disabled="calculateTooltipDisabled(data)" effect="dark"
                                  :content="calculateTooltipContent(data)" placement="left">
                        <span>{{ data.label }}</span>
                      </el-tooltip>
                    </template>
@@ -138,21 +132,25 @@
                </div>
              </div>
              <div class="row-right" v-if="needNum">
                <div>指标</div>
                <div>次数/数量/小时</div>
                <div class="margin-5">
                  <el-input placeholder="请输入" v-model="form.num" @input="handleChangeNum" />
                </div>
              </div>
            </div>
          </div>
          <div>
            {{ ruleDescription}}
          </div>
        </el-form-item>
        <el-form-item label="运维考核扣分" style="width: 51%" prop="score">
        <el-form-item label="运维考核扣分" style="width: 30%" prop="score">
          <el-input v-model="form.score"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
        <el-button type="primary" @click="submitForm">确 定</el-button>
      </div>
    </el-dialog>
@@ -164,7 +162,7 @@
            <el-form-item label="考核单位:">{{ view.unitName }}</el-form-item>
            <el-form-item label="考核合同:">{{ view.contractName }} </el-form-item>
            <el-form-item label="考核规则:">{{ view.ruleName }} </el-form-item>
            <el-form-item label="考核指标:">{{ view.num }} </el-form-item>
            <el-form-item label="超期量值:">{{ view.num }} </el-form-item>
            <el-form-item label="考核扣分:">{{ view.score }} </el-form-item>
            <el-form-item label="创建人:">{{ view.createUser }} </el-form-item>
            <el-form-item label="创建时间:">{{ view.createTime }} </el-form-item>
@@ -199,6 +197,7 @@
      auditingOpen: false,
      auditingForm: {},
      unitList: [],
      ruleDescription: '', // 添加规则描述字段
      // 考核模板
      examineList: [
        { id: 1, value: "车辆考核" },
@@ -273,8 +272,11 @@
    };
  },
  created() {
    this.getList();
    this.getUnitSelect();
    if(this.$route.query.time){
      this.daterangeCreateTime= this.$route.query.time
    }
    this.getList();
  },
  methods: {
    /** 详细按钮操作 */
@@ -289,7 +291,9 @@
      let item = this.$refs['cascader'].getCheckedNodes()[0].data;
      this.calcObj = item;
      this.form.contractId = item.contractId;
      this.form.ruleName = item.ruleName + " / " + item.label;
      this.form.deductCategory = item.deductCategory == '分数乘以数量' ? '扣' + item.calcFraction  + '分*数量 ' : item.deductCategory == '除以数量后乘以分数' ? '扣' + item.calcFraction + '分/' +  item.calcUnit + '小时' : '扣' + item.calcFraction + '分';
      this.ruleDescription = this.calculateTooltipContent(item);
      if (item.deductCategory == "扣指定分数") {
        this.needNum = false;
        this.form.score = item.calcFraction;
@@ -361,6 +365,13 @@
      // 运维单位下拉列表
      unitSelect().then((res) => {
        this.unitList = res.data;
        if (this.$route.query.unitId) {
          // 先找到对应的选项
          const unit = this.unitList.find(item => item.id === Number(this.$route.query.unitId) || item.id === this.$route.query.unitId);
          if (unit) {
            this.queryParams.unitId = unit.id; // 确保类型匹配
          }
        }
      })
    },
    /** 查询违规审核列表 */
@@ -369,12 +380,17 @@
      if (null != this.daterangeAuditingTime && '' != this.daterangeAuditingTime) {
        this.queryParams["auditingStartTime"] = this.daterangeAuditingTime[0];
        this.queryParams["auditingEndTime"] = this.daterangeAuditingTime[1];
      } else {
        this.queryParams["auditingStartTime"] = null;
        this.queryParams["auditingEndTime"] = null;
      }
      if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) {
        this.queryParams["createStartTime"] = this.daterangeCreateTime[0];
        this.queryParams["createEndTime"] = this.daterangeCreateTime[1];
      } else {
        this.queryParams["createStartTime"] = null;
        this.queryParams["createEndTime"] = null;
      }
      console.log("this.queryParams", this.queryParams)
      listAuditing(this.queryParams).then(response => {
        this.auditingList = response.rows;
        this.total = response.total;
@@ -427,10 +443,6 @@
    handleUpdate(row) {
      this.reset();
      const id = row.id || this.ids
      if (row.auditingStatus != '待审核') {
        this.$message.warning("该记录已审核,不能修改");
        return;
      }
      getAuditing(id).then(response => {
        this.form = { ...response.data };
        this.open = true;
@@ -480,8 +492,44 @@
      this.download('/contract/score/export', {
        ...this.queryParams
      }, `合同考核积分_${new Date().getTime()}.xlsx`)
    },
    calculateTooltipDisabled(data) {
      return data.label.length < 16 && !data.deductCategory;
    },
    calculateTooltipContent(data) {
      let content = '';
      if (data.label.length < 16) {
        if (data.deductCategory) {
          switch (data.deductCategory) {
            case '分数乘以数量':
              content = '扣' + data.calcFraction + '分*数量 ';
              break;
            case '除以数量后乘以分数':
              content = '扣' + data.calcFraction + '分/' + data.calcUnit + '小时';
              break;
            default:
              content = '扣' + data.calcFraction + '分';
          }
        }
      } else {
        if (data.deductCategory) {
          switch (data.deductCategory) {
            case '分数乘以数量':
              content = data.label + ' 扣' + data.calcFraction + '分*数量 ';
              break;
            case '除以数量后乘以分数':
              content = data.label + ' 扣' + data.calcFraction + '分/' + data.calcUnit + '小时';
              break;
            default:
              content = data.label + ' 扣' + data.calcFraction + '分';
          }
        } else {
          content = data.label;
        }
      }
      return content;
    }
  }
  },
};
</script>
<style scoped>