wsx пре 1 година
родитељ
комит
a3f737c399

+ 391 - 208
src/views/bpm/tickets/maintenance/index.vue

@@ -1,124 +1,113 @@
-<!-- 巡点检工单 -->
+<!-- 保养工单 -->
+
 <template>
-  <div class="patrolInspection">
-    <div class="search">
-      <el-form label-width="120px">
-        <el-row>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="工单编号">
-              <el-input
-                v-model="searchForm.code"
-                placeholder="请输入"
-                size="small"
-              ></el-input> </el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="规则名称">
-              <el-select
-                v-model="searchForm.ruleId"
-                size="small"
-                clearable
-                style="width: 100%"
-                filterable
+  <div>
+    <div class="ele-body">
+      <el-card shadow="never">
+        <div class="filter-container">
+          <el-form
+            label-width="100px"
+            class="ele-form-search"
+            @keyup.enter.native="reload"
+            @submit.native.prevent
+          >
+            <el-row :gutter="15">
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-                <el-option
-                  v-for="item in ruleNameList"
-                  :key="item.id"
-                  :value="item.id"
-                  :label="item.name"
-                ></el-option> </el-select></el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="状态">
-              <el-select
-                filterable
-                v-model="searchForm.orderStatus"
-                size="small"
-                clearable
+                <el-form-item label="工单编号">
+                  <el-input
+                    v-model="searchForm.code"
+                    placeholder="请输入"
+                    size="small"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-                <el-option
-                  v-for="item in ticketStatus"
-                  :key="item.id"
-                  :value="item.id"
-                  :label="item.label"
-                ></el-option>
-              </el-select> </el-form-item
-          ></el-col>
-          <el-col :md="8" :sm="8" :xs="8">
-            <el-form-item label="开始结束时间">
-              <el-date-picker
-                class="form-input"
-                size="small"
-                v-model="searchForm.date"
-                type="daterange"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-                value-format="yyyy-MM-dd HH:mm:ss"
-                :default-time="['00:00:00', '23:59:59']"
+                <el-form-item label="规则名称">
+                  <el-select
+                    v-model="searchForm.ruleId"
+                    size="small"
+                    clearable
+                    style="width: 100%"
+                    filterable
+                  >
+                    <el-option
+                      v-for="item in ruleNameList"
+                      :key="item.id"
+                      :value="item.id"
+                      :label="item.name"
+                    ></el-option> </el-select
+                ></el-form-item>
+              </el-col>
+
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-              </el-date-picker> </el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="16" :xs="16" style="text-align: right">
-            <el-button icon="el-icon-refresh-left" size="small" @click="rest"
-              >重置</el-button
-            >
-            <el-button
-              type="primary"
-              icon="el-icon-search"
-              size="small"
-              @click="search"
-              >搜索</el-button
-            ></el-col
-          >
-        </el-row>
-      </el-form>
-    </div>
-    <div class="table">
-      <el-table
-        :data="tableData"
-        border
-        height="99%"
-        tooltip-effect="dark"
-        :header-cell-style="{ background: '#F0F3F3', border: 'none' }"
-        @row-dblclick="openDetail"
-      >
-        <el-table-column
-          width="80px"
-          label="序号"
-          type="index"
-          :index="indexMethod"
+                <el-form-item label="状态">
+                  <el-select
+                    filterable
+                    clearable
+                    v-model="searchForm.orderStatus"
+                    size="small"
+                  >
+                    <el-option
+                      v-for="item in ticketStatus"
+                      :key="item.id"
+                      :value="item.id"
+                      :label="item.label"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
+              >
+                <el-form-item label="开始结束时间">
+                  <el-date-picker
+                    class="form-input"
+                    size="small"
+                    v-model="searchForm.date"
+                    type="daterange"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    :default-time="['00:00:00', '23:59:59']"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :md="4" :sm="16" :xs="16" style="text-align: right">
+                <el-button
+                  icon="el-icon-refresh-left"
+                  size="small"
+                  @click="reload('reset')"
+                  >重置</el-button
+                >
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="small"
+                  @click="reload('search')"
+                  >搜索</el-button
+                ></el-col
+              >
+            </el-row>
+          </el-form>
+        </div>
+        <ele-pro-table
+          ref="table"
+          :columns="columns"
+          :datasource="datasource"
+          maxHeight="580"
         >
