From 5a80a60227011398c8fe306d4adcdd09297d21e2 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 23 十月 2025 18:04:46 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/send_coupon' into send_coupon

---
 manager/src/api/order.js                          |    8 
 manager/src/views/member/list/index.vue           |    8 
 manager/src/views/order/order/orderList.vue       |   15 
 seller/src/views/activity/store-prize-proof.vue   |   86 +-
 manager/src/views/userAction/userActionRecord.vue |  788 +++++++++++++++++++++++++
 seller/src/main.js                                |    1 
 manager/src/views/userAction/userAction.vue       |   29 
 manager/src/api/userAction.js                     |    7 
 manager/src/views/activity-prize/prize-store.vue  |    2 
 manager/src/views/order/order/storeOrderList.vue  |  878 ++++++++++++++++++++++++++++
 10 files changed, 1,762 insertions(+), 60 deletions(-)

diff --git a/manager/src/api/order.js b/manager/src/api/order.js
index 8f77fee..d1b78d7 100644
--- a/manager/src/api/order.js
+++ b/manager/src/api/order.js
@@ -84,6 +84,10 @@
 export const getOrderList = (params) => {
   return getRequest(`/order/order`, params)
 }
+//  鏌ヨ搴楅摵鍒嗕韩璁㈠崟鍒楄〃
+export const getShareOrderList = (params) => {
+  return getRequest(`/order/order/share`, params)
+}
 export const getStoreSelect = ()=>{
   return getRequest('/order/order/storeSelect')
 }
@@ -92,6 +96,10 @@
 export const exportOrder = (params) => {
   return getRequest(`/order/order/queryExportOrder`, params,'blob')
 }
+//  瀵煎嚭鍒嗕韩鍟嗘埛璁㈠崟鍒楄〃
+export const queryShareExportOrder = (params) => {
+  return getRequest(`/order/order/queryShareExportOrder`, params,'blob')
+}
 
 //  璁㈠崟浠樻
 export const orderPay = (sn) => {
diff --git a/manager/src/api/userAction.js b/manager/src/api/userAction.js
index f1103bc..08b8323 100644
--- a/manager/src/api/userAction.js
+++ b/manager/src/api/userAction.js
@@ -18,4 +18,11 @@
     method: "GET",
     params: params
   })
+}//鑾峰彇鐢ㄦ埛鍒嗕韩椤甸潰
+export const userStayListRecord = (params) =>{
+  return service({
+    url: "/lmk/action-record/userStayListRecord",
+    method: "GET",
+    params: params
+  })
 }
diff --git a/manager/src/views/activity-prize/prize-store.vue b/manager/src/views/activity-prize/prize-store.vue
index e6f31c3..5f3ce34 100644
--- a/manager/src/views/activity-prize/prize-store.vue
+++ b/manager/src/views/activity-prize/prize-store.vue
@@ -569,7 +569,7 @@
       this.codeLoading = true;
 
       this.QRCodeUrl = this.codeUrl + "?id="+ row.id;
