Files
pj_admin_cloud/src/views/wallet/wallet-setting/components/third-zy/index.vue
T

195 lines
6.1 KiB
Vue

<template>
<div class="w-full">
<div class="layout-padding-auto layout-padding-view">
<el-row>
<div class="mb8" style="width: 100%">
<el-button type="primary" @click="merchantInfoSync">商户信息同步</el-button>
<el-button type="primary" @click="unitOfAccountSync">记账单位同步</el-button>
<el-button type="primary" @click="accountInfoSync">账户信息同步</el-button>
<el-button type="primary" @click="identityInfoSync">身份信息同步</el-button>
<el-button type="primary" @click="transactionDataSync">交易数据同步</el-button>
<right-toolbar :search="false" :export="false" class="ml10 mr20" style="float: right" @queryTable="getDataList" />
</div>
</el-row>
<el-table
:data="state.dataList"
v-loading="state.loading"
border
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@sort-change="sortChangeHandle"
max-height="calc(100vh - 300px)"
>
<el-table-column type="index" label="#" width="50" />
<el-table-column prop="apiUrl" label="apiUrl" show-overflow-tooltip min-width="160" />
<el-table-column prop="bizType" label="同步类型" min-width="160">
<template #default="{ row }">
<dict-tag :value="row.bizType" :options="thrid_zy_biz_type" />
</template>
</el-table-column>
<el-table-column prop="orgRes" label="原始res" show-overflow-tooltip>
<template #default="{ row }">
<el-button text :type="row.orgRes ? 'primary' : 'danger'" @click="row.orgRes && handleClickJsonView(row.orgRes)">
查看
</el-button>
</template>
</el-table-column>
<el-table-column prop="encipherRes" label="加密res" show-overflow-tooltip>
<template #default="{ row }">
<el-button text :type="row.encipherRes ? 'primary' : 'danger'" @click="row.encipherRes && handleClickJsonView(row.encipherRes)">
查看
</el-button>
</template>
</el-table-column>
<el-table-column prop="orgReq" label="原始req" show-overflow-tooltip>
<template #default="{ row }">
<el-button text :type="row.encipherRes ? 'primary' : 'danger'" @click="row.encipherRes && handleClickJsonView(row.orgReq)">
查看
</el-button>
</template>
</el-table-column>
<el-table-column prop="encipherReq" label="加密req" show-overflow-tooltip>
<template #default="{ row }">
<el-button text :type="row.encipherReq ? 'primary' : 'danger'" @click="row.encipherReq && handleClickJsonView(row.encipherReq)">
查看
</el-button>
</template>
</el-table-column>
<el-table-column prop="error" label="调用错误" show-overflow-tooltip>
<template #default="{ row }">
<el-button
v-if="row.error"
icon="view"
@click="row.error && LogDetailRef.openDialog(row.error)"
size="small"
text
type="primary"
>
详情
</el-button>
</template>
</el-table-column>
<el-table-column prop="version" label="同步版本" show-overflow-tooltip />
</el-table>
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" />
</div>
<el-dialog v-model="jsonViewVisible">
<vue-json-pretty :data="jsonData" showLength showLineNumber showIcon :collapsedOnClickBrackets="false" />
<template #footer>
<el-button @click="jsonViewVisible = false">关闭</el-button>
</template>
</el-dialog>
<log-detail ref="LogDetailRef" />
</div>
</template>
<script setup lang="ts" name="systemThirdZyLog">
import { BasicTableProps, useTable } from "/@/hooks/table"
import { fetchList } from "/@/api/wallet/third-zy-log"
import { useDict } from "/@/hooks/dict"
import VueJsonPretty from "vue-json-pretty"
import "vue-json-pretty/lib/styles.css"
import { syncAllDept, syncAllMch, syncAllRole, syncAllUser } from "/@/api/wallet/mch-thrid-zy"
import { syncNativeCardTradeInfo } from "/@/api/hard/hard-thrid-zy"
import { useMessage } from "/@/hooks/message"
import { NextLoading } from "/@/utils/loading"
const LogDetail = defineAsyncComponent(() => import("./detail.vue"))
const LogDetailRef = ref()
const { thrid_zy_biz_type } = useDict("thrid_zy_biz_type")
const jsonViewVisible = ref<boolean>()
const jsonData = ref()
const state: BasicTableProps = reactive<BasicTableProps>({
queryForm: {},
pageList: fetchList,
})
const { getDataList, currentChangeHandle, sizeChangeHandle, sortChangeHandle, tableStyle } = useTable(state)
// 点击查看json
const handleClickJsonView = (json: any) => {
jsonViewVisible.value = true
jsonData.value = JSON.parse(json)
}
// 商户信息同步
const merchantInfoSync = async () => {
NextLoading.start()
try {
const res = await syncAllMch()
if (res.code === 0) {
return useMessage().success("同步成功")
}
useMessage().error("同步失败")
} catch (error: any) {
useMessage().error(error)
} finally {
NextLoading.done()
}
}
// 记账单位同步
const unitOfAccountSync = async () => {
NextLoading.start()
try {
const res = await syncAllDept()
if (res.code === 0) {
return useMessage().success("同步成功")
}
useMessage().error("同步失败")
} catch (error: any) {
useMessage().error(error)
} finally {
NextLoading.done()
}
}
// 账户信息同步
const accountInfoSync = async () => {
NextLoading.start()
try {
const res = await syncAllRole()
if (res.code === 0) {
return useMessage().success("同步成功")
}
useMessage().error("同步失败")
} catch (error: any) {
useMessage().error(error)
} finally {
NextLoading.done()
}
}
// 身份信息同步
const identityInfoSync = async () => {
NextLoading.start()
try {
const res = await syncAllUser()
if (res.code === 0) {
return useMessage().success("同步成功")
}
useMessage().error("同步失败")
} catch (error: any) {
useMessage().error(error)
} finally {
NextLoading.done()
}
}
// 交易数据同步
const transactionDataSync = async () => {
NextLoading.start()
try {
const res = await syncNativeCardTradeInfo()
if (res.code === 0) {
return useMessage().success("同步成功")
}
useMessage().error("同步失败")
} catch (error: any) {
useMessage().error(error)
} finally {
NextLoading.done()
}
}
</script>