middleground_H5/pages/logsError/index.vue

420 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="top-level">
<view class="Page_change" :style="{ marginTop: tarbarHeight }">
<u-search
:clearabled="true"
:showAction="false"
shape="square"
v-model="pageModel.sourceData"
:placeholder="'请输入源数据'"
@change="handlerSearchEvent"
></u-search>
</view>
<view
class="listContent"
:style="{ marginTop: isOther ? '220rpx' : '142rpx' }"
>
<view
v-for="(item, index) in tableData"
:key="item.billid"
class="listData"
@click="handlerShowDetails(item, index)"
>
<view class="content">
<text>发送者应用:</text>
<view
style="width: calc(100% - 90px); display: flex; align-items: center"
>
<u--text :lines="1" :text="item.sendAppName" :size="14"></u--text>
<img
src="./push.png"
class="pushBtn"
@click.stop.prevent="pushDetails(item, index)"
/>
</view>
</view>
<view class="content">
<text>状态:</text>
<view :style="[textColor(item.status)]" class="itemName">{{
textData(item.status)
}}</view>
</view>
<view class="content">
<text>接口名称:</text>
<u--text :lines="1" :text="item.receiveApiName" :size="14"></u--text>
</view>
<view class="content">
<text>源数据:</text>
<u--text :lines="1" :text="item.sourceData" :size="14"></u--text>
</view>
<view class="content">
<text>目标数据:</text>
<u--text :lines="1" :text="item.targetData" :size="14"></u--text>
</view>
<view class="content">
<text>错误状态:</text>
<u--text
:lines="1"
:text="item.errorStatus === '1' ? '需要重新发送' : '不需要重新发送'"
:size="14"
></u--text>
</view>
<view class="content">
<text>返回信息:</text>
<u--text :lines="1" :text="item.returnData" :size="14"></u--text>
</view>
<view class="content">
<text>创建时间:</text>
<u--text :lines="1" :text="item.createTime" :size="14"></u--text>
</view>
<view class="content">
<text>备注:</text>
<u--text :lines="1" :text="item.remark" :size="14"></u--text>
</view>
</view>
<view class="noData" v-show="noData">
<u-divider text="我是有底线哒!" :hairline="true"></u-divider>
</view>
</view>
<view class="plusButton" @click="handlerAddProject">
<u-icon name="plus" :color="'#ffffff'"></u-icon
></view>
<u-toast ref="uToast"></u-toast>
<u-loading-page :loading="loading"></u-loading-page>
<base-tarbar ref="baseTarbar" :pageTitle="'异常信息'"></base-tarbar>
</view>
</template>
<script>
import { authApi } from "@/api/login";
import baseTarbar from "@/components/baseTarbar/index.vue";
export default {
/**
* ┌─┐ ┌─┐
* ┌──┘ ┴───────┘ ┴──┐
* │ │
* │ ─── │
* │ ─┬┘ └┬─ │
* │ │
* │ ─┴─ │
* │ │
* └───┐ ┌───┘
* │ │
* │ │
* │ │
* │ └──────────────┐
* │ │
* │ ├─┐
* │ ┌─┘
* │ │
* └─┐ ┐ ┌───────┬──┐ ┌──┘
* │ ─┤ ─┤ │ ─┤ ─┤
* └──┴──┘ └──┴──┘
* 神兽保佑
* 代码无BUG!
*/
components: {
baseTarbar,
},
onReady() {
this.$refs.baseTarbar.currentEnvironment();
this.isOther = this.$refs.baseTarbar.isOther;
if (this.$refs.baseTarbar.isOther) {
this.tarbarHeight = "84rpx";
}
},
data() {
return {
isOther: false,
tarbarHeight: "0",
msgType: "warn",
timer: null,
loading: false,
noData: false,
pageModel: {
pageNum: 1,
pageSize: 20,
sourceData: "",
},
tableData: [],
delBillid: "",
appId: "",
};
},
computed: {
textColor() {
return (item) => {
if (item == "1") {
return { backgroundColor: "#CFCFCF", color: "#333" };
} else if (item == "2") {
return { backgroundColor: "#C6DEFF", color: "#1677FF" };
} else if (item == "3") {
return { backgroundColor: "#D0FFEF", color: "#00B578" };
} else if (item == "4") {
return { backgroundColor: "#FFE5E3", color: "#FF3B30" };
} else {
return { backgroundColor: "#CFCFCF", color: "#333" };
}
};
},
textData() {
return (item) => {
if (item == "1") {
return "待发送";
} else if (item == "2") {
return "发送中";
} else if (item == "3") {
return "发送成功";
} else if (item == "4") {
return "发送失败";
} else {
return null;
}
};
},
},
onShow() {
this.resetTable();
},
// 下拉刷新
onPullDownRefresh() {
this.pageModel.pageNum = 1;
this.getTableData();
setTimeout(function () {
uni.stopPullDownRefresh();
}, 1000);
},
onLoad(option) {
//option为object类型会序列化上个页面传递的参数
if (Object.getOwnPropertyNames(option).length != 0) {
this.appId = option.appId;
}
uni.$on("resetTable", this.resetTable);
},
onUnload() {
uni.$off("resetTable", this.resetTable);
},
methods: {
resetTable() {
this.pageModel.pageNum = 1;
this.tableData = [];
this.getTableData();
},
//表格数据
async getTableData() {
this.noData = false;
this.loading = true;
setTimeout(() => {
this.loading = false;
}, 5000);
let param = {
...this.pageModel,
receiveApp: this.appId,
status: "4",
};
let res = await authApi(
"sysApplicationService",
"application",
"thirdInterfacequeryAppApiLog",
"",
param
);
if (this.pageModel.pageNum > 1) {
this.tableData.push(...res.attribute.list);
} else {
this.tableData = res.attribute.list;
}
if (res.attribute.list.length < 20) {
this.noData = true;
}
this.loading = false;
},
// 触底刷新事件
onReachBottom() {
if (this.noData != true) {
this.pageModel.pageNum++;
this.getTableData();
}
},
// 搜索
handlerSearchEvent() {
if (this.timer !== null) clearTimeout(this.timer);
this.timer = setTimeout(() => {
this.pageModel.pageNum = 1;
this.getTableData();
}, 100);
},
//查看
handlerShowDetails(row, index) {
let url = "/pages/logsError/show?billid=" + row.id;
this.$tab.navigateTo(url);
},
//推送
pushDetails(row, index) {
let url = "/pages/logsError/details?billid=" + row.id;
this.$tab.navigateTo(url);
},
},
};
</script>
<style scoped lang="scss">
.itemName {
font-size: 24rpx;
margin: 0 20rpx;
font-weight: 400;
color: #fff;
padding: 2rpx 8rpx;
height: fit-content;
border-radius: 2px;
}
.pushBtn {
width: 19px;
height: 19px;
}
.top-level {
.listContent {
margin: 20rpx 24rpx 0 24rpx;
}
.swipe-action-item {
margin: 20rpx 0 20rpx 0;
}
.listData {
background-color: #fff;
border-radius: 16rpx;
padding: 20rpx 20rpx;
margin-bottom: 20rpx;
.head {
// height: 64rpx;
border-bottom: 1px solid #f7f7f7;
justify-content: space-between;
}
.head {
display: flex;
flex-direction: column;
color: #333;
margin-bottom: 16rpx;
padding: 10rpx 0 20rpx 0;
}
.head .itembox {
font-size: 32rpx;
font-weight: 600;
display: flex;
justify-content: space-between;
align-items: center;
.levelbox {
display: flex;
justify-content: center;
align-items: center;
border: 4rpx solid #3c9cff;
border-radius: 50%;
width: 40rpx;
height: 40rpx;
color: #3c9cff;
font-weight: 700;
font-size: 28rpx;
margin: 0 10rpx;
}
}
.head .itemName {
font-size: 24rpx;
color: #999999;
margin-left: 10px;
font-weight: 400;
text {
color: #fff;
padding: 4rpx 8rpx;
}
}
.state {
margin: 25rpx 0;
}
.time {
margin: 4rpx 0 0;
font-size: 28rpx;
flex-wrap: wrap;
line-height: 1.5;
text {
display: inline-block;
font-size: 28rpx;
color: #979797;
margin-bottom: 15rpx;
}
view {
height: 60rpx;
width: 50%;
}
view:nth-child(4) {
text:nth-child(2) {
font-size: 28rpx;
}
}
}
.content {
line-height: 1.5;
font-size: 28rpx;
margin-bottom: 15rpx;
display: flex;
align-items: center;
text {
font-size: 28rpx;
color: #979797;
}
}
}
.noData {
text-align: center;
margin: 20rpx 0 60rpx 0;
}
.Page_change {
width: 100%;
background-color: #fff;
padding: 20rpx 20rpx 20rpx 20rpx;
position: fixed;
top: 0;
z-index: 1;
.buttom {
justify-content: space-between;
padding-top: 30rpx;
::v-deep .u-button--circle {
width: 30%;
}
}
.input_box {
margin-top: 20rpx;
::v-deep .u-input--radius:nth-child(1) {
margin-right: 20rpx;
}
}
}
}
::v-deep .subsetion.u-subsection--button {
height: 70rpx;
margin-top: 10px;
}
::v-deep .u-subsection--button__bar {
background-color: #3c9cff;
}
</style>
<style scoped>
page {
height: 100vh;
}
</style>