-
+       console.log('--------------->',this.QRCodeUrl);
     },
     detail(row){
       this.showPrizeClaim = true;
diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue
index b886269..49fa45c 100644
--- a/manager/src/views/member/list/index.vue
+++ b/manager/src/views/member/list/index.vue
@@ -6,6 +6,9 @@
           <Form-item label="浼氬憳鍚嶇О" prop="username">
             <Input type="text" v-model="searchForm.username" placeholder="璇疯緭鍏ヤ細鍛樺悕绉�" clearable style="width: 200px" />
           </Form-item>
+          <Form-item label="浼氬憳id" prop="memberId">
+            <Input type="text" v-model="searchForm.memberId" placeholder="璇疯緭鍏ヤ細鍛榠d" clearable style="width: 200px" />
+          </Form-item>
 
           <Form-item label="浼氬憳鏄电О" prop="nickName">
             <Input type="text" v-model="searchForm.nickName" placeholder="璇疯緭鍏ヤ細鍛樻樀绉�" clearable style="width: 200px" />
@@ -172,6 +175,11 @@
       ruleValidate: {}, //淇敼楠岃瘉
       columns: [
         {
+          title: "浼氬憳id",
+          key: "id",
+          tooltip: true,
+        },
+        {
           title: "浼氬憳鍚嶇О",
           key: "username",
           tooltip: true,
diff --git a/manager/src/views/order/order/orderList.vue b/manager/src/views/order/order/orderList.vue
index 112e451..42256b7 100644
--- a/manager/src/views/order/order/orderList.vue
+++ b/manager/src/views/order/order/orderList.vue
@@ -18,6 +18,15 @@
             style="width: 160px"
           />
         </Form-item>
+        <Form-item label="浼氬憳id" prop="memberId">
+          <Input
+            type="text"
+            v-model="searchForm.memberId"
+            placeholder="璇疯緭鍏ヤ細鍛榠d"
+            clearable
+            style="width: 160px"
+          />
+        </Form-item>
 <!--        <Form-item label="浼氬憳鍚嶇О" prop="buyerName">-->
 <!--          <Input-->
 <!--            type="text"-->
@@ -323,6 +332,12 @@
       selectDate: null,
       columns: [
         {
+          title: "浼氬憳id",
+          key: "memberId",
+          minWidth: 240,
+          tooltip: true
+        },
+        {
           title: "璁㈠崟鍙�",
           key: "sn",
           minWidth: 240,
diff --git a/manager/src/views/order/order/storeOrderList.vue b/manager/src/views/order/order/storeOrderList.vue
new file mode 100644
index 0000000..78604c3
--- /dev/null
+++ b/manager/src/views/order/order/storeOrderList.vue
@@ -0,0 +1,878 @@
+<template>
+  <div>
+    <Card>
+      <Form
+        ref="searchForm"
+        @keydown.enter.native="handleSearch"
+        :model="searchForm"
+        inline
+        :label-width="70"
+        class="search-form"
+      >
+        <Form-item label="璁㈠崟鍙�" prop="orderSn">
+          <Input
+            type="text"
+            v-model="searchForm.orderSn"
+            placeholder="璇疯緭鍏ヨ鍗曞彿"
+            clearable
+            style="width: 160px"
+          />
+        </Form-item>
+        <Form-item label="浼氬憳id" prop="memberId">
+          <Input
+            type="text"
+            v-model="searchForm.memberId"
+            placeholder="璇疯緭鍏ヤ細鍛榠d"
+            clearable
+            style="width: 160px"
+          />
+        </Form-item>
+<!--        <Form-item label="浼氬憳鍚嶇О" prop="buyerName">-->
+<!--          <Input-->
+<!--            type="text"-->
+<!--            v-model="searchForm.buyerName"-->
+<!--            placeholder="璇疯緭鍏ヤ細鍛樺悕绉�"-->
+<!--            clearable-->
+<!--            style="width: 160px"-->
+<!--          />-->
+<!--        </Form-item>-->
+        <Form-item label="浼氬憳鏄电О" prop="nickName">
+          <Input
+            type="text"
+            v-model="searchForm.nickName"
+            placeholder="璇疯緭鍏ヤ細鍛樻樀绉�"
+            clearable
+            style="width: 160px"
+          />
+        </Form-item>
+        <Form-item label="瀹氬埗鍟嗗搧" prop="customizeFlag">
+          <Select
+            v-model="searchForm.customizeFlag"
+            placeholder="璇烽�夋嫨"
+            clearable
+            style="width: 160px"
+          >
+            <Option value="CUSTOMIZE">瀹氬埗鍟嗗搧</Option>
+          </Select>
+        </Form-item>
+        <Form-item label="璁㈠崟绫诲瀷" prop="orderType">
+          <Select
+            v-model="searchForm.orderPromotionType"
+            placeholder="璇烽�夋嫨"
+            clearable
+            style="width: 160px"
+          >
+            <Option value="NORMAL">鏅�氳鍗�</Option>
+            <Option value="PINTUAN">鎷煎洟璁㈠崟</Option>
+            <Option value="GIFT">璧犲搧璁㈠崟</Option>
+            <Option value="POINTS">绉垎璁㈠崟</Option>
+            <Option value="KANJIA">鐮嶄环璁㈠崟</Option>
+          </Select>
+        </Form-item>
+        <Form-item label="搴楅摵" prop="store">
+          <Select
+            v-model="searchForm.storeSelectId"
+            placeholder="璇烽�夋嫨"
+            clearable
+            style="width: 160px"
+            filterable
+          >
+            <Option
+              v-for="store in storeSelectList"
+              :key="store.id"
+              :label="store.label"
+              :value="store.id"
+            >
+              {{ store.label }}
+            </Option>
+          </Select>
+        </Form-item>
+        <Form-item label="涓嬪崟鏃堕棿">
+          <DatePicker
+            v-model="selectDate"
+            type="datetimerange"
+            format="yyyy-MM-dd HH:mm:ss"
+            clearable
+            @on-change="selectDateRange"
+            placeholder="閫夋嫨璧峰鏃堕棿"
+            style="width: 160px"
+          ></DatePicker>
+        </Form-item>
+<!--        <Form-item label="璁㈠崟鐘舵��" prop="orderStatus">-->
+<!--          <Select-->
+<!--            v-model="searchForm.orderStatus"-->
+<!--            placeholder="璇烽�夋嫨"-->
+<!--            clearable-->
+<!--            style="width: 160px"-->
+<!--          >-->
+<!--            <Option value="UNPAID">鏈粯娆�</Option>-->
+<!--            <Option value="PAID">宸蹭粯娆�</Option>-->
+<!--            <Option value="UNDELIVERED">寰呭彂璐�</Option>-->
+<!--            <Option value="DELIVERED">宸插彂璐�</Option>-->
+<!--            <Option value="COMPLETED">宸插畬鎴�</Option>-->
+<!--            <Option value="TAKE">寰呮牳楠�</Option>-->
+<!--            <Option value="CANCELLED">宸插叧闂�</Option>-->
+<!--            <Option value="STAY_PICKED_UP">寰呰嚜鎻�</Option>-->
+<!--          </Select>-->
+<!--        </Form-item>-->
+        <Button
+          @click="handleSearch"
+          type="primary"
+          icon="ios-search"
+          class="search-btn"
+          >鎼滅储</Button
+        >
+      </Form>
+      <div>
+        <Button @click="exportOrder" type="info" class="export">瀵煎嚭璁㈠崟</Button>
+      </div>
+
+      <div class="order-tab">
+        <div v-for="(item,index) in orderStatus" :key="index" :class="{'current': currentStatus === item.value}" @click="orderStatusClick(item)">
+          {{item.title}}
+        </div>
+      </div>
+
+      <Table
+        :loading="loading"
+        border
+        :columns="columns"
+        :data="data"
+        ref="table"
+        sortable="custom"
+      >
+        <template slot="sn" slot-scope="{ row }">
+          <div style="width: 100%" @click="detail(row)">
+          <span>{{row.sn}}</span>
+          </div>
+        </template>
+        <template  slot="nickName" slot-scope="{ row }">
+          <div style="width: 100%;height:20px;min-width: 50px" @click="handleNickNameClick(row)">
+            <span >{{row.nickName}}</span>
+          </div>
+
+        </template>
+
+      </Table>
+
+      <Row type="flex" justify="end" class="mt_10">
+        <Page
+          :current="searchForm.pageNumber"
+          :total="total"
+          :page-size="searchForm.pageSize"
+          @on-change="changePage"
+          @on-page-size-change="changePageSize"
+          :page-size-opts="[10, 20, 50]"
+          size="small"
+          show-total
+          show-elevator
+          show-sizer
+        ></Page>
+      </Row>
+
+      <!-- 淇敼妯℃�佹 -->
+      <Modal v-model="descFlag" width="500">
+
+        <!-- 鑷畾涔夋爣棰樻彃妲� -->
+        <div slot="header" :style="{ color: titleColor, fontSize: '16px', fontWeight: 'bold' }">
+          {{ descTitle }}
+        </div>
+        <Form ref="form" :model="form" :rules="ruleValidate" :label-width="80">
+
+          <Input v-model="form.id" v-show="false" />
+
+          <FormItem label="澶村儚">
+            <img :src="form.face || defaultPic" class="face" />
+            <Button type="text" class="upload" @click="() => {
+            this.picModelFlag = true;
+            this.$refs.ossManage.selectImage = true;
+          }">淇敼</Button>
+            <input type="file" style="display: none" id="file" />
+          </FormItem>
+          <FormItem label="鐢ㄦ埛鍚�" prop="name">
+            <Input v-model="form.username" style="width: 200px" disabled />
+          </FormItem>
+          <FormItem label="鐢ㄦ埛鏄电О" prop="name">
+            <Input v-model="form.nickName" style="width: 200px" />
+          </FormItem>
+          <FormItem label="鏍囩" prop="tags">
+            <Select v-model="selectTagIds" multiple filterable :loading="selectLoading" style="width:200px;">
+              <Option v-for="item in options" :key="item.id" :label="item.tagName" :value="item.id"></Option>
+            </Select>
+          </FormItem>
+          <FormItem label="鎬у埆" prop="sex">
+            <RadioGroup type="button" button-style="solid" v-model="form.sex">
+              <Radio :label="1">
+                <span>鐢�</span>
+              </Radio>
+              <Radio :label="0">
+                <span>濂�</span>
+              </Radio>
+            </RadioGroup>
+          </FormItem>
+          <!--        <FormItem label="淇敼瀵嗙爜" prop="password">-->
+          <!--          <Input type="password" style="width: 220px" password v-model="form.newPassword" />-->
+          <!--        </FormItem>-->
+          <FormItem label="鐢熸棩" prop="birthday">
+            <DatePicker type="date" format="yyyy-MM-dd" v-model="form.birthday" style="width: 220px"></DatePicker>
+          </FormItem>
+          <FormItem label="鎵�鍦ㄥ湴" prop="mail">
+            {{ form.region || '鏆傛棤鍦板潃' }}
+
+
+            <Button style="margin-left: 10px;" @click="$refs.map.open()">閫夋嫨</Button>
+
+          </FormItem>
+
+        </Form>
+        <div slot="footer">
+          <Button @click="descFlag = false">鍙栨秷</Button>
+          <Button type="primary" @click="handleSubmitModal" :disabled="submitDisabled">
+            纭畾
+          </Button>
+        </div>
+      </Modal>
+      <Modal width="1200px" v-model="picModelFlag">
+        <ossManage @callback="callbackSelected" :isComponent="true" :initialize="picModelFlag" ref="ossManage" />
+      </Modal>
+      <Modal
+        v-model="showGeneralQrCode"
+        title="浜岀淮鐮�"
+        width="800"
+        :mask-closable="false"
+        :loading="codeLoading"
+      >
+        <vue-qr
+          :text="QRCodeUrl"
+          :margin="0"
+          colorDark="#000"
+          colorLight="#fff"
+          :size="150"
+        ></vue-qr>
+        <div slot="footer">
+          <Button type="text" @click="closeGeneralQrCode">鍏抽棴</Button>
+          <!--          <Button type="primary" @click="generalQrCode">纭</Button>-->
+        </div>
+      </Modal>
+      <multipleMap ref="map" @callback="selectedRegion" />
+    </Card>
+  </div>
+</template>
+
+<script>
+import multipleMap from "@/components/map/multiple-map";
+import ossManage from "@/views/sys/oss-manage/ossManage";
+import * as API_Order from "@/api/order";
+import JsonExcel from "vue-json-excel";
+import * as API_Member from "@/api/member.js";
+import { getTags } from "@/api/tag.js";
+import vueQr from "vue-qr";
+import {getStoreSelect} from "../../../api/order";
+import {getShareOrderList, queryShareExportOrder} from "@/api/order";
+export default {
+  name: "orderList",
+  components: {
+    "download-excel": JsonExcel,
+    ossManage,
+    multipleMap,
+    "vue-qr": vueQr,
+  },
+  data() {
+    return {
+      //涓嬫媺妗嗘暟鎹�
+      storeSelectList:[],
+      // 琛ㄦ牸鐨勮〃澶翠互鍙婂唴瀹�
+      fields: {
+        璁㈠崟缂栧彿: "sn",
+        涓嬪崟鏃堕棿: "createTime",
+        瀹㈡埛鍚嶇О: "memberName",
+        鏀粯鏂瑰紡: {
+          field: "clientType",
+          callback: (value) => {
+            if (value == "H5") {
+              return "绉诲姩绔�";
+            } else if (value == "PC") {
+              return "PC绔�";
+            } else if (value == "WECHAT_MP") {
+              return "灏忕▼搴忕";
+            } else if (value == "APP") {
+              return "绉诲姩搴旂敤绔�";
+            } else {
+              return value;
+            }
+          },
+        },
+        鍟嗗搧鏁伴噺: "groupNum",
+        浠樻鐘舵��: {
+          field: "payStatus",
+          callback: (value) => {
+            return value == "UNPAID"
+              ? "鏈粯娆�"
+              : value == "PAID"
+              ? "宸蹭粯娆�"
+              : "";
+          },
+        },
+        搴楅摵: "storeName",
+      },
+      loading: true, // 琛ㄥ崟鍔犺浇鐘舵��
+      searchForm: {
+        // 鎼滅储妗嗗垵濮嬪寲瀵硅薄
+        pageNumber: 1, // 褰撳墠椤垫暟
+        pageSize: 10, // 椤甸潰澶у皬
+        sort: "createTime", // 榛樿鎺掑簭瀛楁
+        order: "desc", // 榛樿鎺掑簭鏂瑰紡
+        startDate: "", // 璧峰鏃堕棿
+        endDate: "", // 缁堟鏃堕棿
+        orderType: "",
+        orderSn: "",
+        buyerName: "",
+        nickName:"",
+        orderStatus: "",
+      },
+      selectDate: null,
+      columns: [
+        {
+          title: "搴楅摵鍚嶇О",
+          key: "storeName",
+          minWidth: 240,
+          tooltip: true
+        },
+        {
+          title: "浼氬憳id",
+          key: "memberId",
+          minWidth: 240,
+          tooltip: true
+        },
+        {
+          title: "璁㈠崟鍙�",
+          key: "sn",
+          minWidth: 240,
+          tooltip: true,
+          slot: 'sn'
+        },
+
+        {
+          title: "璁㈠崟鏉ユ簮",
+          key: "clientType",
+          width: 120,
+          render: (h, params) => {
+            if (params.row.clientType == "H5") {
+              return h("div", {}, "绉诲姩绔�");
+            } else if (params.row.clientType == "PC") {
+              return h("div", {}, "PC绔�");
+            } else if (params.row.clientType == "WECHAT_MP") {
+              return h("div", {}, "灏忕▼搴忕");
+            } else if (params.row.clientType == "APP") {
+              return h("div", {}, "绉诲姩搴旂敤绔�");
+            } else {
+              return h("div", {}, params.row.clientType);
+            }
+          },
+        },
+        {
+          title: "璁㈠崟绫诲瀷",
+          key: "orderPromotionType",
+          width: 120,
+          render: (h, params) => {
+            if (params.row.orderPromotionType == "NORMAL") {
+              return h("div", [
+                h("tag", { props: { color: "blue" } }, "鏅�氳鍗�"),
+              ]);
+            } else if (params.row.orderPromotionType == "PINTUAN") {
+              return h("div", [
+                h("tag", { props: { color: "volcano" } }, "鎷煎洟璁㈠崟"),
+              ]);
+            } else if (params.row.orderPromotionType == "GIFT") {
+              return h("div", [
+                h("tag", { props: { color: "green" } }, "璧犲搧璁㈠崟"),
+              ]);
+            } else if (params.row.orderPromotionType == "POINTS") {
+              return h("div", [
+                h("tag", { props: { color: "geekblue" } }, "绉垎璁㈠崟"),
+              ]);
+            } else if (params.row.orderPromotionType == "KANJIA") {
+              return h("div", [
+                h("tag", { props: { color: "pink" } }, "鐮嶄环璁㈠崟"),
+              ]);
+            }
+          },
+        },
+        {
+          title: "涔板鍚嶇О",
+          key: "nickName",
+          minWidth: 130,
+          tooltip: true,
+          slot:'nickName'
+        },
+
+        {
+          title: "璁㈠崟閲戦",
+          key: "flowPrice",
+          minWidth: 100,
+          tooltip: true,
+          render: (h, params) => {
+            return h("priceColorScheme", {props:{value:params.row.flowPrice,color:this.$mainColor}} );
+          },
+
+        },
+        {
+          title: "瀹氬埗鍟嗗搧",
+          key: "customizeFlag",
+          minWidth: 120,
+          tooltip: true,
+          render: (h, params) => {
+            if (params.row.customizeFlag == "CUSTOMIZE") {
+              return h("div", [
+                h("tag", { props: { color: "blue" } }, "瀹氬埗鍟嗗搧"),
+              ]);
+            } else  {
+              return h("div", [
+                h("tag", { props: { color: "volcano" } }, "鏅�氬晢鍝�"),
+              ]);
+            }
+          },
+        },
+        {
+          title: "璁㈠崟鐘舵��",
+          key: "orderStatus",
+          minWidth: 100,
+          render: (h, params) => {
+            if (params.row.orderStatus == "UNPAID") {
+              return h("div", [
+                h("tag", { props: { color: "magenta" } }, "鏈粯娆�"),
+              ]);
+            } else if (params.row.orderStatus == "PAID") {
+              return h("div", [
+                h("tag", { props: { color: "blue" } }, "宸蹭粯娆�"),
+              ]);
+            } else if (params.row.orderStatus == "UNDELIVERED") {
+              return h("div", [
+                h("tag", { props: { color: "geekblue" } }, "寰呭彂璐�"),
+              ]);
+            } else if (params.row.orderStatus == "STAY_PICKED_UP") {
+              return h("div", [
+                h("tag", { props: { color: "geekblue" } }, "寰呰嚜鎻�"),
+              ]);
+            } else if (params.row.orderStatus == "DELIVERED") {
+              return h("div", [
+                h("tag", { props: { color: "cyan" } }, "宸插彂璐�"),
+              ]);
+            } else if (params.row.orderStatus == "COMPLETED") {
+              return h("div", [
+                h("tag", { props: { color: "green" } }, "宸插畬鎴�"),
+              ]);
+            } else if (params.row.orderStatus == "TAKE") {
+              return h("div", [
+                h("tag", { props: { color: "volcano" } }, "寰呮牳楠�"),
+              ]);
+            } else if (params.row.orderStatus == "CANCELLED") {
+              return h("div", [
+                h("tag", { props: { color: "red" } }, "宸插叧闂�"),
+              ]);
+            }
+          },
+        },
+        {
+          title: "涓嬪崟鏃堕棿",
+          key: "createTime",
+          width: 170,
+        },
+        {
+          title:"鏀惰揣浜�",
+          key:"consigneeName",
+          width: 170,
+        },
+        {
+          title:"鎵嬫満鍙�",
+          key:"consigneeMobile",
+          width: 170,
+        },
+        {
+          title: "鎿嶄綔",
+          key: "action",
+          align: "center",
+          width: 150,
+          fixed:"right",
+          render: (h, params) => {
+            const buttons = [];
+
+            // 鏌ョ湅鎸夐挳 - 濮嬬粓鏄剧ず
+            buttons.push(
+              h(
+                "Button",
+                {
+                  props: { type: "info", size: "small" },
+                  style: { marginRight: "5px" },
+                  on: {
+                    click: () => {
+                      this.detail(params.row);
+                    },
+                  },
+                },
+                "鏌ョ湅"
+              )
+            );
+
+            // 鏍规嵁璁㈠崟鐘舵�佷负'PAID'鏃舵樉绀洪澶栨搷浣滄寜閽�
+            if (params.row.orderStatus === 'PAID') {
+              buttons.push(
+                h(
+                  "Button",
+                  {
+                    props: { type: "primary", size: "small" },
+                    style: { marginRight: "5px" },
+                    on: {
+                      click: () => {
+                        this.handlePaidOrder(params.row);
+                      },
+                    },
+                  },
+                  "鏇存柊璁㈠崟鐘舵��"
+                )
+              );
+            }
+            // // 鏍规嵁璁㈠崟鐘舵�佷负'PAID'鏃舵樉绀洪澶栨搷浣滄寜閽�
+            // if (params.row.deliverStatus === 'UNDELIVERED') {
+            //   buttons.push(
+            //     h(
+            //       "Button",
+            //       {
+            //         props: { type: "primary", size: "small" },
+            //         style: { marginRight: "5px" },
+            //         on: {
+            //           click: () => {
+            //             this.handlerEditorQrcode(params.row);
+            //           },
+            //         },
+            //       },
+            //       "淇敼鍦板潃浜岀淮鐮�"
+            //     )
+            //   );
+            // }
+
+            return h('div', buttons);
+          },
+        },
+
+
+      ],
+      data: [], // 琛ㄥ崟鏁版嵁
+      total: 0, // 琛ㄥ崟鏁版嵁鎬绘暟
+      orderStatus: [
+        {title: '鍏ㄩ儴', value: ''},
+        {title: '鏈粯娆�', value: 'UNPAID'},
+        {title: '宸蹭粯娆�', value: 'PAID'},
+        {title: '寰呭彂璐�', value: 'UNDELIVERED'},
+        {title: '宸插彂璐�', value: 'DELIVERED'},
+        {title: '寰呮牳楠�', value: 'TAKE'},
+        {title: '寰呰嚜鎻�', value: 'STAY_PICKED_UP'},
+        {title: '宸插畬鎴�', value: 'COMPLETED'},
+        {title: '宸插叧闂�', value: 'CANCELLED'},
+
+      ],
+      currentStatus: '',
+      descTitle: "", // modal鏍囬
+      descFlag: false, //缂栬緫鏌ョ湅妗�
+      form:{},
+      ruleValidate:{},
+
+      selectTagIds: [],
+      selectTags: [],
+      defaultPic: require('@/assets/default.png'),
+      selectLoading:false,
+      picModelFlag: false, // 閫夋嫨鍥剧墖
+      options: [],
+      titleColor:'#333', // 榛樿鏍囬棰滆壊
+      submitDisabled:false,
+      QRCodeUrl:'',
+      showGeneralQrCode:false,
+      codeLoading:false,
+    };
+  },
+  methods: {
+    getStoreSelect(){
+      API_Order.getStoreSelect().then(res =>{
+        if (res.result){
+          this.storeSelectList = res.result;
+        }
+      })
+    },
+    closeGeneralQrCode(){
+      this.showGeneralQrCode = false;
+    },
+    // handlerEditorQrcode(row){
+    //   this.QRCodeUrl = '';
+    //   this.showGeneralQrCode = true
+    //   this.codeLoading = true;
+    //
+    //   //鑾峰緱鍟嗗搧瀵瑰簲鐨勭涓�涓猻kuid
+    //   this.codeLoading = false;
+    //   this.QRCodeUrl = this.QRcodeBaseUrl+ '/scanpage/editOrderAddress'+'?orderSn='+row.sn
+    //   console.log(this.QRCodeUrl);
+    //
+    // },
+    // 閫変腑鐨勫浘鐗�
+    callbackSelected(val) {
+      console.log(val)
+      this.picModelFlag = false;
+      this.form.face = val.url;
+    },
+     handleNickNameClick(row){
+      this.titleColor = '#333'
+      this.form = {};
+      this.selectTagIds = [];
+      this.selectTags= [];
+      this.descTitle ='';
+      this.descFlag = true;
+      this.getMemberInfo(row.memberId);
+    },
+    /**
+     * 鏌ヨ鏌ョ湅浼氬憳璇︽儏
+     */
+    async getMemberInfo(id) {
+      this.submitDisabled = false;
+      var that = this;
+      await API_Member.getMemberInfoData(id).then((res) => {
+        if (res.result) {
+          debugger
+          that.selectTags = []
+          that.selectTagIds = []
+          res.result.tags.forEach(element => {
+            that.selectTags.push(element.tagName)
+            that.selectTagIds.push(element.tagId)
+          });
+          this.descTitle = res.result.nickName;
+          this.$set(this, "form", res.result);
+        }else{
+          //鏌ヨ鍒扮敤鎴蜂笉瀛樺湪锛屾垨宸插垹闄ゆ儏鍐�
+          this.descTitle = "鐢ㄦ埛宸插垹闄�"
+          this.titleColor ='#ff4d4f';
+          this.submitDisabled = true;
+        }
+        console.log(this.form)
+
+      });
+    },
+    remoteMethod(query) {
+      this.selectLoading = true;
+      var params = {
+        "tagTypeKey": "USER",
+        "pageNumber": 1,
+        "pageSize": 500
+      }
+      getTags(params).then(res => {
+        this.options = res.data;
+        this.selectLoading = false;
+      });
+    },
+    handleSubmitModal(){
+      debugger
+      const { nickName, sex, username, face, newPassword, id, regionId, region } = this.form;
+      let time = new Date(this.form.birthday);
+      let birthday = this.form.birthday === undefined ? '' :
+        time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
+      let submit = {
+        regionId,
+        region,
+        nickName,
+        username,
+        sex,
+        birthday,
+        face,
+        id
+      };
+
+      submit.tags = this.selectTagIds
+      if (newPassword) {
+        submit.password = this.md5(newPassword);
+      }
+      API_Member.updateMember(submit).then((res) => {
+        if (res.result) {
+          this.$Message.success("淇敼鎴愬姛锛�");
+          this.descFlag = false;
+          this.getDataList();
+        }
+      });
+    },
+
+// 閫変腑鐨勫湴鍧�
+    selectedRegion(val) {
+      if (val.type === 'select') {
+        const paths = val.data.map(item => item.name).join(',')
+        const ids = val.data.map(item => item.id).join(',')
+
+        this.$set(this.form, 'region', paths)
+        this.$set(this.form, 'regionId', ids)
+
+      }
+      else {
+        this.$set(this.form, 'region', val.data.addr)
+        this.$set(this.form, 'regionId', val.data.addrId)
+      }
+    },
+
+    // 鍒濆鍖栨暟鎹�
+    init() {
+      this.getDataList();
+      this.remoteMethod("")
+
+    },
+    // 鍒嗛〉 鏀瑰彉椤电爜
+    changePage(v) {
+      this.searchForm.pageNumber = v;
+      this.getDataList();
+    },
+    // 鍒嗛〉 鏀瑰彉椤垫暟
+    changePageSize(v) {
+      this.searchForm.pageNumber = 1;
+      this.searchForm.pageSize = v;
+      this.getDataList();
+    },
+    // 鎼滅储
+    handleSearch() {
+      this.searchForm.pageNumber = 1;
+      this.searchForm.pageSize = 10;
+      this.getDataList();
+    },
+    // 璧锋鏃堕棿浠庢柊璧嬪��
+    selectDateRange(v) {
+      if (v) {
+        this.searchForm.startDate = v[0];
+        this.searchForm.endDate = v[1];
+      }
+    },
+    // 鑾峰彇鍒楄〃鏁版嵁
+    getDataList() {
+      this.loading = true;
+      API_Order.getShareOrderList(this.searchForm).then((res) => {
+        this.loading = false;
+        if (res.success) {
+          this.data = res.result.records;
+          this.total = res.result.total;
+        }
+      });
+      this.loading = false;
+    },
+    // 璺宠浆璇︽儏椤甸潰
+    detail(v) {
+      let sn = v.sn;
+      this.$router.push({
+        name: "order-detail",
+        query: { sn: sn },
+      })
+    },
+    // 澶勭悊宸蹭粯娆捐鍗曠殑鎿嶄綔
+    handlePaidOrder(order) {
+      // 杩欓噷鍙互娣诲姞宸蹭粯娆捐鍗曠殑鍏蜂綋鎿嶄綔閫昏緫
+      // 渚嬪锛氭樉绀虹‘璁ゅ璇濇锛屽彂璧峰彂璐ц姹傜瓑
+      this.$Modal.confirm({
+        title: '鏇存柊鐘舵��',
+        content: `纭瀵硅鍗曞彿锛�${order.sn} 杩涜鏇存柊鐘舵搷浣滃悧锛焋,
+        onOk: () => {
+          // 璋冪敤鍙戣揣API
+          this.deliverOrder(order);
+        },
+        onCancel: () => {
+          this.$Message.info('宸插彇娑堟搷浣�');
+        }
+      });
+    },
+    // 鍙戣揣鎿嶄綔
+    deliverOrder(order) {
+      console.log('------------->鑾峰彇璁㈠崟淇℃伅',order);
+      console.log('璁㈠崟sn缂栧彿',order.sn);
+      // 璋冪敤鍙戣揣API
+      API_Order.sendMessage(order.sn).then((res) => {
+        console.log('-------------->',res);
+        if (res.success) {
+          this.$Message.success('鏇存柊鐘舵�佹垚鍔�');
+          // 寤惰繜5绉掑埛鏂板垪琛╩q娑堟伅鏄紓姝ョ殑鏃犳硶瀹炴椂鍚屾闇�瑕佹墽琛屽欢杩熷埛鏂�
+          setTimeout(() => {
+            this.getDataList();
+          }, 5000);
+        } else {
+          this.$Message.error('鏇存柊鐘舵�佸け璐�');
+        }
+      }).catch((error) => {
+        console.error('鏇存柊鐘舵�佸け璐�:', error);
+        this.$Message.error('鏇存柊鐘舵�佸け璐ワ紝璇烽噸璇�');
+      });
+    },
+    // 瀵煎嚭璁㈠崟
+    async exportOrder() {
+      if(this.searchForm.startDate==""||this.searchForm.endDate==""){
+        this.$Message.error("蹇呴』閫夋嫨鏃堕棿鑼冨洿锛屾悳绱㈠悗杩涜瀵煎嚭锛�");
+      }else{
+        API_Order.queryShareExportOrder(this.searchForm)
+          .then((res) => {
+            const blob = new Blob([res], {
+              type: "application/vnd.ms-excel;charset=utf-8",
+            });
+            //瀵逛簬<a>鏍囩锛屽彧鏈� Firefox 鍜� Chrome锛堝唴鏍革級 鏀寔 download 灞炴��
+            //IE10浠ヤ笂鏀寔blob浣嗘槸渚濈劧涓嶆敮鎸乨ownload
+            if ("download" in document.createElement("a")) {
+              //鏀寔a鏍囩download鐨勬祻瑙堝櫒
+              const link = document.createElement("a"); //鍒涘缓a鏍囩
+              link.download = "璁㈠崟鍒楄〃.xlsx"; //a鏍囩娣诲姞灞炴��
+              link.style.display = "none";
+              link.href = URL.createObjectURL(blob);
+              document.body.appendChild(link);
+              link.click(); //鎵ц涓嬭浇
+              URL.revokeObjectURL(link.href); //閲婃斁url
+              document.body.removeChild(link); //閲婃斁鏍囩
+            } else {
+              navigator.msSaveBlob(blob, fileName);
+            }
+          })
+          .catch((err) => {
+            console.log(err);
+          });
+      }
+
+    },
+    // 璁㈠崟绛涢��
+    orderStatusClick(item) {
+      this.currentStatus = item.value;
+      this.searchForm.orderStatus = item.value;
+      this.getDataList();
+    },
+  },
+  mounted() {
+    this.init();
+    this.getStoreSelect();
+  },
+};
+</script>
+<style lang="scss" scoped>
+.export {
+  margin: 10px 20px 10px 0;
+}
+.export-excel-wrapper {
+  display: inline;
+}
+.order-tab {
+  width: 950px;
+  height: 36px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  background-color: #f0f0f0;
+  padding: 0 10px;
+  margin-bottom: 10px;
+  div {
+    text-align: center;
+    padding: 4px 12px;
+    border-radius: 4px;
+    cursor: pointer;
+  }
+  .current {
+    background-color: #ffffff;
+  }
+}
+.face {
+  width: 60px;
+  height: 60px;
+  border-radius: 50%; // 鍦嗗舰澶村儚
+}
+</style>
diff --git a/manager/src/views/userAction/userAction.vue b/manager/src/views/userAction/userAction.vue
index c37daa8..7911c14 100644
--- a/manager/src/views/userAction/userAction.vue
+++ b/manager/src/views/userAction/userAction.vue
@@ -6,16 +6,19 @@
           <Form-item label="鐢ㄦ埛鏄电О" prop="userName">
             <Input type="text" v-model="searchForm.userName" placeholder="璇疯緭鍏ョ敤鎴锋樀绉�" clearable style="width: 200px" />
           </Form-item>
+          <Form-item label="鐢ㄦ埛id" prop="userId">
+            <Input type="text" v-model="searchForm.userId" placeholder="璇疯緭鍏ョ敤鎴穒d" clearable style="width: 200px" />
+          </Form-item>
           <Form-item label="椤甸潰绫诲瀷" prop="pageCode">
-            <Select 
-              v-model="searchForm.pageCode" 
-              clearable 
+            <Select
+              v-model="searchForm.pageCode"
+              clearable
               filterable
               style="width: 200px"
               placeholder="璇烽�夋嫨椤甸潰绫诲瀷">
-              <Option 
-                v-for="item in pageTypeOptions" 
-                :key="item.value" 
+              <Option
+                v-for="item in pageTypeOptions"
+                :key="item.value"
                 :value="item.value"
                 :label="item.label">
                 {{ item.label }}
@@ -108,6 +111,7 @@
         pageSize: 10,
         userName: "",
         pageCode: "",
+        userId: "",
         beginDate: startTime,
         endDate: endTime
       },
@@ -141,7 +145,7 @@
       ],
       columns: [
         {
-          title: "鐢ㄦ埛鍚嶇О",
+          title: "鐢ㄦ埛id",
           key: "userId",
           minWidth: 120
         },
@@ -149,11 +153,6 @@
           title: "鐢ㄦ埛鏄电О",
           key: "nickName",
           minWidth: 100
-        },
-        {
-          title: "浼氳瘽ID",
-          key: "sessionId",
-          minWidth: 150
         },
         {
           title: "椤甸潰绫诲瀷",
@@ -189,11 +188,6 @@
             };
             return h('span', pageCodes[params.row.pageCode] || params.row.pageCode);
           }
-        },
-        {
-          title: "椤甸潰鍚嶇О",
-          key: "pageNameCn",
-          minWidth: 150
         },
         {
           title: "杩涘叆鏃堕棿",
@@ -408,6 +402,7 @@
       this.searchForm.pageSize = 10;
       this.searchForm.userName = "";
       this.searchForm.pageCode = "";
+      this.searchForm.userId = "";
       // 浣跨敤姝g‘鐨勫弬鏁板悕绉板拰鏂规硶
       this.searchForm.beginDate = this.getDefaultBeginDate();
       this.searchForm.endDate = this.getDefaultEndDate();
diff --git a/manager/src/views/userAction/userActionRecord.vue b/manager/src/views/userAction/userActionRecord.vue
new file mode 100644
index 0000000..25b7e87
--- /dev/null
+++ b/manager/src/views/userAction/userActionRecord.vue
@@ -0,0 +1,788 @@
+<template>
+  <div class="wrapper">
+    <Card class="user-action-card">
+      <Row @keydown.enter.native="handleSearch">
+        <Form ref="searchForm" :model="searchForm" inline :label-width="80" style="width: 100%" class="search-form">
+          <Form-item label="鐢ㄦ埛鏄电О" prop="userName">
+            <Input type="text" v-model="searchForm.userName" placeholder="璇疯緭鍏ョ敤鎴锋樀绉�" clearable style="width: 200px" />
+          </Form-item>
+<!--          <Form-item label="椤甸潰绫诲瀷" prop="pageCode">-->
+<!--            <Select-->
+<!--              v-model="searchForm.pageCode"-->
+<!--              clearable-->
+<!--              filterable-->
+<!--              style="width: 200px"-->
+<!--              placeholder="璇烽�夋嫨椤甸潰绫诲瀷">-->
+<!--              <Option-->
+<!--                v-for="item in pageTypeOptions"-->
+<!--                :key="item.value"-->
+<!--                :value="item.value"-->
+<!--                :label="item.label">-->
+<!--                {{ item.label }}-->
+<!--              </Option>-->
+<!--            </Select>-->
+<!--          </Form-item>-->
+          <Form-item label="寮�濮嬫椂闂�" prop="beginDate">
+            <DatePicker
+              v-model="searchForm.beginDate"
+              type="datetime"
+              placeholder="璇烽�夋嫨寮�濮嬫椂闂�"
+              style="width: 200px">
+            </DatePicker>
+          </Form-item>
+          <Form-item label="缁撴潫鏃堕棿" prop="endDate">
+            <DatePicker
+              v-model="searchForm.endDate"
+              type="datetime"
+              placeholder="璇烽�夋嫨缁撴潫鏃堕棿"
+              style="width: 200px">
+            </DatePicker>
+          </Form-item>
+          <Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">鎼滅储</Button>
+          <Button @click="handleReset" type="default" class="search-btn">閲嶇疆</Button>
+        </Form>
+      </Row>
+      <div class="table-container">
+        <Table
+          :loading="loading"
+          border
+          :columns="columns"
+          :data="data"
+          ref="table">
+        </Table>
+      </div>
+      <Row type="flex" justify="end" class="mt_10">
+        <Page
+          :current="searchForm.pageNumber"
+          :total="total"
+          :page-size="searchForm.pageSize"
+          @on-change="changePage"
+          @on-page-size-change="changePageSize"
+          :page-size-opts="[10, 20, 50]"
+          size="small"
+          show-total
+          show-elevator
+          show-sizer>
+        </Page>
+      </Row>
+    </Card>
+
+    <!-- 鐢ㄦ埛琛屼负璇︽儏寮圭獥 -->
+    <Modal
+      v-model="detailModalVisible"
+      title="鐢ㄦ埛琛屼负璇︽儏"
+      width="80%"
+      :loading="detailLoading"
+      :footer-hide="true">
+      <Spin size="large" fix v-if="detailLoading"></Spin>
+      <div v-else>
+        <!-- 璇︽儏绛涢�夋潯浠� -->
+        <Row @keydown.enter.native="handleDetailSearch">
+          <Form ref="detailSearchForm" :model="detailSearchForm" inline :label-width="80" style="width: 100%" class="search-form">
+<!--            <Form-item label="鐢ㄦ埛鏄电О" prop="userName">-->
+<!--              <Input type="text" v-model="detailSearchForm.userName" placeholder="璇疯緭鍏ョ敤鎴锋樀绉�" clearable style="width: 200px" />-->
+<!--            </Form-item>-->
+            <Form-item label="椤甸潰绫诲瀷" prop="pageCode">
+              <Select
+                v-model="detailSearchForm.pageCode"
+                clearable
+                filterable
+                style="width: 200px"
+                placeholder="璇烽�夋嫨椤甸潰绫诲瀷">
+                <Option
+                  v-for="item in pageTypeOptions"
+                  :key="item.value"
+                  :value="item.value"
+                  :label="item.label">
+                  {{ item.label }}
+                </Option>
+              </Select>
+            </Form-item>
+            <Form-item label="寮�濮嬫椂闂�" prop="beginDate">
+              <DatePicker
+                v-model="detailSearchForm.beginDate"
+                type="datetime"
+                placeholder="璇烽�夋嫨寮�濮嬫椂闂�"
+                style="width: 200px">
+              </DatePicker>
+            </Form-item>
+            <Form-item label="缁撴潫鏃堕棿" prop="endDate">
+              <DatePicker
+                v-model="detailSearchForm.endDate"
+                type="datetime"
+                placeholder="璇烽�夋嫨缁撴潫鏃堕棿"
+                style="width: 200px">
+              </DatePicker>
+            </Form-item>
+            <Button @click="handleDetailSearch" type="primary" icon="ios-search" class="search-btn">鎼滅储</Button>
+            <Button @click="handleDetailReset" type="default" class="search-btn">閲嶇疆</Button>
+          </Form>
+        </Row>
+        <div class="table-container">
+          <Table
+            :loading="detailTableLoading"
+            border
+            :columns="detailColumns"
+            :data="detailData"
+            ref="detailTable">
+          </Table>
+        </div>
+        <Row type="flex" justify="end" class="mt_10">
+          <Page
+            :current="detailSearchForm.pageNumber"
+            :total="detailTotal"
+            :page-size="detailSearchForm.pageSize"
+            @on-change="changeDetailPage"
+            @on-page-size-change="changeDetailPageSize"
+            :page-size-opts="[10, 20, 50]"
+            size="small"
+            show-total
+            show-elevator
+            show-sizer>
+          </Page>
+        </Row>
+      </div>
+    </Modal>
+  </div>
+</template>
+
+<script>
+import { userStayList, userStayListRecord } from "@/api/userAction";
+import { formatDate } from "@/utils/filters";
+
+export default {
+  name: "userAction",
+  data() {
+    // 璁剧疆榛樿鏃堕棿鏀逛负鏈�杩�7澶�
+    const now = new Date();
+    const endTime = new Date(now);
+    endTime.setHours(23, 59, 59, 999);
+
+    // 寮�濮嬫椂闂翠负7澶╁墠锛堝寘鍚粖澶╋紝鎬诲叡7澶╋級
+    const startTime = new Date(now);
+    startTime.setDate(startTime.getDate() - 6);
+    startTime.setHours(0, 0, 0, 0);
+
+    console.log("榛樿寮�濮嬫椂闂�(鏈�杩�7澶�):", startTime);
+    console.log("榛樿缁撴潫鏃堕棿:", endTime);
+    console.log("寮�濮嬫椂闂寸被鍨�:", typeof startTime);
+    console.log("缁撴潫鏃堕棿绫诲瀷:", typeof endTime);
+
+    // 楠岃瘉鏃ユ湡鏍煎紡鍖栨槸鍚︽甯稿伐浣�
+    try {
+      const formattedStart = formatDate(startTime, 'yyyy-MM-dd hh:mm:ss');
+      const formattedEnd = formatDate(endTime, 'yyyy-MM-dd hh:mm:ss');
+      console.log("榛樿寮�濮嬫椂闂存牸寮忓寲缁撴灉:", formattedStart);
+      console.log("榛樿缁撴潫鏃堕棿鏍煎紡鍖栫粨鏋�:", formattedEnd);
+    } catch (e) {
+      console.error("鍒濆鍖栨椂鏃ユ湡鏍煎紡鍖栧嚭閿�:", e);
+    }
+
+    return {
+      loading: false, // 榛樿涓嶅姞杞�
+      searchForm: {
+        pageNumber: 1,
+        pageSize: 10,
+        userName: "",
+        pageCode: "",
+        beginDate: startTime,
+        endDate: endTime
+      },
+      // 椤甸潰绫诲瀷閫夐」锛堢敤浜庝笅鎷夋锛�
+      pageTypeOptions: [
+        { value: "RECOMMEND_VIDEO", label: "棣栭〉鎺ㄨ崘瑙嗛" },
+        { value: "HEALTH_VIDEO", label: "澶у仴搴疯棰�" },
+        { value: "KITCHEN_VIDEO", label: "绁炲帹瑙嗛" },
+        { value: "RECOMMEND_VIDEO_GOODS", label: "瑙嗛鎺ㄨ崘鍟嗗搧椤甸潰" },
+        { value: "RECOMMEND_VIDEO_LEFT_GOODS", label: "宸︽粦鎺ㄨ崘鍟嗗搧" },
+        { value: "RECOMMEND_VIDEO_RIGHT_VIDEO", label: "鍙虫粦瑙嗛椤甸潰" },
+        { value: "FILL_ORDER", label: "濉啓璁㈠崟" },
+        { value: "PAY_ORDER", label: "鏀粯璁㈠崟" },
+        { value: "PAY_SUCCESS", label: "鏀粯鎴愬姛" },
+        { value: "ORDER_LIST", label: "璁㈠崟鍒楄〃" },
+        { value: "ORDER_DETAIL", label: "璁㈠崟璇︽儏" },
+        { value: "PRIZE_DETAIL", label: "鎶藉娲诲姩" },
+        { value: "CART_LIST", label: "璐墿杞�" },
+        { value: "TBA_BAR_MY", label: "鎴戠殑椤甸潰" },
+        { value: "SHOPPING_SQUARE", label: "鍟嗗搧骞垮満" },
+        { value: "ACTIVITY_LIST", label: "娲诲姩鍒楄〃" },
+        { value: "ACTIVITY_DETAIL", label: "娲诲姩璇︽儏" },
+        { value: "PUBLISH_VIDEO", label: "瑙嗛鍙戝竷" },
+        { value: "SWIPER_GOODS", label: "婊戝姩鍟嗗搧" },
+        { value: "COUPON_CENTER", label: "棰嗗嵎涓績" },
+        { value: "MY_COUPON", label: "鎴戠殑浼樻儬鍗�" },
+        { value: "AFTER_SALE", label: "鍞悗鍒楄〃" },
+        { value: "APPLY_SALE", label: "鐢宠鍞悗" },
+        { value: "REFUND_ORDER", label: "閫�娆�/閫�璐�" },
+        { value: "GOODS_DETAILS", label: "鍟嗗搧璇︽儏椤甸潰" }
+      ],
+      columns: [
+        {
+          title: "鐢ㄦ埛id",
+          key: "userId",
+          minWidth: 120
+        },
+        {
+          title: "鐢ㄦ埛鏄电О",
+          key: "nickName",
+          minWidth: 100
+        },
+        {
+          title: "椤甸潰绫诲瀷",
+          key: "pageCode",
+          minWidth: 150,
+          render: (h, params) => {
+            const pageCodes = {
+              "RECOMMEND_VIDEO": "棣栭〉鎺ㄨ崘瑙嗛",
+              "HEALTH_VIDEO": "澶у仴搴疯棰�",
+              "KITCHEN_VIDEO": "绁炲帹瑙嗛",
+              "RECOMMEND_VIDEO_GOODS": "瑙嗛鎺ㄨ崘鍟嗗搧椤甸潰",
+              "RECOMMEND_VIDEO_LEFT_GOODS": "宸︽粦鎺ㄨ崘鍟嗗搧",
+              "RECOMMEND_VIDEO_RIGHT_VIDEO": "鍙虫粦瑙嗛椤甸潰",
+              "FILL_ORDER": "濉啓璁㈠崟",
+              "PAY_ORDER": "鏀粯璁㈠崟",
+              "PAY_SUCCESS": "鏀粯鎴愬姛",
+              "ORDER_LIST": "璁㈠崟鍒楄〃",
+              "ORDER_DETAIL": "璁㈠崟璇︽儏",
+              "PRIZE_DETAIL": "鎶藉娲诲姩",
+              "CART_LIST": "璐墿杞�",
+              "TBA_BAR_MY": "鎴戠殑椤甸潰",
+              "SHOPPING_SQUARE": "鍟嗗搧骞垮満",
+              "ACTIVITY_LIST": "娲诲姩鍒楄〃",
+              "ACTIVITY_DETAIL": "娲诲姩璇︽儏",
+              "PUBLISH_VIDEO": "瑙嗛鍙戝竷",
+              "SWIPER_GOODS": "婊戝姩鍟嗗搧",
+              "COUPON_CENTER": "棰嗗嵎涓績",
+              "MY_COUPON": "鎴戠殑浼樻儬鍗�",
+              "AFTER_SALE": "鍞悗鍒楄〃",
+              "APPLY_SALE": "鐢宠鍞悗",
+              "REFUND_ORDER": "閫�娆�/閫�璐�",
+              "GOODS_DETAILS": "鍟嗗搧璇︽儏椤甸潰"
+            };
+            return h('span', pageCodes[params.row.pageCode] || params.row.pageCode);
+          }
+        },
+        {
+          title: "杩涘叆鏃堕棿",
+          key: "startTime",
+          minWidth: 160
+        },
+        {
+          title: "鎿嶄綔",
+          key: "action",
+          width: 150,
+          align: "center",
+          render: (h, params) => {
+            // 娣诲姞鏌ョ湅璇︽儏鎸夐挳
+            return h('div', [
+              h('Button', {
+                props: {
+                  type: 'primary',
+                  size: 'small'
+                },
+                on: {
+                  click: () => {
+                    this.showDetailModal(params.row.userId);
+                  }
+                }
+              }, '鏌ョ湅'),
+              // 鍙湁褰撻〉闈㈢被鍨嬫槸鍟嗗搧璇︽儏椤甸潰鏃舵墠鏄剧ず璺宠浆鎸夐挳
+              params.row.pageCode === "GOODS_DETAILS" && params.row.pageParams ? h('Button', {
+                props: {
+                  type: 'primary',
+                  size: 'small',
+                  style: { marginLeft: '5px' }
+                },
+                on: {
+                  click: () => {
+                    // 淇敼锛氫娇鐢ㄦ柊绐楀彛鎵撳紑鍟嗗搧璇︽儏椤甸潰锛屼繚鐣欏脊绐�
+                    this.openGoodsDetailInNewTab(params.row.pageParams);
+                  }
+                }
+              }, '鏌ョ湅鍟嗗搧璇︽儏') : null,
+              // 褰撻〉闈㈢被鍨嬫槸璁㈠崟璇︽儏椤甸潰鏃舵樉绀鸿烦杞寜閽�
+              params.row.pageCode === "ORDER_DETAIL" && params.row.pageParams ? h('Button', {
+                props: {
+                  type: 'primary',
+                  size: 'small',
+                  style: { marginLeft: '5px' }
+                },
+                on: {
+                  click: () => {
+                    // 淇敼锛氫娇鐢ㄦ柊绐楀彛鎵撳紑璁㈠崟璇︽儏椤甸潰锛屼繚鐣欏脊绐�
+                    this.openOrderDetailInNewTab(params.row.pageParams);
+                  }
+                }
+              }, '鏌ョ湅璁㈠崟璇︽儏') : null
+            ].filter(item => item !== null));
+          }
+        }
+      ],
+      data: [],
+      total: 0,
+      // 璇︽儏寮圭獥鐩稿叧鏁版嵁
+      detailModalVisible: false,
+      detailLoading: false,
+      detailTableLoading: false,
+      detailSearchForm: {
+        pageNumber: 1,
+        pageSize: 10,
+        userId: "",
+        userName: "",
+        pageCode: "",
+        beginDate: startTime,
+        endDate: endTime
+      },
+      detailColumns: [
+        {
+          title: "鐢ㄦ埛Id",
+          key: "userId",
+          minWidth: 120
+        },
+        {
+          title: "鐢ㄦ埛鏄电О",
+          key: "nickName",
+          minWidth: 100
+        },
+
+        {
+          title: "椤甸潰绫诲瀷",
+          key: "pageCode",
+          minWidth: 150,
+          render: (h, params) => {
+            const pageCodes = {
+              "RECOMMEND_VIDEO": "棣栭〉鎺ㄨ崘瑙嗛",
+              "HEALTH_VIDEO": "澶у仴搴疯棰�",
+              "KITCHEN_VIDEO": "绁炲帹瑙嗛",
+              "RECOMMEND_VIDEO_GOODS": "瑙嗛鎺ㄨ崘鍟嗗搧椤甸潰",
+              "RECOMMEND_VIDEO_LEFT_GOODS": "宸︽粦鎺ㄨ崘鍟嗗搧",
+              "RECOMMEND_VIDEO_RIGHT_VIDEO": "鍙虫粦瑙嗛椤甸潰",
+              "FILL_ORDER": "濉啓璁㈠崟",
+              "PAY_ORDER": "鏀粯璁㈠崟",
+              "PAY_SUCCESS": "鏀粯鎴愬姛",
+              "ORDER_LIST": "璁㈠崟鍒楄〃",
+              "ORDER_DETAIL": "璁㈠崟璇︽儏",
+              "PRIZE_DETAIL": "鎶藉娲诲姩",
+              "CART_LIST": "璐墿杞�",
+              "TBA_BAR_MY": "鎴戠殑椤甸潰",
+              "SHOPPING_SQUARE": "鍟嗗搧骞垮満",
+              "ACTIVITY_LIST": "娲诲姩鍒楄〃",
+              "ACTIVITY_DETAIL": "娲诲姩璇︽儏",
+              "PUBLISH_VIDEO": "瑙嗛鍙戝竷",
+              "SWIPER_GOODS": "婊戝姩鍟嗗搧",
+              "COUPON_CENTER": "棰嗗嵎涓績",
+              "MY_COUPON": "鎴戠殑浼樻儬鍗�",
+              "AFTER_SALE": "鍞悗鍒楄〃",
+              "APPLY_SALE": "鐢宠鍞悗",
+              "REFUND_ORDER": "閫�娆�/閫�璐�",
+              "GOODS_DETAILS": "鍟嗗搧璇︽儏椤甸潰"
+            };
+            return h('span', pageCodes[params.row.pageCode] || params.row.pageCode);
+          }
+        },
+        {
+          title: "杩涘叆鏃堕棿",
+          key: "enterTime",
+          minWidth: 160
+        },
+        {
+          title: "绂诲紑鏃堕棿",
+          key: "leaveTime",
+          minWidth: 160
+        },
+        {
+          title: "鍋滅暀鏃堕暱(绉�)",
+          key: "staySeconds",
+          minWidth: 120
+        },
+        {
+          title: "鎿嶄綔",
+          key: "action",
+          width: 150,
+          align: "center",
+          render: (h, params) => {
+            // 鍙湁褰撻〉闈㈢被鍨嬫槸鍟嗗搧璇︽儏椤甸潰鏃舵墠鏄剧ず璺宠浆鎸夐挳
+            if (params.row.pageCode === "GOODS_DETAILS" && params.row.pageParams) {
+              return h('div', [
+                h('Button', {
+                  props: {
+                    type: 'primary',
+                    size: 'small'
+                  },
+                  on: {
+                    click: () => {
+                      // 淇敼锛氫娇鐢ㄦ柊绐楀彛鎵撳紑鍟嗗搧璇︽儏椤甸潰锛屼繚鐣欏脊绐�
+                      this.openGoodsDetailInNewTab(params.row.pageParams);
+                    }
+                  }
+                }, '鏌ョ湅鍟嗗搧璇︽儏')
+              ]);
+            }
+            // 褰撻〉闈㈢被鍨嬫槸璁㈠崟璇︽儏椤甸潰鏃舵樉绀鸿烦杞寜閽�
+            if (params.row.pageCode === "ORDER_DETAIL" && params.row.pageParams) {
+              return h('div', [
+                h('Button', {
+                  props: {
+                    type: 'primary',
+                    size: 'small'
+                  },
+                  on: {
+                    click: () => {
+                      // 淇敼锛氫娇鐢ㄦ柊绐楀彛鎵撳紑璁㈠崟璇︽儏椤甸潰锛屼繚鐣欏脊绐�
+                      this.openOrderDetailInNewTab(params.row.pageParams);
+                    }
+                  }
+                }, '鏌ョ湅璁㈠崟璇︽儏')
+              ]);
+            }
+            return h('span', '-');
+          }
+        }
+      ],
+      detailData: [],
+      detailTotal: 0
+    };
+  },
+  methods: {
+    // 鍒濆鍖栨暟鎹�
+    init() {
+      console.log("鎵цinit鏂规硶锛屽噯澶囧姞杞芥暟鎹�");
+      // 椤甸潰鍒濆鍖栨椂鐩存帴璋冪敤锛屾鏌ユ椂闂村弬鏁�
+      this.$nextTick(() => {
+        console.log("init鏂规硶涓殑nextTick鍥炶皟锛岃皟鐢╣etDataListWithoutValidation");
+        this.getDataListWithoutValidation();
+      });
+    },
+    // 鑾峰彇鏈�杩�7澶╃殑寮�濮嬫椂闂达紙鍖呭惈浠婂ぉ锛屾�诲叡7澶╋級
+    getDefaultBeginDate() {
+      const now = new Date();
+      const startTime = new Date(now);
+      startTime.setDate(startTime.getDate() - 6); // 7澶╁墠锛屽寘鍚粖澶�
+      startTime.setHours(0, 0, 0, 0);
+      return startTime;
+    },
+    // 鑾峰彇褰撳ぉ缁撴潫鏃堕棿
+    getDefaultEndDate() {
+      const now = new Date();
+      now.setHours(23, 59, 59, 999);
+      return now;
+    },
+    // 涓嶈繘琛岃〃鍗曢獙璇佺殑鏁版嵁鑾峰彇
+    getDataListWithoutValidation() {
+      this.loading = true;
+      console.log("寮�濮嬭姹傛暟鎹�:", this.searchForm);
+      console.log("寮�濮嬫椂闂村��:", this.searchForm.beginDate);
+      console.log("缁撴潫鏃堕棿鍊�:", this.searchForm.endDate);
+      console.log("寮�濮嬫椂闂寸被鍨�:", typeof this.searchForm.beginDate);
+      console.log("缁撴潫鏃堕棿绫诲瀷:", typeof this.searchForm.endDate);
+
+      // 妫�鏌ユ椂闂村弬鏁版槸鍚︿负绌�
+      if (!this.searchForm.beginDate) {
+        console.log("寮�濮嬫椂闂翠负绌�");
+      }
+      if (!this.searchForm.endDate) {
+        console.log("缁撴潫鏃堕棿涓虹┖");
+      }
+
+      // 澶勭悊鏃堕棿鏍煎紡锛屼娇鐢ㄦ纭殑鍙傛暟鍚嶇ОbeginDate鍜宔ndDate
+      const params = { ...this.searchForm };
+      if (params.beginDate) {
+        params.beginDate = this.formatDate(params.beginDate);
+        console.log("鏍煎紡鍖栧悗鐨勫紑濮嬫椂闂�:", params.beginDate);
+      } else {
+        this.loading = false;
+        this.$Message.error("寮�濮嬫椂闂翠笉鑳戒负绌�");
+        return;
+      }
+      if (params.endDate) {
+        params.endDate = this.formatDate(params.endDate);
+        console.log("鏍煎紡鍖栧悗鐨勭粨鏉熸椂闂�:", params.endDate);
+      } else {
+        this.loading = false;
+        this.$Message.error("缁撴潫鏃堕棿涓嶈兘涓虹┖");
+        return;
+      }
+
+      console.log("鏈�缁堣姹傚弬鏁�:", params);
+
+      userStayListRecord(params).then(res => {
+        console.log("璇锋眰鎴愬姛:", res);
+        if (res.code === 200) {
+          this.data = res.data.records || [];
+          this.total = res.data.total || 0;
+          console.log("鏁版嵁鍔犺浇瀹屾垚锛岃褰曟暟:", this.data.length);
+        } else {
+          this.$Message.error(res.msg || "鑾峰彇鏁版嵁澶辫触");
+          console.error("鑾峰彇鏁版嵁澶辫触:", res.msg || "鏈煡閿欒");
+        }
+      }).catch(err => {
+        console.error("璇锋眰澶辫触:", err);
+        this.$Message.error("璇锋眰寮傚父: " + (err.message || "鏈煡閿欒"));
+      }).finally(() => {
+        // 纭繚鍦ㄤ换浣曟儏鍐典笅閮藉叧闂璴oading鐘舵��
+        this.loading = false;
+        console.log("璇锋眰瀹屾垚锛宭oading鐘舵�佸凡鍏抽棴");
+      });
+    },
+    // 甯﹁〃鍗曢獙璇佺殑鏁版嵁鑾峰彇
+    getDataList() {
+      this.$refs.searchForm.validate((valid) => {
+        if (valid) {
+          this.getDataListWithoutValidation();
+        } else {
+          this.loading = false; // 楠岃瘉澶辫触鏃朵篃瑕佸叧闂璴oading
+          this.$Message.error("璇锋鏌ヨ〃鍗曡緭鍏ユ槸鍚︽纭�");
+        }
+      });
+    },
+    // 鏍煎紡鍖栨棩鏈熸椂闂�
+    formatDate(date) {
+      if (!date) {
+        console.warn("鏃ユ湡鏍煎紡鍖栨椂浼犲叆浜嗙┖鍊�");
+        return "";
+      }
+      try {
+        const formattedDate = formatDate(new Date(date), 'yyyy-MM-dd hh:mm:ss');
+        console.log("鏃ユ湡鏍煎紡鍖栫粨鏋�:", formattedDate);
+        return formattedDate;
+      } catch (error) {
+        console.error("鏃ユ湡鏍煎紡鍖栧嚭閿�:", error);
+        // 濡傛灉鏍煎紡鍖栧嚭閿欙紝灏濊瘯浣跨敤鍙︿竴绉嶆柟寮�
+        try {
+          const d = new Date(date);
+          const year = d.getFullYear();
+          const month = ('0' + (d.getMonth() + 1)).slice(-2);
+          const day = ('0' + d.getDate()).slice(-2);
+          const hours = ('0' + d.getHours()).slice(-2);
+          const minutes = ('0' + d.getMinutes()).slice(-2);
+          const seconds = ('0' + d.getSeconds()).slice(-2);
+          const formatted = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+          console.log("澶囩敤鏃ユ湡鏍煎紡鍖栫粨鏋�:", formatted);
+          return formatted;
+        } catch (backupError) {
+          console.error("澶囩敤鏃ユ湡鏍煎紡鍖栦篃鍑洪敊:", backupError);
+          return "";
+        }
+      }
+    },
+    // 鏀瑰彉椤垫暟
+    changePage(page) {
+      this.searchForm.pageNumber = page;
+      this.getDataListWithoutValidation();
+    },
+    // 鏀瑰彉椤电爜
+    changePageSize(pageSize) {
+      this.searchForm.pageNumber = 1;
+      this.searchForm.pageSize = pageSize;
+      this.getDataListWithoutValidation();
+    },
+    // 鎼滅储
+    handleSearch() {
+      console.log("鎼滅储鎸夐挳琚偣鍑�");
+      this.searchForm.pageNumber = 1;
+      // 鐩存帴妫�鏌ユ椂闂村弬鏁帮紝涓嶄娇鐢ㄨ〃鍗曢獙璇�
+      console.log("寮�濮嬫悳绱紝妫�鏌ユ椂闂村弬鏁�");
+      // 妫�鏌ユ椂闂村弬鏁版槸鍚︿负绌�
+      if (!this.searchForm.beginDate || !this.searchForm.endDate) {
+        this.$Message.error("寮�濮嬫椂闂村拰缁撴潫鏃堕棿涓嶈兘涓虹┖");
+        return;
+      }
+      this.getDataListWithoutValidation();
+    },
+    // 閲嶇疆
+    handleReset() {
+      this.searchForm.pageNumber = 1;
+      this.searchForm.pageSize = 10;
+      this.searchForm.userName = "";
+      this.searchForm.pageCode = "";
+      // 浣跨敤姝g‘鐨勫弬鏁板悕绉板拰鏂规硶
+      this.searchForm.beginDate = this.getDefaultBeginDate();
+      this.searchForm.endDate = this.getDefaultEndDate();
+      // 閲嶇疆鍚庨噸鏂板姞杞芥暟鎹�
+      this.$nextTick(() => {
+        this.getDataListWithoutValidation();
+      });
+    },
+    // 鍦ㄦ柊鏍囩椤典腑鎵撳紑鍟嗗搧璇︽儏椤甸潰
+    openGoodsDetailInNewTab(pageParams) {
+      try {
+        // 瑙f瀽pageParams JSON瀛楃涓�
+        const params = JSON.parse(pageParams);
+        console.log("瑙f瀽鍚庣殑鍙傛暟:", params);
+
+        // 妫�鏌ュ繀瑕佸弬鏁�
+        if (!params.id || !params.goodsId) {
+          this.$Message.error("鍟嗗搧鍙傛暟涓嶅畬鏁�");
+          return;
+        }
+
+        // 鏋勯�犲晢鍝佽鎯呴〉闈㈢殑URL
+        const routeData = this.$router.resolve({
+          name: "goods-detail",
+          query: {
+            id: params.goodsId
+          }
+        });
+
+        // 鍦ㄦ柊鏍囩椤典腑鎵撳紑
+        window.open(routeData.href, '_blank');
+      } catch (error) {
+        console.error("瑙f瀽pageParams鍑洪敊:", error);
+        this.$Message.error("鍙傛暟瑙f瀽澶辫触");
+      }
+    },
+    // 鍦ㄦ柊鏍囩椤典腑鎵撳紑璁㈠崟璇︽儏椤甸潰
+    openOrderDetailInNewTab(pageParams) {
+      try {
+        // 瑙f瀽pageParams JSON瀛楃涓�
+        const params = JSON.parse(pageParams);
+        console.log("瑙f瀽鍚庣殑鍙傛暟:", params);
+
+        // 妫�鏌ュ繀瑕佸弬鏁�
+        if (!params.sn) {
+          this.$Message.error("璁㈠崟鍙傛暟涓嶅畬鏁�");
+          return;
+        }
+
+        // 鏋勯�犺鍗曡鎯呴〉闈㈢殑URL
+        const routeData = this.$router.resolve({
+          name: "order-detail",
+          query: {
+            sn: params.sn
+          }
+        });
+
+        // 鍦ㄦ柊鏍囩椤典腑鎵撳紑
+        window.open(routeData.href, '_blank');
+      } catch (error) {
+        console.error("瑙f瀽pageParams鍑洪敊:", error);
+        this.$Message.error("鍙傛暟瑙f瀽澶辫触");
+      }
+    },
+    // 鏄剧ず璇︽儏寮圭獥
+    showDetailModal(userId) {
+      this.detailSearchForm.userId = userId;
+      this.detailSearchForm.pageNumber = 1;
+      this.detailSearchForm.userName = "";
+      this.detailSearchForm.pageCode = "";
+      this.detailSearchForm.beginDate = this.getDefaultBeginDate();
+      this.detailSearchForm.endDate = this.getDefaultEndDate();
+      this.detailModalVisible = true;
+      this.getDetailData();
+    },
+    // 鑾峰彇璇︽儏鏁版嵁
+    getDetailData() {
+      this.detailTableLoading = true;
+
+      // 澶勭悊鏃堕棿鏍煎紡
+      const params = { ...this.detailSearchForm };
+      if (params.beginDate) {
+        params.beginDate = this.formatDate(params.beginDate);
+      }
+      if (params.endDate) {
+        params.endDate = this.formatDate(params.endDate);
+      }
+
+      // 璋冪敤涓巙serAction.vue鐩稿悓鐨勬帴鍙o紝浣嗗鍔爑serId鍙傛暟
+      userStayList(params).then(res => {
+        if (res.code === 200) {
+          this.detailData = res.data.records || [];
+          this.detailTotal = res.data.total || 0;
+        } else {
+          this.$Message.error(res.msg || "鑾峰彇璇︽儏鏁版嵁澶辫触");
+        }
+      }).catch(err => {
+        console.error("璇锋眰璇︽儏鏁版嵁澶辫触:", err);
+        this.$Message.error("璇锋眰寮傚父: " + (err.message || "鏈煡閿欒"));
+      }).finally(() => {
+        this.detailTableLoading = false;
+      });
+    },
+    // 鏀瑰彉璇︽儏椤垫暟
+    changeDetailPage(page) {
+      this.detailSearchForm.pageNumber = page;
+      this.getDetailData();
+    },
+    // 鏀瑰彉璇︽儏椤电爜
+    changeDetailPageSize(pageSize) {
+      this.detailSearchForm.pageNumber = 1;
+      this.detailSearchForm.pageSize = pageSize;
+      this.getDetailData();
+    },
+    // 璇︽儏鎼滅储
+    handleDetailSearch() {
+      this.detailSearchForm.pageNumber = 1;
+      this.getDetailData();
+    },
+    // 璇︽儏閲嶇疆
+    handleDetailReset() {
+      this.detailSearchForm.pageNumber = 1;
+      this.detailSearchForm.pageSize = 10;
+      this.detailSearchForm.userName = "";
+      this.detailSearchForm.pageCode = "";
+      this.detailSearchForm.beginDate = this.getDefaultBeginDate();
+      this.detailSearchForm.endDate = this.getDefaultEndDate();
+      this.getDetailData();
+    }
+  },
+  mounted() {
+    console.log("缁勪欢宸叉寕杞斤紝寮�濮嬪垵濮嬪寲鏁版嵁");
+    this.$nextTick(() => {
+      console.log("nextTick鍥炶皟锛岃皟鐢╥nit鏂规硶");
+      this.init();
+    });
+  },
+  // 娣诲姞璺敱鐩戝惉锛屽鐞嗛〉闈㈠洖鏄鹃棶棰�
+  watch: {
+    $route(to, from) {
+      // 褰撹矾鐢卞彂鐢熷彉鍖栨椂锛屽鏋滃綋鍓嶆槸userActionRecord椤甸潰锛屽垯閲嶆柊鍔犺浇鏁版嵁
+      if (to.name === 'user-action-record') {
+        this.$nextTick(() => {
+          this.getDataListWithoutValidation();
+        });
+      }
+    }
+  }
+};
+</script>
+
+<style scoped>
+.search-btn {
+  margin-right: 10px;
+}
+.mt_10 {
+  margin-top: 10px;
+}
+
+/* 鐢ㄦ埛琛屼负鍗$墖鏍峰紡 */
+.user-action-card {
+  height: calc(100vh - 100px);
+  display: flex;
+  flex-direction: column;
+}
+
+/* 琛ㄦ牸瀹瑰櫒鏍峰紡 */
+.table-container {
+  flex: 1;
+  overflow: hidden;
+  display: flex;
+  flex-direction: column;
+}
+
+/* 琛ㄦ牸鏍峰紡 */
+.table-container /deep/ .ivu-table-wrapper {
+  flex: 1;
+  overflow-y: auto;
+  height: 100%;
+}
+
+/* 鎼滅储琛ㄥ崟鏍峰紡 */
+.search-form {
+  padding: 16px 0;
+}
+
+/* 鍒嗛〉鏍峰紡 */
+.mt_10 {
+  padding: 10px 0;
+}
+</style>
diff --git a/seller/src/main.js b/seller/src/main.js
index a4e8967..85c7b2f 100644
--- a/seller/src/main.js
+++ b/seller/src/main.js
@@ -72,6 +72,7 @@
 Vue.prototype.$mainColor = mainColor;
 Vue.prototype.md5 = md5;
 Vue.prototype.endpoint = "https://lmk-1356772813.cos.ap-chengdu.myqcloud.com"; // 娣诲姞endpoint閰嶇疆
+Vue.prototype.QRcodeBaseUrl = "https://www.meiyikuang.com"
 const PC_URL = BASE.PC_URL; // 璺宠浆涔板绔湴鍧� pc绔�
 const WAP_URL = BASE.WAP_URL; // 璺宠浆涔板绔湴鍧� wap绔�
 Vue.prototype.linkTo = function (goodsId, skuId) {
diff --git a/seller/src/views/activity/store-prize-proof.vue b/seller/src/views/activity/store-prize-proof.vue
index fa62a06..1769d56 100644
--- a/seller/src/views/activity/store-prize-proof.vue
+++ b/seller/src/views/activity/store-prize-proof.vue
@@ -8,48 +8,6 @@
         :label-width="75"
         class="search-form mb_10"
       >
-<!--        <Form-item label="浼樻儬鍒稿悕绉�" prop="couponName">-->
-<!--          <Input-->
-<!--            type="text"-->
-<!--            v-model="searchForm.couponName"-->
-<!--            placeholder="璇疯緭鍏ヤ紭鎯犲埜鍚嶇О"-->
-<!--            clearable-->
-<!--            style="width: 200px"-->
-<!--          />-->
-<!--        </Form-item>-->
-<!--        <Form-item label="浼氬憳鍚嶇О" prop="memberName">-->
-<!--          <Input-->
-<!--            type="text"-->
-<!--            v-model="searchForm.memberName"-->
-<!--            placeholder="璇疯緭鍏ヤ細鍛樺悕绉�"-->
-<!--            clearable-->
-<!--            style="width: 200px"-->
-<!--          />-->
-<!--        </Form-item>-->
-<!--        <Form-item label="鑾峰彇鏂瑰紡" prop="getType">-->
-<!--          <Select-->
-<!--            v-model="searchForm.getType"-->
-<!--            placeholder="璇烽�夋嫨"-->
-<!--            clearable-->
-<!--            style="width: 200px"-->
-<!--          >-->
-<!--            <Option value="FREE">鍏嶈垂鑾峰彇</Option>-->
-<!--            <Option value="ACTIVITY">娲诲姩鑾峰彇</Option>-->
-<!--          </Select>-->
-<!--        </Form-item>-->
-<!--        <Form-item label="浼樻儬鍒哥姸鎬�" prop="memberCouponStatus">-->
-<!--          <Select-->
-<!--            v-model="searchForm.memberCouponStatus"-->
-<!--            placeholder="璇烽�夋嫨"-->
-<!--            clearable-->
-<!--            style="width: 200px"-->
-<!--          >-->
-<!--            <Option value="NEW">宸查鍙�</Option>-->
-<!--            <Option value="USED">宸蹭娇鐢�</Option>-->
-<!--            <Option value="EXPIRE">宸茶繃鏈�</Option>-->
-<!--            <Option value="CLOSED">宸蹭綔搴�</Option>-->
-<!--          </Select>-->
-<!--        </Form-item>-->
         <Button
           @click="handleSearch"
           type="primary"
@@ -74,6 +32,12 @@
             class="add-btn"
             v-if="row.material === 'NOT_GENERATE' && row.claimStatus ==='CLAIM'"
           >琛ュ厖鏉愭枡</Button>
+          <Button
+            style="margin-left: 10px"
+            @click="generalQrCode(row)"
+            type="primary"
+            class="add-btn"
+          >鏌ョ湅浜岀淮鐮�</Button>
         </template>
       </Table>
       <Row type="flex" justify="end" class="mt_10">
@@ -128,15 +92,41 @@
       </div>
     </Modal>
 
+    <Modal
+      v-model="showGeneralQrCode"
+      title="浜岀淮鐮�"
+      width="800"
+      :mask-closable="false"
+      :loading="codeLoading"
+    >
+      <vue-qr
+        :text="QRCodeUrl"
+        :margin="0"
+        colorDark="#000"
+        colorLight="#fff"
+        :size="150"
+      ></vue-qr>
+      <div slot="footer">
+        <Button type="text" @click="closeGeneralQrCode">鍏抽棴</Button>
+      </div>
+    </Modal>
+
   </div>
 </template>
 <script>
+import vueQr from "vue-qr";
 import { uploadFileByLmk, delByKey } from "@/api/common.js"
 import { getPage,add } from "@/api/prize-store.js"
 export default {
+  components:{
+    "vue-qr": vueQr,
+  },
   name: "store-prize-proof",
   data() {
     return {
+      QRCodeUrl:"",
+      showGeneralQrCode:false,
+      codeLoading:false,
       submitLoading:false,
       file: null,
       tempUrl:null,
@@ -213,6 +203,18 @@
     };
   },
   methods: {
+    closeGeneralQrCode(){
+      this.showGeneralQrCode = false;
+      this.QRCodeUrl = '';
+    },
+    generalQrCode(row){
+      this.QRCodeUrl = '';
+      this.showGeneralQrCode = true
+      this.codeLoading = true;
+
+      this.QRCodeUrl = this.QRcodeBaseUrl+"/scanpage/prize?id="+ row.id;
+
+    },
     // 鏂囦欢涓婁紶鍓嶅鐞�
     handleBeforeUpload(file) {
         this.file = file;

--
Gitblit v1.8.0