920 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			920 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Vue
		
	
	
	
<template>
 | 
						|
  <div class="app-container" style="padding-top:15px">
 | 
						|
    <div class="filter-container">
 | 
						|
      <el-button
 | 
						|
        type="primary"
 | 
						|
        style="position:absolute;right:50px;margin-top:80px"
 | 
						|
        @click="$router.push('/convenience/add')"
 | 
						|
        ><i class="el-icon-plus" /> 直接建立工单</el-button
 | 
						|
      >
 | 
						|
      <div class="title">工单列表</div>
 | 
						|
      <div style="margin-bottom:15px;margin-top:15px" />
 | 
						|
      <el-radio-group v-model="listQuery.phase">
 | 
						|
        <el-radio-button :label="undefined">全部阶段</el-radio-button>
 | 
						|
        <el-radio-button label="PENDING_ORDER">待接单</el-radio-button>
 | 
						|
        <el-radio-button label="PREREQUISITES">要件准备中</el-radio-button>
 | 
						|
        <el-radio-button label="PROCESSING">办理中</el-radio-button>
 | 
						|
        <el-radio-button label="FINISH">已办结</el-radio-button>
 | 
						|
      </el-radio-group>
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <el-radio-group v-model="listQuery.status">
 | 
						|
        <el-radio-button :label="undefined">全部状态</el-radio-button>
 | 
						|
        <el-radio-button label="MINE">我处理</el-radio-button>
 | 
						|
        <el-radio-button label="FORWARDED">已转交</el-radio-button>
 | 
						|
        <el-radio-button label="FORWARDED_APPLY"
 | 
						|
          >转交超限审批中</el-radio-button
 | 
						|
        >
 | 
						|
        <el-radio-button label="SUBMIT_APPLY">已提交审批</el-radio-button>
 | 
						|
        <el-radio-button label="WAIT_APPLY">待我审批</el-radio-button>
 | 
						|
      </el-radio-group>
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
    </div>
 | 
						|
 | 
						|
    <div class="convenienceList" v-loading="listLoading">
 | 
						|
      <div
 | 
						|
        v-for="(item, index) in list"
 | 
						|
        :key="item.id"
 | 
						|
        class="convenience_item"
 | 
						|
        @click="
 | 
						|
          $router.push({ path: '/convenience/detail', query: { id: item.id } })
 | 
						|
        "
 | 
						|
      >
 | 
						|
        <div class="convenience_item_title" style="flex:1">
 | 
						|
          <i class="icon_list" />
 | 
						|
          <div>
 | 
						|
            <div class="cTitle">{{ item.eventType.eventName }}</div>
 | 
						|
            <div class="createDate">
 | 
						|
              {{ item.sponsor | sponsorFilter }}创建于{{
 | 
						|
                item.createDate | parseTime("{y}-{m}-{d} {h}:{i}:{s}")
 | 
						|
              }}
 | 
						|
            </div>
 | 
						|
          </div>
 | 
						|
        </div>
 | 
						|
        <div style="display:flex;flex:2;font-size:14px;color:#787878">
 | 
						|
          <div style="flex:1">
 | 
						|
            <p>流水号:{{ item.serialNumber }}</p>
 | 
						|
            <p>
 | 
						|
              阶段:{{ item.phase | phaseFilter }}
 | 
						|
              <i
 | 
						|
                class="icon_timeout"
 | 
						|
                v-if="timers && timers[index].status !== null"
 | 
						|
              ></i>
 | 
						|
              <span style="color:#ff3000">{{
 | 
						|
                timers && timers[index].status === null
 | 
						|
                  ? ""
 | 
						|
                  : timers && timers[index].status
 | 
						|
                  ? "已超时"
 | 
						|
                  : "即将超时"
 | 
						|
              }}</span>
 | 
						|
            </p>
 | 
						|
          </div>
 | 
						|
          <div style="flex:1">
 | 
						|
            <p>
 | 
						|
              申办人:{{
 | 
						|
                item.residentInformation !== null
 | 
						|
                  ? item.residentInformation.name
 | 
						|
                  : ""
 | 
						|
              }}
 | 
						|
            </p>
 | 
						|
            <!-- v-if="!isLeader" -->
 | 
						|
            <p v-if="listQuery.status!==undefined">
 | 
						|
              状态:<span style="color:#ff5a00">{{
 | 
						|
                item.statusList[0].status | statusFilter
 | 
						|
              }}</span>
 | 
						|
            </p>
 | 
						|
          </div>
 | 
						|
          <div style="flex:1">
 | 
						|
            <p>受理人:{{ item.firstResponsiblePerson.name }}</p>
 | 
						|
          </div>
 | 
						|
          <div
 | 
						|
            style="flex:1;align-items: center;justify-items: center;display: flex;"
 | 
						|
          >
 | 
						|
            <div style="font-size:20px;color:#ff6918">
 | 
						|
              <i class="icon_timer" />{{
 | 
						|
                (timers && timeFormat(timers[index].time)) || "00:00:00"
 | 
						|
              }}
 | 
						|
              <div>
 | 
						|
                <!-- v-has="!'WORKORDER_ADMIN'" -->
 | 
						|
                <el-button
 | 
						|
                  v-if="listQuery.status!==undefined&&item.phase === 'PENDING_ORDER'"
 | 
						|
                  
 | 
						|
                  style="margin-left:44px;font-size:14px;padding:7px 10px;width:70px;margin-top:12px"
 | 
						|
                  type="primary"
 | 
						|
                  size="mini"
 | 
						|
                  @click.stop="handleUpdate(item, 5)"
 | 
						|
                  >接单</el-button
 | 
						|
                >
 | 
						|
              </div>
 | 
						|
            </div>
 | 
						|
          </div>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <el-dialog
 | 
						|
      class="dialog"
 | 
						|
      :title="updateType | typeFilter"
 | 
						|
      append-to-body
 | 
						|
      center
 | 
						|
      width="434px"
 | 
						|
      :visible.sync="applyDialog"
 | 
						|
      :close-on-click-modal="false"
 | 
						|
      :close-on-press-escape="false"
 | 
						|
    >
 | 
						|
      <div class="preview-container">
 | 
						|
        <el-form
 | 
						|
          ref="applyForm"
 | 
						|
          label-position="top"
 | 
						|
          :rules="rules"
 | 
						|
          :model="payload"
 | 
						|
        >
 | 
						|
          <el-form-item
 | 
						|
            v-if="updateType === 11 || updateType === 14"
 | 
						|
            label="操作对象"
 | 
						|
            prop="ids"
 | 
						|
          >
 | 
						|
            <el-select
 | 
						|
              v-model="payload.ids"
 | 
						|
              multiple
 | 
						|
              placeholder="请选择"
 | 
						|
              style="width:100%"
 | 
						|
            >
 | 
						|
              <el-option
 | 
						|
                v-for="item in staffOptions"
 | 
						|
                :key="item.value"
 | 
						|
                :label="item.label"
 | 
						|
                :value="item.value"
 | 
						|
              />
 | 
						|
            </el-select>
 | 
						|
          </el-form-item>
 | 
						|
 | 
						|
          <el-form-item label="备注" prop="remark">
 | 
						|
            <el-input
 | 
						|
              v-model="payload.remark"
 | 
						|
              type="textarea"
 | 
						|
              placeholder="请输入"
 | 
						|
            />
 | 
						|
          </el-form-item>
 | 
						|
 | 
						|
          <el-form-item
 | 
						|
            v-if="updateType === 5"
 | 
						|
            label="附件"
 | 
						|
            prop="attachmentList"
 | 
						|
          >
 | 
						|
            <AliOss v-model="payload.attachmentList" multiple />
 | 
						|
          </el-form-item>
 | 
						|
 | 
						|
          <el-form-item v-if="updateType === 13">
 | 
						|
            <el-radio-group v-model="payload.approve">
 | 
						|
              <el-radio :label="true">通过</el-radio>
 | 
						|
              <el-radio :label="false">拒绝</el-radio>
 | 
						|
            </el-radio-group>
 | 
						|
          </el-form-item>
 | 
						|
        </el-form>
 | 
						|
      </div>
 | 
						|
      <span slot="footer" class="dialog-footer">
 | 
						|
        <el-button type="default" @click="applyDialog = false">取消</el-button>
 | 
						|
        <el-button type="primary" @click="apply">提交</el-button>
 | 
						|
      </span>
 | 
						|
    </el-dialog>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
