From 89380e6260a75d1d3b94de687ebcc2f50d50659d Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 03 Feb 2026 15:44:33 +0800
Subject: [PATCH] feat:环境变量配置调整

---
 uniapps/work-app/src/subPackages/workDetail/index.vue |  577 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 354 insertions(+), 223 deletions(-)

diff --git a/uniapps/work-app/src/subPackages/workDetail/index.vue b/uniapps/work-app/src/subPackages/workDetail/index.vue
index b10d337..1a5768b 100644
--- a/uniapps/work-app/src/subPackages/workDetail/index.vue
+++ b/uniapps/work-app/src/subPackages/workDetail/index.vue
@@ -1,41 +1,29 @@
 <!-- 工单详情 -->
 <template>
-  <div class="workDetailContainer">
-    <!-- 自定义导航栏 -->
-    <u-navbar
-      title="工单详情"
-      :is-back="true"
-      back-text=""
-      :back-icon-size="40"
-      @left-click="onBackClick"
-    >
-      <template #right>
-        <div class="share-btn" @click="onShareClick">分享</div>
-      </template>
-    </u-navbar>
-    <div class="detailTop">
-      <div class="image-container">
-        <u-swiper
-          class="detailImage"
-          :list="getImageList"
-          mode="round"
-          indicator
-          indicatorMode="dot"
-          indicatorActiveColor="#4C85FF"
-          indicatorInactiveColor="#fff"
-          indicatorPosition="center"
-          height="410rpx"
-          @click="previewImage"
-        ></u-swiper>
-        <!--				<div class="detailTitle">-->
-        <!--					<div class="titleText">-->
-        <!--						<div class="itemName">{{workDetailData.event_name}}</div>-->
-        <!--						<div class="itemTime">{{formatDate(workDetailData.create_time)}}</div>-->
-        <!--					</div>-->
-        <!--				</div>-->
-      </div>
-    </div>
-
+	<div class="workDetailContainer">
+		<!-- 自定义导航栏 -->
+		<u-navbar title="工单详情" :is-back="true" back-text="" :back-icon-size="40" @left-click="onBackClick">
+			<template #right>
+        <div v-if="isH5" class="tapShare-icon"><img src="/static/images/work/share.svg"  @click="onShareClick"/></div>
+				<div v-else class="share-btn" @click="onShareClick"></div>
+			</template>
+		</u-navbar>
+		<div class="detailTop">
+			<div class="image-container">
+				<u-swiper
+					class="detailImage"
+					:list="getImageList"
+					mode="round"
+					indicator
+					indicatorMode="dot"
+					indicatorActiveColor="#4C85FF"
+					indicatorInactiveColor="#fff"
+					indicatorPosition="center"
+					height="410rpx"
+					@click="previewImage"
+				></u-swiper>
+			</div>
+		</div>
     <!-- 工单内容 -->
     <div class="worderContainer">
       <div class="workOrderContent">
@@ -43,45 +31,71 @@
         <div class="workOrderContainer">
           <div class="orderRow">
             <div class="rowTitle">工单编号</div>
-            <div>{{ workDetailData.event_num }}</div>
+            <div>{{ workDetailData.eventNum }}</div>
           </div>
           <div class="orderRow">
             <div class="rowTitle">工单处置人</div>
-            <div>{{ workDetailData.event_num?.slice(0, 2) === 'AI' ? 'AI 小飞' : workDetailData.creator }}</div>
+            <div>{{ workDetailData.disposeUserName }}</div>
           </div>
           <div class="orderRow">
             <div class="rowTitle">处置部门</div>
-            <div>{{ workDetailData.dept_name }}</div>
+            <div>{{ workDetailData.disposeDeptName }}</div>
           </div>
           <div class="orderRow">
             <div class="rowTitle">拍摄时间</div>
-            <div>{{ workDetailData.create_time }}</div>
+            <div>{{ workDetailData.shootTime }}</div>
           </div>
           <div class="orderRow">
             <div class="rowTitle">分发人员</div>
-            <div>{{ workDetailData.remark }}</div>
+            <div>{{ workDetailData.distributeUserName }}</div>
           </div>
           <div class="orderRow">
             <div class="rowTitle">分发部门</div>
-            <div>{{ workDetailData.remark }}</div>
+            <div>{{ workDetailData.distributeDeptName }}</div>
           </div>
 
           <div class="orderRow">
             <div class="rowTitle">分发时间</div>
