钱新宇 пре 1 месец
родитељ
комит
a339389485

+ 32 - 90
traceCodePackages/traceabilityReport/pages/ganmaoling/history/index.vue

@@ -3,31 +3,17 @@
     <view class="header-section">
       <view class="header-title">历史记录</view>
       <view class="filter-tabs">
-        <view
-          class="tab-item"
-          v-for="(tab, index) in timeFilters"
-          :key="index"
-          :class="{ active: currentFilter === tab.value }"
-          @click="switchFilter(tab.value)"
-        >
+        <view class="tab-item" v-for="(tab, index) in timeFilters" :key="index"
+          :class="{ active: currentFilter === tab.value }" @click="switchFilter(tab.value)">
           {{ tab.label }}
         </view>
       </view>
     </view>
 
-    <scroll-view
-      class="list-scroll"
-      scroll-y="true"
-      refresher-enabled
-      :refresher-triggered="isRefreshing"
-      @refresherrefresh="onRefresh"
-    >
+    <scroll-view class="list-scroll" scroll-y="true" refresher-enabled :refresher-triggered="isRefreshing"
+      @refresherrefresh="onRefresh">
       <view class="list-container">
-        <view
-          class="date-group"
-          v-for="groupItem in groupedRows"
-          :key="groupItem.date"
-        >
+        <view class="date-group" v-for="groupItem in groupedRows" :key="groupItem.date">
           <view class="date-group-card">
             <view class="group-left">
               <!-- <text class="calendar-icon">📅</text> -->
@@ -38,27 +24,17 @@
             </button>
           </view>
 
-          <view
-            class="card-item"
-            v-for="(item, index) in groupItem.list"
-            :key="index"
-            @click="toDetail(item)"
-          >
+          <view class="card-item" v-for="(item, index) in groupItem.list" :key="index" @click="toDetail(item)">
             <view class="card-header">
               <view class="header-left">
                 <text class="index-num">{{ index + 1 }}</text>
                 <text class="company-name">{{ item.customerName }}</text>
-                <text
-                  class="level-tag"
-                  :class="getLevelClass(item.customerLevel)"
-                >
+                <text class="level-tag" :class="getLevelClass(item.customerLevel)">
                   {{ item.customerLevel }}
                 </text>
               </view>
               <view class="header-right">
-                <text class="alert-count" v-if="item.totalWarningAmount > 0"
-                  >{{ item.totalWarningAmount }}次预警</text
-                >
+                <text class="alert-count" v-if="item.totalWarningAmount > 0">{{ item.totalWarningAmount }}次预警</text>
               </view>
             </view>
 
@@ -82,10 +58,7 @@
         </view>
 
         <view v-if="loading" class="loading-more">
-          <image
-            class="loading-icon"
-            src="../../../../static/images/loading.png"
-          />
+          <image class="loading-icon" src="../../../../static/images/loading.png" />
           <text class="loading-text">加载中...</text>
         </view>
 
@@ -96,63 +69,32 @@
     </scroll-view>
 
     <!-- 蒙层 -->
-    <view
-      class="report-export-create-modal-mask"
-      v-if="emailModalOpen"
-      @click="closeEmailModal"
-      @touchmove.stop.prevent
-    ></view>
+    <view class="report-export-create-modal-mask" v-if="emailModalOpen" @click="closeEmailModal"
+      @touchmove.stop.prevent></view>
 
     <!-- 邮箱导出弹窗 -->
-    <view
-      class="report-export-create-modal report-export-create-email-modal"
-      :class="{ 'report-export-create-modal--open': emailModalOpen }"
-      v-if="emailModalOpen"
-    >
+    <view class="report-export-create-modal report-export-create-email-modal"
+      :class="{ 'report-export-create-modal--open': emailModalOpen }" v-if="emailModalOpen">
       <view class="report-export-create-modal-title">
         <text>发送至邮箱</text>
