ZhangXianQiang
2024-05-06 72f13e697d40c8fffc7aa0197fec4509bbe41569
src/views/system/work-order/index.vue
@@ -16,6 +16,14 @@
          <el-option label="设备遗失" value="设备遗失"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="审核状态" prop="status">
        <el-select v-model="queryParams.status" placeholder="审核状态" clearable @clear="handleQuery">
          <el-option label="已下发" value="DISTRIBUTED"></el-option>
          <el-option label="运维已处理" value="YW_HANDLE"></el-option>
          <el-option label="审核通过" value="AUDITING_SUCCESS"></el-option>
          <el-option label="审核不通过" value="AUDITING_FAIL"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="运维处理时间">
        <el-date-picker
          clearable
@@ -35,13 +43,13 @@
      </el-form-item>
    </el-form>
    <el-row>
      <el-col :span="8" v-for="item in workOrderList" :key="item" style="width: 390px;margin-left: 40px;margin-top:20px;">
        <el-card :body-style="{ padding: '0px' }">
    <el-row :gutter="20">
      <el-col :xl="6" :lg="8" :md="12" :sm="24"  v-for="item in workOrderList" :key="item.id" style="margin-bottom: 20px;">
        <el-card :body-style="{ padding: '0px',display: 'flex' }">
          <el-image :preview-src-list="['https://img2.baidu.com/it/u=68398439,1553004927&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=357']" fit="cover" src="https://img2.baidu.com/it/u=68398439,1553004927&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=357" class="image"/>
          <div style="padding-right: 10px;padding-top: 10px;float: right;">
          <div style="padding-right: 10px;padding-top: 10px;">
            <el-row>
              <el-col :span="24" class="time">故障类型:<el-tag size="small" type="danger">市政施工</el-tag></el-col>
              <el-col :span="24" class="time">故障类型:<el-tag size="small" type="danger">{{ item.errorType }}</el-tag></el-col>
            </el-row>
            <el-row class="work-order-item">
              <el-col class="time" :span="24">运维人员:{{ item.ywPeopleName }}</el-col>
@@ -67,17 +75,6 @@
                type="text"
                @click="handleYwCondition(item)"
              >运维情况</el-button>
              <!--          <el-button-->
              <!--            size="mini"-->
              <!--            type="text"-->
              <!--            @click="handleYwResult(scope.row)"-->
              <!--          >运维结果</el-button>-->
<!--              <el-button-->
<!--                size="mini"-->
<!--                type="text"-->
<!--                @click="handleCheckResult(item)"-->
<!--                v-hasPermi="['work:order:result']"-->
<!--              >检测结果</el-button>-->
              <el-button
                size="mini"
                type="text"
@@ -87,6 +84,7 @@
                size="mini"
                type="text"
                @click="handleReport(item)"
                v-hasPermi="['system:report:add']"
              >事后报备</el-button>
            </el-row>
          </div>
@@ -105,8 +103,8 @@
    <!-- 事后报备 -->
    <el-dialog title="事后报备" :visible.sync="reportOpen" width="600px" append-to-body>
      <el-form ref="reportForm" :model="reportForm" :rules="reportFormRules" label-width="80px">
        <el-form-item label="点位" prop="pointId">
          <el-input v-model="reportForm.pointId" disabled />
        <el-form-item label="点位" prop="source">
          <el-input v-model="reportForm.source" disabled />
        </el-form-item>
        <el-form-item label="报备类型">
          <el-input v-model="reportForm.reportType" disabled />
@@ -142,9 +140,15 @@
        <el-form-item label="运维人员" prop="ywPeopleName">
          <el-input v-model="auditingForm.ywPeopleName" disabled />
        </el-form-item>
        <el-form-item label="现场情况" v-if="auditingForm.condition">
          <span v-html="auditingForm.condition"></span>
        </el-form-item>
        <el-form-item label="佐证材料" v-if="auditingForm.proofMaterials">
          <el-link v-for="item in auditingForm.proofMaterials != null ? auditingForm.proofMaterials.split(',') : auditingForm.proofMaterials" :underline="false" :key="item.id" @click="handleDownload(item)">{{ item.substring(item.lastIndexOf("/") + 1) }}</el-link>
        </el-form-item>
        <el-form-item label="审核结果" prop="auditingResult">
          <el-radio v-model="auditingForm.auditingResult" label="pass">通过</el-radio>
          <el-radio v-model="auditingForm.auditingResult" label="return">驳回</el-radio>
          <el-radio v-model="auditingForm.auditingResult" label="AUDITING_SUCCESS">通过</el-radio>
          <el-radio v-model="auditingForm.auditingResult" label="AUDITING_FAIL">驳回</el-radio>
        </el-form-item>
        <el-form-item label="审核备注" prop="auditingRemark">
          <el-input v-model="auditingForm.auditingRemark" type="textarea" maxlength="30" show-word-limit/>
