doum
2025-09-26 8a8d103173fe6bc5ff878c85347a59d3dec138de
admin/src/views/task/index.vue
@@ -1,18 +1,9 @@
<template>
  <div class="main_app">
    <QueryForm
      v-model="filters"
      :query-form-config="queryFormConfig"
      @handleQuery="getList(1)"
      @clear="clear"
      @changeForm='changeForm'
    >
    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getHeadData(1)" @clear="clear"
      @changeForm='changeForm'>
      <template #fastdate>
        <el-radio-group
          v-model="filters.fastdate"
          size="small"
          @input="changeRadio"
        >
        <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">
          <el-radio-button label="0">当天</el-radio-button>
          <el-radio-button label="6">近7天</el-radio-button>
          <el-radio-button label="29">近30天</el-radio-button>
@@ -20,17 +11,11 @@
      </template>
    </QueryForm>
    <!--  -->
    <el-tabs v-model="filters.queryType" @tab-click="(e) => getList(1)">
    <el-tabs v-model="filters.queryType" @tab-click="(e) => getHeadData(1)" class="el-tabs-ele">
      <el-tab-pane label="待处理" name="0">
        <template #label>
          <span
            >待处理
            <el-badge
              v-if="headData.noticeWaitNum"
              :value="headData.noticeWaitNum"
              class="item"
              type="danger"
            >
          <span>待处理
            <el-badge v-if="headData.noticeWaitNum" :value="headData.noticeWaitNum" class="item" type="danger">
            </el-badge>
          </span>
        </template>
@@ -41,29 +26,16 @@
      </el-tab-pane>
      <el-tab-pane :value="headData.noticeCopyNum" label="抄送我的" name="3">
        <template #label>
          <span
            >抄送我的
            <el-badge
              v-if="headData.noticeCopyNum"
              :value="headData.noticeCopyNum"
              class="item"
              type="danger"
            >
          <span>抄送我的
            <el-badge v-if="headData.noticeCopyNum" :value="headData.noticeCopyNum" class="item" type="danger">
            </el-badge>
          </span>
        </template>
      </el-tab-pane>
    </el-tabs>
    <el-table
      v-loading="loading"
      :data="dataList"
      stripe
      row-key="id"
      class="mb20"
      default-expand-all
    >
    <el-table :height="tableHeightNew" v-loading="loading" :data="dataList" stripe row-key="id"   default-expand-all>
      <el-table-column label="处理事项" min-width="160">
        <template slot-scope="{ row }"> {{ row.title}}
        <template slot-scope="{ row }"> {{ row.title }}
        </template>
      </el-table-column>
      <el-table-column prop="info" label="当前阶段" min-width="100"></el-table-column>
@@ -71,27 +43,23 @@
      </el-table-column>
      <el-table-column label="操作" width="230" fixed="right">
        <template slot-scope="{ row }">
          <el-button
            type="text"
            @click="handleDetail(row)"
            >查看详情</el-button
          >
          <el-button type="text" @click="handleDetail(row)">查看详情</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      @size-change="handleSizeChange"
      @current-change="getList"
      :pagination="pagination"
    />
    <TaskDetail v-if="isShowDetail" ref="DetailRef" @close="isShowDetail = false" @success="SubSuccess('isShowDetail')" />
    <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" @close="isShowReport = false" @success="SubSuccess('isShowReport')" />
    <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" @close="isShowDanger = false" @success="SubSuccess('isShowDanger')" />
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" @close="isShowDriver = false" @success="SubSuccess('isShowDriver')" />
    <pagination @size-change="handleSizeChange" @current-change="getHeadData" :pagination="pagination" />
    <TaskDetail v-if="isShowDetail" ref="DetailRef" @close="isShowDetail = false"
      @success="SubSuccess('isShowDetail')" />
    <VisReportDetail v-if="isShowReport" ref="VisReportDetailRef" @close="isShowReport = false"
      @success="SubSuccess('isShowReport')" />
    <DangetDetail v-if="isShowDanger" ref="DangetDetailRef" @close="isShowDanger = false"
      @success="SubSuccess('isShowDanger')" />
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" @close="isShowDriver = false"
      @success="SubSuccess('isShowDriver')" />
    <!-- 用车申请 -->
    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getList" />
    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="getHeadData" />
    <!-- 隐患 -->
    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getList" />
    <OperaHiddenDangerWindow ref="OperaHiddenDangerWindow" @success="getHeadData" />
    <!-- 预约详情 -->
    <OperaVisitsDesWindow ref="OperaVisitsDesWindow" />
  </div>
