From ebd0ec4f51288042b6fc5bf714b1febbb63cfacc Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Fri, 09 Jan 2026 18:03:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 uniapps/work-app/src/pages/work/index.vue |  199 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 195 insertions(+), 4 deletions(-)

diff --git a/uniapps/work-app/src/pages/work/index.vue b/uniapps/work-app/src/pages/work/index.vue
index 8931541..7b2d2ab 100644
--- a/uniapps/work-app/src/pages/work/index.vue
+++ b/uniapps/work-app/src/pages/work/index.vue
@@ -1,16 +1,207 @@
 <template>
-  <view class="eventTickets">
-    工单
-  </view>
+  <div class="eventTickets" :style="{ paddingTop: topMargin + 'px' }">
+
+    <div class="searchTop">
+      <up-search placeholder="请输入关键字搜索"  :animation="true"  v-model="listParams.keyword" :show-action="false"></up-search>
+    </div>
+    <div class="listBox">
+      <div class="tabs-container">
+        <up-tabs :list="tabList" @click="handleClick"></up-tabs>
+      </div>
+
+      <div class="eventBox">
+        <div class="eventItem"  v-for="(item,index) in dataList" :key="index">
+          <img :src="item.photo_url" alt="" @click="detailHandle(item)" />
+          <div class="informationDisplay">
+            <div class="itemTitle">{{item.event_name}}</div>
+            <div class="itemContent">{{formatDate(item.create_time) }}</div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+  </div>
+
 </template>
 
 <script setup>
 
+import { useUserStore } from '@/store/index.js'
+import {getList,getstatusCount} from '/src/api/work/index.js'
+import dayjs from 'dayjs';
+import { getStatusBarHeight } from '@/utils/common';
+const userStore = useUserStore()
+const userInfo = userStore.userInfo
+const dataList = ref([])
+const currentTab=ref('all')
+const tabList = ref([
+  {
+    name: '全部工单',
+    key: 'all',
+    badge: {
+      value: 2
+    },
+    status: null
+  },
+  {
+    name: '我的工单',
+    key: 'myTickets',
+    badge: {
+      value: 1
+    }
+  },
+
+
+])
+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}`,
+  })
+}
+const topMargin = getStatusBarHeight()
+onShow(() => {
+  getDataList()
+
+})
 </script>
 
 <style scoped lang="scss">
 .eventTickets {
-  width: 100%;
+  padding: 0 20rpx;
+  display: flex;
+  flex-direction: column;
   height: 100%;
+  box-sizing: border-box;
+  .searchTop {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding-right: 24rpx;
+    width: 100%;
+    height: 108rpx;
+  }
+  :deep(){
+
+    .u-tabs__wrapper__nav__line{
+      width: 80rpx !important;
+      background: #1D6FE9 !important;
+    }
+    .u-badge {
+      background-color: #1d6fe9 !important;
+    }
+  }
+
+
+  .tabs-container{
+    display: flex;
+    justify-content: center;
+    height: 98rpx;
+  }
+  .listBox {
+    position: relative;
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+  }
+  .eventBox {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 20rpx;
+    padding: 20rpx 0;
+    overflow-y: auto;
+    height: 0;
+    flex-grow: 1;
+    align-content: flex-start;
+
+    .eventItem {
+      width: calc(50% - 10rpx);
+      background-color: #fff;
+      border-radius: 12rpx;
+      overflow: hidden;
+
+      img {
+        width: 341rpx;
+        height: 196rpx;
+        border-radius: 12rpx;
+        overflow: hidden;
+      }
+      .informationDisplay{
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding: 10rpx 20rpx 10rpx 12rpx;
+        .itemTitle {
+          width: 144rpx;
+          font-family: Source Han Sans CN, Source Han Sans CN;
+          font-weight: 500;
+          font-size: 28rpx;
+          color: #000000;
+          white-space: nowrap;
+          overflow: hidden;
+          text-overflow: ellipsis;
+        }
+
+        .itemContent {
+          font-family: Source Han Sans CN, Source Han Sans CN;
+          font-weight: 400;
+          font-size: 24rpx;
+          color: rgba(0,0,0,0.5);
+
+        }
+      }
+
+    }
+  }
 }
 </style>

--
Gitblit v1.9.3