-        </el-table-column>
-        <el-table-column prop="code" label="工单编号" />
-        <el-table-column prop="planCode" label="计划单号" />
-        <el-table-column prop="planName" label="保养名称" />
-        <!-- <el-table-column prop="createTime" label="设备分类" /> -->
-        <el-table-column prop="ruleName" label="规则名称" />
-        <el-table-column prop="createUserName" label="创建人" />
-        <el-table-column prop="createTime" label="创建时间" />
-        <el-table-column prop="acceptTime" label="开始时间" />
-        <el-table-column prop="finishTime" label="结束时间" />
-        <el-table-column prop="planFinishTime" label="计划完成时间" />
-        <el-table-column prop="orderStatus" label="执行结果">
-          <template slot-scope="{ row }">
-            {{ { 0: '缺陷', 1: '正常' }[row.isAbnormal] }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="orderStatus" label="状态">
-          <template slot-scope="{ row }">
-            {{
-              ticketStatus.filter((item) => item.id == row.orderStatus)[0]?.label
-            }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="practicalTime" label="实际工时">
-          <template slot-scope="{ row }">
-            {{ time_interval(row.acceptTime, row.finishTime) }}
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" width="150">
-          <template slot-scope="{ row }">
+          <!-- 操作列 -->
+          <template v-slot:action="{ row }">
             <el-link
               v-if="row.orderStatus !== 3 && row.orderStatus !== 4"
               type="primary"
@@ -137,39 +126,41 @@
             >
               转派
             </el-link>
+            >
           </template>
-        </el-table-column>
-      </el-table>
-    </div>
-    <div class="table-footer">
-      <el-pagination
-        background
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total"
-        :page-sizes="[15, 30, 50, 100, 500]"
-        :page-size.sync="pages.size"
-        :current-page.sync="pages.page"
-        @current-change="handleCurrentChange"
-        @size-change="handleSizeChange"
-      >
-      </el-pagination>
+        </ele-pro-table>
+      </el-card>
     </div>
+
+    <!-- 验收 -->
+    <RepairDetailsDialog ref="detailsDialogRef" @refesh="getData" />
     <!-- 转派弹窗 -->
     <redeployOther ref="redeployOtherRef" @refresh="getData" />
     <!-- 报工弹框 -->
     <signingUpWork ref="signingUpWorkRef" @refresh="getData" />
   </div>
 </template>
-
 <script>
+  import RepairDetailsDialog from '../components/RepairDetailsDialog.vue';
   import redeployOther from '../components/redeployOther.vue';
   import signingUpWork from '../components/signingUpWork.vue';
-  import { ticketStatus } from '@/utils/dict/tickets';
+  import { ticketStatus, resultStatus } from '@/utils/dict/tickets';
   import { getWorkOrderPage, getRule } from '@/api/tickets';
   import pagenation from '@/components/Pagination';
-  import { deepClone } from 'ele-admin/lib/utils/core';
+
+  // 修改
+  import {
+    notifyMessagePageAPI,
+    updateNotifyMessageReadByIdAPI
+  } from '@/api/bpm/task';
+  import { mapGetters } from 'vuex';
   export default {
-    components: { pagenation, redeployOther, signingUpWork },
+    components: {
+      pagenation,
+      redeployOther,
+      signingUpWork,
+      RepairDetailsDialog
+    },
     data() {
       return {
         ruleNameList: [],
@@ -183,43 +174,177 @@
           date: '',
           startTime: '',
           endTime: '',
-          type: 2
+          type: 2,
+          isQueryTodo: 1,
+          executeUserId: ''
         },
         pages: {
           page: 1,
           size: 15
         },
-        total: 0
+        total: 0,
+
+        //
+        addOrEditDialogFlag: false,
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            minWidth: '150',
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            label: '工单编号',
+            minWidth: '200',
+            align: 'center'
+          },
+          {
+            prop: 'planCode',
+            label: '计划单号',
+            width: '200',
+            align: 'center'
+          },
+          {
+            prop: 'planName',
+            label: '保养名称',
+            align: 'center',
+           minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'ruleName',
+            label: '规则名称',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'createUserName',
+            label: '创建人',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'acceptTime',
+            label: '开始时间',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'finishTime',
+            label: '结束时间',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'planFinishTime',
+            label: '计划完成时间',
+            align: 'center',
+           minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'isAbnormal',
+            label: '执行结果',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return { 0: '缺陷', 1: '正常' }[_row.isAbnormal];
+            }
+          },
+          {
+            prop: 'orderStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return ticketStatus.filter(
+                (item) => item.id == _row.orderStatus
+              )[0]?.label;
+            }
+          },
+          {
+            prop: 'practicalTime',
+            label: '实际工时',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              let _this = this;
+              return _this.time_interval(_row.acceptTime, _row.finishTime);
+            }
+          },
+
+          {
+            columnKey: 'action',
+            label: '操作',
+            minWidth: 200,
+            align: 'center',
+            slot: 'action',
+            fixed: 'right'
+          }
+        ],
+
+        tableData: [],
+        size: 10,
+        page: 1
       };
     },
