Browse Source

feat:"添加退款提醒发送记录查询功能"

soobin 10 months ago
parent
commit
11da0d1468

+ 15 - 1
src/assets/language/en.json

@@ -1278,7 +1278,21 @@
       "cardName": "Card Name",
       "mp": "Billing Phone",
       "successful": "Successful"
-    }
+    },
+    "refundRemind": "Refund reminder record",
+    "sn": "Order number",
+    "clientId": "Machine number",
+    "phone": "Receiving number",
+    "sendTime": "Sending time",
+    "sendWait": "Wait for return",
+    "sendSucess": "Received successfully",
+    "sendFail": "Receive failure",
+    "remark": "Cause of failure",
+    "snPlaceholder": "Please enter the order number",
+    "clientIdPlaceholder": "Please enter the machine number",
+    "searchDate": "Time frame",
+    "searchDatePlaceholder": "Click to select a time frame",
+    "chooseTitle": "Select the date"
   },
   "uniPay": {
     "selfRecharging": "Self recharging",

+ 15 - 1
src/assets/language/ja.json

@@ -1256,7 +1256,21 @@
                 "statePlace": "状態を選択してください",
                 "filterBtn": "クリックして検索"
             }
-        }
+        },
+        "refundRemind": "退款提醒记录",
+        "sn": "订单编号",
+        "clientId": "设备编码",
+        "phone": "接收号码",
+        "sendTime": "发送时间",
+        "sendWait": "等待返回",
+        "sendSucess": "接收成功",
+        "sendFail": "接收失败",
+        "remark": "失败原因",
+        "snPlaceholder": "请输入订单编号",
+        "clientIdPlaceholder": "请输入设备编号",
+        "searchDate": "时间范围",
+        "searchDatePlaceholder": "点击选择时间范围",
+        "chooseTitle": "选择年月"
     },
     "joinpayMchCheck": {
         "convergence": "ユニペイ",

+ 15 - 1
src/assets/language/zh.json

@@ -1322,7 +1322,21 @@
       "cardName": "卡户名",
       "mp": "结算手机号",
       "successful": "审核成功"
-    }
+    },
+    "refundRemind": "退款提醒记录",
+    "sn": "订单编号",
+    "clientId": "设备编码",
+    "phone": "接收号码",
+    "sendTime": "发送时间",
+    "sendWait": "等待返回",
+    "sendSucess": "接收成功",
+    "sendFail": "接收失败",
+    "remark": "失败原因",
+    "snPlaceholder": "请输入订单编号",
+    "clientIdPlaceholder": "请输入设备编号",
+    "searchDate": "时间范围",
+    "searchDatePlaceholder": "点击选择时间范围",
+    "chooseTitle": "选择年月"
   },
   "uniPay": {
     "selfRecharging": "自充值",

BIN
src/assets/order/spunSugar/goods/D01.png


BIN
src/assets/order/spunSugar/goods/D02.png


BIN
src/assets/order/spunSugar/goods/D03.png


BIN
src/assets/order/spunSugar/goods/D04.png


BIN
src/assets/order/spunSugar/goods/D05.png


BIN
src/assets/order/spunSugar/goods/D06.png


BIN
src/assets/order/spunSugar/goods/D07.png


BIN
src/assets/order/spunSugar/goods/D08.png


BIN
src/assets/order/spunSugar/goods/D09.png


BIN
src/assets/order/spunSugar/goods/D10.png


BIN
src/assets/order/spunSugar/goods/D11.png


BIN
src/assets/order/spunSugar/goods/D12.png


BIN
src/assets/order/spunSugar/goods/E01.png


BIN
src/assets/order/spunSugar/goods/E02.png


BIN
src/assets/taskMessage/refundIcon.png


+ 7 - 0
src/router/index.js

@@ -442,6 +442,13 @@ const router = createRouter({
       component: () => import("@/views/taskMessage/proportion"),
       meta: { index: 1 },
     },
+    // 分销审批
+    {
+      path: "/refundReminder",
+      name: "refundReminder",
+      component: () => import("@/views/taskMessage/refundReminder"),
+      meta: { index: 1 },
+    },
     // 订单中心
     {
       path: "/orderCenter",

+ 4 - 0
src/service/taskMessage/index.js

@@ -41,6 +41,10 @@ export function getTaskProportionList(params) {
 export function changeProportionStatus(params) {
   return axios.get(`/SZWL-SERVER/tProportionCheck/shenhe?${stringToUrl(params)}`);
 }
+// 获取退款短信提醒发送记录
+export function refundRecord(params) {
+  return axios.post(`/ORDER-SERVER/refundSendRecord/list`, params);
+}
 
 
 

+ 11 - 0
src/styles/taskMessage/index.less

@@ -50,6 +50,17 @@
           right: 0.15rem;
           top: 0.4rem;
         }
+
+        &.refundIcon::after {
+          content: '';
+          position: absolute;
+          background: #fff url('../../assets/taskMessage/refundIcon.png') top center no-repeat;
+          background-size: 100%;
+          width: 0.55rem;
+          height: 0.55rem;
+          right: 0.2rem;
+          top: 0.45rem;
+        }
       }
 
       .taskRight {

+ 11 - 0
src/views/taskMessage/index.less

@@ -50,6 +50,17 @@
           right: 0.15rem;
           top: 0.4rem;
         }
+
+        &.refundIcon::after {
+          content: '';
+          position: absolute;
+          background: #fff url('../../assets/taskMessage/refundIcon.png') top center no-repeat;
+          background-size: 100%;
+          width: 0.6rem;
+          height: 0.6rem;
+          right: 0.15rem;
+          top: 0.4rem;
+        }
       }
 
       .taskRight {

+ 6 - 0
src/views/taskMessage/index.vue

@@ -15,6 +15,12 @@
           <div class="taskTitle">{{ $t('taskMessage.distributionApplicationApproval') }}</div>
         </div>
       </div>
+      <div v-if="user.type < 2" class="taskListRow flex-col" @click="pushPageList('/refundReminder')">
+        <div class="taskIcon refundIcon"></div>
+        <div class="taskRight">
+          <div class="taskTitle">{{ $t('taskMessage.refundRemind') }}</div>
+        </div>
+      </div>
       <!-- <div class="taskListRow flex-col" @click="pushPageList('/taskJoinPayMchCheck')">
         <div class="taskIcon withIcon"></div>
         <div class="taskRight">

+ 217 - 0
src/views/taskMessage/refundReminder/index.vue

@@ -0,0 +1,217 @@
+<template>
+    <!-- 分销申请审批 -->
+    <div class="taskMessagePage flex-col">
+        <s-header :name="$t('taskMessage.refundRemind')" :noback="false"></s-header>
+        <div class="taskMessageBox flex-col">
+            <van-list v-model:loading="loading" v-model:error="error" :error-text="$t('common.reqFailClkReload')"
+                :finished="finished" :finished-text="$t('common.noMoreTxt')" offset="300" :immediate-check="false"
+                @load="onLoad">
+                <div class="searchRow flex-row justify-between">
+                    <div class="flex-col">
+                        <div class="flex-row justify-between bd3">
+                            <div class="flex-col outer4 proportionIcon"></div>
+                            <span class="flex-col txt2">{{ $t('taskMessage.total') }}<span class="discountNumber">{{
+            alarmHistoryTotal
+        }}</span>{{ $t('taskMessage.recordsInTotal') }}</span>
+                        </div>
+                    </div>
+                    <div @click="noticeClk" class="main5 l-flex-RC">
+                        <img class="label2 o-mr-5" src="../../../assets/device/searchIcon.png" />
+                    </div>
+                </div>
+                <div class="listBox">
+                    <div v-for="(item, index) in alarmHistoryList" :key="index" class="listItem">
+                        <div class="itemBox">
+                            <div class="itemRow">
+                                <span class="itemTitle">{{ $t('taskMessage.sn') }}:&nbsp;</span>
+                                {{ item.sn }}
+                            </div>
+                            <div class="itemRow">
+                                <span class="itemTitle">{{ $t('taskMessage.clientId') }}:&nbsp;</span>
+                                {{ item.clientId }}
+                            </div>
+                            <div class="itemRow">
+                                <span class="itemTitle">{{ $t('taskMessage.phone') }}:&nbsp;</span>
+                                {{ item.phone }}
+                            </div>
+                            <div class="itemRow">
+                                <span class="itemTitle">{{ $t('taskMessage.sendTime') }}:&nbsp;</span>
+                                {{ showDateTime(item.createDate) }}
+                            </div>
+                            <div class="itemRow" v-if="item.status === 2">
+                                <span class="itemTitle">{{ $t('taskMessage.remark') }}:&nbsp;</span>
+                                {{ item.remark }}
+                            </div>
+                            <div class="itemRow" style="display: flex; justify-content: flex-end">
+                                <span v-if="item.status === 0 && user.type > 1" style="color: #FFA500"> {{
+            $t('taskMessage.toBeApproved') }}</span>
+                                <span v-if="item.status === 1" style="color: #1989fa"> {{ $t('taskMessage.sendSucess')
+                                    }}</span>
+                                <span v-if="item.checkType === 2" style="color: #ff0033"> {{ $t('taskMessage.sendFail')
+                                    }}</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </van-list>
+        </div>
+
+        <!-- 筛选弹窗 -->
+        <kDialog :dialogTitle="$t('taskMessage.equipmentInit.searchPop.title')"
+            :confirmBtnTxt="$t('taskMessage.equipmentInit.searchPop.filterBtn')" ref="kDialogRef"
+            @confirmclk="confirmClk">
+            <template #content>
+                <div class="cust_vantBorder">
+                    <van-field clearable v-model="searchParams.sn" :placeholder="$t('taskMessage.snPlaceholder')
+            " :label="$t('taskMessage.sn')" />
+                    <van-field clearable v-model="searchParams.clientId" :placeholder="$t('taskMessage.clientIdPlaceholder')
+            " :label="$t('taskMessage.clientId')" />
+                    <van-field v-model="searchDate" is-link readonly :label="$t('taskMessage.searchDate')" :placeholder="$t('taskMessage.searchDatePlaceholder')"
+                        @click="showPicker = true" />
+                </div>
+            </template>
+        </kDialog>
+
+        <van-popup v-model:show="showPicker" position="bottom">
+            <van-date-picker @confirm="onConfirm" :title="$t('taskMessage.chooseTitle')" :min-date="minDate" :max-date="maxDate"
+                @cancel="showPicker = false" :columns-type="columnsType" />
+        </van-popup>
+    </div>
+</template>
+
+<script>
+import { onMounted, reactive, ref } from "vue";
+import sHeader from "@/components/SimpleHeader";
+import {
+    refundRecord
+} from "@/service/taskMessage";
+import { showFailToast } from "vant";
+import { getLoginUser, styleUrl } from "@/common/js/utils";
+import dateUtil from "@/utils/dateUtil";
+import kDialog from "@/components/commom/kDialog/index.vue";
+
+export default {
+    components: { sHeader, kDialog },
+    setup() {
+        const kDialogRef = ref(null);
+        const showPicker = ref(false);
+        const searchDate = ref('');
+        const minDate = new Date(2024, 9, 1);
+        const maxDate = new Date();
+        const columnsType = ['year', 'month'];
+        let startTime = null;
+        let endTime = null;
+        const onConfirm = ({ selectedValues }) => {
+            searchDate.value = selectedValues[0] + '年' + selectedValues[1] + '月';
+            startTime = new Date(selectedValues[0] + '-' + selectedValues[1] + '-01');
+            endTime = new Date(selectedValues[0], selectedValues[1], 0);
+            searchParams.startTime =
+                dateUtil.formateDate(startTime, "yyyy-MM-dd") + " 00:00:00";
+            searchParams.endTime =
+                dateUtil.formateDate(endTime, "yyyy-MM-dd") + " 23:59:59";
+            showPicker.value = false;
+        };
+        // 点击筛选
+        const noticeClk = () => {
+            kDialogRef.value.openDialog();
+        };
+        // 点击查询按钮
+        const confirmClk = () => {
+            searchRecordList();
+        };
+        const user = getLoginUser();
+        const loading = ref(false); // 加载状态
+        const error = ref(false); // 错误状态
+        const finished = ref(false); // 结束翻页状态
+        const alarmHistoryList = ref([]); // 列表集合
+        const alarmHistoryTotal = ref(0); // 列表总数
+        const searchParams = reactive({
+            sendAdminId: "", // 当前登录账户的id
+            clientId: "", // 设备编号
+            current: 1, // 当前页
+            size: 20, // 页大小
+            username: "", // 商家名称
+            startTime: "", // 开始时间
+            endTime: "", // 结束时间
+            sn: "", // 订单编号
+        });
+        // 滚动加载
+        const onLoad = () => {
+            if (!finished.value) {
+                searchParams.current = searchParams.current + 1;
+                getList();
+            }
+        };
+        // 查询退款提醒记录
+        const searchRecordList = () => {
+            alarmHistoryList.value = [];
+            searchParams.current = 1;
+            getList();
+        };
+        // 获取设备初始化审批列表数据
+        const getList = async () => {
+            // // 把弹窗的筛选条件组合到请求参数里面
+            // if (!isClkReview.value) {
+            //   searchParams.type = searchForm.state;
+            // }
+            // searchParams.userName = searchForm.merchantName;
+            const { data } = await refundRecord(
+                Object.assign({}, searchParams)
+            );
+            if (data.code === "00000") {
+                // 列表值叠加
+                alarmHistoryList.value = alarmHistoryList.value.concat(
+                    data.data.records
+                );
+                alarmHistoryTotal.value = data.data.total;
+                if (alarmHistoryList.value.length === data.data.total) {
+                    finished.value = true;
+                }
+                loading.value = false;
+                console.log(alarmHistoryList);
+            } else {
+                showFailToast(data.message);
+            }
+        };
+
+        // 初始化页面获取列表
+        onMounted(async () => {
+            // 加载样式
+            styleUrl('taskMessage');
+            if (user) {
+                searchParams.sendAdminId = user.id;
+                searchRecordList();
+            }
+        });
+        const showDateTime = (date) => {
+            return date
+                ? dateUtil.formateDate(new Date(date), "yyyy/MM/dd hh:mm:ss")
+                : "";
+        };
+        return {
+            loading,
+            error,
+            finished,
+            onLoad,
+            alarmHistoryList,
+            alarmHistoryTotal,
+            showDateTime,
+            kDialogRef,
+            noticeClk,
+            confirmClk,
+            user,
+            searchParams,
+            searchDate,
+            showPicker,
+            onConfirm,
+            columnsType,
+            minDate,
+            maxDate,
+        };
+    },
+};
+</script>
+
+<style lang="less" scoped>
+@import "../../../common/style/common.less";
+</style>