// import Pagination from "@/components/Pagination";
 | 
						|
import { list, listOnlyLook, typeList, update } from "@/api/convenience";
 | 
						|
import { parseTime } from "@/utils";
 | 
						|
import { staffList } from "@/api/staff";
 | 
						|
import AliOss from "@/components/AliOSS/index.vue";
 | 
						|
 | 
						|
export default {
 | 
						|
  components: {
 | 
						|
    AliOss
 | 
						|
  },
 | 
						|
  //   components: { Pagination },
 | 
						|
  filters: {
 | 
						|
    sponsorFilter(status) {
 | 
						|
      const statusMap = {
 | 
						|
        SELF: "群众",
 | 
						|
        STAFF: "工作人员"
 | 
						|
      };
 | 
						|
      return statusMap[status];
 | 
						|
    },
 | 
						|
    phaseFilter(status) {
 | 
						|
      const statusMap = {
 | 
						|
        PENDING_ORDER: "待接单",
 | 
						|
        PREREQUISITES: "要件准备中",
 | 
						|
        PROCESSING: "办理中",
 | 
						|
        FINISH: "办结"
 | 
						|
      };
 | 
						|
      return statusMap[status];
 | 
						|
    },
 | 
						|
    statusFilter(status) {
 | 
						|
      const statusMap = {
 | 
						|
        MINE: "我处理",
 | 
						|
        FORWARDED: "已转交",
 | 
						|
        FORWARDED_APPLY: "转交超限审批中",
 | 
						|
        SUBMIT_APPLY: "已提交审批",
 | 
						|
        WAIT_APPLY: "待审核"
 | 
						|
      };
 | 
						|
      return statusMap[status];
 | 
						|
    },
 | 
						|
    typeFilter(status) {
 | 
						|
      const statusMap = {
 | 
						|
        1: "建立工单",
 | 
						|
        2: "撤销工单",
 | 
						|
        3: "沟通",
 | 
						|
        4: "调整工单类别",
 | 
						|
        5: "接单",
 | 
						|
        6: "要件齐备",
 | 
						|
        7: "办结",
 | 
						|
        8: "转交超限审批提交",
 | 
						|
        9: "转交超限审批撤销",
 | 
						|
        10: "转交超限审批",
 | 
						|
        11: "发起审批",
 | 
						|
        12: "撤销审批",
 | 
						|
        13: "审批操作",
 | 
						|
        14: "转交"
 | 
						|
      };
 | 
						|
      return statusMap[status];
 | 
						|
    }
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      listLoading: false,
 | 
						|
      loading: false,
 | 
						|
      list: [],
 | 
						|
      total: 0,
 | 
						|
      listQuery: {},
 | 
						|
      selectType: [],
 | 
						|
      types: [],
 | 
						|
      rules: {},
 | 
						|
      applyDialog: false,
 | 
						|
      payload: {
 | 
						|
        id: undefined,
 | 
						|
        version: undefined,
 | 
						|
        ids: undefined,
 | 
						|
        remark: undefined,
 | 
						|
        attachmentList: undefined,
 | 
						|
        approve: undefined,
 | 
						|
        evaluation: undefined
 | 
						|
      },
 | 
						|
      staffOptions: [],
 | 
						|
      updateType: undefined,
 | 
						|
      listQuery: {
 | 
						|
        status: undefined,
 | 
						|
        phase: undefined
 | 
						|
      },
 | 
						|
      msec: 0,
 | 
						|
      rules: {
 | 
						|
        ids: [{ required: true, message: "请选择操作对象", trigger: "change" }]
 | 
						|
      },
 | 
						|
      timers: undefined,
 | 
						|
      timersInterval: undefined,
 | 
						|
      isLeader: false,
 | 
						|
      isStatusFilter: false
 | 
						|
    };
 | 
						|
  },
 | 
						|
  watch: {
 | 
						|
    "listQuery.phase": {
 | 
						|
      // 深度监听,可监听到对象、数组的变化
 | 
						|
      handler(val) {
 | 
						|
        this.listQuery.phase = val;
 | 
						|
        this.getList();
 | 
						|
      },
 | 
						|
      deep: true // true 深度监听
 | 
						|
    },
 | 
						|
    "listQuery.status": {
 | 
						|
      // 深度监听,可监听到对象、数组的变化
 | 
						|
      handler(val) {
 | 
						|
        this.listQuery.status = val;
 | 
						|
        this.getList();
 | 
						|
      },
 | 
						|
      deep: true // true 深度监听
 | 
						|
    }
 | 
						|
  },
 | 
						|
  created() {
 | 
						|
    this.isLeader = sessionStorage
 | 
						|
      .getItem("Permissions")
 | 
						|
      .includes("WORKORDER_ADMIN");
 | 
						|
      // console.log(this.isLeader);
 | 
						|
    this.getList();
 | 
						|
    this.getStaffList();
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    getList() {
 | 
						|
      this.listLoading = true;
 | 
						|
      if (this.isLeader) {
 | 
						|
        if (this.listQuery.status) {
 | 
						|
          list(this.listQuery).then(res => {
 | 
						|
            this.list = res.d.records;
 | 
						|
            this.listLoading = false;
 | 
						|
            clearInterval(this.timersInterval);
 | 
						|
            const tempData = res.d.records;
 | 
						|
            const now = Date.parse(new Date()).toString() / 1000;
 | 
						|
            const arr = [];
 | 
						|
            tempData.map((item, index) => {
 | 
						|
              let msec = [];
 | 
						|
              let obj = {};
 | 
						|
              switch (item.phase) {
 | 
						|
                case "PENDING_ORDER":
 | 
						|
                  // 待接单
 | 
						|
                  msec = now - item.createDate;
 | 
						|
                  obj = {
 | 
						|
                    time: msec,
 | 
						|
                    phase: item.phase,
 | 
						|
                    status: null
 | 
						|
                  };
 | 
						|
                  arr.push(obj);
 | 
						|
                  break;
 | 
						|
                case "PREREQUISITES":
 | 
						|
                  // 要件准备
 | 
						|
                  msec = now - item.createDate;
 | 
						|
                  obj = {
 | 
						|
                    time: msec,
 | 
						|
                    phase: item.phase,
 | 
						|
                    status: null
 | 
						|
                  };
 | 
						|
                  arr.push(obj);
 | 
						|
                  break;
 | 
						|
                case "PROCESSING":
 | 
						|
                  // 办理中
 | 
						|
                  msec = now - item.createDate;
 | 
						|
                  obj = {
 | 
						|
                    time: msec,
 | 
						|
                    phase: item.phase,
 | 
						|
                    status: null
 | 
						|
                  };
 | 
						|
                  arr.push(obj);
 | 
						|
                  break;
 | 
						|
                case "FINISH":
 | 
						|
                  msec =
 | 
						|
                    item.acceptanceTime +
 | 
						|
                    item.prerequisitesTime +
 | 
						|
                    item.finishTime;
 | 
						|
                  obj = {
 | 
						|
                    time: msec,
 | 
						|
                    phase: item.phase,
 | 
						|
                    status: null
 | 
						|
                  };
 | 
						|
                  arr.push(obj);
 | 
						|
                  // 办结
 | 
						|
                  break;
 | 
						|
                default:
 | 
						|
                  break;
 | 
						|
              }
 | 
						|
            });
 | 
						|
            if (arr.length > 0) {
 | 
						|
              arr.map((item, index) => {
 | 
						|
                if (item.phase !== "FINISH") {
 | 
						|
                  item.time++;
 | 
						|
                  if (this.list[index].phase === "PENDING_ORDER") {
 | 
						|
                    if (item.status == null) {
 | 
						|
                      if (item.time > 57600) {
 | 
						|
                        item.status = false;
 | 
						|
                        if (item.time >= 86400) {
 | 
						|
                          item.status = true;
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                  if (this.list[index].phase === "PROCESSING") {
 | 
						|
                    if (item.status == null) {
 | 
						|
                      // &&item.time<this.list[index].eventType.commitmentTimeLimit
 | 
						|
                      if (
 | 
						|
                        item.time >
 | 
						|
                        this.list[index].eventType.timeoutReminder * 3600
 | 
						|
                      ) {
 | 
						|
                        item.status = false;
 | 
						|
                        if (
 | 
						|
                          item.time >=
 | 
						|
                          this.list[index].eventType.commitmentTimeLimit * 3600
 | 
						|
                        ) {
 | 
						|
                          item.status = true;
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                }
 | 
						|
              });
 | 
						|
            }
 | 
						|
            this.timers = arr;
 | 
						|
 | 
						|
            this.timersInterval = setInterval(() => {
 | 
						|
              if (arr.length > 0) {
 | 
						|
                arr.map((item, index) => {
 | 
						|
                  if (item.phase !== "FINISH") {
 | 
						|
                    item.time++;
 | 
						|
                    if (this.list[index].phase === "PENDING_ORDER") {
 | 
						|
                      if (item.status == null) {
 | 
						|
                        if (item.time > 57600) {
 | 
						|
                          item.status = false;
 | 
						|
                          if (item.time >= 86400) {
 | 
						|
                            item.status = true;
 | 
						|
                          }
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                    if (this.list[index].phase === "PROCESSING") {
 | 
						|
                      if (item.status == null) {
 | 
						|
                        // &&item.time<this.list[index].eventType.commitmentTimeLimit
 | 
						|
                        if (
 | 
						|
                          item.time >
 | 
						|
                          this.list[index].eventType.timeoutReminder * 3600
 | 
						|
                        ) {
 | 
						|
                          item.status = false;
 | 
						|
                          if (
 | 
						|
                            item.time >=
 | 
						|
                            this.list[index].eventType.commitmentTimeLimit *
 | 
						|
                              3600
 | 
						|
                          ) {
 | 
						|
                            item.status = true;
 | 
						|
                          }
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                });
 | 
						|
              }
 | 
						|
              this.timers = arr;
 | 
						|
            }, 1000);
 | 
						|
          });
 | 
						|
        } else {
 | 
						|
          listOnlyLook(this.listQuery).then(res => {
 | 
						|
            this.list = res.d.records;
 | 
						|
            this.listLoading = false;
 | 
						|
            clearInterval(this.timersInterval);
 | 
						|
            const tempData = res.d.records;
 | 
						|
            const now = Date.parse(new Date()).toString() / 1000;
 | 
						|
            const arr = [];
 | 
						|
            tempData.map((item, index) => {
 | 
						|
              if (item.residentInformation === null) {
 | 
						|
                console.log(index);
 | 
						|
              }
 | 
						|
              let msec = [];
 | 
						|
              let obj = {};
 | 
						|
              switch (item.phase) {
 | 
						|
                case "PENDING_ORDER":
 | 
						|
                  // 待接单
 | 
						|
                  msec = now - item.createDate;
 | 
						|
                  obj = {
 | 
						|
                    time: msec,
 | 
						|
                    phase: item.phase,
 | 
						|
                    status: null
 | 
						|
                  };
 | 
						|
                  arr.push(obj);
 | 
						|
                  break;
 | 
						|
                case "PREREQUISITES":
 | 
						|
                  // 要件准备
 | 
						|
                  msec = now - item.createDate;
 | 
						|
                  obj = {
 | 
						|
                    time: msec,
 | 
						|
                    phase: item.phase,
 | 
						|
                    status: null
 | 
						|
                  };
 | 
						|
                  arr.push(obj);
 | 
						|
                  break;
 | 
						|
                case "PROCESSING":
 | 
						|
                  // 办理中
 | 
						|
                  msec = now - item.createDate;
 | 
						|
                  obj = {
 | 
						|
                    time: msec,
 | 
						|
                    phase: item.phase,
 | 
						|
                    status: null
 | 
						|
                  };
 | 
						|
                  arr.push(obj);
 | 
						|
                  break;
 | 
						|
                case "FINISH":
 | 
						|
                  msec =
 | 
						|
                    item.acceptanceTime +
 | 
						|
                    item.prerequisitesTime +
 | 
						|
                    item.finishTime;
 | 
						|
                  obj = {
 | 
						|
                    time: msec,
 | 
						|
                    phase: item.phase,
 | 
						|
                    status: null
 | 
						|
                  };
 | 
						|
                  arr.push(obj);
 | 
						|
                  // 办结
 | 
						|
                  break;
 | 
						|
                default:
 | 
						|
                  break;
 | 
						|
              }
 | 
						|
            });
 | 
						|
            if (arr.length > 0) {
 | 
						|
              arr.map((item, index) => {
 | 
						|
                if (item.phase !== "FINISH") {
 | 
						|
                  item.time++;
 | 
						|
                  if (this.list[index].phase === "PENDING_ORDER") {
 | 
						|
                    if (item.status == null) {
 | 
						|
                      if (item.time > 57600) {
 | 
						|
                        item.status = false;
 | 
						|
                        if (item.time >= 86400) {
 | 
						|
                          item.status = true;
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                  if (this.list[index].phase === "PROCESSING") {
 | 
						|
                    if (item.status == null) {
 | 
						|
                      // &&item.time<this.list[index].eventType.commitmentTimeLimit
 | 
						|
                      if (
 | 
						|
                        item.time >
 | 
						|
                        this.list[index].eventType.timeoutReminder * 3600
 | 
						|
                      ) {
 | 
						|
                        item.status = false;
 | 
						|
                        if (
 | 
						|
                          item.time >=
 | 
						|
                          this.list[index].eventType.commitmentTimeLimit * 3600
 | 
						|
                        ) {
 | 
						|
                          item.status = true;
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                }
 | 
						|
              });
 | 
						|
            }
 | 
						|
            this.timers = arr;
 | 
						|
 | 
						|
            this.timersInterval = setInterval(() => {
 | 
						|
              if (arr.length > 0) {
 | 
						|
                arr.map((item, index) => {
 | 
						|
                  if (item.phase !== "FINISH") {
 | 
						|
                    item.time++;
 | 
						|
                    if (this.list[index].phase === "PENDING_ORDER") {
 | 
						|
                      if (item.status == null) {
 | 
						|
                        if (item.time > 57600) {
 | 
						|
                          item.status = false;
 | 
						|
                          if (item.time >= 86400) {
 | 
						|
                            item.status = true;
 | 
						|
                          }
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                    if (this.list[index].phase === "PROCESSING") {
 | 
						|
                      if (item.status == null) {
 | 
						|
                        // &&item.time<this.list[index].eventType.commitmentTimeLimit
 | 
						|
                        if (
 | 
						|
                          item.time >
 | 
						|
                          this.list[index].eventType.timeoutReminder * 3600
 | 
						|
                        ) {
 | 
						|
                          item.status = false;
 | 
						|
                          if (
 | 
						|
                            item.time >=
 | 
						|
                            this.list[index].eventType.commitmentTimeLimit *
 | 
						|
                              3600
 | 
						|
                          ) {
 | 
						|
                            item.status = true;
 | 
						|
                          }
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                });
 | 
						|
              }
 | 
						|
              this.timers = arr;
 | 
						|
            }, 1000);
 | 
						|
          });
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        // console.log('else:'+this.isLeader);
 | 
						|
        list(this.listQuery).then(res => {
 | 
						|
          this.list = res.d.records;
 | 
						|
          this.listLoading = false;
 | 
						|
          clearInterval(this.timersInterval);
 | 
						|
          const tempData = res.d.records;
 | 
						|
          const now = Date.parse(new Date()).toString() / 1000;
 | 
						|
          const arr = [];
 | 
						|
          tempData.map((item, index) => {
 | 
						|
            let msec = [];
 | 
						|
            let obj = {};
 | 
						|
            switch (item.phase) {
 | 
						|
              case "PENDING_ORDER":
 | 
						|
                // 待接单
 | 
						|
                msec = now - item.createDate;
 | 
						|
                obj = {
 | 
						|
                  time: msec,
 | 
						|
                  phase: item.phase,
 | 
						|
                  status: null
 | 
						|
                };
 | 
						|
                arr.push(obj);
 | 
						|
                break;
 | 
						|
              case "PREREQUISITES":
 | 
						|
                // 要件准备
 | 
						|
                msec = now - item.createDate;
 | 
						|
                obj = {
 | 
						|
                  time: msec,
 | 
						|
                  phase: item.phase,
 | 
						|
                  status: null
 | 
						|
                };
 | 
						|
                arr.push(obj);
 | 
						|
                break;
 | 
						|
              case "PROCESSING":
 | 
						|
                // 办理中
 | 
						|
                msec = now - item.createDate;
 | 
						|
                obj = {
 | 
						|
                  time: msec,
 | 
						|
                  phase: item.phase,
 | 
						|
                  status: null
 | 
						|
                };
 | 
						|
                arr.push(obj);
 | 
						|
                break;
 | 
						|
              case "FINISH":
 | 
						|
                msec =
 | 
						|
                  item.acceptanceTime +
 | 
						|
                  item.prerequisitesTime +
 | 
						|
                  item.finishTime;
 | 
						|
                obj = {
 | 
						|
                  time: msec,
 | 
						|
                  phase: item.phase,
 | 
						|
                  status: null
 | 
						|
                };
 | 
						|
                arr.push(obj);
 | 
						|
                // 办结
 | 
						|
                break;
 | 
						|
              default:
 | 
						|
                break;
 | 
						|
            }
 | 
						|
          });
 | 
						|
          if (arr.length > 0) {
 | 
						|
            arr.map((item, index) => {
 | 
						|
              if (item.phase !== "FINISH") {
 | 
						|
                item.time++;
 | 
						|
                if (this.list[index].phase === "PENDING_ORDER") {
 | 
						|
                  if (item.status == null) {
 | 
						|
                    if (item.time > 57600) {
 | 
						|
                      item.status = false;
 | 
						|
                      if (item.time >= 86400) {
 | 
						|
                        item.status = true;
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                }
 | 
						|
                if (this.list[index].phase === "PROCESSING") {
 | 
						|
                  if (item.status == null) {
 | 
						|
                    // &&item.time<this.list[index].eventType.commitmentTimeLimit
 | 
						|
                    if (
 | 
						|
                      item.time >
 | 
						|
                      this.list[index].eventType.timeoutReminder * 3600
 | 
						|
                    ) {
 | 
						|
                      item.status = false;
 | 
						|
                      if (
 | 
						|
                        item.time >=
 | 
						|
                        this.list[index].eventType.commitmentTimeLimit * 3600
 | 
						|
                      ) {
 | 
						|
                        item.status = true;
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                }
 | 
						|
              }
 | 
						|
            });
 | 
						|
          }
 | 
						|
          this.timers = arr;
 | 
						|
 | 
						|
          this.timersInterval = setInterval(() => {
 | 
						|
            if (arr.length > 0) {
 | 
						|
              arr.map((item, index) => {
 | 
						|
                if (item.phase !== "FINISH") {
 | 
						|
                  item.time++;
 | 
						|
                  if (this.list[index].phase === "PENDING_ORDER") {
 | 
						|
                    if (item.status == null) {
 | 
						|
                      if (item.time > 57600) {
 | 
						|
                        item.status = false;
 | 
						|
                        if (item.time >= 86400) {
 | 
						|
                          item.status = true;
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                  if (this.list[index].phase === "PROCESSING") {
 | 
						|
                    if (item.status == null) {
 | 
						|
                      // &&item.time<this.list[index].eventType.commitmentTimeLimit
 | 
						|
                      if (
 | 
						|
                        item.time >
 | 
						|
                        this.list[index].eventType.timeoutReminder * 3600
 | 
						|
                      ) {
 | 
						|
                        item.status = false;
 | 
						|
                        if (
 | 
						|
                          item.time >=
 | 
						|
                          this.list[index].eventType.commitmentTimeLimit * 3600
 | 
						|
                        ) {
 | 
						|
                          item.status = true;
 | 
						|
                        }
 | 
						|
                      }
 | 
						|
                    }
 | 
						|
                  }
 | 
						|
                }
 | 
						|
              });
 | 
						|
            }
 | 
						|
            this.timers = arr;
 | 
						|
          }, 1000);
 | 
						|
        });
 | 
						|
      }
 | 
						|
    },
 | 
						|
    // getList2() {},
 | 
						|
    getTypeList() {
 | 
						|
      typeList().then(res => {
 | 
						|
        // console.log(res);
 | 
						|
      });
 | 
						|
    },
 | 
						|
    getStaffList() {
 | 
						|
      staffList().then(res => {
 | 
						|
        res.d.records.map(item => {
 | 
						|
          const obj = {
 | 
						|
            label: item.name,
 | 
						|
            value: item.id
 | 
						|
          };
 | 
						|
          this.staffOptions.push(obj);
 | 
						|
        });
 | 
						|
      });
 | 
						|
    },
 | 
						|
    handleTypeChange() {},
 | 
						|
    resetPayload() {
 | 
						|
      this.payload = {
 | 
						|
        id: undefined,
 | 
						|
        version: undefined,
 | 
						|
        ids: undefined,
 | 
						|
        remark: undefined,
 | 
						|
        attachmentList: undefined,
 | 
						|
        approve: undefined,
 | 
						|
        evaluation: undefined
 | 
						|
      };
 | 
						|
    },
 | 
						|
    handleUpdate(row, type) {
 | 
						|
      this.resetPayload();
 | 
						|
      this.$nextTick(() => {
 | 
						|
        this.$refs.applyForm.clearValidate();
 | 
						|
      });
 | 
						|
      this.updateType = type;
 | 
						|
      this.payload.id = row.id;
 | 
						|
      this.payload.version = row.version;
 | 
						|
      this.payload.type = type;
 | 
						|
      switch (type) {
 | 
						|
        case 5:
 | 
						|
          this.applyDialog = true;
 | 
						|
          break;
 | 
						|
        case 6:
 | 
						|
          this.applyDialog = true;
 | 
						|
          break;
 | 
						|
        case 11:
 | 
						|
          this.applyDialog = true;
 | 
						|
          break;
 | 
						|
        case 13:
 | 
						|
          this.applyDialog = true;
 | 
						|
          break;
 | 
						|
        case 14:
 | 
						|
          this.applyDialog = true;
 | 
						|
          break;
 | 
						|
        default:
 | 
						|
          this.updateData();
 | 
						|
          break;
 | 
						|
      }
 | 
						|
    },
 | 
						|
    updateData() {
 | 
						|
      update(this.payload).then(res => {
 | 
						|
        if (res.c === 200) {
 | 
						|
          this.$notify.success("操作成功");
 | 
						|
          this.getList();
 | 
						|
        }else{
 | 
						|
              this.$notify.error(res.m)
 | 
						|
            }
 | 
						|
      });
 | 
						|
    },
 | 
						|
    apply() {
 | 
						|
      this.$nextTick(() => {
 | 
						|
        this.$refs.applyForm.validate(valid => {
 | 
						|
          if (valid) {
 | 
						|
            this.updateData();
 | 
						|
            this.applyDialog = false;
 | 
						|
          }
 | 
						|
        });
 | 
						|
      }, 100);
 | 
						|
    },
 | 
						|
    handleFilterPhase(phase, event) {
 | 
						|
      if (event.target.tagName === "SPAN") {
 | 
						|
        event.target.parentElement.setAttribute(
 | 
						|
          "class",
 | 
						|
          "el-button el-button--" +
 | 
						|
            (phase === undefined ? "primary" : "default") +
 | 
						|
            " el-button--medium is-round"
 | 
						|
        );
 | 
						|
      } else {
 | 
						|
        event.target.setAttribute(
 | 
						|
          "class",
 | 
						|
          "el-button el-button--" +
 | 
						|
            (phase === undefined ? "primary" : "default") +
 | 
						|
            " el-button--medium is-round"
 | 
						|
        );
 | 
						|
      }
 | 
						|
      this.listQuery.phase = phase;
 | 
						|
      this.getList();
 | 
						|
    },
 | 
						|
    handleFilterStatus(status) {
 | 
						|
      this.listQuery.status = status;
 | 
						|
      this.getList();
 | 
						|
    },
 | 
						|
    handlePreview() {},
 | 
						|
    handleRemove() {},
 | 
						|
    beforeRemove() {},
 | 
						|
    handleExceed() {},
 | 
						|
    timeFormat(timeStamp) {
 | 
						|
      const timeStr = `${
 | 
						|
        Math.floor(timeStamp / 3600) < 9
 | 
						|
          ? "0" + Math.floor(timeStamp / 3600)
 | 
						|
          : Math.floor(timeStamp / 3600)
 | 
						|
      }:${
 | 
						|
        Math.floor(((timeStamp % 86400) % 3600) / 60) < 9
 | 
						|
          ? "0" + Math.floor(((timeStamp % 86400) % 3600) / 60)
 | 
						|
          : Math.floor(((timeStamp % 86400) % 3600) / 60)
 | 
						|
      }:${
 | 
						|
        Math.floor(((timeStamp % 86400) % 3600) % 60) < 9
 | 
						|
          ? "0" + Math.floor(((timeStamp % 86400) % 3600) % 60)
 | 
						|
          : Math.floor(((timeStamp % 86400) % 3600) % 60)
 | 
						|
      }`;
 | 
						|
      return timeStr;
 | 
						|
    }
 | 
						|
  }
 | 
						|
};
 | 
						|
</script>
 | 
						|
 | 
						|
<style scope>
 | 
						|
.text-warning {
 | 
						|
  color: #e6a23c;
 | 
						|
}
 | 
						|
.tb .el-button {
 | 
						|
  margin-bottom: 5px;
 | 
						|
}
 | 
						|
.app-container .title {
 | 
						|
  border-left: 5px solid #1890ff;
 | 
						|
  padding-left: 8px;
 | 
						|
  font-size: 18px;
 | 
						|
  color: #000000;
 | 
						|
}
 | 
						|
.convenience_item {
 | 
						|
  padding: 32px;
 | 
						|
  margin-bottom: 10px;
 | 
						|
  background-color: #fff;
 | 
						|
  border-radius: 4px;
 | 
						|
  display: flex;
 | 
						|
  cursor: pointer;
 | 
						|
}
 | 
						|
.convenience_item_title {
 | 
						|
  display: flex;
 | 
						|
  flex: 1;
 | 
						|
  align-items: center;
 | 
						|
  line-height: 25px;
 | 
						|
}
 | 
						|
.cTitle {
 | 
						|
  font-size: 18px;
 | 
						|
  color: #000000;
 | 
						|
}
 | 
						|
.convenience_item_title .createDate {
 | 
						|
  color: #787878;
 | 
						|
  font-size: 14px;
 | 
						|
}
 | 
						|
.icon_list {
 | 
						|
  background: url("./img/icon_list.png") no-repeat;
 | 
						|
  background-size: cover;
 | 
						|
  display: inline-block;
 | 
						|
  width: 52px;
 | 
						|
  height: 51px;
 | 
						|
  margin-right: 12px;
 | 
						|
}
 | 
						|
.icon_timer {
 | 
						|
  background: url("./img/icon_timer.png") no-repeat;
 | 
						|
  background-size: cover;
 | 
						|
  display: inline-block;
 | 
						|
  width: 18px;
 | 
						|
  height: 18px;
 | 
						|
  margin-right: 4px;
 | 
						|
  vertical-align: baseline;
 | 
						|
  margin-left: 24px;
 | 
						|
}
 | 
						|
.el-radio-button--medium .el-radio-button__inner {
 | 
						|
  border-radius: 17px;
 | 
						|
  margin-right: 10px;
 | 
						|
}
 | 
						|
.el-radio-button__inner {
 | 
						|
  border: 0;
 | 
						|
  font-size: 12px !important;
 | 
						|
}
 | 
						|
.el-radio-button:first-child .el-radio-button__inner {
 | 
						|
  border-radius: 17px;
 | 
						|
}
 | 
						|
.el-radio-button:last-child .el-radio-button__inner {
 | 
						|
  border-radius: 17px;
 | 
						|
}
 | 
						|
.icon_timeout {
 | 
						|
  background: url("./img/icon_timeout.png") no-repeat;
 | 
						|
  background-size: cover;
 | 
						|
  width: 12px;
 | 
						|
  height: 11px;
 | 
						|
  display: inline-block;
 | 
						|
  margin-right: 5px;
 | 
						|
}
 | 
						|
</style>
 |