Newer
Older
dxCard-admin / src / views / dashboard / Analysis / homePage / IndexTask.vue
YFJ on 23 Sep 10 KB 项目推送
<template>
  <div class="index-container-ty">
    <a-row type="flex" justify="start" :gutter="3">
      <a-col :sm="24" :lg="12">
        <a-card>
          <template #title>
            <div class="index-md-title">
              <img src="../../../../assets/images/daiban.png" />
              我的待办【{{ dataSource1.length }}】
            </div>
          </template>

          <template v-if="dataSource1 && dataSource1.length > 0" #extra>
            <a @click="goPage"
              >更多
              <Icon icon="ant-design:double-right-outlined" />
            </a>
          </template>

          <a-table
            :class="'my-index-table tytable1'"
            ref="table1"
            size="small"
            rowKey="id"
            :columns="columns"
            :dataSource="dataSource1"
            :pagination="false"
          >
            <template #ellipsisText="{ text }">
              <JEllipsis :value="text" :length="textMaxLength"></JEllipsis>
            </template>

            <template #dayWarnning="{ text, record }">
              <BellTwoTone style="font-size: 22px" :twoToneColor="getTipColor(record)" />
            </template>

            <template #action="{ text, record }">
              <a @click="handleData">办理</a>
            </template>
          </a-table>
        </a-card>
      </a-col>

      <a-col :sm="24" :lg="12">
        <a-card>
          <template #title>
            <div class="index-md-title">
              <img src="../../../../assets/images/zaiban.png" />
              我的在办【{{ dataSource2.length }}】
            </div>
          </template>

          <template v-if="dataSource2 && dataSource2.length > 0" #extra>
            <a @click="goPage"
              >更多
              <Icon icon="ant-design:double-right-outlined" />
            </a>
          </template>

          <a-table
            :class="'my-index-table tytable2'"
            ref="table1"
            size="small"
            rowKey="id"
            :columns="columns"
            :dataSource="dataSource2"
            :pagination="false"
          >
            <template #ellipsisText="{ text }">
              <JEllipsis :value="text" :length="textMaxLength"></JEllipsis>
            </template>

            <template #dayWarnning="{ text, record }">
              <BellTwoTone style="font-size: 22px" :twoToneColor="getTipColor(record)" />
            </template>

            <template #action="{ text, record }">
              <a @click="handleData">办理</a>
            </template>
          </a-table>
        </a-card>
      </a-col>

      <a-col :span="24">
        <div style="height: 5px"></div>
      </a-col>

      <a-col :sm="24" :lg="12">
        <a-card>
          <template #title>
            <div class="index-md-title">
              <img src="../../../../assets/images/guaz.png" />
              我的挂账【{{ dataSource4.length }}】
            </div>
          </template>

          <a-table
            :class="'my-index-table tytable4'"
            ref="table1"
            size="small"
            rowKey="id"
            :columns="columns"
            :dataSource="dataSource4"
            :pagination="false"
          >
            <template #ellipsisText="{ text }">
              <JEllipsis :value="text" :length="textMaxLength"></JEllipsis>
            </template>

            <template #dayWarnning="{ text, record }">
              <BellTwoTone style="font-size: 22px" :twoToneColor="getTipColor(record)" />
            </template>

            <template #action="{ text, record }">
              <a @click="handleData">办理</a>
            </template>
          </a-table>
        </a-card>
      </a-col>

      <a-col :sm="24" :lg="12">
        <a-card>
          <template #title>
            <div class="index-md-title">
              <img src="../../../../assets/images/duban.png" />
              我的督办【{{ dataSource3.length }}】
            </div>
          </template>

          <a-table
            :class="'my-index-table tytable3'"
            ref="table1"
            size="small"
            rowKey="id"
            :columns="columns"
            :dataSource="dataSource3"
            :pagination="false"
          >
            <template #ellipsisText="{ text }">
              <JEllipsis :value="text" :length="textMaxLength"></JEllipsis>
            </template>

            <template #dayWarnning="{ text, record }">
              <BellTwoTone style="font-size: 22px" :twoToneColor="getTipColor(record)" />
            </template>

            <template #action="{ text, record }">
              <a @click="handleData">办理</a>
            </template>
          </a-table>
        </a-card>
      </a-col>
    </a-row>
  </div>
</template>

