ZhangXianQiang
2024-03-21 27c87cc797f4fc9b0744ed8c44b58dbe4ff3a63c
src/views/system/default-auditing/index.vue
@@ -1,38 +1,33 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="违规" prop="defaultId">
        <el-input
          v-model="queryParams.defaultId"
          placeholder="请输入违规"
          clearable
          @keyup.enter.native="handleQuery"
        />
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
      <el-form-item label="违约运维单位" prop="belongUnit">
        <el-select v-model="queryParams.unitId" @change="handleQuery" clearable placeholder="违约单位">
          <el-option
            v-for="item in unitList"
            :key="item.id"
            :label="item.value"
            :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="审核时间">
        <el-date-picker
          v-model="daterangeAuditingTime"
          style="width: 240px"
          value-format="yyyy-MM-dd"
          value-format="yyyy-MM-dd HH:mm:ss"
          type="daterange"
          range-separator="-"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
        ></el-date-picker>
      </el-form-item>
      <el-form-item label="审核人" prop="auditingUser">
        <el-input
          v-model="queryParams.auditingUser"
          placeholder="请输入审核人"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="创建时间">
        <el-date-picker
          v-model="daterangeCreateTime"
          style="width: 240px"
          value-format="yyyy-MM-dd"
          value-format="yyyy-MM-dd HH:mm:ss"
          type="daterange"
          range-separator="-"
          start-placeholder="开始日期"
@@ -53,7 +48,6 @@
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['system:auditing:add']"
        >新增</el-button>
      </el-col>
      <el-col :span="1.5">
@@ -64,7 +58,6 @@
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['system:auditing:edit']"
        >修改</el-button>
      </el-col>
      <el-col :span="1.5">
@@ -75,7 +68,6 @@
          size="mini"
          :disabled="multiple"
          @click="handleDelete"
          v-hasPermi="['system:auditing:remove']"
        >删除</el-button>
      </el-col>
      <el-col :span="1.5">
@@ -93,35 +85,41 @@
    <el-table v-loading="loading" :data="auditingList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="违规" align="center" prop="defaultId" />
      <el-table-column label="违约单位" align="center" prop="unitName" width="180"/>
      <el-table-column label="考核名" align="center" prop="checkPublishId" width="180">
        <template slot-scope="scope">
          <div v-if="scope.row.checkPublishId === 5">视频考核</div>
        </template>
      </el-table-column>
      <el-table-column label="违约规则" align="center" prop="defaultRuleName" width="180" />
      <el-table-column label="违约扣分" align="center" prop="score" width="120" />
      <el-table-column label="创建人" align="center" prop="createBy" />
      <el-table-column label="审核人" align="center" prop="auditingUserName" />
      <el-table-column label="审核状态" align="center" prop="auditingStatus" />
      <el-table-column label="审核说明" align="center" prop="remark" />
      <el-table-column label="审核时间" align="center" prop="auditingTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.auditingTime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="审核人" align="center" prop="auditingUser" />
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
      <el-table-column label="审核说明" align="center" prop="remark" width="180"/>
      <el-table-column label="审核时间" align="center" prop="auditingTime" width="180"/>
      <el-table-column label="创建时间" align="center" prop="createTime" width="180"/>
      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['system:auditing:edit']"
          >修改</el-button>
            icon="el-icon-s-check"
            @click="handleAuditing(scope.row)"
            v-hasPermi="['default:audit']"
          >审核</el-button>
<!--          <el-button-->
<!--            size="mini"-->
<!--            type="text"-->
<!--            icon="el-icon-edit"-->
<!--            @click="handleUpdate(scope.row)"-->
<!--            v-hasPermi="['system:auditing:edit']"-->
<!--          >修改</el-button>-->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['system:auditing:remove']"
          >删除</el-button>
        </template>
      </el-table-column>
@@ -135,12 +133,91 @@
      @pagination="getList"
    />
    <!-- 添加或修改违规审核对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
    <!-- 审核 -->
    <el-dialog title="违约审核" :visible.sync="auditingOpen" width="500px" append-to-body>
      <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="80px">
        <el-form-item label="违约单位">
          <el-input v-model="auditingForm.unitName" disabled/>
        </el-form-item>
        <el-form-item label="违约规则">
          <el-input v-model="auditingForm.defaultRuleName" disabled/>
        </el-form-item>
        <el-form-item label="违约扣分">
          <el-input v-model="auditingForm.score" disabled/>
        </el-form-item>
        <el-form-item label="审核结果" prop="auditingStatus">
          <el-radio v-model="auditingForm.auditingResult" label="pass">通过</el-radio>
          <el-radio v-model="auditingForm.auditingResult" label="return">驳回</el-radio>
        </el-form-item>
        <el-form-item label="审核说明" prop="remark">
          <el-input v-model="auditingForm.remark" type="textarea" show-word-limit maxlength="100"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">确 定</el-button>
        <el-button type="primary" @click="submitAuditing">确 定</el-button>
        <el-button @click="closeAuditing">取 消</el-button>
      </div>
    </el-dialog>
    <!-- 新增或修改 -->
    <el-dialog title="违约审核" :visible.sync="open" width="700px"append-to-body>
      <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="80px">
        <el-form-item label="违约单位" prop="unitName">
          <el-select v-model="form.unitNameList" placeholder="违约单位">
            <el-option
              v-for="item in unitNameList"
              :key="item.id"
              :label="item.value"
              :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="考核名" prop="examineId">
          <el-select v-model="form.examineId" placeholder="考核名" >
            <el-option
              v-for="item in examineList"
              :key="item.id"
              :label="item.value"
              :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="违约规则" prop="tempRuleFormList">
          <div class="row-warp">
            <div class="row" v-for="(form) in tempRuleFormList">
              <div class="row-left">
                <div>规则</div>
                <div class="block">
                  <span class="demonstration"></span>
                  <el-cascader
                    v-model="value"
                    :options="options"
                    :props = "props"
                    @change="handleChange"></el-cascader>
                </div>
              </div>
              <div class="row-right">
                <div>数量</div>
                <div class="margin-5">
                  <el-input type="number" v-model="form.weight"/>
                </div>
              </div>
              <div class="item-op">
                <el-button @click="removeRule(form)" type="danger" icon="el-icon-delete" circle></el-button>
              </div>
            </div>
            <div style="margin-top: 25px">
              <el-button type="success" @click="nextAdd" size="mini" plain>添加</el-button>
            </div>
          </div>
        </el-form-item>
        <el-form-item label="违约扣分"  style="width: 20%">
          <el-input v-model="auditingForm.score"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitAuditing">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
