From c29c852bfe5541106461e0b6a05383f679602dfa Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期四, 23 十月 2025 16:16:19 +0800
Subject: [PATCH] 页面调整
---
manager/src/api/order.js | 8
manager/src/views/member/list/index.vue | 8
manager/src/views/order/order/orderList.vue | 15
manager/src/views/userAction/userActionRecord.vue | 86 ++--
manager/src/views/userAction/userAction.vue | 29
manager/src/views/order/order/storeOrderList.vue | 878 ++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 970 insertions(+), 54 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/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
index 85a6a68..25b7e87 100644
--- a/manager/src/views/userAction/userActionRecord.vue
+++ b/manager/src/views/userAction/userActionRecord.vue
@@ -66,7 +66,7 @@
</Page>
</Row>
</Card>
-
+
<!-- 鐢ㄦ埛琛屼负璇︽儏寮圭獥 -->
<Modal
v-model="detailModalVisible"
@@ -79,19 +79,19 @@
<!-- 璇︽儏绛涢�夋潯浠� -->
<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="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
+ <Select
+ v-model="detailSearchForm.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 }}
@@ -218,7 +218,7 @@
],
columns: [
{
- title: "鐢ㄦ埛鍚嶇О",
+ title: "鐢ㄦ埛id",
key: "userId",
minWidth: 120
},
@@ -295,7 +295,8 @@
},
on: {
click: () => {
- this.goToGoodsDetail(params.row.pageParams);
+ // 淇敼锛氫娇鐢ㄦ柊绐楀彛鎵撳紑鍟嗗搧璇︽儏椤甸潰锛屼繚鐣欏脊绐�
+ this.openGoodsDetailInNewTab(params.row.pageParams);
}
}
}, '鏌ョ湅鍟嗗搧璇︽儏') : null,
@@ -308,7 +309,8 @@
},
on: {
click: () => {
- this.goToOrderDetail(params.row.pageParams);
+ // 淇敼锛氫娇鐢ㄦ柊绐楀彛鎵撳紑璁㈠崟璇︽儏椤甸潰锛屼繚鐣欏脊绐�
+ this.openOrderDetailInNewTab(params.row.pageParams);
}
}
}, '鏌ョ湅璁㈠崟璇︽儏') : null
@@ -333,7 +335,7 @@
},
detailColumns: [
{
- title: "鐢ㄦ埛鍚嶇О",
+ title: "鐢ㄦ埛Id",
key: "userId",
minWidth: 120
},
@@ -342,11 +344,7 @@
key: "nickName",
minWidth: 100
},
- {
- title: "浼氳瘽ID",
- key: "sessionId",
- minWidth: 150
- },
+
{
title: "椤甸潰绫诲瀷",
key: "pageCode",
@@ -383,11 +381,6 @@
}
},
{
- title: "椤甸潰鍚嶇О",
- key: "pageNameCn",
- minWidth: 150
- },
- {
title: "杩涘叆鏃堕棿",
key: "enterTime",
minWidth: 160
@@ -418,7 +411,8 @@
},
on: {
click: () => {
- this.goToGoodsDetail(params.row.pageParams);
+ // 淇敼锛氫娇鐢ㄦ柊绐楀彛鎵撳紑鍟嗗搧璇︽儏椤甸潰锛屼繚鐣欏脊绐�
+ this.openGoodsDetailInNewTab(params.row.pageParams);
}
}
}, '鏌ョ湅鍟嗗搧璇︽儏')
@@ -434,7 +428,8 @@
},
on: {
click: () => {
- this.goToOrderDetail(params.row.pageParams);
+ // 淇敼锛氫娇鐢ㄦ柊绐楀彛鎵撳紑璁㈠崟璇︽儏椤甸潰锛屼繚鐣欏脊绐�
+ this.openOrderDetailInNewTab(params.row.pageParams);
}
}
}, '鏌ョ湅璁㈠崟璇︽儏')
@@ -608,8 +603,8 @@
this.getDataListWithoutValidation();
});
},
- // 璺宠浆鍒板晢鍝佽鎯呴〉闈�
- goToGoodsDetail(pageParams) {
+ // 鍦ㄦ柊鏍囩椤典腑鎵撳紑鍟嗗搧璇︽儏椤甸潰
+ openGoodsDetailInNewTab(pageParams) {
try {
// 瑙f瀽pageParams JSON瀛楃涓�
const params = JSON.parse(pageParams);
@@ -621,20 +616,23 @@
return;
}
- // 璺宠浆鍒板晢鍝佽鎯呴〉闈紝浼犻�掑弬鏁�
- this.$router.push({
+ // 鏋勯�犲晢鍝佽鎯呴〉闈㈢殑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瀽澶辫触");
}
},
- // 璺宠浆鍒拌鍗曡鎯呴〉闈�
- goToOrderDetail(pageParams) {
+ // 鍦ㄦ柊鏍囩椤典腑鎵撳紑璁㈠崟璇︽儏椤甸潰
+ openOrderDetailInNewTab(pageParams) {
try {
// 瑙f瀽pageParams JSON瀛楃涓�
const params = JSON.parse(pageParams);
@@ -646,13 +644,16 @@
return;
}
- // 璺宠浆鍒拌鍗曡鎯呴〉闈紝浼犻�掕鍗曞彿鍙傛暟
- this.$router.push({
+ // 鏋勯�犺鍗曡鎯呴〉闈㈢殑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瀽澶辫触");
@@ -672,7 +673,7 @@
// 鑾峰彇璇︽儏鏁版嵁
getDetailData() {
this.detailTableLoading = true;
-
+
// 澶勭悊鏃堕棿鏍煎紡
const params = { ...this.detailSearchForm };
if (params.beginDate) {
@@ -681,7 +682,7 @@
if (params.endDate) {
params.endDate = this.formatDate(params.endDate);
}
-
+
// 璋冪敤涓巙serAction.vue鐩稿悓鐨勬帴鍙o紝浣嗗鍔爑serId鍙傛暟
userStayList(params).then(res => {
if (res.code === 200) {
@@ -730,6 +731,17 @@
console.log("nextTick鍥炶皟锛岃皟鐢╥nit鏂规硶");
this.init();
});
+ },
+ // 娣诲姞璺敱鐩戝惉锛屽鐞嗛〉闈㈠洖鏄鹃棶棰�
+ watch: {
+ $route(to, from) {
+ // 褰撹矾鐢卞彂鐢熷彉鍖栨椂锛屽鏋滃綋鍓嶆槸userActionRecord椤甸潰锛屽垯閲嶆柊鍔犺浇鏁版嵁
+ if (to.name === 'user-action-record') {
+ this.$nextTick(() => {
+ this.getDataListWithoutValidation();
+ });
+ }
+ }
}
};
</script>
@@ -773,4 +785,4 @@
.mt_10 {
padding: 10px 0;
}
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.8.0