@@ -157,7 +161,7 @@
    </el-dialog>
    <el-dialog title="运维情况记录" :visible.sync="ywConditionOpen" width="500px" append-to-body>
      <el-form ref="ywConditionForm" :model="ywConditionForm" :rules="ywConditionRules" label-width="80px">
      <el-form ref="form" :model="form" :rules="ywConditionRules" label-width="80px">
        <el-form-item label="工单号" prop="workOrderNo">
          <el-input v-model="ywConditionForm.workOrderNo" disabled  />
        </el-form-item>
@@ -167,36 +171,11 @@
        <el-form-item label="运维人员" prop="ywPeopleName">
          <el-input v-model="ywConditionForm.ywPeopleName" disabled />
        </el-form-item>
        <el-form-item label="现场图片" prop="picture">
          <el-upload
            class="avatar-uploader"
            :action="this.$uploadUrl"
            name="file"
            :headers="{'Authorization': 'Bearer ' + getToken()}"
            :on-success="pictureUploadSuccess"
            :on-remove="pictureRemove"
            :file-list="pictureList"
            list-type="picture">
            <el-button size="small" type="primary">点击上传</el-button>
            <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
          </el-upload>
        <el-form-item label="现场情况" prop="ywCondition">
          <editor v-model="form.ywCondition" :min-height="192"/>
        </el-form-item>
        <el-form-item label="佐证材料" prop="certificates">
          <el-upload
            class="avatar-uploader"
            :action="this.$uploadUrl"
            name="file"
            :headers="{'Authorization': 'Bearer ' + getToken()}"
            :on-success="certificateUploadSuccess"
            :on-remove="certificateRemove"
            :file-list="certificateList"
            list-type="picture">
            <el-button size="small" type="primary">点击上传</el-button>
            <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
          </el-upload>
        </el-form-item>
        <el-form-item label="运维情况" prop="ywCondition">
          <el-input v-model="ywConditionForm.ywCondition" type="textarea" maxlength="150" show-word-limit/>
        <el-form-item label="佐证材料" prop="ywProofMaterials">
          <file-upload v-model="form.ywProofMaterials"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -206,80 +185,10 @@
    </el-dialog>
    <el-dialog title="运维结果记录" :visible.sync="ywResultOpen" width="500px" append-to-body>
      <el-form ref="ywResultForm" :model="ywResultForm" :rules="ywResultRules" label-width="80px">
        <el-form-item label="工单号" prop="workOrderNo">
          <el-input v-model="ywResultForm.workOrderNo" disabled  />
        </el-form-item>
        <el-form-item label="运维单位" prop="unitName">
          <el-input v-model="ywResultForm.unitName" disabled  />
        </el-form-item>
        <el-form-item label="运维人员" prop="ywPeopleName">
          <el-input v-model="ywResultForm.ywPeopleName" disabled />
        </el-form-item>
        <el-form-item label="运维结果" prop="ywResult">
          <el-input v-model="ywResultForm.ywResult" type="textarea" maxlength="150" show-word-limit/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitYwResult">确 定</el-button>
        <el-button @click="cancelYwResult">取 消</el-button>
      </div>
    </el-dialog>
    <el-dialog title="运维检测结果" :visible.sync="checkResultOpen" width="550px" append-to-body>
      <el-form ref="ywResultForm" :model="checkResultForm" :rules="checkResultRules" label-width="120px">
        <el-form-item label="工单号" prop="workOrderNo">
          <el-input v-model="checkResultForm.workOrderNo" disabled  />
        </el-form-item>
        <el-form-item label="运维单位" prop="unitName">
          <el-input v-model="checkResultForm.unitName" disabled  />
        </el-form-item>
        <el-form-item label="运维人员" prop="ywPeopleName">
          <el-input v-model="checkResultForm.ywPeopleName" disabled />
        </el-form-item>
        <el-form-item label="运维检测结果" prop="ywCheckResult">
          <file-upload v-model="checkResultForm.ywCheckResult"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitYwResult">确 定</el-button>
        <el-button @click="cancelCheckResult">取 消</el-button>
      </div>
    </el-dialog>
    <!-- 添加或修改运维工单对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="550px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="工单号" prop="workOrderNo">
          <el-input v-model="form.workOrderNo" placeholder="请输入工单号" />
        </el-form-item>
        <el-form-item label="运维处理时间" prop="ywHandleTime">
          <el-date-picker clearable
            v-model="form.ywHandleTime"
            type="date"
            value-format="yyyy-MM-dd"
            placeholder="请选择运维处理时间">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="运维情况" prop="ywCondition">
          <el-input v-model="form.ywCondition" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label="运维检测结果" prop="ywCheckResult">
          <el-input v-model="form.ywCheckResult" type="textarea" placeholder="请输入内容" />
        </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>
    <!-- 过程图 -->
    <el-dialog title="过程图" :visible.sync="flowOpen" width="1200px" :close-on-click-modal="false" append-to-body>
      <div>
        <el-steps :active="2" :space="500">
        <el-steps :active="ywAuditingList.length != 0 ? 3 : ywHandleList.length != 0 ? 2 : 1" :space="500">
          <el-step title="产生工单">
            <template slot="description">
              <div>