-            <div>{{ workDetailData.create_time }}</div>
+            <div>{{ workDetailData.distributeTime }}</div>
           </div>
           <div class="orderRow">
             <div class="rowTitle">工单位置</div>
-            <div class="rowAddress" @click="jumpMap(workDetailData)">{{ workDetailData.address }}</div>
+            <div class="rowAddress" @click="jumpMap(workDetailData)">{{ workDetailData.eventLocation }}</div>
           </div>
         </div>
       </div>
     </div>
     <!-- 操作按钮 -->
-    <div class="actionButton">
-      <div class="btngroups">
-        <up-button type="primary" color="#AEAEAE" text="退回"></up-button>
-        <up-button type="primary" color="#1D6FE9" text="确认"></up-button>
+    <div class="actionButton" >
+      <div class="btngroups" v-if="workDetailData.eventStatus !== 3">
+        <up-button type="primary"  color="#AEAEAE" text="退回" @click="rejectTicket"></up-button>
+        <up-button type="primary" color="#1D6FE9" text="确认" @click="confirmTheTicket"></up-button>
+      </div>
+      <div class="btngroups" v-if="workDetailData.eventStatus === 3">
+        <up-button type="primary" color="#1D6FE9" text="已确认" @click="confirmedHandle"></up-button>
+      </div>
+    </div>
+    <!-- 分享弹出层 -->
+    <div v-if="showShareModal" class="share-modal-overlay" @click="onShareModalClose">
+      <div class="share-modal-content" @click.stop>
+        <div class="share-modal-header">
+          <div class="share-modal-title">分享到</div>
+          <div class="share-modal-close" @click="onShareModalClose">×</div>
+        </div>
+        <div class="share-modal-body">
+          <div class="share-item" @click="shareToWechat">
+            <div class="share-icon wechat"></div>
+            <div class="share-name">微信好友</div>
+          </div>
+          <div class="share-item" @click="shareToMoments">
+            <div class="share-icon moments"></div>
+            <div class="share-name">朋友圈</div>
+          </div>
+          <div class="share-item" @click="copyLink">
+            <div class="share-icon link"></div>
+            <div class="share-name">复制链接</div>
+          </div>
+        </div>
       </div>
     </div>
   </div>
@@ -89,67 +103,43 @@
 
 <script setup>
 // import { getShowImg, getSmallImg } from '@/utils/util'
-import { ref, computed } from 'vue'
-import { getList, flowEvent } from '/src/api/work/index.js'
+import {getGddetailedData,backGdApi} from '/src/api/work/index.js'
 import dayjs from 'dayjs'
-
 const formatDate = dateString => {
   return dayjs(dateString).format('MM/DD HH:mm')
 }
 const eventNum = ref('')
 // 工单内容
-const workDetailData = ref({
-  "id": 8474,
-  "wayline_job_id": "51835088-cd94-42f8-b2ec-a9069ced4e7b",
-  "event_name": "测试",
-  "device_sn": "7CTDM5E00B3H61",
-  "status": 3,
-  "photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
-  "file_path": "upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
-  "longitude": "115.85649472222222",
-  "latitude": "28.624301527777778",
-  "create_time": "2026-01-13 16:51:57",
-  "media_type": "PHOTO_TYPE",
-  "event_num": "BHJC20260113002",
-  "ai_types": "道路裂缝",
-  "ai_type_key_list": [
-    "DLLFSB"
-  ],
-  "work_order_type_dict_key": "ZHZLL",
-  "work_order_type": "交通运输与交管​",
-  "create_user": "曾超杰",
-  "update_user": "管理员",
-  "dept_name": "中图智飞(江西省)",
-  "create_user_id": "2009140684346388482",
-  "user_id": "1991745495648227330",
-  "handle_user_id": "1123598821738675201",
-  "address": "江西省南昌市西湖区朝农街道抚生南路1806号南昌台湾健康产业城",
-  "update_photo_url": "https://wrj.shuixiongit.com/minio/cloud-bucket/upload/20260113/f090f03fdc52499473ab9cbfcdc0876d.jpeg",
-  "content": "测试",
-  "work_type": "3",
-  "job_name": "定向拍照2",
-  "is_review": 0,
-  "job_create_time": "2026-01-13 16:51:57"
-},)
+const workDetailData = ref({})
+// 环境判断
+const isH5 = ref(false)
 onLoad(async options => {
-  eventNum.value = options.eventNum
-  // await getDataList(eventNum.value)
+  eventNum.value = options.id
+  await getDataList(options.id)
+  checkEnvironment()
 })
 const getDataList = async val => {
   const params = {
-    current: 1,
-    size: 9999,
-    source: 1,
-    event_name: val,
+    id: val,
   }
-  const res = await getList(params)
-  const response = res.data.data.records
-  workDetailData.value = response[0]
+  const res = await getGddetailedData(params)
+  const response = res.data.data
+  workDetailData.value = response
+}
+// 检查运行环境
+const checkEnvironment = () => {
+  const systemInfo = uni.getSystemInfoSync()
+  // #ifdef APP-PLUS
+  isH5.value = false
+  // #endif
 
-  console.log('详情', response)
+  // #ifdef H5
+  isH5.value = true
+  // #endif
+
+  console.log('当前环境:', isH5.value ? 'H5' : 'App')
 }
 // 图片预览