-        <view
-          class="report-export-create-modal-close"
-          @click.stop="closeEmailModal"
-          >×</view
-        >
+        <view class="report-export-create-modal-close" @click.stop="closeEmailModal">×</view>
       </view>
-      <view
-        class="report-export-create-modal-body"
-      >
+      <view class="report-export-create-modal-body">
         <view class="export-date-tip">导出日期:{{ currentExportDate }}</view>
-        <up-input
-          v-model="emailForm.email"
-          border="none"
-          :customStyle="{
-            backgroundColor: '#ebf3fb',
-            height: '80rpx',
-            paddingLeft: '20rpx',
-          }"
-          placeholder="请填写邮箱"
-          @input="emailError = false"
-        >
+        <up-input v-model="emailForm.email" border="none" :customStyle="{
+          backgroundColor: '#ebf3fb',
+          height: '80rpx',
+          paddingLeft: '20rpx',
+        }" placeholder="请填写邮箱" @input="emailError = false">
           <template #suffix>
             <view style="margin-right: 20rpx; color: #666">@999.com.cn</view>
           </template>
         </up-input>
-        <text v-if="emailError" class="report-export-error-text"
-          >请输入邮箱</text
-        >
+        <text v-if="emailError" class="report-export-error-text">请输入邮箱</text>
       </view>
-      <view
-        class="report-export-create-modal-footer"
-      >
-        <view
-          class="report-export-create-modal-btn cancel-btn"
-          @click.stop="closeEmailModal"
-          >取消</view
-        >
-        <view
-          class="report-export-create-modal-btn confirm-btn"
-          @click.stop="handleSendEmail"
-          >发送</view
-        >
+      <view class="report-export-create-modal-footer">
+        <view class="report-export-create-modal-btn cancel-btn" @click.stop="closeEmailModal">取消</view>
+        <view class="report-export-create-modal-btn confirm-btn" @click.stop="handleSendEmail">发送</view>
       </view>
     </view>
   </view>
