| | |
| | | |
| | | <script setup> |
| | | import {getWebViewUrl} from "@/utils/index.js"; |
| | | import { useUserStore } from '@/store/index.js' |
| | | import {getList,getstatusCount} from '/src/api/work/index.js' |
| | | import dayjs from 'dayjs'; |
| | | const userStore = useUserStore() |
| | | const userInfo = userStore.userInfo |
| | | |
| | | const sWebViewRef = ref(null); |
| | | const viewUrl = getWebViewUrl('/work', {}) |
| | | // const viewUrl = `http://192.168.1.157:5173/drone-app-web-view/#/webViewWrapper/work?params=${JSON.stringify(userStore?.userInfo)}`; |
| | | const dataList = ref([]) |
| | | const keyword = ref('') |
| | | const currentTab=ref('myTickets') |
| | | const tabList = ref([{ |
| | | name: '我的工单', |
| | | key: 'myTickets', |
| | | badge: { |
| | | value: 1 |
| | | } |
| | | }, |
| | | { |
| | | name: '全部状态', |
| | | key: 'all', |
| | | badge: { |
| | | value: 2 |
| | | }, |
| | | status: null |
| | | }, |
| | | { |
| | | name: '待审核', |
| | | key: 'pending', |
| | | badge: { |
| | | value: 3 |
| | | }, |
| | | status: '2' |
| | | }, |
| | | { |
| | | name: '待处理', |
| | | key: 'processing', |
| | | badge: { |
| | | value: 4 |
| | | }, |
| | | status: '0' |
| | | }, |
| | | { |
| | | name: '处理中', |
| | | key: 'inProgress', |
| | | badge: { |
| | | value: 5 |
| | | }, |
| | | status: '3' |
| | | }, |
| | | { |
| | | name: '已完成', |
| | | key: 'completed', |
| | | badge: { |
| | | value: 6 |
| | | }, |
| | | status: '4' |
| | | } |
| | | ]) |
| | | const formatDate = (dateString) => { |
| | | return dayjs(dateString).format('MM/DD HH:mm'); |
| | | }; |
| | | const listParams = ref({ |
| | | status: null, |
| | | current: 1, |
| | | size: 9999, |
| | | source: 1, |
| | | department:'', |
| | | keyword:'' |
| | | |
| | | }) |
| | | const getDataList = () => { |
| | | const params = { |
| | | current: 1, |
| | | size: 9999, |
| | | source: 1, |
| | | status:listParams.value.status, |
| | | event_name:listParams.value.keyword, |
| | | user_id:currentTab.value=== 'myTickets' ?userInfo.user_id : undefined |
| | | } |
| | | getList(params).then(res => { |
| | | |
| | | const response = res.data.data.records |
| | | dataList.value = response |
| | | }) |
| | | } |
| | | const getstatusCountData=()=>{ |
| | | getstatusCount().then(res=>{ |
| | | const response = res.data.data |
| | | const { statusCount, totalCount, userCount } = response |
| | | tabList.value.forEach(tab=>{ |
| | | |
| | | if(tab.key === 'all'){ |
| | | tab.badge.value = totalCount || 0 |
| | | |
| | | }else if(tab.key === 'myTickets'){ |
| | | tab.badge.value = userCount || 0 |
| | | }else{ |
| | | tab.badge.value=statusCount[String(tab.status)] || 0 |
| | | } |
| | | }) |
| | | |
| | | }) |
| | | } |
| | | |
| | | const handleClick = (item) => { |
| | | currentTab.value = item.key |
| | | listParams.value.status = item.status |
| | | getDataList() |
| | | } |
| | | const detailHandle = (val) => { |
| | | uni.navigateTo({ |
| | | url: `/subPackages/workDetail/index?eventNum=${val.event_num}`, |
| | | }) |
| | | } |
| | | onShow(() => { |
| | | getDataList() |
| | | getstatusCountData() |
| | | }) |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .eventTickets { |
| | | padding: 0 10px; |
| | | |
| | | .searchTop { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | :deep(.u-badge) { |
| | | background-color: #1d6fe9 !important; |
| | | } |
| | | |
| | | .eventBox { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | gap: 10px; |
| | | padding: 10px 0; |
| | | background-color: #ebeff2; |
| | | |
| | | .eventItem { |
| | | width: calc(50% - 5px); |
| | | background-color: #fff; |
| | | border-radius: 5px; |
| | | overflow: hidden; |
| | | |
| | | img { |
| | | width: 100%; |
| | | height: 100px; |
| | | border-radius: 5px; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .itemTitle { |
| | | padding: 0 5px; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .itemContent { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 5px; |
| | | |
| | | .itemStatus { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | span { |
| | | display: inline-block; |
| | | width: 10px; |
| | | height: 10px; |
| | | border-radius: 50%; |
| | | margin-right: 5px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |