ZhangXianQiang
2024-03-19 3565269c046b9aed7346f8c6c74a231dd1218ec7
Merge branch 'master' of http://42.193.1.25:9521/r/zgyw-ui
8个文件已修改
364 ■■■■ 已修改文件
src/api/platform/check-result.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/platform/work-order.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/check-result/index.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/check-rule/index.vue 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/contract/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/publish/index.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/work-order/distribute/index.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/work-order/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/platform/check-result.js
@@ -43,6 +43,14 @@
  })
}
// 发布考核结果
export function publishCheckResult(id) {
  return request({
    url: '/check-result/publish/' + id,
    method: 'put'
  })
}
// 提交人工分数
export function manualScore(data) {
  return request({
src/api/platform/work-order.js
@@ -9,6 +9,24 @@
  })
}
// 查询下发工单列表
export function distributeWorkOrder(query) {
  return request({
    url: '/work-order/distribute/page',
    method: 'post',
    data: query
  })
}
// 快速下发工单
export function fastDistribute(data) {
  return request({
    url: '/work-order/distribute/fast',
    method: 'post',
    data: data
  })
}
// 查询运维工单详细
export function getWorkOrder(id) {
  return request({
src/views/system/check-result/index.vue
@@ -93,7 +93,11 @@
      <div class="text item">考核范围<span class="time">{{ item.examineRange }}</span></div>
      <div class="text item">考核频率<span class="time">{{ item.frequency }}</span></div>
      <div class="text item">考核分数<span class="time">{{ item.checkScore }}</span></div>
      <div class="text item">考核时间<span class="time">{{ item.checkTime }}</span></div>
      <div class="text item">考核时间
        <span class="time">{{ item.checkTime }}</span>
        <el-button size="small" round style="float: right;" @click="handlePublish(item)" v-show="item.publish != 1">确认发布</el-button>
        <el-button size="small" round style="float: right;" v-show="item.publish == 1" disabled="true">已发布</el-button>
      </div>
    </el-card>
    <!-- <el-table v-loading="loading" :data="checkResultList" @selection-change="handleSelectionChange">
@@ -194,6 +198,13 @@
        <el-descriptions-item>
          <template slot="label">
            <i class="el-icon-medal"></i>
            车辆点位在线率
          </template>
          <el-tag type="danger" size="small">{{detail.carOnlineRate}}</el-tag>
        </el-descriptions-item>
        <el-descriptions-item>
          <template slot="label">
            <i class="el-icon-medal"></i>
            综合分数
          </template>
          <el-tag type="danger" size="small">{{detail.systemScore}}</el-tag>
@@ -214,7 +225,7 @@
</template>
<script>
import { listCheckResult, getCheckResult, delCheckResult, addCheckResult, updateCheckResult,manualScore } from "@/api/platform/check-result";
import { listCheckResult, getCheckResult, delCheckResult, addCheckResult, updateCheckResult,manualScore, publishCheckResult } from "@/api/platform/check-result";
export default {
  name: "CheckResult",
@@ -222,7 +233,9 @@
    return {
      detailTitle: '',
      detailOpen: false,
      detail: {},
      detail: {
      },
      manualScoreOpen: false,
      manualScoreForm: {},
      manualScoreTitle: '',
@@ -338,10 +351,21 @@
    },
    handleDetail(row) {
      this.detail = row;
      this.detail.carOnlineRate =  '97%';
      this.detailTitle = row.checkUnitName + '考核结果';
      this.detailOpen = true;
    },
    handlePublish(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认发布考核结果编号为"' + ids + '"的数据项?').then(function() {
        return publishCheckResult(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("发布成功");
      }).catch(() => {});
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
src/views/system/check-rule/index.vue
@@ -82,8 +82,23 @@
      </el-table-column>
      <el-table-column label="规则描述" align="center" prop="ruleDetail" />
        <el-table-column label="创建时间" align="center" prop="createTime" />
      <el-table-column label="审核状态" align="center" prop="auditState">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.platform_audit_state" :value="scope.row.auditState"/>
        </template>
      </el-table-column>
      <el-table-column label="审核人" align="center" prop="auditUser" />
      <el-table-column label="审核时间" align="center" prop="auditTime" />
      <el-table-column label="审核意见" align="center" prop="auditDescription" />
        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
          <template slot-scope="scope">
            <el-button
              size="mini"
              type="text"
              icon="el-icon-s-check"
              @click="handleAudit(scope.row)"
              v-hasPermi="['check:rule:audit']"
            >审核</el-button>
            <el-button
              size="mini"
              type="text"
@@ -107,7 +122,7 @@
            :limit.sync="queryParams.pageSize"
            @pagination="getList"
          />
  <div>
    <!-- 添加或修改考核规则对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
@@ -138,16 +153,15 @@
              <div class="row-right">
                <div>不少于</div>
                <div>
                  <el-input class="input-w" type="number" v-model="form.videoPointNum"/>
                  <el-input class="input-w" type="number" v-model="form.videoPointNum"/>{{" %"}}
                </div>
              </div>
            </div>
            <div class="row">
              <div class="row-left">车辆卡口点位数</div>
              <div class="row-right">
                <div>不少于</div>
                <div><el-input class="input-w" type="number" v-model="form.vehicleCheckpointNum"/></div>
                <div><el-input class="input-w" type="number" v-model="form.vehicleCheckpointNum"/></div>{{" %"}}
              </div>
            </div>
            <div class="row">
@@ -155,7 +169,7 @@
              <div class="row-right">
                <div>不少于</div>
                <div>
                  <el-input class="input-w" type="number" v-model="form.faceChceckpointNum"/></div>
                  <el-input class="input-w" type="number" v-model="form.faceChceckpointNum" /></div>{{" %"}}
                </div>
            </div>
          </div>
@@ -167,6 +181,75 @@
      </div>
    </el-dialog>
  </div>
  <!-- 审核考核规则对话框 -->
  <el-dialog :title="title" :visible.sync="auditOpen" width="600px" append-to-body>
    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
      <el-form-item label="规则名称" prop="ruleName">
        <el-input v-model="form.ruleName" placeholder="请输入规则名称" disabled/>
      </el-form-item>
      <el-form-item label="规则类型" prop="category">
        <el-select v-model="form.category" placeholder="规则类型" disabled>
          <el-option
            v-for="item in categoryList"
            :key="item.id"
            :label="item.value"
            :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="规则描述" prop="ruleDetail">
        <el-input v-model="form.ruleDetail" type="textarea" show-word-limit maxlength="150" placeholder="请输入规则描述" disabled/>
      </el-form-item>
      <el-form-item label="参数配置" prop="ruleDetail" disabled>
        <div class="row-warp">
          <div class="row">
            <div class="row-left">参数名</div>
            <div class="row-right">条件</div>
          </div>
          <div class="row">
            <div class="row-left">天网视频点位数</div>
            <div class="row-right">
              <div>不少于</div>
              <div>
                <el-input class="input-w" type="number" v-model="form.videoPointNum" disabled/>
              </div>
            </div>
          </div>
          <div class="row">
            <div class="row-left">车辆卡口点位数</div>
            <div class="row-right">
              <div>不少于</div>
              <div><el-input class="input-w" type="number" v-model="form.vehicleCheckpointNum" disabled/></div>
            </div>
          </div>
          <div class="row">
            <div class="row-left">人脸卡口点位数</div>
            <div class="row-right">
              <div>不少于</div>
              <div>
                <el-input class="input-w" type="number" v-model="form.faceChceckpointNum" disabled/></div>
            </div>
          </div>
        </div>
      </el-form-item>
      <el-form-item label="审核结果" prop="auditState" >
        <el-radio-group v-model="form.auditState">
        <el-radio :label="1">通过</el-radio>
        <el-radio :label="2">驳回</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="审核说明" prop="auditDescription" >
        <el-input v-model="form.auditDescription" 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 @click="cancel">取 消</el-button>
    </div>
  </el-dialog>
  </div>
</template>
<script>
@@ -174,6 +257,7 @@
export default {
  name: "CheckRule",
  dicts: ['platform_audit_state'],
  data() {
    return {
      // 遮罩层
@@ -201,6 +285,8 @@
      title: "",
      // 是否显示弹出层
      open: false,
      // 是否显示弹出层
      auditOpen: false,
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -238,6 +324,7 @@
    // 取消按钮
    cancel() {
      this.open = false;
      this.auditOpen = false;
      this.reset();
    },
    // 表单重置
@@ -285,6 +372,17 @@
        this.form = response.data;
        this.open = true;
        this.title = "修改考核规则";
      });
    },
    /** 审核按钮操作 */
    handleAudit(row) {
      this.reset();
      const id = row.id || this.ids
      getCheckRule(id).then(response => {
        this.form = response.data;
        this.auditOpen = true;
        this.title = "审核考核规则";
      });
    },
    /** 提交按钮 */
@@ -295,12 +393,14 @@
            updateCheckRule(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.auditOpen = false;
              this.getList();
            });
          } else {
            addCheckRule(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.auditOpen = false;
              this.getList();
            });
          }
@@ -317,6 +417,7 @@
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** 导出按钮操作 */
    handleExport() {
      this.download('system/checkRule/export', {
@@ -330,7 +431,7 @@
<style scoped>
.input-w {
  margin-left: 5px;
  width: 100px;
  width: 70px;
}
.row-warp {
  display: flex;
src/views/system/contract/index.vue
@@ -95,7 +95,7 @@
    </el-dialog>
    
    <!-- 合同详情 -->
    <el-dialog :title="detailName" :visible.sync="detail" width="500px" append-to-body>
    <el-dialog :title="detailName" :visible.sync="detail" width="800px" append-to-body>
      <el-form label-position="left" inline class="table-expand">
        <el-collapse v-model="activeNames" @change="handleChange">
          <el-collapse-item title="视频平均在线率" name="1">
@@ -198,7 +198,7 @@
                </span>
              </div>
          </el-upload>
          <el-dialog :visible.sync="dialogVisible">
          <el-dialog :visible.sync="dialogVisible" append-to-body="false">
            <img width="100%" :src="dialogImageUrl" alt="">
          </el-dialog>
          <div style="text-align: right; margin-top: 10px;">
src/views/system/publish/index.vue
@@ -117,12 +117,25 @@
        <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.state"/>
      </template>
      </el-table-column>
      <el-table-column label="创建人" align="center" prop="createUserName" />
      <el-table-column label="创建时间" align="center" prop="createTime" />
      <el-table-column label="修改人" align="center" prop="updateUserName" />
      <el-table-column label="修改时间" align="center" prop="updateTime" />
      <el-table-column label="修改时间" align="center" prop="updateTime" width="170px" />
      <el-table-column label="审核状态" align="center" prop="auditState">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.platform_audit_state" :value="scope.row.auditState"/>
        </template>
      </el-table-column>
      <el-table-column label="审核人" align="center" prop="auditUser" />
      <el-table-column label="审核时间" align="center" prop="auditTime" width="170px"/>
      <el-table-column label="审核意见" align="center" prop="auditDescription" />
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-s-check"
            @click="handleAudit(scope.row)"
            v-hasPermi="['examine:publish:audit']"
          >审核</el-button>
          <el-button
            size="mini"
            type="text"
@@ -146,7 +159,7 @@
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
  <div>
    <!-- 添加或修改考核发布对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
@@ -175,11 +188,11 @@
              v-for="dict in dict.type.platform_examine_range"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
              :value="parseInt(dict.value)"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="考核频率" prop="frequency">
        <el-form-item label="考核频率">
          <el-select
            v-model="form.frequency"
            placeholder="考核频率"
@@ -190,7 +203,7 @@
              v-for="dict in dict.type.platform_examine_frequency"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
              :value="parseInt(dict.value)"
            />
          </el-select>
        </el-form-item>
@@ -208,7 +221,7 @@
              v-for="dict in dict.type.sys_normal_disable"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
              :value="parseInt(dict.value)"
            />
          </el-select>
        </el-form-item>
@@ -221,6 +234,94 @@
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
    <!-- 审核考核发布对话框 -->
    <el-dialog :title="title" :visible.sync="auditOpen" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
        <el-form-item label="考核名" prop="examineName">
          <el-input v-model="form.examineName" placeholder="请输入考核名" disabled/>
        </el-form-item>
        <el-form-item label="考核模板" prop="templateId">
          <el-select v-model="form.templateId" placeholder="考核模板" disabled>
            <el-option
              v-for="item in templateList"
              :key="item.id"
              :label="item.value"
              :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="考核范围" prop="examineRange" >
          <el-select
            v-model="form.examineRange"
            placeholder="考核范围"
            clearable
            style="width: 170px"
            disabled
          >
            <el-option
              v-for="dict in dict.type.platform_examine_range"
              :key="dict.value"
              :label="dict.label"
              :value="parseInt(dict.value)"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="考核频率" prop="frequency" >
          <el-select
            v-model="form.frequency"
            placeholder="考核频率"
            clearable
            style="width: 170px"
            disabled
          >
            <el-option
              v-for="dict in dict.type.platform_examine_frequency"
              :key="dict.value"
              :label="dict.label"
              :value="parseInt(dict.value)"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="报警分数阈值" prop="alarmScore">
          <el-input v-model="form.alarmScore" placeholder="请输入分数" style="width: 170px"  disabled/>
        </el-form-item>
        <el-form-item label="考核状态" prop="state">
          <el-select
            v-model="form.state"
            placeholder="考核状态"
            clearable
            style="width: 170px"
            disabled
          >
            <el-option
              v-for="dict in dict.type.sys_normal_disable"
              :key="dict.value"
              :label="dict.label"
              :value="parseInt(dict.value)"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="描述" prop="description">
          <el-input v-model="form.description" type="textarea" placeholder="请输入内容" disabled/>
        </el-form-item>
        <el-form-item label="审核结果" prop="auditState" >
          <el-radio-group v-model="form.auditState">
            <el-radio :label="1">通过</el-radio>
            <el-radio :label="2">驳回</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="审核说明" prop="auditDescription" >
          <el-input v-model="form.auditDescription" 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 @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
  </div>
  </div>
</template>
@@ -229,7 +330,7 @@
import { templateSelect } from "@/api/platform/check-template";
export default {
  name: "Publish",
  dicts: ['sys_normal_disable','platform_examine_range','platform_examine_frequency'],
  dicts: ['sys_normal_disable','platform_examine_range','platform_examine_frequency','platform_audit_state'],
  data() {
    return {
      // 遮罩层
@@ -250,6 +351,7 @@
      title: "",
      // 是否显示弹出层
      open: false,
      auditOpen: false,
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -291,6 +393,7 @@
    // 取消按钮
    cancel() {
      this.open = false;
      this.auditOpen = false;
      this.reset();
    },
    // 表单重置
@@ -341,6 +444,16 @@
        this.title = "修改考核发布";
      });
    },
    /** 修改按钮操作 */
    handleAudit(row) {
      this.reset();
      const id = row.id || this.ids
      getPublish(id).then(response => {
        this.form = response.data;
        this.auditOpen = true;
        this.title = "审核考核发布";
      });
    },
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
@@ -349,12 +462,14 @@
            updatePublish(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.auditOpen = false;
              this.getList();
            });
          } else {
            addPublish(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.auditOpen = false;
              this.getList();
            });
          }
src/views/system/work-order/distribute/index.vue
@@ -2,7 +2,7 @@
  <div class="row">
    <el-row type="flex" justify="left">
      <el-col :span="24" style="position: relative">
        <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">
        <el-menu :default-active="activeIndex" class="el-menu" mode="horizontal" @select="handleSelect">
          <el-menu-item index="0" @click="changeUnit(null, '全部')">
            全部单位
          </el-menu-item>
@@ -27,13 +27,19 @@
    <el-row class="op-warp" type="flex" justify="left" >
      <el-col :span="24">
        <el-button size="small" type="info" @click="selectedDistribute" class="op">下发选中工单</el-button>
        <el-button size="small" type="danger" @click="allDistribute" class="op">全部下发</el-button>
        <el-popconfirm
          @confirm="allDistribute"
          title="确定要下发所有工单吗?"
        >
          <el-button size="small" type="danger"  class="op" slot="reference">全部下发</el-button>
        </el-popconfirm>
        <el-popover
          class="op"
          placement="right"
          width="300px"
          trigger="click">
          <span style="font-weight: bold;font-size: 16px">快速下发</span>
          <span style="font-weight: bold;font-size: 16px">快捷下发</span>
          <el-form ref="fastDistributeForm" :model="fastDistributeForm" :rules="fastDistributeRules" label-width="80px">
            <el-form-item label="快捷方式" prop="fastWay">
              <el-radio v-model="fastDistributeForm.fastWay" label="0">最近30分钟</el-radio>
@@ -89,6 +95,7 @@
</template>
<script>
import {distributeWorkOrder, fastDistribute} from '@/api/platform/work-order'
export default {
  name: 'index',
  data() {
@@ -102,7 +109,7 @@
      fastTimeRange: [],
      // 下发
      fastDistributeForm: {
        fastWay: '',
        fastWay: null,
        fastNumLimit: null,
        start: null,
        end: null,
@@ -118,8 +125,9 @@
        ],
      },
      queryParams: {
        unitId: null,
        pageNum: 1,
        pageSize: 10,
        pageSize: 20,
      },
      // 总条数
      total: 0,
@@ -130,11 +138,23 @@
      workOrderList: [],
    }
  },
  mounted() {
    this.page();
  },
  methods: {
    page() {
      this.loading = true;
      distributeWorkOrder(this.queryParams).then(res => {
        this.workOrderList = res.data;
        this.total = res.total;
        this.loading = false;
      })
    },
    changeUnit(unitId, unitName) {
      this.unitId = unitId;
      this.queryParams.unitId = unitId;
      this.unitName = unitName;
      // todo 触发数据查询
      this.page()
    },
    clearFastDistributeForm() {
      this.fastDistributeForm.fastWay = ''
@@ -146,17 +166,12 @@
    allDis() {},
    // 全部下发
    allDistribute() {
      this.$modal.confirm("确定要下发" + (this.unitId ? this.unitName + "下的" : "所有工单") + "吗?").then(function() {
        return this.allDis();
      }).then(() => {
        // this.getList();
        // this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
      this.fastDistribute();
    },
    // 快速下发
    fastDistribute() {
      this.$refs['fastDistributeForm'].validate((valid) => {
        if (valid) {
      // this.$refs['fastDistributeForm'].validate((valid) => {
      //   if (valid) {
          // 如果是自定义方式,那么时间段必填
          if (this.fastDistributeForm.fastWay === '101' && !this.fastTimeRange.length > 0) {
            this.$message.warning("请选择时间范围")
@@ -167,11 +182,14 @@
            this.fastDistributeForm.end = this.fastTimeRange[1]
          }
          this.fastDistributeForm.unitId = this.unitId
          // todo 提交快速发布请求
        } else {
          return false
        }
          fastDistribute(this.fastDistributeForm).then(res => {
            // this.clearFastDistributeForm();
            this.page();
      })
        // } else {
        //   return false
        // }
      // })
    },
    // 选中工单下发
    selectedDistribute() {
@@ -179,7 +197,7 @@
        this.$message.warning("请先选择要下发的工单")
        return
      }
      // todo 下发工单
      this.fastDistribute();
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
@@ -213,4 +231,5 @@
  top: 10px;
  right:5px
}
</style>
src/views/system/work-order/index.vue
@@ -102,6 +102,7 @@
            size="mini"
            type="text"
            @click="handleAuditing(scope.row)"
            v-hasPermi="['work:order:audit']"
          >审核</el-button>
          <el-button
            size="mini"