<script lang="ts" setup>
  import { ref } from 'vue';
  import noDataPng from '/@/assets/images/nodata.png';
  import { useMessage } from '/@/hooks/web/useMessage';
  import JEllipsis from '/@/components/Form/src/jeecg/components/JEllipsis.vue';
  import { BulbTwoTone, BellTwoTone } from '@ant-design/icons-vue';

  const tempSs1 = [
    {
      id: '001',
      orderNo: '电[1]1267102',
      orderTitle: '药品出问题了',
      restDay: 1,
    },
    {
      id: '002',
      orderNo: '电[4]5967102',
      orderTitle: '吃了xxx医院的药,病情越来越严重',
      restDay: 0,
    },
    {
      id: '003',
      orderNo: '电[3]5988987',
      orderTitle: '今天去超市买鸡蛋,鸡蛋都是坏的',
      restDay: 7,
    },
    {
      id: '004',
      orderNo: '电[2]5213491',
      orderTitle: 'xx宝实体店高价售卖xx',
      restDay: 5,
    },
    {
      id: '005',
      orderNo: '电[1]1603491',
      orderTitle: '以红利相诱,答应退保后扣一年费用',
      restDay: 0,
    },
  ];

  const tempSs2 = [
    {
      id: '001',
      orderTitle: '我要投诉这个大超市',
      orderNo: '电[1]10299456',
      restDay: 6,
    },
    {
      id: '002',
      orderTitle: 'xxx医院乱开药方,售卖假药',
      orderNo: '电[2]20235691',
      restDay: 0,
    },
    {
      id: '003',
      orderTitle: '我想问问这家店是干啥的',
      orderNo: '电[3]495867322',
      restDay: 7,
    },
    {
      id: '004',
      orderTitle: '我要举报朝阳区奥森公园酒店',
      orderNo: '电[2]1193849',
      restDay: 3,
    },
    {
      id: '005',
      orderTitle: '我今天吃饭吃到一个石头子',
      orderNo: '电[4]56782344',
      restDay: 9,
    },
  ];

  //4-7天
  const tip_green = 'rgba(0, 255, 0, 1)';
  //1-3天
  const tip_yellow = 'rgba(255, 255, 0, 1)';
  //超期
  const tip_red = 'rgba(255, 0, 0, 1)';

  const textMaxLength = 8;
  const $message = useMessage();

  const dataSource1 = ref([]);
  const dataSource2 = ref([]);
  const dataSource3 = ref([]);
  const dataSource4 = ref([]);
  const columns = [
    {
      title: '',
      dataIndex: '',
      key: 'rowIndex',
      width: 50,
      fixed: 'left',
      align: 'center',
      slots: { customRender: 'dayWarnning' },
    },
    {
      title: '剩余天数',
      align: 'center',
      dataIndex: 'restDay',
      width: 80,
    },
    {
      title: '工单标题',
      align: 'center',
      dataIndex: 'orderTitle',
      slots: { customRender: 'ellipsisText' },
    },
    {
      title: '工单编号',
      align: 'center',
      dataIndex: 'orderNo',
    },
    {
      title: '操作',
      dataIndex: 'action',
      align: 'center',
      slots: { customRender: 'action' },
    },
  ];

  function getTipColor(rd) {
    let num = rd.restDay;
    if (num <= 0) {
      return tip_red;
    } else if (num >= 1 && num < 4) {
      return tip_yellow;
    } else if (num >= 4) {
      return tip_green;
    }
  }

  function mock() {
    dataSource1.value = tempSs1;
    dataSource2.value = tempSs2;
    dataSource3.value = tempSs1;
    dataSource4.value = tempSs2;
    ifNullDataSource(dataSource4, '.tytable4');
  }

  function ifNullDataSource(ds, tb) {
    if (!ds || ds.length == 0) {
      var tmp = document.createElement('img');
      tmp.src = noDataPng;
      tmp.width = 300;
      let tbclass = `${tb} .ant-table-placeholder`;
      document.querySelector(tbclass).innerHTML = '';
      document.querySelector(tbclass).appendChild(tmp);
    }
  }

  function handleData() {
    $message.createMessage.success('办理完成');
  }

  function goPage() {
    $message.createMessage.success('请根据具体业务跳转页面');
  }

  mock();
</script>

<style scoped lang="less">
  .my-index-table {
    height: 270px;

    table {
      font-size: 14px !important;
    }
  }

  .index-container-ty {
    margin: 12px 12px 0;

    :deep(.ant-card-body) {
      padding: 10px 12px 0 12px;
    }

    :deep(.ant-card-head) {
      line-height: 24px;
      min-height: 24px;
      background: #7196fb !important;

      .ant-card-head-title {
        padding-top: 6px;
        padding-bottom: 6px;
      }

      .ant-card-extra {
        padding: 0;

        a {
          color: #fff;
        }

        a:hover {
          color: #152ede;
        }
      }
    }

    :deep(.ant-table-footer) {
      text-align: right;
      padding: 6px 12px 6px 6px;
      background: #fff;
      border-top: 2px solid #f7f1f1;
    }

    .index-md-title {
      position: relative;
      width: 100%;
      color: #fff;
      font-size: 21px;
      font-family: cursive;
      padding-left: 25px;

      img {
        position: absolute;
        height: 25px;
        left: 0;
      }
    }

    :deep(.ant-table-thead > tr > th),
    :deep(.ant-table-tbody > tr > td) {
      border-bottom: 1px solid #90aeff;
    }

    :deep(
      .ant-table-small
      > .ant-table-content
      > .ant-table-fixed-left
      > .ant-table-body-outer
      > .ant-table-body-inner
      > table
      > .ant-table-thead
      > tr
      > th),
    :deep(
      .ant-table-small
      > .ant-table-content
      > .ant-table-fixed-right
      > .ant-table-body-outer
      > .ant-table-body-inner
      > table
      > .ant-table-thead
      > tr
      > th) {
      border-bottom: 1px solid #90aeff;
    }

    :deep(.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th) {
      border-bottom: 1px solid #90aeff;
    }

    :deep(.ant-table-small) {
      border: 1px solid #90aeff;
    }

    :deep(.ant-table-placeholder) {
      padding: 0;
      height: 215px;
    }
  }
</style>