Handy_Cao 1 년 전
부모
커밋
cb3db0d37d

+ 79 - 1
src/packages/pc/views/system/login_failed/index.vue

@@ -1,7 +1,85 @@
 <!-- 系统运行管理-登录异常流水查询 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :options="filterOptons" />
+        </template>
+        <app-table :data="dataList" showIndex v-model:columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getFilteredButtons(['system_loginfailed_export'])"
+                    @click="openComponentOnClick" />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ selectedRow, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { ElMessage } from 'element-plus'
+import { useRequest } from '@/hooks/request'
+import { useDataFilter } from '@/hooks/datatable'
+import { queryError } from '@/services/api/system'
+import { useOperation } from '@/hooks/operation'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppFilter from '@pc/components/base/table-filter/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+
+const queryParams = shallowRef<Model.SystemErrorReq>()
+const { filterOptons, getQueryParams } = useDataFilter<Model.SystemErrorReq>()
+
+const { componentMap, componentId, selectedRow, openComponent, closeComponent, getFilteredButtons } = useOperation<Model.SystemErrorRsp>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryError, {
+    params: {
+        pageNum: 1,
+        pageSize: 20,
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = shallowRef<Model.TableColumn[]>([
+    { field: 'userName', label: '登录账号' },
+    { field: 'memberUserName', label: '登录时间' },
+    { field: 'areaName', label: '客户端类型' },
+    { field: 'openMode', label: '登录ip' },
+    { field: 'userState', label: '失败原因' }
+])
+
+filterOptons.inputList = [
+    {
+        label: '登录人:', placeholder: '请输入账号或用户名', keys: ['userName']
+    }
+]
+
+filterOptons.buttonList = [
+    { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() },
+    { lable: '重置', className: 'el-button--primary', onClick: () => onSearch(true) }
+]
+
+// 处理请求参数
+const processRequiredParams = (callback: (params: Model.SystemErrorReq) => void, clear = false) => {
+    const qs = getQueryParams(clear)
+    queryParams.value = qs
+    callback(qs)
+}
+
+const onSearch = (clear = false) => {
+    processRequiredParams((qs) => run(qs), clear)
+}
+
+const openComponentOnClick = (code: string) => {
+    processRequiredParams(() => openComponent(code))
+}
+
 </script>

+ 75 - 1
src/packages/pc/views/system/operation_log/index.vue

@@ -1,7 +1,81 @@
 <!-- 系统运行管理-管理员操作日志 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :options="filterOptons" />
+        </template>
+        <app-table :data="dataList" showIndex v-model:columns="tableColumns" :loading="loading">
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ selectedRow, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { ElMessage } from 'element-plus'
+import { useRequest } from '@/hooks/request'
+import { useDataFilter } from '@/hooks/datatable'
+import { queryLog } from '@/services/api/system'
+import { useOperation } from '@/hooks/operation'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppFilter from '@pc/components/base/table-filter/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+
+const queryParams = shallowRef<Model.SystemLogReq>()
+const { filterOptons, getQueryParams } = useDataFilter<Model.SystemLogReq>()
+
+const { componentMap, componentId, selectedRow, closeComponent } = useOperation<Model.SystemLogReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryLog, {
+    params: {
+        pageNum: 1,
+        pageSize: 20,
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = shallowRef<Model.TableColumn[]>([
+    { field: 'resourcecode', label: '操作模块代码' },
+    { field: 'resourcename', label: '操作模块名称' },
+    { field: 'logincode', label: '登录账户' },
+    { field: 'username', label: '操作人' },
+    { field: 'areaname', label: '所属机构' },
+    { field: 'content', label: '操作内容' },
+    { field: 'operatetime', label: '操作时间' }
+])
+
+filterOptons.inputList = [
+    {
+        label: '操作人:', placeholder: '请输入用户名模糊查询', keys: ['userName']
+    },
+    {
+        label: '操作内容:', placeholder: '请输入操作内容模糊查询', keys: ['content']
+    }
+]
+
+filterOptons.buttonList = [
+    { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() },
+    { lable: '重置', className: 'el-button--primary', onClick: () => onSearch(true) }
+]
+
+// 处理请求参数
+const processRequiredParams = (callback: (params: Model.SystemLogReq) => void, clear = false) => {
+    const qs = getQueryParams(clear)
+    queryParams.value = qs
+    callback(qs)
+}
+
+const onSearch = (clear = false) => {
+    processRequiredParams((qs) => run(qs), clear)
+}
+
 </script>

+ 37 - 0
src/services/api/settlement/index.ts

@@ -0,0 +1,37 @@
+import httpClient from '@/services/http'
+import { CommonFetchOptions } from '@/services/http/types'
+
+/**
+ * 结算管理-->二级分润付款确认-->查看交易日详情-->批量确认
+ */
+export function batchPay(options: CommonFetchOptions<{ request: Model.BatchPayReq; }>) {
+    return httpClient.commonRequest('/settlement/batchPay', 'get', options)
+}
+
+/**
+ * 结算管理-->二级分润付款确认-->查看交易日详情-->详情
+ */
+export function detail(options: CommonFetchOptions<{ request: Model.DetailReq; }>) {
+    return httpClient.commonRequest('/settlement/detail', 'get', options)
+}
+
+/**
+ * 结算管理-->二级分润付款确认-->导出(交易所管理员才有此功能)
+ */
+export function settlementExport(options: CommonFetchOptions<{ request: Model.ExportReq; }>) {
+    return httpClient.commonRequest('/settlement/export', 'get', options)
+}
+
+/**
+ * 结算管理-->二级分润付款确认-->获取列表(tradedate时间格式yyyymmdd,reletype = 1 areatype传null)
+ */
+export function sharedayquery(options: CommonFetchOptions<{ request: Model.ShareDayQueryReq; response: Model.ShareDayQueryRsp }>) {
+    return httpClient.commonRequest('/settlement/sharedayquery', 'get', options)
+}
+
+/**
+ * 结算管理-->二级分润付款确认-->查看交易日详情
+ */
+export function viewTradingDay(options: CommonFetchOptions<{ request: Model.ViewTradingDayReq; response: Model.ViewTradingDayRsp }>) {
+    return httpClient.commonRequest('/settlement/viewTradingDay', 'get', options)
+}

+ 25 - 0
src/services/api/system/index.ts

@@ -0,0 +1,25 @@
+import httpClient from '@/services/http'
+import { CommonFetchOptions } from '@/services/http/types'
+
+/**
+ * 系统设置管理-->系统运行管理-->登录异常流水查询-->获取列表
+ */
+export function queryError(options: CommonFetchOptions<{ request: Model.SystemErrorReq; response: Model.SystemErrorRsp; }>) {
+    return httpClient.commonRequest('/operation/queryError', 'get', options)
+}
+
+/**
+ * 系统设置管理-->系统运行管理-->管理员操作日志-->获取列表
+ */
+export function queryLog(options: CommonFetchOptions<{ request: Model.SystemLogReq; response: Model.SystemLogRsp; }>) {
+    return httpClient.commonRequest('/operation/queryLog', 'get', options)
+}
+
+/**
+ * 系统设置管理-->系统运行管理-->登录异常流水查询-->导出
+ */
+export function systemExport(options: CommonFetchOptions<{ request: Model.SystemExportReq; }>) {
+    return httpClient.commonRequest('/operation/export', 'get', options)
+}
+
+

+ 58 - 0
src/types/model/settlement.d.ts

@@ -0,0 +1,58 @@
+declare namespace Model {
+    /** 结算管理-->二级分润付款确认-->查看交易日详情-->批量确认 请求 */
+    interface BatchPayReq {
+        areaids?: string  
+        tradedate?: string
+    }
+
+    /** 结算管理-->二级分润付款确认-->查看交易日详情-->详情 请求 */
+    interface DetailReq {
+        areaid?: number  
+        areatype: number  
+        tradedate?: string 
+    }
+
+    /** 结算管理-->二级分润付款确认-->导出(交易所管理员才有此功能) 请求 */
+    interface ExportReq {
+        tradedate?: string 
+    }
+
+     /** 结算管理-->二级分润付款确认-->获取列表(tradedate时间格式yyyymmdd,reletype = 1 areatype传null) 请求 */
+    interface ShareDayQueryReq {
+        areatype?: number 
+        pageNum?: number // 页码
+        pageSize?: number  // 页大小 
+        tradedate?: number  // 交易日
+    }
+
+    /** 结算管理-->二级分润付款确认-->获取列表(tradedate时间格式yyyymmdd,reletype = 1 areatype传null) 响应 */
+    interface ShareDayQueryRsp {
+        divideamount: number  // 总分润金额
+        totalcount: number // 总笔数
+        totalpay: number // 总已付
+        tradedate: string // 交易日
+    }
+
+    /** 结算管理-->二级分润付款确认-->查看交易日详情 请求 */
+    interface ViewTradingDayReq {
+        accountcurrencyid?: number 
+        areatype?: number  // reletype = 1 areatype传null 分润机构角色 - 1:交易所 2:运营机构 3:营销中心 4:仓库机构 5:三方服务机构 6:自营会员 7:纪经会员 8:做市会员 9:产业会员 10:金融机构 11:商城店铺 12:子机构 13:报价商 14:积分服务商 15:供货商 16:圈内会员 17:物流机构
+        pageNum?: number  // 页码
+        pageSize?: number  // 页大小 
+        parentuserid?: number  
+        paystatus?: number  // 支付状态
+        shareorgname?: string // 分润机构
+        tradedate?: string // 交易日
+    }
+
+    /** 结算管理-->二级分润付款确认-->查看交易日详情 响应 */
+    interface ViewTradingDayRsp {
+        areatype: number  // 分润机构角色
+        divideamount: number // 总分润金额
+        paystatus: number // 状态
+        shareorgname: string // 分润机构
+        totalcount: number // 总笔数
+        totalfee: number // 总手续费
+        tradedate: string // 交易日
+    }
+}

+ 58 - 0
src/types/model/system.d.ts

@@ -0,0 +1,58 @@
+declare namespace Model {
+    /** 系统设置管理-->系统运行管理-->登录异常流水查询-->获取列表 请求 */
+    interface SystemErrorReq {
+        endtime?: string  // 结束时间
+        pageNum?: number
+        pageSize?: number
+        parentuserid?: number
+        starttime?: string
+        userName?: string
+    }
+
+    /** 系统设置管理-->系统运行管理-->登录异常流水查询-->获取列表 响应 */
+    interface SystemErrorRsp {
+        lienttype: string  // 客户端类型
+        description: string  // 失败原因
+        loginaccount: string  // 登录账户
+        loginip: string  // 登录ip
+        operatetime: string // 登录时间 ($date-time)
+    }
+
+    /** 系统设置管理-->系统运行管理-->管理员操作日志-->获取列表 请求 */
+    interface SystemLogReq {
+        areaids?: string // 所属机构
+        areauserid?: number  
+        content?: string  // 操作内容
+        endtime?: string  // 结束时间
+        ishiddenlog?: number  // 是否显示登录日志 有值为1,无值不传
+        issenv?: number  // 是否查询敏感日志 有值为1,无值不传
+        logincode?: string // 登录账号
+        orgztypes?: string // 管理员所属机构角色类型
+        pageNum?: number  // 页码
+        pageSize?: number // 页大小
+        resourcecodes?: string // 功能模块
+        starttime?: string // 开始时间
+        userName?: string // 操作人
+    }
+
+    /** 系统设置管理-->系统运行管理-->管理员操作日志-->获取列表 响应 */
+    interface SystemLogRsp {
+        areaname: string // 所属机构
+        content: string // 操作内容
+        logincode: string // 登录账户
+        operatetime: string // 操作时间
+        resourcecode: string // 操作模块代码
+        resourcename: string // 操作模块名称
+        username: string // 操作人
+    }
+
+    /** 系统设置管理-->系统运行管理-->登录异常流水查询-->导出 请求 */
+    interface SystemExportReq {
+        endtime?: string  // 结束时间
+        pageNum?: number  // 页码
+        pageSize?: number // 页大小
+        starttime?: string // 开始时间
+        userName?: string // 操作人
+        arentuserid?: number        
+    }
+}