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