From 2fee66bc6651e1460ea1dbfb7affff2afa066add Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 15 Oct 2025 15:52:11 +0800
Subject: [PATCH] Merge branch 'master' of http://139.196.74.78:10010/r/drone/drone-app
---
src/pages/work/index.vue | 267 +++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 209 insertions(+), 58 deletions(-)
diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue
index 8682ae9..6aa9324 100644
--- a/src/pages/work/index.vue
+++ b/src/pages/work/index.vue
@@ -1,67 +1,218 @@
-<!-- 事件工单 -->
<template>
- <view class="min-h-screen flex flex-col items-center">
- <image
- class="mb-50rpx mt-200rpx h-200rpx w-200rpx"
- src="@/static/images/logo.png"
- width="200rpx"
- height="200rpx"
- />
- <view class="flex justify-center">
- <text class="font-size-36rpx">
- {{ $t("home.intro") }}
- </text>
- </view>
- <view class="mt-100rpx flex gap-30rpx">
- <lang-select />
- <view class="cursor-pointer" @click="toGithub">
- <view class="i-mdi-github text-40rpx" />
- </view>
- </view>
+ <view class="flex flex-col eventTickets">
+ <web-view ref="sWebViewRef" :src="`${viewUrl}`" />
+ <!-- <view class="searchTop">
+ <up-search placeholder="请输入关键字搜索" :animation="true" v-model="listParams.keyword" :show-action="false"></up-search>
+ <div>111</div>
+ </view>
+ <view>
+ <up-tabs :list="tabList" @click="handleClick"></up-tabs>
+ <view class="eventBox">
+ <view class="eventItem" v-for="(item,index) in dataList" :key="index">
+ <img :src="item.photo_url" alt="" @click="detailHandle(item)" />
+ <div class="itemTitle">{{item.event_name}}</div>
+ <div class="itemContent">
+ <div class="itemStatus">
+ <span v-if="item.status === 0" style="background-color: #ff7411;"></span>
+ <span v-else-if="item.status === 2" style="background-color: #ff472f;"></span>
+ <span v-else-if="item.status === 3" style="background-color: #ffc300;"></span>
+ <span v-else-if="item.status === 4" style="background-color: #06d957;"></span>
+ <p>{{formatDate(item.create_time) }}</p>
+ </div>
+ <div>全屏</div>
+ </div>
+ </view>
+ </view>
+ </view> -->
+ </view>
- <!-- #ifdef MP-WEIXIN -->
- <!-- 隐私协议组件 -->
- <agree-privacy
- v-model="showAgreePrivacy"
- :disable-check-privacy="false"
- @agree="handleAgree"
- />
- <!-- #endif -->
- </view>
</template>
<script setup>
-// #ifdef MP-WEIXIN
-import { useShare } from "@/hooks";
-// #endif
+ 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:''
-// #ifdef MP-WEIXIN
-// 分享使用示例
-const { onShareAppMessage, onShareTimeline } = useShare({
- title: "首页",
- path: "pages/tab/map/index",
- imageUrl: "",
-});
-onShareAppMessage();
-onShareTimeline();
-// #endif
+ })
+ 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
-const title = ref();
-title.value = import.meta.env.VITE_APP_TITLE;
+ }else if(tab.key === 'myTickets'){
+ tab.badge.value = userCount || 0
+ }else{
+ tab.badge.value=statusCount[String(tab.status)] || 0
+ }
+ })
+
+ })
+ }
-const showAgreePrivacy = ref(false);
-
-// 同意隐私协议
-function handleAgree() {
- console.log("同意隐私政策");
-}
-
-// 打开github
-function toGithub() {
- if (window?.open) {
- window.open("https://github.com/oyjt/uniapp-vue3-template");
- } else {
- uni.$u.toast("请使用浏览器打开");
- }
-}
+ 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>
\ No newline at end of file
--
Gitblit v1.9.3