fuliqi
2024-11-01 4529cc97736ab92b30fb6351b37970bf53a22794
src/views/system/work-order/distribute/index.vue
@@ -18,11 +18,19 @@
        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
          <el-form-item label="关键词" prop="keyword">
            <el-input
              v-model="queryParams.menuName"
              v-model="queryParams.keyword"
              placeholder="关键词搜索"
              clearable
              @keyup.enter.native="page"
              @clear="page"
            />
          </el-form-item>
          <el-form-item label="故障类型" prop="errorTypeList">
            <el-select v-model="queryParams.errorTypeList" multiple placeholder="故障类型" clearable @change="page" @clear="page">
              <el-option v-for="dict in dict.type.error_type"
                         :value="dict.value"
                         :label="dict.label"/>
            </el-select>
          </el-form-item>
          <el-form-item label="下发状态" prop="status">
            <el-select v-model="queryParams.status" @change="page" placeholder="下发状态" clearable>
@@ -53,7 +61,6 @@
          <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="LAST_HALF_HOUR">最近30分钟</el-radio>
              <el-radio v-model="fastDistributeForm.fastWay" label="LAST_HOUR">最近1小时</el-radio>
              <el-radio v-model="fastDistributeForm.fastWay" label="LAST_TWO_HOUR">最近2小时</el-radio>
              <el-radio v-model="fastDistributeForm.fastWay" label="LAST_DAY">最近1天</el-radio>
@@ -71,10 +78,11 @@
              </el-date-picker>
            </el-form-item>
            <el-form-item label="故障类型" prop="errorType">
              <el-select v-model="fastDistributeForm.errorType">
                <el-option label="市政施工" value="市政施工"/>
                <el-option label="设备故障" value="设备故障"/>
                <el-option label="设备遗失" value="设备遗失"/>
              <el-select v-model="fastDistributeForm.errorType" multiple>
                <el-option v-for="dict in dict.type.error_type"
                           :value="dict.value"
                           :key="dict.value"
                           :label="dict.label"/>
              </el-select>
            </el-form-item>
            <el-form-item label="数量限制" prop="fastNumLimit">
@@ -96,10 +104,23 @@
        <el-table v-loading="loading" :data="workOrderList" @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="55" align="center" />
          <el-table-column label="工单号" align="center" prop="workOrderNo"/>
          <el-table-column label="运维单位" align="center" prop="unitName"/>
          <el-table-column label="工单来源" align="center" prop="source"/>
          <el-table-column label="国标码" align="center" prop="serialNumber"/>
          <el-table-column label="故障点位" align="center" prop="source">
            <template slot-scope="scope">
              <el-popover
                placement="right"
                :title="scope.row.important ? '重点点位': '正常点位'"
                width="200"
                trigger="hover">
                <span :class="{important: scope.row.important}" slot="reference">{{ scope.row.source }}</span>
              </el-popover>
            </template>
          </el-table-column>
          <el-table-column label="故障类型" align="center" prop="errorType"/>
          <el-table-column label="运维单位" align="center" prop="unitName"/>
          <el-table-column label="产生时间" align="center" prop="createTime"/>
          <el-table-column v-if="queryParams.status === 'DISTRIBUTED'" label="下发人" align="center" prop="realName"/>
          <el-table-column v-if="queryParams.status === 'DISTRIBUTED'" label="下发时间" align="center" prop="distributeTime"/>
        </el-table>
        <pagination
@@ -114,7 +135,7 @@
    </el-row>
    <!-- 添加或修改【请填写功能名称】对话框 -->
    <el-dialog :title="detailName" :visible.sync="open" width="500px" append-to-body>
    <el-dialog title="手动新增工单" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="运维单位" prop="unitId">
          <el-select v-model="form.unitId" placeholder="请选择">
@@ -126,13 +147,13 @@
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="工单来源" prop="source">
        <el-form-item label="故障点位" prop="source">
          <el-select
            v-model="form.source"
            filterable
            remote
            reserve-keyword
            placeholder="请选择来源"
            placeholder="国标码/点位名称搜索"
            :remote-method="remoteGetPoints"
            @change="setPointId"
            :loading="selectLoading">
@@ -145,16 +166,17 @@
          </el-select>
        </el-form-item>
        <el-form-item label="故障类型" prop="errorType">
          <el-select v-model="form.errorType">
            <el-option label="市政施工" value="市政施工"/>
            <el-option label="设备故障" value="设备故障"/>
            <el-option label="设备遗失" value="设备遗失"/>
          <el-select v-model="form.errorType" multiple>
            <el-option v-for="dict in dict.type.error_type"
                       :value="dict.value"
                       :key="dict.value"
                       :label="dict.label"/>
          </el-select>
        </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>
@@ -166,6 +188,7 @@
import {workList} from "@/api/platform/unit";
import { pointSelectData } from "@/api/platform/point";
export default {
  dicts: ['error_type'],
  name: 'index',
  data() {
    return {
@@ -275,7 +298,7 @@
  methods: {
    setPointId(selectedValue) {
      const selectedItem = this.pointList.find(item => item.value === selectedValue);
      this.form.pointId = selectedItem.id
      this.form.serialNumber = selectedItem.id
    },
    submitSetting() {
      this.$refs['settingForm'].validate((valid) => {
@@ -289,11 +312,13 @@
    },
    page() {
      this.loading = true;
      this.selectUnit();
      distributeWorkOrder(this.queryParams).then(res => {
        this.workOrderList = res.data.records;
        this.total = res.total;
        this.loading = false;
      distributeWorkOrder(this.queryParams).then(data => {
        workList(this.queryParams).then(res => {
          this.unitList = res.data;
          this.workOrderList = data.data.records;
          this.total = data.total;
          this.loading = false;
        })
      })
    },
    changeUnit(unitId, unitName) {
@@ -351,11 +376,11 @@
      console.log(key, keyPath);
    },
    getList() {
      this.page()
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.multipleSelection = selection.map(item => item.id)
      this.multipleSelection = selection.map(item => item.workOrderNo)
    },
    /** 新增按钮操作 */
    handleAdd() {
@@ -381,6 +406,7 @@
          } else {
            addWorkOrder(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.pointList = [];
              this.open = false;
              this.page();
            });
@@ -395,7 +421,7 @@
    },
    // 运维公司下拉数据
    selectUnit() {
      workList().then(res => {
      workList(this.queryParams).then(res => {
        this.unitList = res.data;
      })
    },
@@ -419,6 +445,12 @@
</script>
<style scoped>
.important {
  color: red;
}
/deep/ .el-popover__title {
  margin-bottom: 0px;
}
.row {
  padding: 0 20px;
}