@@ -231,15 +173,13 @@ export default {
       if (this.loading) return;
       this.loading = true;
 
-      const params = {
-        path: "traceabilityReport/pages/ganmaoling/history/index.vue",
-      };
 
+      let url = '/report/ganmaoling/list?days=-1';
       if (this.currentFilter !== "all") {
-        params.days = this.currentFilter;
+        url = `/report/ganmaoling/list?days=${this.currentFilter}`
       }
 
-      request(`/report/ganmaoling/list`, params,"get").then((res) => {
+      request(url, {}, "get").then((res) => {
         if (res.code == 200) {
           this.rows = res.data || [];
         }
@@ -283,13 +223,13 @@ export default {
 
       // 根据实际接口文档,如果支持按日期导出,则传日期
       request(
-        `/report/ganmaoling/list`,
+        `/report/ganmaoling/sendemail`,
         {
           updatedTime: this.currentExportDate,
-          email: this.emailForm.email + "@999.com.cn",
+          emailAddress: '635509855@qq.com',//this.emailForm.email + "@999.com.cn",
           path: "traceabilityReport/pages/ganmaoling/history/index.vue",
         },
-        "get",
+        "post",
       ).then((res) => {
         uni.hideLoading();
         if (res.code == 200) {
@@ -364,6 +304,7 @@ export default {
   background: linear-gradient(135deg, #fff7e6, #ffe7ba);
   color: #d46b08;
 }
+
 .history-page {
   display: flex;
   flex-direction: column;
@@ -564,6 +505,7 @@ export default {
   from {
     transform: rotate(0deg);
   }
+
   to {
     transform: rotate(360deg);
   }

+ 53 - 87
traceCodePackages/traceabilityReport/pages/ganmaoling/index.vue

@@ -8,12 +8,8 @@
       <view class="header-content">
         <view class="title-group">
           <text class="main-title">感冒灵大批量跨区域客户</text>
-          <text class="sub-title"
-            >订单维度:单笔订单实际盒数 {{ ">" }} 20000盒</text
-          >
-          <text class="sub-title"
-            >地域维度:出库企业所在省份 ≠ 入库企业所在省份</text
-          >
+          <text class="sub-title">订单维度:单笔订单实际盒数 {{ ">" }} 20000盒</text>
+          <text class="sub-title">地域维度:出库企业所在省份 ≠ 入库企业所在省份</text>
         </view>
         <view class="stat-box">
           <text class="stat-num">{{ totalCount }}</text>
@@ -24,41 +20,26 @@
       <view class="header-toolbar">
         <view class="update-tip">
           <!-- <text class="tip-icon">🕒</text> -->
-          <text
-            >更新:{{
-              formatDate(
-                new Date().setDate(new Date().getDate() - 1),
-                "YYYY-MM-DD",
-              ) || "--"
-            }}</text
-          >
+          <text>更新:{{
+            formatDate(
+              new Date().setDate(new Date().getDate() - 1),
+              "YYYY-MM-DD",
+            ) || "--"
+          }}</text>
         </view>
       </view>
     </view>
 
     <!-- 列表区域 -->
-    <scroll-view
-      class="list-scroll"
-      scroll-y="true"
-      refresher-enabled
-      :refresher-triggered="isRefreshing"
-      @refresherrefresh="onRefresh"
-    >
+    <scroll-view class="list-scroll" scroll-y="true" refresher-enabled :refresher-triggered="isRefreshing"
+      @refresherrefresh="onRefresh">
       <view class="list-container">
-        <view
-          class="card-item"
-          v-for="(item, index) in rows"
-          :key="index"
-          @click="toDetail(item)"
-        >
+        <view class="card-item" v-for="(item, index) in rows" :key="index" @click="toDetail(item)">
           <view class="card-header">
             <view class="header-left">
               <text class="index-num">{{ index + 1 }}</text>
               <text class="company-name">{{ item.customerName }}</text>
-              <text
-                class="level-tag"
-                :class="getLevelClass(item.customerLevel)"
-              >
+              <text class="level-tag" :class="getLevelClass(item.customerLevel)">
                 {{ item.customerLevel }}
               </text>
             </view>
@@ -102,62 +83,31 @@
     </view>
 
     <!-- 蒙层 -->
-    <view
-      class="report-export-create-modal-mask"
-      v-if="emailModalOpen"
-      @click="closeEmailModal"
-      @touchmove.stop.prevent
-    ></view>
+    <view class="report-export-create-modal-mask" v-if="emailModalOpen" @click="closeEmailModal"
+      @touchmove.stop.prevent></view>
 
     <!-- 邮箱导出弹窗 -->
-    <view
-      class="report-export-create-modal report-export-create-email-modal"
-      :class="{ 'report-export-create-modal--open': emailModalOpen }"
-      v-if="emailModalOpen"
-    >
+    <view class="report-export-create-modal report-export-create-email-modal"
+      :class="{ 'report-export-create-modal--open': emailModalOpen }" v-if="emailModalOpen">
       <view class="report-export-create-modal-title">
         <text>发送至邮箱</text>
-        <view
-          class="report-export-create-modal-close"
-          @click.stop="closeEmailModal"
-          >×</view
-        >
+        <view class="report-export-create-modal-close" @click.stop="closeEmailModal">×</view>
       </view>
-      <view
-        class="report-export-create-modal-body"
-      >
-        <up-input
-          v-model="emailForm.email"
-          border="none"
-          :customStyle="{
-            backgroundColor: '#ebf3fb',
-            height: '80rpx',
-            paddingLeft: '20rpx',
-          }"
-          placeholder="请填写邮箱"
-          @input="emailError = false"
-        >
+      <view class="report-export-create-modal-body">
+        <up-input v-model="emailForm.email" border="none" :customStyle="{
+          backgroundColor: '#ebf3fb',
+          height: '80rpx',
+          paddingLeft: '20rpx',
+        }" placeholder="请填写邮箱" @input="emailError = false">
           <template #suffix>
             <view style="margin-right: 20rpx; color: #666">@999.com.cn</view>
           </template>
         </up-input>
-        <text v-if="emailError" class="report-export-error-text"
-          >请输入邮箱</text
-        >
+        <text v-if="emailError" class="report-export-error-text">请输入邮箱</text>
       </view>
-      <view
-        class="report-export-create-modal-footer"
-      >
-        <view
-          class="report-export-create-modal-btn cancel-btn"
-          @click.stop="closeEmailModal"
-          >取消</view
-        >
-        <view
-          class="report-export-create-modal-btn confirm-btn"
-          @click.stop="handleSendEmail"
-          >发送</view
-        >
+      <view class="report-export-create-modal-footer">
+        <view class="report-export-create-modal-btn cancel-btn" @click.stop="closeEmailModal">取消</view>
+        <view class="report-export-create-modal-btn confirm-btn" @click.stop="handleSendEmail">发送</view>
       </view>
     </view>
   </view>
@@ -187,6 +137,8 @@ export default {
   },
   created() {
     this.resetFetch();
+    const userEmail = uni.getStorageSync('traceCode_useremail')
+    this.emailForm.email = userEmail
   },
   methods: {
     formatDate,
@@ -203,9 +155,8 @@ export default {
       this.loading = true;
 
       request(
-        `/report/ganmaoling/list`,
+        `/report/ganmaoling/list?days=1`,
         {
-          days: 1,
           path: "traceabilityReport/pages/ganmaoling/index.vue",
         },
         "get",
@@ -236,6 +187,13 @@ export default {
     },
 
     handleExport() {
+      if (this.rows.length == 0) {
+        uni.showToast({
+          title: '暂无数据...',
+          icon: 'none'
+        })
+        return
+      }
       this.emailModalOpen = true;
       this.emailForm.email = "";
       this.emailError = false;
@@ -252,14 +210,18 @@ export default {
       }
       uni.showLoading({ title: "发送中..." });
 
+      const yesterday = new Date();
+      yesterday.setDate(yesterday.getDate() - 1);
+      const dateStr = this.formatDate(yesterday, "YYYY-MM-DD");
+
       request(
-        `/report/ganmaoling/list`,
+        `/report/ganmaoling/sendemail`,
         {
-          days: 1,
-          email: this.emailForm.email + "@999.com.cn",
+          updatedTime: dateStr,
+          emailAddress: this.emailForm.email + "@999.com.cn",
           path: "traceabilityReport/pages/ganmaoling/index.vue",
         },
-        "get",
+        "post",
       ).then((res) => {
         uni.hideLoading();
         if (res.code == 200) {
@@ -302,7 +264,8 @@ export default {
   top: 0;
   left: 0;
   width: 100%;
-  height: 320rpx; /* Fixed height for background */
+  height: 320rpx;
+  /* Fixed height for background */
   background: linear-gradient(135deg, #1890ff 0%, #096dd9 100%);
   border-bottom-left-radius: 40rpx;
   border-bottom-right-radius: 40rpx;
@@ -314,7 +277,8 @@ export default {
 .header-section {
   padding: 40rpx 40rpx 80rpx;
   position: relative;
-  z-index: 3; /* Above List */
+  z-index: 3;
+  /* Above List */
   color: #fff;
   /* Transparent background to allow overlap effect */
 }
@@ -396,9 +360,11 @@ export default {
   height: 0;
   padding: 0 24rpx;
   box-sizing: border-box;
-  margin-top: -50rpx; /* Overlap effect */
+  margin-top: -50rpx;
+  /* Overlap effect */
   position: relative;
-  z-index: 2; /* Between bg and header content */
+  z-index: 2;
+  /* Between bg and header content */
 }
 
 .list-container {