@@ -295,88 +204,54 @@
                <div class="flow-item-x">
                  创建时间:{{flowForm.createTime}}
                </div>
                <div class="flow-item-x">
                  处理期限:<el-tag type="danger" size="small">12小时</el-tag>
                <div class="flow-item-x" v-if="flowForm.processingPeriod">
                  处理期限:<el-tag type="danger" size="small">{{ flowForm.processingPeriod }}</el-tag>
                </div>
              </div>
            </template>
          </el-step>
          <el-step title="运维处理">
            <template slot="description">
              <div class="y-item">
              <div class="y-item" v-for="(item, index) in ywHandleList" :key="index">
                <div class="y-item-1">
                  <div class="flow-item-x">
                    运维状态:<el-tag type="danger" size="small">结果上报</el-tag>
                    现场情况:
                    <el-tooltip class="item" effect="dark" :content="item.ywCondition" placement="top">
                      <el-tag size="small" class="line-limit-length">{{ item.ywCondition }}</el-tag>
                    </el-tooltip>
                  </div>
                  <div class="flow-item-x">
                    运维人员:<el-tag type="danger" size="small">{{flowForm.ywPeopleName}}</el-tag>
                  </div>
                  <!-- <div class="flow-item-x">
                    <el-tag size="small" v-for="file in item.ywProofMaterials != null ? item.ywProofMaterials.split(',') : item.ywProofMaterials" :key="file" @click="handleDownload(file)">{{ file.substring(file.lastIndexOf("/") + 1) }}</el-tag>
                  </div> -->
                </div>
                <div class="y-item-2">
                  <div >
                    {{flowForm.ywHandleTime}}
                    {{ parseTime(item.createTime) }}
                  </div>
                  <div >
                    第几次:1
                    第几次:{{ index + 1 }}
                  </div>
                </div>
              </div>
              <div class="y-item">
                <div class="y-item-1">
                  <div class="flow-item-x">
                    运维状态:<el-tag type="danger" size="small">结果上报</el-tag>
                  </div>
                  <div class="flow-item-x">
                    运维人员:<el-tag type="danger" size="small">{{flowForm.ywPeopleName}}</el-tag>
                  </div>
                </div>
                <div class="y-item-2">
                  <div >
                    {{flowForm.ywHandleTime}}
                  </div>
                  <div >
                    第几次:2
                  </div>
                </div>
              </div>
            </template>
          </el-step>
          <el-step title="结果审核">
            <template slot="description">
              <div class="y-item">
              <div class="y-item" v-for="(item, index) in ywAuditingList" :key="index">
                <div class="y-item-1">
                  <div class="flow-item-x">
                    审核结果:<el-tag type="danger" size="small">驳回</el-tag>
                    审核结果:<el-tag :type="item.result == '审核通过' ? 'success' : 'danger'" size="small">{{ item.result }}</el-tag>
                  </div>
                  <div class="flow-item-x">
                    审核说明:<el-tag type="danger" size="small">未成功处理</el-tag>
                    审核说明:<el-tag size="small" v-if="item.remark">{{ item.remark }}</el-tag>
                  </div>
                </div>
                <div class="y-item-2">
                  <div >
                    {{flowForm.ywHandleTime}}
                    {{ parseTime(item.createTime) }}
                  </div>
                  <div >
                    第几次:1
                  </div>
                </div>
              </div>
              <div class="y-item">
                <div class="y-item-1">
                  <div class="flow-item-x">
                    审核状态:<el-tag type="info" size="small">审核中</el-tag>
                  </div>
                  <div class="flow-item-x">
                    审核说明:
                  </div>
                </div>
                <div class="y-item-2">
                  <div >
                    {{flowForm.ywHandleTime}}
                  </div>
                  <div >
                    第几次:2
                    第几次:{{ index + 1 }}
                  </div>
                </div>
              </div>