@@ -148,12 +225,44 @@
</template>
<script>
import { listAuditing, getAuditing, delAuditing, addAuditing, updateAuditing } from "@/api/platform/default-auditing";
import { listAuditing, getAuditing, delAuditing, addAuditing, updateAuditing,auditing } from "@/api/platform/default-auditing";
import { unitSelect } from "@/api/platform/unit";
export default {
  name: "Auditing",
  data() {
    return {
      options: [{
        value: 'city',
        label: '前端感知源治理工作',
        children: [{
          value: 'fushun',
          label: '时钟同步',
        }, {
          value: 'rong',
          label: 'OSD标识未修复',
        }, {
          value: 'rong',
          label: '一机一档不合格',
        }
        ]
      },
      ],
      auditingOpen: false,
      auditingForm: {},
      unitList: [],
      unitNameList: [
        {id:2 , value:"成都x运维"}
        ],
      // 考核模板
      examineList: [
        {id:1 , value:"车辆考核"},
        {id:2 , value:"视频考核"}
      ],
      // 临时规则表单
      tempRuleForm: {},
      // 临时规则表单列表
      tempRuleFormList: [{"ruleId": null, "adjustCoefficient": null}],
      // 遮罩层
      loading: true,
      // 选中数组
@@ -172,6 +281,7 @@
      title: "",
      // 是否显示弹出层
      open: false,
      auditOpen: false,
      // 逻辑删除时间范围
      daterangeAuditingTime: [],
      // 逻辑删除时间范围
@@ -189,31 +299,69 @@
      // 表单参数
      form: {},
      // 表单校验
      rules: {
        defaultId: [
          { required: true, message: "违规不能为空", trigger: "blur" }
      auditingRules: {
        auditingStatus: [
          { required: true, message: "请先完成审核结果", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
    this.getUnitSelect();
  },
  methods: {
    handleChange(value) {
      console.log(value);
    },
    // 提交审核
    submitAuditing() {
      this.$refs["auditingForm"].validate(valid => {
        if (valid) {
          auditing(this.auditingForm).then(res => {
            if (res.code === 200) {
              this.auditingOpen = false;
              this.$modal.msgSuccess("审核成功");
              this.getList();
            } else {
              this.$modal.msgSuccess(res.msg)
            }
          })
        }
      })
    },
    // 打开审核
    handleAuditing(row) {
      this.auditingOpen = true;
      this.auditingForm = row;
      this.auditingForm.auditingStatus = this.auditingForm.auditingStatus ? this.auditingForm.auditingStatus : null
    },
    // 关闭审核
    closeAuditing() {
      this.auditingForm = {};
      this.auditingOpen = false;
    },
    getUnitSelect() {
      // 运维单位下拉列表
      unitSelect().then((res) => {
        this.unitList = res.data;
      })
    },
    /** 查询违规审核列表 */
    getList() {
      this.loading = true;
      this.queryParams.params = {};
      if (null != this.daterangeAuditingTime && '' != this.daterangeAuditingTime) {
        this.queryParams.params["beginAuditingTime"] = this.daterangeAuditingTime[0];
        this.queryParams.params["endAuditingTime"] = this.daterangeAuditingTime[1];
        this.queryParams["auditingStartTime"] = this.daterangeAuditingTime[0];
        this.queryParams["auditingEndTime"] = this.daterangeAuditingTime[1];
      }
      if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) {
        this.queryParams.params["beginCreateTime"] = this.daterangeCreateTime[0];
        this.queryParams.params["endCreateTime"] = this.daterangeCreateTime[1];
        this.queryParams["createStartTime"] = this.daterangeCreateTime[0];
        this.queryParams["createEndTime"] = this.daterangeCreateTime[1];
      }
      listAuditing(this.queryParams).then(response => {
        this.auditingList = response.rows;
        this.auditingList = response.data;
        this.total = response.total;
        this.loading = false;
      });
@@ -221,6 +369,7 @@
    // 取消按钮
    cancel() {
      this.open = false;
      this.auditOpen = false;
      this.reset();
    },
    // 表单重置
@@ -260,7 +409,7 @@
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加违规审核";
      this.title = "添加违规记录";
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
@@ -311,3 +460,30 @@
  }
};
</script>
<style scoped>
.margin-5 {
  margin-left: 5px;
}
.row-warp {
  display: flex;
  flex-direction: column;
}
.row {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  margin: 5px 0;
}
.row-left {
  flex: 1;
  display: flex;
  flex-direction: row;
}
.row-right {
  flex: 1;
  display: flex;
  flex-direction: row;
}
</style>