|
@@ -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') }}: </span>
|
|
|
+ {{ item.sn }}
|
|
|
+ </div>
|
|
|
+ <div class="itemRow">
|
|
|
+ <span class="itemTitle">{{ $t('taskMessage.clientId') }}: </span>
|
|
|
+ {{ item.clientId }}
|
|
|
+ </div>
|
|
|
+ <div class="itemRow">
|
|
|
+ <span class="itemTitle">{{ $t('taskMessage.phone') }}: </span>
|
|
|
+ {{ item.phone }}
|
|
|
+ </div>
|
|
|
+ <div class="itemRow">
|
|
|
+ <span class="itemTitle">{{ $t('taskMessage.sendTime') }}: </span>
|
|
|
+ {{ showDateTime(item.createDate) }}
|
|
|
+ </div>
|
|
|
+ <div class="itemRow" v-if="item.status === 2">
|
|
|
+ <span class="itemTitle">{{ $t('taskMessage.remark') }}: </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>
|