@@ -408,13 +283,16 @@
}
</style>
<script>
import { listWorkOrder, getWorkOrder, delWorkOrder, addWorkOrder, updateWorkOrder,auditing, ywCondition } from "@/api/platform/work-order";
import { listWorkOrder, getWorkOrder, delWorkOrder, addWorkOrder, updateWorkOrder,auditing, ywCondition, getYwCondition, getYwConditionList, getYwAuditingList } from "@/api/platform/work-order";
import { addReport } from "@/api/platform/report";
export default {
  name: "Work-order",
  components: {
  },
  data() {
    return {
      ywHandleList: [],
      ywAuditingList: [],
      reportFormRules: {
        reportContent: [
          { required: true, message: "报备内容不能为空", trigger: "blur" }
@@ -426,7 +304,7 @@
      reportOpen: false,
      reportForm: {
        reportType: "事后报备",
        pointId: "琼于镇3街1号摄像头",
        pointId: "",
        errorType: "",
        reportContent: "",
        reportMaterials: ""
@@ -466,6 +344,7 @@
        ywHandleTime: null,
        ywResult: null,
        ywCondition: null,
        status: ''
      },
      // 表单参数
      form: {},
@@ -515,13 +394,17 @@
    this.getList();
  },
  methods: {
    /** 下载按钮操作 */
    handleDownload (data) {
      this.$download.resource(data);
    },
    // 报备
    submitReportForm() {
      this.$refs["reportForm"].validate(valid => {
        if (valid) {
          addReport(this.form).then(response => {
          addReport(this.reportForm).then(response => {
            this.$modal.msgSuccess("成功提交报备");
            this.open = false;
            this.reportOpen = false;
            this.getList();
          });
        }
@@ -529,18 +412,27 @@
    },
    // 事后报备按钮
    handleReport(row) {
      this.reportForm.pointId = row.source;
      this.reportForm.pointId = row.pointId;
      this.reportForm.source = row.source;
      this.reportOpen = true;
    },
    // 审核按钮
    handleAuditing(row) {
      this.auditingForm = row;
      this.auditingOpen = true;
      getYwCondition(row.id).then(response => {
        if (response.data) {
          this.auditingForm.condition = response.data.ywCondition;
          this.auditingForm.proofMaterials = response.data.ywProofMaterials;
        }
        this.auditingOpen = true;
      });
    },
    // 运维情况按钮
    handleYwCondition(row) {
      this.form = {};
      this.ywConditionForm = row;
      this.ywConditionOpen = true;
      this.form.id = row.id;
    },
    // 运维结果按钮
    handleYwResult(row) {
@@ -554,8 +446,18 @@
    },
    // 过程图查看
    handleFlow(row) {
      this.flowOpen = true;
      this.flowForm = row;
      getYwAuditingList(row.id).then(response => {
        if (response.data) {
          this.ywAuditingList = response.data;
        }
      });
      getYwConditionList(row.id).then(response => {
        if (response.data) {
          this.ywHandleList = response.data;
        }
        this.flowOpen = true;
      });
    },
    // 提交审核
    submitAuditing() {
@@ -564,6 +466,7 @@
          auditing(this.auditingForm).then(res => {
            this.auditingOpen = false;
            this.$modal.msgSuccess("操作成功");
            this.getList();
          })
        }
      })
@@ -601,11 +504,12 @@
    },
    // 提交运维情况
    submitYwCondition() {
      this.$refs["ywConditionForm"].validate(valid => {
      this.$refs["form"].validate(valid => {
        if (valid) {
          ywCondition(this.ywConditionForm).then(res => {
          ywCondition(this.form).then(res => {
            this.ywConditionOpen = false;
            this.$modal.msgSuccess("操作成功");
            this.getList();
          })
        }
      })
@@ -634,10 +538,9 @@
    getList() {
      this.loading = true;
      this.queryParams.params = {};
      if (null != this.daterangeYwHandleTime && '' != this.daterangeYwHandleTime) {
        this.queryParams["start"] = this.daterangeYwHandleTime[0];
        this.queryParams["end"] = this.daterangeYwHandleTime[1];
      }
      this.queryParams["start"] = this.daterangeYwHandleTime ? this.daterangeYwHandleTime[0] : null;
      this.queryParams["end"] = this.daterangeYwHandleTime ? this.daterangeYwHandleTime[1] : null;
      if (this.queryParams["status"] == "") { this.queryParams["status"] = "DISTRIBUTED"; }
      listWorkOrder(this.queryParams).then(response => {
        this.workOrderList = response.data;
        this.total = response.total;
@@ -767,4 +670,11 @@
  height: 150px;
  padding: 10px;
}
.line-limit-length {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 200px;
}
</style>