-
 const previewImage = index => {
   if (getImageList.value.length === 0) return
   const currentIndex = typeof index === 'number' ? index : 0
@@ -161,105 +151,161 @@
 const getImageList = computed(() => {
   const imageArr = []
   const detail = workDetailData.value
-  if (detail.photo_url) {
-    const smallUrl = detail.photo_url
+  if (detail.eventImageUrl) {
+    const smallUrl = detail.eventImageUrl
     imageArr.push(smallUrl)
   }
-  if (detail.update_photo_url) {
-    const smallUrl = detail.update_photo_url
-    imageArr.push(smallUrl)
-  }
+  // if (detail.update_photo_url) {
+  //   const smallUrl = detail.update_photo_url
+  //   imageArr.push(smallUrl)
+  // }
   return imageArr
 })
 // 跳转地图
 const jumpMap = item => {
+  const contactStr = encodeURIComponent(JSON.stringify(item))
   uni.navigateTo({
-    url: `/subPackages/workDetail/mapWork/index?eventNum=${item.event_num}`,
+    url: `/subPackages/workDetail/mapWork/index?eventNum=${contactStr}`,
   })
 }
-
-// 分享按钮点击事件
-const onShareClick = () => {
-  // 检查当前平台是否支持分享功能
-  const platform = uni.getSystemInfoSync().platform
-
-  // H5平台不支持uni.share API
-  if (platform === 'web') {
+// 退回
+const rejectTicket = () => {
+  const id = workDetailData.value.id
+  backGdApi({eventId : id,eventStatus:'0'}).then(res => {
     uni.showToast({
-      title: 'H5平台暂不支持分享功能',
-      icon: 'none'
+      title: '退回成功',
+      icon: 'success',
+      duration: 1500
     })
-    return
-  }
-
-  uni.showActionSheet({
-    itemList: ['分享给微信好友', '分享到朋友圈'],
-    success: res => {
-      // 检查uni.share是否存在
-      if (typeof uni.share !== 'function') {
-        uni.showToast({
-          title: '当前环境不支持分享功能',
-          icon: 'none'
-        })
-        return
-      }
-
-      try {
-        switch (res.tapIndex) {
-          case 0:
-            // 分享给微信好友
-            uni.share({
-              provider: 'weixin',
-              scene: 'WXSceneSession',
-              type: 0,
-              title: '工单详情',
-              summary: workDetailData.value.event_name,
-              href: 'https://example.com/workDetail?eventNum=' + workDetailData.value.event_num,
-              imageUrl: workDetailData.value.photo_url,
-              success: () => {
-                uni.showToast({ title: '分享成功', icon: 'success' })
-              },
-              fail: (err) => {
-                console.log('分享失败', err.errMsg)
-                uni.showToast({
-                  title: err.errMsg,
-                  icon: 'none'
-                })
-              }
-            })
-            break
-          case 1:
-            // 分享到朋友圈
-            uni.share({
-              provider: 'weixin',
-              scene: 'WXSceneTimeline',
-              type: 0,
-              title: workDetailData.value.event_name,
-              summary: '查看工单详情',
-              href: 'https://example.com/workDetail?eventNum=' + workDetailData.value.event_num,
-              imageUrl: workDetailData.value.photo_url,
-              success: () => {
-                uni.showToast({ title: '分享成功', icon: 'success' })
-              },
-              fail: (err) => {
-                console.log('分享失败', err)
-                uni.showToast({
-                  title: '分享失败,请检查配置',
-                  icon: 'none'
-                })
-              }
-            })
-            break
-        }
-      } catch (error) {
-        console.error('分享出错:', error)
-        uni.showToast({
-          title: '分享功能异常',
-          icon: 'none'
-        })
-      }
-    }
+    setTimeout(() => {
+      uni.navigateBack()
+    })
   })
+
+}
+// 确认工单
+const confirmTheTicket = () => {
+  const id = workDetailData.value.id
+  backGdApi({eventId : id,eventStatus:'1'}).then(res => {
+    uni.showToast({
+      title: '确认成功',
+      icon: 'success',
+      duration: 1500
+    })
+    setTimeout(() => {
+      uni.navigateBack()
+    })
+  })
+}
+// 已确认
+const confirmedHandle = () => {
+  uni.navigateBack()
+}
+// 分享模态框状态
+const showShareModal = ref(false)
+
+// 分享按钮点击事件 - 显示分享模态框
+const onShareClick = () => {
+	showShareModal.value = true
+}
+
+// 关闭分享模态框
+const onShareModalClose = () => {
+	showShareModal.value = false
+}
+
+// 微信好友分享
+const shareToWechat = () => {
+	shareToPlatform('weixin', 'WXSceneSession')
+}
+
+// 朋友圈分享
+const shareToMoments = () => {
+	shareToPlatform('weixin', 'WXSceneTimeline')
+}
+
+// 复制链接
+const copyLink = async () => {
+	const shareUrl = 'https://example.com/workDetail?eventNum=' + workDetailData.value.event_num
+	try {
+		await uni.setClipboardData({
+			data: shareUrl,
+		})
+		uni.showToast({
+			title: '链接已复制',
+			icon: 'success',
+		})
+	} catch (error) {
+		console.error('复制失败:', error)
+		uni.showToast({
+			title: '复制失败,请重试',
+			icon: 'none',
+		})
+	}
+	onShareModalClose()
+}
+
+// 通用分享平台函数
+const shareToPlatform = (provider, scene = '') => {
+	// 检查当前平台是否支持分享功能
+	const platform = uni.getSystemInfoSync().platform
+
+	// H5平台不支持uni.share API
+	if (platform === 'web') {
+		uni.showToast({
+			title: 'H5平台暂不支持分享功能',
+			icon: 'none',
+		})
+		onShareModalClose()
+		return
+	}
+
+	// 检查uni.share是否存在
+	if (typeof uni.share !== 'function') {
+		uni.showToast({
+			title: '当前环境不支持分享功能',
+			icon: 'none',
+		})
+		onShareModalClose()
+		return
+	}
+
+	try {
+		const shareConfig = {
+			provider,
+			type: 0,
+			title: workDetailData.value.event_name || '工单详情',
+			summary: '查看工单详情',
+			href: 'https://example.com/workDetail?eventNum=' + workDetailData.value.event_num,
+			imageUrl: workDetailData.value.eventImageUrl,
+			success: () => {
+				uni.showToast({ title: '分享成功', icon: 'success' })
+				onShareModalClose()
+			},
+			fail: err => {
+				console.log('分享失败', err)
+				uni.showToast({
+					title: '分享失败,请重试',
+					icon: 'none',
+				})
+				onShareModalClose()
+			},
+		}
+
+		// 添加场景参数(如果有)
+		if (scene) {
+			shareConfig.scene = scene
+		}
+
+		uni.share(shareConfig)
+	} catch (error) {
+		console.error('分享出错:', error)
+		uni.showToast({
+			title: '分享功能异常',
+			icon: 'none',
+		})
+		onShareModalClose()
+	}
 }
 
 // 返回按钮点击事件
@@ -276,14 +322,37 @@
 </script>
 <style lang="scss" scoped>
 .workDetailContainer {
-  // 分享按钮样式
+  // 添加导航栏高度的padding-top,避免内容被遮挡
+  padding-top: 88rpx;
+  :deep(){
+  .u-navbar__content{
+    background: url("https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_app_assets/images/user/bg.png")  no-repeat !important;
+    background-size: 100%!important;
+    height: 88rpx !important;
+  }
+}  // 分享按钮样式
   .share-btn {
-    color: #1D6FE9;
-    font-size: 14px;
-    padding: 0 10px;
-    line-height: 44px;
+    // #ifdef APP-PLUS
+    width: 40rpx;
+    height: 40rpx;
+    background-image: url('/static/images/work/share.svg');
+    background-size: contain;
+    background-repeat: no-repeat;
+    background-position: center;
+    // #endif
+  }
+  .tapShare-icon {
+    width: 40rpx;
+    height: 40rpx;
+    img {
+      width: 40rpx;
+      height: 40rpx;
+    }
   }
   .detailTop {
+  // #ifdef APP-PLUS
+  padding-top: 60rpx;
+  // #endif
     .image-container {
       position: relative;
       width: 100%;
@@ -312,37 +381,7 @@
           width: 5px !important;
         }
       }
-      .detailTitle {
-        position: absolute;
-        left: 0;
-        top: 0;
-        width: 100%;
-        height: 60rpx;
-        line-height: 60rpx;
-        background: rgba(7, 7, 7, 0.4);
-      }
 
-      .titleText {
-        display: flex;
-        width: 100%;
-        justify-content: space-between;
-        align-items: center;
-        color: #fff;
-
-        .itemName,
-        .itemTime {
-          font-family: Source Han Sans CN, Source Han Sans CN;
-          font-weight: 400;
-          font-size: 28rpx;
-          color: #ffffff;
-        }
-        .itemName {
-          padding-left: 20rpx;
-        }
-        .itemTime {
-          padding-right: 20rpx;
-        }
-      }
     }
   }
 
@@ -384,11 +423,9 @@
           font-weight: 400;
           font-size: 28rpx;
           color: #1d6fe9;
-          //white-space: nowrap;
-          ///* 禁止换行 */
-          //overflow: hidden;
-          //text-overflow: ellipsis;
-          // max-width: 74%;
+          text-decoration: underline;
+          text-align: right;
+
           padding-top: 1px;
           padding-left: 5px;
           padding-right: 2px;
@@ -412,7 +449,7 @@
       align-items: center;
       :deep(.u-button) {
         width: 276rpx !important;
-        height: 100rpx !important;
+        height: 76rpx !important;
         &:last-child {
           margin-left: 30rpx;
         }
@@ -420,4 +457,98 @@
     }
   }
 }
+
+/* 分享弹出层样式 */
+.share-modal-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background-color: rgba(0, 0, 0, 0.6);
+	display: flex;
+	justify-content: flex-end;
+	align-items: flex-end;
+	z-index: 9999;
+}
+
+.share-modal-content {
+	background-color: #fff;
+	border-radius: 20rpx 20rpx 0 0;
+	padding: 30rpx;
+	width: 100%;
+	max-height: 80vh;
+	overflow-y: auto;
+}
+
+.share-modal-header {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	margin-bottom: 30rpx;
+}
+
+.share-modal-title {
+	font-size: 36rpx;
+	font-weight: bold;
+	color: #222324;
+	text-align: center;
+	flex: 1;
+}
+
+.share-modal-close {
+	font-size: 60rpx;
+	color: #999;
+	line-height: 40rpx;
+}
+
+.share-modal-body {
+	display: flex;
+	flex-wrap: wrap;
+	justify-content: space-around;
+	padding-bottom: 30rpx;
+}
+
+.share-modal-footer {
+	display: flex;
+	justify-content: space-around;
+	padding-top: 30rpx;
+	border-top: 1px solid #f0f0f0;
+}
+
+.share-item {
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	margin: 20rpx;
+	width: 120rpx;
+}
+
+.share-icon {
+	width: 90rpx;
+	height: 90rpx;
+	border-radius: 50%;
+	margin-bottom: 15rpx;
+	background-size: contain;
+	background-repeat: no-repeat;
+	background-position: center;
+}
+
+.share-icon.wechat {
+	background-image: url('@/static/images/work/wechat.svg');
+}
+
+.share-icon.moments {
+	background-image: url('@/static/images/work/moments.svg');
+}
+
+
+.share-icon.link {
+	background-image: url('@/static/images/work/link.svg');
+}
+.share-name {
+	font-size: 24rpx;
+	color: #666;
+	margin-top: 10rpx;
+}
 </style>

--
Gitblit v1.9.3