车间能级提升-智能设备管理系统
eims-ui-mobile/src/pages/maint/maint-st.vue
@@ -11,6 +11,12 @@
<template>
  <z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time>
    <template #top>
      <!-- 增加一个搜索栏 -->
      <wd-search v-model="searchValue" @search="handleSearch">
        <template #right-icon>
          <wd-icon name="scan" size="34rpx"></wd-icon>
        </template>
      </wd-search>
      <wd-tabs v-model="activeTab" @change="handleTabChange">
        <wd-tab title="待保养"></wd-tab>
        <wd-tab title="待确认"></wd-tab>
@@ -61,12 +67,12 @@
            <view class="text-color-gray text-sm mt-2 flex">
              <text>状态:</text>
              <template v-if="item.status === '1'">
                <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
                <text class="ml-1">已完成</text>
                <wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
                <text class="ml-1">待确认</text>
              </template>
              <template v-else-if="item.status === '2'">
                <wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
                <text class="ml-1">已确认</text>
                <wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
                <text class="ml-1">已完成</text>
              </template>
              <template v-else>
                <wd-icon class="icon-color-base" name="detection" size="40rpx"></wd-icon>
@@ -79,6 +85,17 @@
        </view>
      </wd-card>
    </view>
    <wd-fab
      v-if="status === '1' && isLeader()"
      :draggable="true"
      type="success"
      position="left-bottom"
      :expandable="false"
      inactiveIcon="check"
      @click="handleBatchComplete"
      direction="top"
    />
  </z-paging>
</template>
@@ -86,7 +103,12 @@
import { ref, computed } from 'vue'
import { getMaintStList } from '@/service/maint'
import dayjs from 'dayjs'
import { updateMaintSt } from '@/service/maint'
import { useUserStore } from "@/store";
import { isLeader } from '@/utils/RoleUtils'
import { useToast } from 'wot-design-uni'
const searchValue = ref<string>('')
/**
 * 其他页面传过来的数据
 * assetNo: 资产编号
@@ -112,13 +134,21 @@
  const now = dayjs()
  const planDate = dayjs(planTime)
  const diffDays = planDate.diff(now, 'day')
  // 获取计划日期所在月份的最后一天
  const planMonthEnd = planDate.endOf('month')
  // 计算当前日期与计划月月底的差值(天数)
  const diffDays = planMonthEnd.diff(now, 'day')
  if (diffDays < 0) {
    // 超过计划时间,红色背景
    // 已经过了计划月的月底,红色背景
    return 'card-overdue'
  } else if (diffDays <= 3) {
    // 距离计划时间三天以内,黄色背景
    // 距离计划月月底3天以内,红色背景
    return 'card-overdue'
  } else if (diffDays <= 10) {
    // 距离计划月月底10天以内,黄色背景
    return 'card-urgent'
  } else {
    // 正常状态,背景颜色不变
@@ -191,6 +221,7 @@
    pageSize,
    equName: equName.value,
    status: status.value,
    params: {},
  }
  if (filterDate.value === '1') {
    // 获取当前日期
@@ -200,7 +231,7 @@
      endPlanTime: now.endOf('month').format('YYYY-MM-DD 23:59:59'),
    }
  } else {
    delete queryParams.params
    queryParams.params = {}
  }
  if (equName.value === '-1') {
@@ -213,7 +244,7 @@
  if (option?.from === 'scan') {
    queryParams.assetNo = option.assetNo
  }
  queryParams.params.searchValue = searchValue.value
  getMaintStList(queryParams)
    .then((res: any) => {
      // 请勿在网络请求回调中给dataList赋值!!只需要调用complete就可以了
@@ -233,10 +264,50 @@
  })
}
function handleSearch () {
  console.log('handleSearch')
  paging.value.reload()
}
function reloadData() {
  paging.value.reload()
}
const userStore = useUserStore()
const toast = useToast()
async function handleBatchComplete() {
  console.log('handleBatchComplete', dataList.value.length)
  if (!isLeader()) {
    toast.info('无权限操作')
    return
  }
  // 如果待确认工单列表为空,则提示用户无待确认工单
  if (dataList.value.length < 1) {
    toast.info('无待确认工单')
    return
  }
  const now = new Date()
  const verifyTime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`
  // 假设 dataList 是当前待确认的工单列表
  const promises = dataList.value.map(item => {
    return updateMaintSt({
      id: item.id,
      status: '2',
      verifyUser: userStore?.userInfo?.userId,
      verifyTime
    })
  })
  try {
    await Promise.all(promises)
    toast.success('一键确认完成')
    reloadData() // 刷新列表
  } catch (e) {
    toast.error('部分工单确认失败,请重试')
  }
}
onLoad((options) => {
  Object.assign(option, options)