-    created() {
-      this.getRuleNameList();
-      this.getData();
-      // 过滤待接收和执行中
-      this.ticketStatus = ticketStatus.filter((item) => {
-        return [0, 2].includes(item.id);
-      });
+    computed: {
+      ...mapGetters(['user']),
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
     },
     methods: {
-      // 转派
-      toRedeploy(row) {
-        this.$refs.redeployOtherRef.open(row);
+      //新增或修改模板
+      async handleAddOrEdit(row) {
+        await updateNotifyMessageReadByIdAPI([row.id]);
+        this.$refs.table.reload();
       },
-      // 报工
-      toSigningUpWork(row) {
-        this.$refs.signingUpWorkRef.open(row);
-      },
-      reload(where) {
-        this.$refs.table.reload({ page: 1, ...where });
+      reload(type) {
+        if (type == 'reset') {
+          this.searchForm.code = '';
+          this.searchForm.orderStatus = '';
+          this.searchForm.ruleId = '';
+          this.searchForm.date = '';
+          this.searchForm.startTime = '';
+          this.searchForm.endTime = '';
+          this.searchForm.type = 2;
+        }
+        this.$refs.table.reload({ page: 1, where: this.searchForm });
       },
-      openDetail({ id }) {
-        this.$router.push({
-          path: '/tickets/maintenance/detail',
-          query: {
-            id
-          }
+
+      // 获取table数据
+      async datasource({ page, where, limit, ...row }) {
+        this.searchForm.executeUserId = this.userId;
+        let form = this.searchForm;
+        const res = await getWorkOrderPage({
+          ...form,
+          ...where,
+          pageNum: page,
+          size: limit,
+          userId: this.user.info.userId
         });
+        this.total = res.total;
+        this.$emit('recount');
+        return res;
       },
+
       // 获取规则名列表(设备保养)
       async getRuleNameList() {
         const res = await getRule({
@@ -232,10 +357,22 @@
           this.ruleNameList = res.list || [];
         }
       },
-      // 实现分页序号连贯
-      indexMethod(index) {
-        index = index + 1 + (this.pages.page - 1) * this.pages.size;
-        return index;
+
+      // 转派
+      toRedeploy(row) {
+        this.$refs.redeployOtherRef.open(row);
+      },
+      // 报工
+      toSigningUpWork(row) {
+        this.$refs.signingUpWorkRef.open(row);
+      },
+      openDetail({ id }) {
+        this.$router.push({
+          path: '/tickets/maintenance/detail',
+          query: {
+            id
+          }
+        });
       },
       getData() {
         let userId = localStorage.getItem('userId');
@@ -244,8 +381,7 @@
           ...this.pages,
           ...this.searchForm,
           executeUserId: userId,
-          isQueryTodo:1,
-
+          isQueryTodo: 1
         };
         if (this.searchForm.date) {
           par.startTime = this.searchForm.date[0];
@@ -258,30 +394,6 @@
         });
         this.$emit('recount');
       },
-      search() {
-        this.pages.page = 1;
-        this.getData();
-      },
-      rest() {
-        this.searchForm = {
-          code: '',
-          orderStatus: 0,
-          ruleId: '',
-          date: '',
-          startTime: '',
-          endTime: '',
-          type: 2
-        };
-        this.pages.page = 1;
-        this.getData();
-      },
-      handleCurrentChange() {
-        this.getData();
-      },
-      handleSizeChange() {
-        this.pages.page = 1;
-        this.getData();
-      },
       // 计算实际工时
       time_interval(dt1, dt2) {
         if (!dt1 || !dt2) {
@@ -306,31 +418,102 @@
         }
         return result;
       }
+    },
+    created() {
+      this.userId = localStorage.getItem('userId');
+      this.getRuleNameList();
+      this.ticketStatus = ticketStatus.filter((item) => {
+        return [0, 2, 3].includes(item.id);
+      });
     }
   };
 </script>
 
 <style lang="scss" scoped>
-  .patrolInspection {
-    height: 100%;
+  // 步骤条边线显示
+  // ::v-deep .el-step__head.is-process .el-step__icon.is-text {
+  //   border: none !important;
+  //   background: none !important;
+  // }
+  // ::v-deep .el-step:last-of-type .el-step__line {
+  //   display: block !important;
+  //   width: 3px !important;
+  // }
+  // ::v-deep .el-steps:last-child .el-step__line {
+  //   display: none !important;
+  // }
+  // .patrolInspection {
+  //   height: 100%;
+  //   width: 100%;
+  //   display: flex;
+  //   flex-direction: column;
+  //   .search {
+  //     flex: 0 0 50px;
+  //   }
+  //   .table {
+  //     flex: 1;
+  //     .el-table {
+  //       width: 100%;
+  //       display: flex;
+  //       flex-direction: column;
+  //     }
+  //   }
+  //   .table-footer {
+  //     flex: 0 0 30px;
+  //     display: flex;
+  //     justify-content: flex-end;
+  //   }
+  // }
+
+  // 修改
+  ::v-deep .el-card__body {
+    padding: 0;
+  }
+
+  .app-container {
+    background: #f0f3f3;
+    min-height: calc(100vh - 84px);
+  }
+
+  .zw-page-table {
+    background: #ffffff;
+    padding-top: 20px;
+  }
+
+  .pagination-wrap {
+    display: flex;
+    justify-content: flex-end;
+    padding: 10px 0;
+  }
+
+  .table {
     width: 100%;
+    margin-top: 10px;
+  }
+
+    // 修改
+  ::v-deep .el-card__body {
+    padding: 0;
+  }
+
+  .app-container {
+    background: #f0f3f3;
+    min-height: calc(100vh - 84px);
+  }
+
+  .zw-page-table {
+    background: #ffffff;
+    padding-top: 20px;
+  }
+
+  .pagination-wrap {
     display: flex;
-    flex-direction: column;
-    .search {
-      flex: 0 0 50px;
-    }
-    .table {
-      flex: 1;
-      .el-table {
-        width: 100%;
-        display: flex;
-        flex-direction: column;
-      }
-    }
-    .table-footer {
-      flex: 0 0 30px;
-      display: flex;
-      justify-content: flex-end;
-    }
+    justify-content: flex-end;
+    padding: 10px 0;
+  }
+
+  .table {
+    width: 100%;
+    margin-top: 10px;
   }
 </style>

+ 367 - 218
src/views/bpm/tickets/patrolInspection/index.vue

@@ -1,124 +1,113 @@
-<!-- 巡点检工单 -->
+<!-- 点巡检工单 -->
+
 <template>
-  <div class="patrolInspection">
-    <div class="search">
-      <el-form label-width="120px">
-        <el-row>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="工单编号">
-              <el-input
-                v-model="searchForm.code"
-                placeholder="请输入"
-                size="small"
-              ></el-input> </el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="规则名称">
-              <el-select
-                v-model="searchForm.ruleId"
-                size="small"
-                clearable
-                style="width: 100%"
-                filterable
+  <div>
+    <div class="ele-body">
+      <el-card shadow="never">
+        <div class="filter-container">
+          <el-form
+            label-width="100px"
+            class="ele-form-search"
+            @keyup.enter.native="reload"
+            @submit.native.prevent
+          >
+            <el-row :gutter="15">
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-                <el-option
-                  v-for="item in ruleNameList"
-                  :key="item.id"
-                  :value="item.id"
-                  :label="item.name"
-                ></el-option> </el-select></el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="状态">
-              <el-select
-                filterable
-                v-model="searchForm.orderStatus"
-                size="small"
-                clearable
+                <el-form-item label="工单编号">
+                  <el-input
+                    v-model="searchForm.code"
+                    placeholder="请输入"
+                    size="small"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-                <el-option
-                  v-for="item in ticketStatus"
-                  :key="item.id"
-                  :value="item.id"
-                  :label="item.label"
-                ></el-option>
-              </el-select> </el-form-item
-          ></el-col>
-          <el-col :md="8" :sm="8" :xs="8">
-            <el-form-item label="开始结束时间">
-              <el-date-picker
-                class="form-input"
-                size="small"
-                v-model="searchForm.date"
-                type="daterange"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-                value-format="yyyy-MM-dd HH:mm:ss"
-                :default-time="['00:00:00', '23:59:59']"
+                <el-form-item label="规则名称">
+                  <el-select
+                    v-model="searchForm.ruleId"
+                    size="small"
+                    clearable
+                    style="width: 100%"
+                    filterable
+                  >
+                    <el-option
+                      v-for="item in ruleNameList"
+                      :key="item.id"
+                      :value="item.id"
+                      :label="item.name"
+                    ></el-option> </el-select
+                ></el-form-item>
+              </el-col>
+
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-              </el-date-picker> </el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="16" :xs="16" style="text-align: right">
-            <el-button icon="el-icon-refresh-left" size="small" @click="rest"
-              >重置</el-button
-            >
-            <el-button
-              type="primary"
-              icon="el-icon-search"
-              size="small"
-              @click="search"
-              >搜索</el-button
-            ></el-col
-          >
-        </el-row>
-      </el-form>
-    </div>
-    <div class="table">
-      <el-table
-        :data="tableData"
-        border
-        height="99%"
-        tooltip-effect="dark"
-        :header-cell-style="{ background: '#F0F3F3', border: 'none' }"
-        @row-dblclick="openDetail"
-      >
-        <el-table-column
-          width="80px"
-          label="序号"
-          type="index"
-          :index="indexMethod"
+                <el-form-item label="状态">
+                  <el-select
+                    filterable
+                    clearable
+                    v-model="searchForm.orderStatus"
+                    size="small"
+                  >
+                    <el-option
+                      v-for="item in ticketStatus"
+                      :key="item.id"
+                      :value="item.id"
+                      :label="item.label"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
+              >
+                <el-form-item label="开始结束时间">
+                  <el-date-picker
+                    class="form-input"
+                    size="small"
+                    v-model="searchForm.date"
+                    type="daterange"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    :default-time="['00:00:00', '23:59:59']"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :md="4" :sm="16" :xs="16" style="text-align: right">
+                <el-button
+                  icon="el-icon-refresh-left"
+                  size="small"
+                  @click="reload('reset')"
+                  >重置</el-button
+                >
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="small"
+                  @click="reload('search')"
+                  >搜索</el-button
+                ></el-col
+              >
+            </el-row>
+          </el-form>
+        </div>
+        <ele-pro-table
+          ref="table"
+          :columns="columns"
+          :datasource="datasource"
+          maxHeight="580"
         >
-        </el-table-column>
-        <el-table-column prop="code" label="工单编号" />
-        <el-table-column prop="planCode" label="计划单号" />
-        <el-table-column prop="planName" label="点巡检名称" />
-        <!-- <el-table-column prop="createTime" label="设备分类" /> -->
-        <el-table-column prop="ruleName" label="规则名称" />
-        <el-table-column prop="createUserName" label="创建人" />
-        <el-table-column prop="createTime" label="创建时间" />
-        <el-table-column prop="acceptTime" label="开始时间" />
-        <el-table-column prop="finishTime" label="结束时间" />
-        <el-table-column prop="planFinishTime" label="计划完成时间" />
-        <el-table-column prop="orderStatus" label="执行结果">
-          <template slot-scope="{ row }">
-            {{ { 0: '缺陷', 1: '正常' }[row.isAbnormal] }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="orderStatus" label="状态">
-          <template slot-scope="{ row }">
-            {{
-              ticketStatus.filter((item) => item.id == row.orderStatus)[0]?.label
-            }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="practicalTime" label="实际工时">
-          <template slot-scope="{ row }">
-            {{ time_interval(row.acceptTime, row.finishTime) }}
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" width="150">
-          <template slot-scope="{ row }">
+          <!-- 操作列 -->
+          <template v-slot:action="{ row }">
             <el-link
               v-if="row.orderStatus !== 3 && row.orderStatus !== 4"
               type="primary"
@@ -138,44 +127,158 @@
               转派
             </el-link>
           </template>
-        </el-table-column>
-      </el-table>
-    </div>
-    <div class="table-footer">
-      <el-pagination
-        background
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total"
-        :page-sizes="[15, 30, 50, 100, 500]"
-        :page-size.sync="pages.size"
-        :current-page.sync="pages.page"
-        @current-change="handleCurrentChange"
-        @size-change="handleSizeChange"
-      >
-      </el-pagination>
+        </ele-pro-table>
+      </el-card>
     </div>
+
+    <!-- 验收 -->
+    <RepairDetailsDialog ref="detailsDialogRef" @refesh="getData" />
     <!-- 转派弹窗 -->
     <redeployOther ref="redeployOtherRef" @refresh="getData" />
     <!-- 报工弹框 -->
     <signingUpWork ref="signingUpWorkRef" @refresh="getData" />
   </div>
 </template>
-
 <script>
+  import RepairDetailsDialog from '../components/RepairDetailsDialog.vue';
   import redeployOther from '../components/redeployOther.vue';
   import signingUpWork from '../components/signingUpWork.vue';
-  import { ticketStatus } from '@/utils/dict/tickets';
+  import { ticketStatus, resultStatus } from '@/utils/dict/tickets';
   import { getWorkOrderPage, getRule } from '@/api/tickets';
   import pagenation from '@/components/Pagination';
-  import { deepClone } from 'ele-admin/lib/utils/core';
+
+  // 修改
+  import {
+    notifyMessagePageAPI,
+    updateNotifyMessageReadByIdAPI
+  } from '@/api/bpm/task';
+  import { mapGetters } from 'vuex';
   export default {
-    components: { pagenation, redeployOther, signingUpWork },
+    components: {
+      pagenation,
+      redeployOther,
+      signingUpWork,
+      RepairDetailsDialog
+    },
     data() {
       return {
         ruleNameList: [],
-        tableData: [],
-        statusOptions: [],
+        userId: '',
         ticketStatus: [],
+        resultStatus,
+        //
+        addOrEditDialogFlag: false,
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            minWidth: '150',
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            label: '工单编号',
+            minWidth: '200',
+            align: 'center'
+          },
+          {
+            prop: 'planCode',
+            label: '计划单号',
+            minWidth: '200',
+            align: 'center'
+          },
+          {
+            prop: 'planName',
+            label: '点巡检名称',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'ruleName',
+            label: '规则名称',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'createUserName',
+            label: '创建人',
+            align: 'center',
+            minWidth: '150',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'acceptTime',
+            label: '开始时间',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'finishTime',
+            label: '结束时间',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'planFinishTime',
+            label: '计划完成时间',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'isAbnormal',
+            label: '执行结果',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return { 0: '缺陷', 1: '正常' }[_row.isAbnormal];
+            }
+          },
+          {
+            prop: 'orderStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return ticketStatus.filter(
+                (item) => item.id == _row.orderStatus
+              )[0]?.label;
+            }
+          },
+          {
+            prop: 'practicalTime',
+            label: '实际工时',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              let _this = this;
+              return _this.time_interval(_row.acceptTime, _row.finishTime);
+            }
+          },
+
+          {
+            columnKey: 'action',
+            label: '操作',
+            minWidth: 200,
+            align: 'center',
+            slot: 'action',
+            fixed: 'right'
+          }
+        ],
         searchForm: {
           code: '',
           orderStatus: '',
@@ -183,44 +286,60 @@
           date: '',
           startTime: '',
           endTime: '',
-          type: 1
-        },
-        pages: {
-          page: 1,
-          size: 15
+          type: 1,
+          isQueryTodo: 1,
+          executeUserId: ''
         },
+        tableData: [],
+        size: 10,
+        page: 1,
         total: 0
       };
     },
-    created() {
-      this.getRuleNameList();
-      this.getData();
-      // 过滤待接收和执行中
-      this.ticketStatus = ticketStatus.filter((item) => {
-        return [0, 2].includes(item.id);
-      });
+    computed: {
+      ...mapGetters(['user']),
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
     },
     methods: {
-      // 转派
-      toRedeploy(row) {
-        this.$refs.redeployOtherRef.open(row);
+      //新增或修改模板
+      async handleAddOrEdit(row) {
+        await updateNotifyMessageReadByIdAPI([row.id]);
+        this.$refs.table.reload();
       },
-      // 报工
-      toSigningUpWork(row) {
-        this.$refs.signingUpWorkRef.open(row);
-      },
-      reload(where) {
-        this.$refs.table.reload({ page: 1, ...where });
+      reload(type) {
+        if (type == 'reset') {
+          this.searchForm.code = '';
+          this.searchForm.orderStatus = '';
+          this.searchForm.ruleId = '';
+          this.searchForm.date = '';
+          this.searchForm.startTime = '';
+          this.searchForm.endTime = '';
+          this.searchForm.type = 1;
+        }
+        this.$refs.table.reload({ page: 1, where: this.searchForm });
       },
-      openDetail({ id }) {
-        this.$router.push({
-          path: '/tickets/patrolInspection/detail',
-          query: {
-            id
-          }
+
+      // 获取table数据
+      async datasource({ page, where, limit, ...row }) {
+        this.searchForm.executeUserId = this.userId;
+        let form = this.searchForm;
+        const res = await getWorkOrderPage({
+          ...form,
+          ...where,
+          pageNum: page,
+          size: limit,
+          userId: this.user.info.userId
         });
+        console.log(res);
+        this.total = res.total;
+        this.$emit('recount');
+        return res;
       },
-      // 获取规则名列表(设备保养)
+
+      // 获取规则名列表(设备维修)
       async getRuleNameList() {
         const res = await getRule({
           status: 1,
@@ -232,19 +351,29 @@
           this.ruleNameList = res.list || [];
         }
       },
-      // 实现分页序号连贯
-      indexMethod(index) {
-        index = index + 1 + (this.pages.page - 1) * this.pages.size;
-        return index;
+
+      // 转派
+      toRedeploy(row) {
+        this.$refs.redeployOtherRef.open(row);
+      },
+      // 报工
+      toSigningUpWork(row) {
+        this.$refs.signingUpWorkRef.open(row);
+      },
+      openDetail({ id }) {
+        this.$router.push({
+          path: '/tickets/patrolInspection/detail',
+          query: {
+            id
+          }
+        });
       },
       getData() {
-        let userId = localStorage.getItem('userId');
-        console.log(userId);
         let par = {
           ...this.pages,
           ...this.searchForm,
-          executeUserId: userId,
-          isQueryTodo:1,
+          executeUserId: this.userId,
+          statusType: 0
         };
         if (this.searchForm.date) {
           par.startTime = this.searchForm.date[0];
@@ -252,36 +381,11 @@
         }
         delete par.date;
         getWorkOrderPage(par).then((res) => {
-          console.log(res.list,'res.list')
           this.tableData = res.list;
           this.total = res.total;
         });
         this.$emit('recount');
       },
-      search() {
-        this.pages.page = 1;
-        this.getData();
-      },
-      rest() {
-        this.searchForm = {
-          code: '',
-          orderStatus: '',
-          ruleId: '',
-          date: '',
-          startTime: '',
-          endTime: '',
-          type: 1
-        };
-        this.pages.page = 1;
-        this.getData();
-      },
-      handleCurrentChange() {
-        this.getData();
-      },
-      handleSizeChange() {
-        this.pages.page = 1;
-        this.getData();
-      },
       // 计算实际工时
       time_interval(dt1, dt2) {
         if (!dt1 || !dt2) {
@@ -306,31 +410,76 @@
         }
         return result;
       }
+    },
+    created() {
+      this.userId = localStorage.getItem('userId');
+      this.getRuleNameList();
+      this.ticketStatus = ticketStatus.filter((item) => {
+        return [0, 2, 3].includes(item.id);
+      });
     }
   };
 </script>
 
 <style lang="scss" scoped>
-  .patrolInspection {
-    height: 100%;
-    width: 100%;
+  // 步骤条边线显示
+  // ::v-deep .el-step__head.is-process .el-step__icon.is-text {
+  //   border: none !important;
+  //   background: none !important;
+  // }
+  // ::v-deep .el-step:last-of-type .el-step__line {
+  //   display: block !important;
+  //   width: 3px !important;
+  // }
+  // ::v-deep .el-steps:last-child .el-step__line {
+  //   display: none !important;
+  // }
+  // .patrolInspection {
+  //   height: 100%;
+  //   width: 100%;
+  //   display: flex;
+  //   flex-direction: column;
+  //   .search {
+  //     flex: 0 0 50px;
+  //   }
+  //   .table {
+  //     flex: 1;
+  //     .el-table {
+  //       width: 100%;
+  //       display: flex;
+  //       flex-direction: column;
+  //     }
+  //   }
+  //   .table-footer {
+  //     flex: 0 0 30px;
+  //     display: flex;
+  //     justify-content: flex-end;
+  //   }
+  // }
+
+  // 修改
+  ::v-deep .el-card__body {
+    padding: 0;
+  }
+
+  .app-container {
+    background: #f0f3f3;
+    min-height: calc(100vh - 84px);
+  }
+
+  .zw-page-table {
+    background: #ffffff;
+    padding-top: 20px;
+  }
+
+  .pagination-wrap {
     display: flex;
-    flex-direction: column;
-    .search {
-      flex: 0 0 50px;
-    }
-    .table {
-      flex: 1;
-      .el-table {
-        width: 100%;
-        display: flex;
-        flex-direction: column;
-      }
-    }
-    .table-footer {
-      flex: 0 0 30px;
-      display: flex;
-      justify-content: flex-end;
-    }
+    justify-content: flex-end;
+    padding: 10px 0;
+  }
+
+  .table {
+    width: 100%;
+    margin-top: 10px;
   }
 </style>

+ 375 - 231
src/views/bpm/tickets/repair/index.vue

@@ -1,132 +1,113 @@
-<!-- 巡点检工单 -->
+<!-- 维修工单 -->
+
 <template>
-  <div class="patrolInspection">
-    <div class="search">
-      <el-form label-width="120px">
-        <el-row>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="工单编号">
-              <el-input
-                v-model="searchForm.code"
-                placeholder="请输入"
-                size="small"
-              ></el-input> </el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="规则名称">
-              <el-select
-                v-model="searchForm.ruleId"
-                size="small"
-                clearable
-                style="width: 100%"
-                filterable
+  <div>
+    <div class="ele-body">
+      <el-card shadow="never">
+        <div class="filter-container">
+          <el-form
+            label-width="100px"
+            class="ele-form-search"
+            @keyup.enter.native="reload"
+            @submit.native.prevent
+          >
+            <el-row :gutter="15">
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-                <el-option
-                  v-for="item in ruleNameList"
-                  :key="item.id"
-                  :value="item.id"
-                  :label="item.name"
-                ></el-option> </el-select></el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="8" :xs="8">
-            <el-form-item label="状态">
-              <el-select
-                filterable
-                clearable
-                v-model="searchForm.status"
-                size="small"
+                <el-form-item label="工单编号">
+                  <el-input
+                    v-model="searchForm.code"
+                    placeholder="请输入"
+                    size="small"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-                <el-option
-                  v-for="item in ticketStatus"
-                  :key="item.id"
-                  :value="item.id"
-                  :label="item.label"
-                ></el-option>
-              </el-select> </el-form-item
-          ></el-col>
-          <el-col :md="8" :sm="8" :xs="8">
-            <el-form-item label="开始结束时间">
-              <el-date-picker
-                class="form-input"
-                size="small"
-                v-model="searchForm.date"
-                type="daterange"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-                value-format="yyyy-MM-dd HH:mm:ss"
-                :default-time="['00:00:00', '23:59:59']"
+                <el-form-item label="规则名称">
+                  <el-select
+                    v-model="searchForm.ruleId"
+                    size="small"
+                    clearable
+                    style="width: 100%"
+                    filterable
+                  >
+                    <el-option
+                      v-for="item in ruleNameList"
+                      :key="item.id"
+                      :value="item.id"
+                      :label="item.name"
+                    ></el-option> </el-select
+                ></el-form-item>
+              </el-col>
+
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
               >
-              </el-date-picker> </el-form-item
-          ></el-col>
-          <el-col :md="4" :sm="16" :xs="16" style="text-align: right">
-            <el-button icon="el-icon-refresh-left" size="small" @click="rest"
-              >重置</el-button
-            >
-            <el-button
-              type="primary"
-              icon="el-icon-search"
-              size="small"
-              @click="search"
-              >搜索</el-button
-            ></el-col
-          >
-        </el-row>
-      </el-form>
-    </div>
-    <div class="table">
-      <el-table
-        :data="tableData"
-        border
-        height="99%"
-        tooltip-effect="dark"
-        :header-cell-style="{ background: '#F0F3F3', border: 'none' }"
-      >
-        <el-table-column
-          width="80px"
-          label="序号"
-          type="index"
-          :index="indexMethod"
-        >
-        </el-table-column>
-        <el-table-column prop="code" label="工单编号" />
-        <el-table-column prop="planCode" label="计划单号" />
-        <el-table-column prop="planName" label="维修名称" />
-        <!-- <el-table-column prop="createTime" label="设备分类" /> -->
-        <el-table-column prop="ruleName" label="规则名称" />
-        <el-table-column prop="equiCode" label="设备编号" />
-        <el-table-column prop="equiName" label="设备名称" />
-        <el-table-column prop="requestUserName" label="报修人" />
-        <el-table-column prop="executeUserName" label="执行人" />
-        <el-table-column prop="acceptTime" label="开始时间" />
-        <el-table-column prop="finishTime" label="结束时间" />
-        <el-table-column prop="planFinishTime" label="计划完成时间" />
-        <el-table-column prop="orderStatus" label="执行结果">
-          <template slot-scope="{ row }">
-            {{
-              row.acceptanceStatus
-                ? resultStatus.filter(
-                    (item) => item.code == row.acceptanceStatus
-                  )[0].label
-                : ''
-            }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="orderStatus" label="状态">
-          <template slot-scope="{ row }">
+                <el-form-item label="状态">
+                  <el-select
+                    filterable
+                    clearable
+                    v-model="searchForm.status"
+                    size="small"
+                  >
+                    <el-option
+                      v-for="item in ticketStatus"
+                      :key="item.id"
+                      :value="item.id"
+                      :label="item.label"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
 
-            {{
-              ticketStatus.filter((item) => item.id == row.orderStatus)[0]?.label
-            }}
-          </template>
-        </el-table-column>
-        <el-table-column prop="practicalTime" label="实际工时">
-          <template slot-scope="{ row }">
-            {{ time_interval(row.acceptTime, row.finishTime) }}
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" width="200">
-          <template slot-scope="{ row }">
+              <el-col
+                v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
+              >
+                <el-form-item label="开始结束时间">
+                  <el-date-picker
+                    class="form-input"
+                    size="small"
+                    v-model="searchForm.date"
+                    type="daterange"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    :default-time="['00:00:00', '23:59:59']"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :md="4" :sm="16" :xs="16" style="text-align: right">
+                <el-button
+                  icon="el-icon-refresh-left"
+                  size="small"
+                  @click="reload('reset')"
+                  >重置</el-button
+                >
+                <el-button
+                  type="primary"
+                  icon="el-icon-search"
+                  size="small"
+                  @click="reload('search')"
+                  >搜索</el-button
+                ></el-col
+              >
+            </el-row>
+          </el-form>
+        </div>
+        <ele-pro-table
+          ref="table"
+          :columns="columns"
+          :datasource="datasource"
+          maxHeight="580"
+        >
+          <!-- 操作列 -->
+          <template v-slot:action="{ row }">
             <el-link
               v-if="row.orderStatus == 3 && row.createUserId == userId"
               type="primary"
@@ -171,22 +152,10 @@
               详情
             </el-link>
           </template>
-        </el-table-column>
-      </el-table>
-    </div>
-    <div class="table-footer">
-      <el-pagination
-        background
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total"
-        :page-sizes="[15, 30, 50, 100, 500]"
-        :page-size.sync="pages.size"
-        :current-page.sync="pages.page"
-        @current-change="handleCurrentChange"
-        @size-change="handleSizeChange"
-      >
-      </el-pagination>
+        </ele-pro-table>
+      </el-card>
     </div>
+
     <!-- 验收 -->
     <RepairDetailsDialog ref="detailsDialogRef" @refesh="getData" />
     <!-- 转派弹窗 -->
@@ -195,14 +164,20 @@
     <signingUpWork ref="signingUpWorkRef" @refresh="getData" />
   </div>
 </template>
-
 <script>
+  import RepairDetailsDialog from '../components/RepairDetailsDialog.vue';
   import redeployOther from '../components/redeployOther.vue';
   import signingUpWork from '../components/signingUpWork.vue';
   import { ticketStatus, resultStatus } from '@/utils/dict/tickets';
-  import RepairDetailsDialog from '../components/RepairDetailsDialog.vue';
   import { getWorkOrderList, getRule } from '@/api/tickets';
   import pagenation from '@/components/Pagination';
+
+  // 修改
+  import {
+    notifyMessagePageAPI,
+    updateNotifyMessageReadByIdAPI
+  } from '@/api/bpm/task';
+  import { mapGetters } from 'vuex';
   export default {
     components: {
       pagenation,
@@ -212,12 +187,145 @@
     },
     data() {
       return {
-        resultStatus,
         ruleNameList: [],
-        tableData: [],
-        statusOptions: [],
         userId: '',
         ticketStatus: [],
+        resultStatus,
+        //
+        addOrEditDialogFlag: false,
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            minWidth: '150',
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            label: '工单编号',
+            minWidth: '200',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'planCode',
+            label: '计划单号',
+            width: '200',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'planName',
+            label: '维修名称',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'ruleName',
+            label: '规则名称',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'equiCode',
+            label: '设备编号',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+
+          {
+            prop: 'equiName',
+            label: '设备名称',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'requestUserName',
+            label: '报修人',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'executeUserName',
+            label: '执行人',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'acceptTime',
+            label: '开始时间',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'finishTime',
+            label: '结束时间',
+            align: 'center',
+             minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'planFinishTime',
+            label: '计划完成时间',
+            align: 'center',
+            minWidth: '180',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'acceptanceStatus',
+            label: '执行结果',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return _row.acceptanceStatus
+                ? resultStatus.filter(
+                    (item) => item.code == _row.acceptanceStatus
+                  )[0].label
+                : '';
+            }
+          },
+          {
+            prop: 'orderStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return ticketStatus.filter(
+                (item) => item.id == _row.orderStatus
+              )[0]?.label;
+            }
+          },
+
+          {
+            prop: 'practicalTime',
+            label: '实际工时',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              let _this = this;
+              return _this.time_interval(_row.acceptTime, _row.finishTime);
+            }
+          },
+
+          {
+            columnKey: 'action',
+            label: '操作',
+            minWidth: 200,
+            align: 'center',
+            slot: 'action',
+            fixed: 'right'
+          }
+        ],
         searchForm: {
           code: '',
           status: '',
@@ -225,27 +333,73 @@
           date: '',
           startTime: '',
           endTime: '',
-          type: 3
-        },
-        pages: {
-          page: 1,
-          size: 15
+          executeUserId: '',
+          statusType: 0,
+          type: 3,
+          isQueryTodo: 1,
+          executeUserId: ''
         },
+        tableData: [],
+        size: 10,
+        page: 1,
         total: 0
       };
     },
-    created() {
-      this.userId = localStorage.getItem('userId');
-      this.getRuleNameList();
-      this.getData();
-      // 过滤待接收和执行中
-      this.ticketStatus = ticketStatus.filter((item) => {
-        return [0, 2, 3].includes(item.id);
-      });
-      console.log('-----this.ticketStatus');
-      console.log(this.ticketStatus);
+    computed: {
+      ...mapGetters(['user']),
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
     },
     methods: {
+      //新增或修改模板
+      async handleAddOrEdit(row) {
+        await updateNotifyMessageReadByIdAPI([row.id]);
+        this.$refs.table.reload();
+      },
+      reload(type) {
+        if (type == 'reset') {
+          this.searchForm.code = '';
+          this.searchForm.status = '';
+          this.searchForm.ruleId = '';
+          this.searchForm.date = '';
+          this.searchForm.startTime = '';
+          this.searchForm.endTime = '';
+        }
+        this.$refs.table.reload({ page: 1, where: this.searchForm });
+      },
+
+      // 获取table数据
+      async datasource({ page, where, limit, ...row }) {
+        this.searchForm.executeUserId = this.userId;
+        let form = this.searchForm;
+        const res = await getWorkOrderList({
+          ...form,
+          ...where,
+          pageNum: page,
+          size: limit,
+          userId: this.user.info.userId
+        });
+
+        this.total = res.total;
+        this.$emit('recount');
+        return res;
+      },
+
+      // 获取规则名列表(设备维修)
+      async getRuleNameList() {
+        const res = await getRule({
+          status: 1,
+          type: 3,
+          pageNum: 1,
+          size: -1
+        });
+        if (res.list) {
+          this.ruleNameList = res.list || [];
+        }
+      },
+
       // 验收
       goDetail(row) {
         row.title = '工单详情';
@@ -260,31 +414,11 @@
       toSigningUpWork(row) {
         this.$refs.signingUpWorkRef.open(row);
       },
-      reload(where) {
-        this.$refs.table.reload({ page: 1, ...where });
-      },
       openDetail(row) {
         row.title = '工单详情';
         row.tabLabel = '工单信息';
         this.$refs.detailsDialogRef.init(row, true);
       },
-      // 获取规则名列表(设备维修)
-      async getRuleNameList() {
-        const res = await getRule({
-          status: 1,
-          type: 3,
-          pageNum: 1,
-          size: -1
-        });
-        if (res.list) {
-          this.ruleNameList = res.list || [];
-        }
-      },
-      // 实现分页序号连贯
-      indexMethod(index) {
-        index = index + 1 + (this.pages.page - 1) * this.pages.size;
-        return index;
-      },
       getData() {
         let par = {
           ...this.pages,
@@ -303,30 +437,6 @@
         });
         this.$emit('recount');
       },
-      search() {
-        this.pages.page = 1;
-        this.getData();
-      },
-      rest() {
-        this.searchForm = {
-          code: '',
-          orderStatus: 0,
-          ruleId: '',
-          date: '',
-          startTime: '',
-          endTime: '',
-          type: 3
-        };
-        this.pages.page = 1;
-        this.getData();
-      },
-      handleCurrentChange() {
-        this.getData();
-      },
-      handleSizeChange() {
-        this.pages.page = 1;
-        this.getData();
-      },
       // 计算实际工时
       time_interval(dt1, dt2) {
         if (!dt1 || !dt2) {
@@ -351,43 +461,77 @@
         }
         return result;
       }
+    },
+    created() {
+      this.userId = localStorage.getItem('userId');
+      this.searchForm.executeUserId = this.userId;
+      this.getRuleNameList();
+      this.ticketStatus = ticketStatus.filter((item) => {
+        return [0, 2, 3].includes(item.id);
+      });
     }
   };
 </script>
 
 <style lang="scss" scoped>
   // 步骤条边线显示
-  ::v-deep .el-step__head.is-process .el-step__icon.is-text {
-    border: none !important;
-    background: none !important;
+  // ::v-deep .el-step__head.is-process .el-step__icon.is-text {
+  //   border: none !important;
+  //   background: none !important;
+  // }
+  // ::v-deep .el-step:last-of-type .el-step__line {
+  //   display: block !important;
+  //   width: 3px !important;
+  // }
+  // ::v-deep .el-steps:last-child .el-step__line {
+  //   display: none !important;
+  // }
+  // .patrolInspection {
+  //   height: 100%;
+  //   width: 100%;
+  //   display: flex;
+  //   flex-direction: column;
+  //   .search {
+  //     flex: 0 0 50px;
+  //   }
+  //   .table {
+  //     flex: 1;
+  //     .el-table {
+  //       width: 100%;
+  //       display: flex;
+  //       flex-direction: column;
+  //     }
+  //   }
+  //   .table-footer {
+  //     flex: 0 0 30px;
+  //     display: flex;
+  //     justify-content: flex-end;
+  //   }
+  // }
+
+  // 修改
+  ::v-deep .el-card__body {
+    padding: 0;
   }
-  ::v-deep .el-step:last-of-type .el-step__line {
-    display: block !important;
-    width: 3px !important;
+
+  .app-container {
+    background: #f0f3f3;
+    min-height: calc(100vh - 84px);
   }
-  ::v-deep .el-steps:last-child .el-step__line {
-    display: none !important;
+
+  .zw-page-table {
+    background: #ffffff;
+    padding-top: 20px;
   }
-  .patrolInspection {
-    height: 100%;
-    width: 100%;
+
+  .pagination-wrap {
     display: flex;
-    flex-direction: column;
-    .search {
-      flex: 0 0 50px;
-    }
-    .table {
-      flex: 1;
-      .el-table {
-        width: 100%;
-        display: flex;
-        flex-direction: column;
-      }
-    }
-    .table-footer {
-      flex: 0 0 30px;
-      display: flex;
-      justify-content: flex-end;
-    }
+    justify-content: flex-end;
+    padding: 10px 0;
+  }
+
+  .table {
+    width: 100%;
+    margin-top: 10px;
   }
 </style>