@@ -109,11 +77,14 @@
import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow'
import dayjs from 'dayjs'
import {
  getAppHeaderNav,
  taskCenterHeadPC,
  taskCenterPage,
  taskSignRead
} from '@/api'
import BaseComputHeight from '@/components/base/BaseComputHeight'
export default {
  extends: BaseComputHeight,
  components: {
    TaskDetail,
    VisReportDetail,
@@ -125,7 +96,7 @@
    OperaHiddenDangerWindow,
    OperaVisitsDesWindow
  },
  data () {
  data() {
    return {
      isShowDetail: false,
      isShowReport: false,
@@ -133,7 +104,9 @@
      isShowDriver: false,
      filters: {
        queryType: '0',
        // fastdate: 0
        startDate: '',
        endDate: '',
        fastdate: '0'
      },
      queryFormConfig: {
        formItems: [
@@ -145,15 +118,15 @@
              { label: '访客申请', value: '0' },
              { label: '访客报备', value: '1' },
              { label: '用车申请', value: '2' },
              { label: '隐患随手拍', value: '3' },
              { label: '物流车申请', value: '4' }
              // { label: '隐患随手拍', value: '3' },
              // { label: '物流车申请', value: '6' }
            ]
          },
          {
            filed: 'selTime',
            type: 'datetimerange',
            label: '起止时间',
            pickerOptions: {}
            filed1: 'startDate',
            filed2: 'endDate',
            type: 'datetime',
            label: '起止时间'
          },
          {
            type: 'slot',
@@ -176,27 +149,43 @@
        { name: '访客申请', id: 0 },
        { name: '访客报备', id: 1 },
        { name: '用车申请', id: 2 },
        { name: '隐患随手拍', id: 3 },
        { name: '物流车申请', id: 4 }
        // { name: '隐患随手拍', id: 3 },
        // { name: '物流车申请', id: 6 }
      ]
    }
  },
  created () {
  created() {
    // this.getHeadData()
    // this.changeRadio('0')
    this.getList()
    this.changeRadio('0')
    // this.getHeadData()
  },
  methods: {
    changeRadio (day) {
    changeRadio(day) {
      const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD') + ' 00:00:00', dayjs().format('YYYY-MM-DD') + ' 23:59:59']
      this.$set(this.filters, 'selTime', arr)
      this.getList()
      this.filters.startDate = arr[0]
      this.filters.endDate = arr[1]
      this.getHeadData()
    },
    SubSuccess(str) {
      this[str] = false
      this.getTaskList()
      this.getHeadData()
    },
    handleDetail (row) {
    handleTest(row) {
      getAppHeaderNav(5).then(res => {
        if (res === undefined || res == null) {
          return
        }
        const myWindow = window.open(res)
        setTimeout(() => {
          myWindow.postMessage('{"method":"goToApp","argument":' + row.param5 + '}', '*')
        }, 3000)
      })
    },
    handleDetail(row) {
      if (row.type === 7) {
        this.handleTest(row)
        return
      }
      if (this.filters.queryType == 3) {
        taskSignRead({
          noticesId: row.id,
@@ -245,56 +234,54 @@
        })
      }
    },
    changeForm (str) {
      if (str === 'selTime') {
        this.$set(this.filters, 'fastdate', null)
        this.getList()
      }
    },
    getList (page) {
    changeForm(str) {
      this.$set(this.filters, 'fastdate', null)
      this.getHeadData()
    },
    getList(page) {
      const { filters, pagination } = this
      if (filters.selTime && filters.selTime.length > 0) {
        filters.startDate = filters.selTime[0]
        filters.endDate = filters.selTime[1]
      } else {
        filters.startDate = null
        filters.endDate = null
      }
      pagination.page = page || pagination.page
      taskCenterPage({
        model: { ...filters, queryType: Number(filters.queryType) },
        ...pagination
      }).then(res => {
        console.log('res', res)
        this.loading = false
        this.dataList = res.records || []
        this.pagination.total = res.total || 0
        this.dataList.forEach(i => {
          i.param1 = JSON.parse(i.param1)
        }, () => {
          this.loading = false
        })
      })
    },
    getHeadData () {
    getHeadData(page) {
      const { filters } = this
      if (filters.selTime && filters.selTime.length > 0) {
        filters.startDate = filters.selTime[0]
        filters.endDate = filters.selTime[1]
      } else {
        filters.startDate = null
        filters.endDate = null
      }
      // if (filters.selTime && filters.selTime.length > 0) {
      //   filters.startDate = filters.selTime[0]
      //   filters.endDate = filters.selTime[1]
      // } else {
      //   filters.startDate = null
      //   filters.endDate = null
      // }
      this.loading = true
      taskCenterHeadPC({ ...filters, queryType: Number(filters.queryType), isDetail: '1' }).then(res => {
        this.headData = res
        this.getList(1)
      }, () => {
        this.loading = false
      })
    },
    clear () {
    clear() {
      this.filters = {
        queryType: '0',
      }
      this.getList(0)
      this.getHeadData(0)
    },
    handleSizeChange (capacity) {
    handleSizeChange(capacity) {
      this.pagination.capacity = capacity
      this.getHeadData(1)
    }
  }
}