Newer
Older
urbanLifeline_YanAn / src / views / order / workOrderQuery / index.vue
@zhangzhihui zhangzhihui on 19 Nov 5 KB 流程
<template>
  <div class="workOrderQuery publicContainer">
    <el-row class="chooseBox">
      <el-col :span="6" class="flex flex-align-center chooseTime">
        <span class="title">监测时间</span>
        <el-date-picker
          v-model="dateRange"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          format="YYYY-MM-DD"
          value-format="YYYY-MM-DD"
        />
      </el-col>
      <el-col :span="4" class="flex flex-align-center chooseType">
        <span class="title">工单类型</span>
        <el-select v-model="queryParams.orderType" placeholder="请选择" clearable style="width: 150px">
          <el-option v-for="item in work_order_type" :key="item.value" :label="item.label" :value="item.value" />
        </el-select>
      </el-col>
      <el-col :span="4" class="flex flex-align-center">
        <span class="title">工单状态</span>
        <el-select v-model="queryParams.status" placeholder="请选择" clearable style="width: 150px">
          <el-option v-for="item in work_order_status" :key="item.value" :label="item.label" :value="item.value" />
        </el-select>
      </el-col>
      <el-col :span="4" class="flex flex-align-center">
        <span class="title">工单来源</span>
        <el-select v-model="queryParams.orderSource" placeholder="请选择" clearable style="width: 150px">
          <el-option v-for="item in work_order_source" :key="item.value" :label="item.label" :value="item.value" />
        </el-select>
      </el-col>
      <el-col :span="4">
        <el-button type="primary" @click="getList">查询</el-button>
        <el-button type="primary">导出</el-button>
      </el-col>
    </el-row>
    <el-table :data="tableData" style="width: 100%" v-setHeight="{ bottom: 80 }">
      <el-table-column type="index" label="序号" width="50" />
      <el-table-column prop="orderNumber" label="工单编号" />
      <el-table-column prop="registerTime" label="登记时间" />
      <el-table-column prop="orderType" label="工单类型">
        <template #default="{ row }">
          <div>{{ work_order_type.find(item => item.value == row.orderType)?.label || row.orderType }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="orderSource" label="工单来源">
        <template #default="{ row }">
          <div>{{ work_order_source.find(item => item.value == row.orderSource)?.label || row.orderSource }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="message" label="信息" />
      <!-- <el-table-column prop="status" label="工单状态" /> -->
      <el-table-column prop="status" label="工单状态">
        <template #default="{ row }">
          <div>{{ work_order_status.find(item => item.value == row.status)?.label || row.status }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="submitDeptName" label="处理部门" />
      <el-table-column label="操作">
        <template #default="{ row }">
          <div style="display: flex; justify-content: space-evenly">
            <!-- <el-button link type="primary" icon="Edit" @click="addArea(row)">编辑</el-button>
              <el-button link type="danger" icon="Delete" @click="deleteArea(row)">删除</el-button> -->
            <el-button link type="primary" @click="handleDetail(row)">详情</el-button>
          </div>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      class="pagingPosition"
      v-show="total > 0"
      :total="total"
      v-model:page="queryParams.pageNum"
      v-model:limit="queryParams.pageSize"
      @pagination="getList"
    />

    <!-- 详情弹窗 -->
    <!-- 
    :draggable="true"
    @closed="handleClosed"
     -->
    <el-dialog
      v-model="dialogConfig.visible"
      :title="dialogConfig.title"
      width="1500px"
      :append-to-body="true"
      :destroy-on-close="true"
    >
      <orderDia :status="'xiangqing'" :orderId="orderId" @closeDialog="closeDialog"></orderDia>
    </el-dialog>
  </div>
</template>

<script setup name="workOrderQuery">
import orderDia from '../components/orderDia.vue';
import { workOrderPage } from '@/api/order';

const { proxy } = getCurrentInstance();
// 工单类型: work_order_type
// 工单状态: work_order_status
// 工单来源: work_order_source
const { work_order_type, work_order_status, work_order_source } = proxy.useDict(
  'work_order_type',
  'work_order_status',
  'work_order_source'
);
const dateRange = ref([proxy.moment().subtract(7, 'days').format('YYYY-MM-DD'), proxy.moment().format('YYYY-MM-DD')]);

const dialogConfig = ref({
  visible: false,
  // visible: true,
  title: '工单详情',
});
const total = ref(0);
const queryParams = ref({
  registerStartTime: '',
  registerEndTime: '',
  orderType: '',
  status: '',
  orderSource: '',
  pageNum: 1,
  pageSize: 10,
});
const orderId = ref('');
const tableData = ref([]);

const handleDetail = row => {
  orderId.value = row.id;
  dialogConfig.value.visible = true;
};

const closeDialog = () => {
  dialogConfig.value.visible = false;
};

const getList = () => {
  queryParams.value.registerStartTime = dateRange.value[0] + ' 00:00:00';
  queryParams.value.registerEndTime = dateRange.value[1] + ' 23:59:59';
  workOrderPage(queryParams.value).then(res => {
    // console.log('🚀 ~ workOrderList ~ res:', res);
    tableData.value = res.data;
    total.value = res.total;
  });
};

onMounted(() => {
  getList();
});
</script>

<style lang="scss" scoped>
.workOrderQuery {
  position: relative;
  width: 100%;
  height: 100%;
  .chooseBox {
    padding: 0 0 20px 0;
  }
  .chooseType {
    margin-left: 20px;
  }
  .title {
    font-weight: 500;
    font-size: 14px;
    color: #333333;
    margin-right: 10px;
  }
}

.pagingPosition {
  position: absolute;
  right: 20px;
  bottom: 10px;
  // margin-bottom: 10px;
}
</style>