| | |
| | | import type { EzResult } from './EzApiBaseTypes' |
| | | import axios from 'axios' |
| | | |
| | | import type { EzResult } from "./EzApiBaseTypes"; |
| | | import axios from "axios"; |
| | | |
| | | /** 获取DFlFunInfo列表 */ |
| | | export const GetTransferOrder=(data:Request) => { |
| | | |
| | | |
| | | return axios.post<EzResult<RetPageDataWeChatTransferOrder>>("https://yocaisim.51zhengcai.com/api/UserTransfer/GetTransferOrder", data); |
| | | }; |
| | | const PYTestr = 'https://yocaisim.51zhengcai.com' //'http://localhost:5000' |
| | | // const PYTestr = 'http://localhost:5000' |
| | | /** 获取DFlFunInfo列表 */ |
| | | export const GetTransferOrder = (data: SearchRequest) => { |
| | | return axios.post<EzResult<RetPageDataWeChatTransferOrder>>( |
| | | `${PYTestr}/api/UserTransfer/GetTransferOrder`, |
| | | data, |
| | | ) |
| | | } |
| | | //http://127.0.0.1:4523/m1/5212733-4879059-default/api/UserTransfer/GetTransferOder |
| | | export const GetTransferOderOfMain = (data: SearchRequestOfMian) => { |
| | | return axios.post<EzResult<RetPageDataWeChatTransferOrder>>( |
| | | `${PYTestr}/api/UserTransfer/GetTransferOder`, |
| | | data, |
| | | ) |
| | | } |
| | | ///api/UserTransfer/ReSendCreadTransferMoney 重新支付 |
| | | export const ReSendCreadTransferMoney = (id: number) => { |
| | | return axios.get<EzResult<boolean>>( |
| | | `${PYTestr}/api/UserTransfer/ReSendCreadTransferMoney?id=${id}`, |
| | | ) |
| | | } |
| | | |
| | | /** |
| | | * SSPageByWhereOrder,根据where查询条件和order排序获取列表 |
| | | */ |
| | | export interface Request { |
| | | order?: SSOrder; |
| | | page?: PageModel; |
| | | export interface SearchRequest { |
| | | order?: SSOrder |
| | | page?: PageModel |
| | | /** |
| | | * 判断条件 必须是json格式的字符串{xxx:ddd} |
| | | */ |
| | | where?: object | string; |
| | | where?: object | string |
| | | } |
| | | |
| | | /** |
| | | * SSOrder,排序方式 |
| | | */ |
| | | * SearchTransferOder |
| | | */ |
| | | export interface SearchRequestOfMian { |
| | | /** |
| | | * 搜索状态值 模糊查询 |
| | | */ |
| | | batchStatus?: null | string |
| | | /** |
| | | * 是否已经成功发起了 |
| | | */ |
| | | hasSendOk?: boolean |
| | | /** |
| | | * 是否特殊处理比如支付失败后已经处理为其他情况 |
| | | */ |
| | | isSetOK?: boolean | null |
| | | /** |
| | | * 排除搜索值状态 要排除的状态值必须是全称,多个之间用 “|”间隔 |
| | | */ |
| | | noTBatchStatus?: null | string |
| | | /** |
| | | * 当前页码 |
| | | */ |
| | | pageIndex?: number |
| | | /** |
| | | * 页面大小 |
| | | */ |
| | | pageSize?: number |
| | | } |
| | | /** |
| | | * SSOrder,排序方式 |
| | | */ |
| | | export interface SSOrder { |
| | | des?: OrderByType; |
| | | des?: OrderByType |
| | | /** |
| | | * 属性名称 |
| | | */ |
| | | name?: null | string; |
| | | name?: null | string |
| | | } |
| | | |
| | | /** |
| | | * OrderByType |
| | | */ |
| | | * OrderByType |
| | | */ |
| | | export enum OrderByType { |
| | | Asc = "Asc", |
| | | Desc = "Desc", |
| | | Asc = 'Asc', |
| | | Desc = 'Desc', |
| | | } |
| | | |
| | | /** |
| | | * PageModel |
| | | */ |
| | | * PageModel |
| | | */ |
| | | export interface PageModel { |
| | | pageIndex?: number; |
| | | pageSize?: number; |
| | | totalCount?: number; |
| | | pageIndex?: number |
| | | pageSize?: number |
| | | totalCount?: number |
| | | } |
| | | |
| | | |
| | | /** |
| | | * RetPageData_WeChatTransferOrder,通用返回参数 |
| | | */ |
| | | * RetPageData_WeChatTransferOrder,通用返回参数 |
| | | */ |
| | | export interface RetPageDataWeChatTransferOrder { |
| | | /** |
| | | * 数据 |
| | | */ |
| | | data?: WeChatTransferOrder[] | null; |
| | | page?: PageModel; |
| | | data?: WeChatTransferOrder[] | null |
| | | listdata?: WeChatTransferOrder | null |
| | | page?: PageModel |
| | | } |
| | | |
| | | /** |
| | | * WeChatTransferOrder,转账单账模型 |
| | | */ |
| | | * WeChatTransferOrder,转账单账模型 |
| | | */ |
| | | export interface WeChatTransferOrder { |
| | | /** |
| | | * 重新支付订单列表 |
| | | */ |
| | | agWeChatTransferOrders?: WeChatTransferOrder[] | null; |
| | | agWeChatTransferOrders?: WeChatTransferOrder[] | null |
| | | /** |
| | | * 获取或设置微信批次单号。 |
| | | */ |
| | | batchId?: null | string; |
| | | batchId?: null | string |
| | | /** |
| | | * 获取或设置批次的名称。 |
| | | * 示例: "2019年1月深圳分部报销单" |
| | | */ |
| | | batchName?: null | string; |
| | | batchName?: null | string |
| | | /** |
| | | * 获取或设置批次的备注。 |
| | | * 示例: "2019年1月深圳分部报销单" |
| | | */ |
| | | batchRemark?: null | string; |
| | | batchRemark?: null | string |
| | | /** |
| | | * 获取或设置批次状态。 |
| | | */ |
| | | batchStatus?: null | string; |
| | | batchStatus?: null | string |
| | | /** |
| | | * 获取或设置关闭批次的原因。 |
| | | * 示例: "OVERDUE_CLOSE" |
| | | */ |
| | | closeReason?: null | string; |
| | | closeReason?: null | string |
| | | /** |
| | | * 创建人 |
| | | */ |
| | | createBy?: null | string; |
| | | createBy?: null | string |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | createTime?: Date | null; |
| | | createTime?: string | null |
| | | /** |
| | | * 错误标识 |
| | | */ |
| | | errorCode?: null | string; |
| | | errorCode?: null | string |
| | | |
| | | /** |
| | | * 错误消息 |
| | | */ |
| | | errorMsg?: null | string; |
| | | errorMsg?: null | string |
| | | /** |
| | | * 获取或设置批次中的失败总金额。 |
| | | * 示例: 100000 |
| | | */ |
| | | failAmount?: number | null; |
| | | failAmount?: number | null |
| | | /** |
| | | * 获取或设置批次中的失败项目数。 |
| | | * 示例: 1 |
| | | */ |
| | | failNum?: number | null; |
| | | failNum?: number | null |
| | | /** |
| | | * ID |
| | | */ |
| | | id?: number; |
| | | id?: number |
| | | /** |
| | | * 是否删除 |
| | | */ |
| | | isDeleted?: boolean; |
| | | isDeleted?: boolean |
| | | /** |
| | | * 是否有效 |
| | | */ |
| | | isEn?: boolean; |
| | | isEn?: boolean |
| | | /** |
| | | * 是否已经完成处理 默认未处理 |
| | | */ |
| | | isSetOK?: boolean; |
| | | isSetOK?: boolean | null |
| | | /** |
| | | * 获取或设置商户批次单号。 |
| | | */ |
| | | outBatchNumber?: null | string; |
| | | outBatchNumber?: null | string |
| | | /** |
| | | * 标注 |
| | | */ |
| | | remake?: null | string; |
| | | remake?: null | string |
| | | /** |
| | | * 再次发起时 的描述 |
| | | */ |
| | | remakeDes?: null | string; |
| | | remakeDes?: null | string |
| | | /** |
| | | * 排序 |
| | | */ |
| | | sort?: number | null; |
| | | sort?: number | null |
| | | /** |
| | | * 获取或设置批次中的成功总金额。 |
| | | * 示例: 3900000 |
| | | */ |
| | | successAmount?: number | null; |
| | | successAmount?: number | null |
| | | /** |
| | | * 获取或设置批次中的成功项目数。 |
| | | * 示例: 199 |
| | | */ |
| | | successNum?: number | null; |
| | | successNum?: number | null |
| | | /** |
| | | * 租户 |
| | | */ |
| | | tenantID?: number | null; |
| | | tenantID?: number | null |
| | | /** |
| | | * 获取或设置批次中的总金额。 |
| | | * 示例: 4000000 |
| | | */ |
| | | totalAmount?: number | null; |
| | | totalAmount?: number | null |
| | | /** |
| | | * 获取或设置批次中的项目总数。 |
| | | * 示例: 200 |
| | | */ |
| | | totalNum?: number | null; |
| | | totalNum?: number | null |
| | | |
| | | /** |
| | | * 获取或设置转账场景标识符。 |
| | | * 示例: "1000" |
| | | */ |
| | | transferSceneId?: null | string; |
| | | transferSceneId?: null | string |
| | | /** |
| | | * 修改人 |
| | | */ |
| | | upDataBy?: null | string; |
| | | upDataBy?: null | string |
| | | /**时间筛选数组 */ |
| | | DataTime?:Date[]|string; |
| | | DataTime?: Date[] | string |
| | | createDataTime?: Date[] | string |
| | | /** |
| | | * 修改时间 |
| | | */ |
| | | upDataTime?: string | null; |
| | | upDataTime?: string | null |
| | | |
| | | /** |
| | | * 用户ID。 |
| | | */ |
| | | userID?: number; |
| | | userID?: number |
| | | /** |
| | | * 用户身份证 |
| | | */ |
| | | userIDCode?: null | string; |
| | | userIDCode?: null | string |
| | | /** |
| | | * 名字 |
| | | */ |
| | | userName?: null | string; |
| | | userName?: null | string |
| | | /** |
| | | * 是否重新发起支付,当支付失败后,超出重新的支付单失败后,需要重新更换单号重新发起新的支付请求,重新发起支付请求单 |
| | | */ |
| | | weChatTransferOrderPrId?: number | null; |
| | | weChatTransferOrderPrId?: number | null |
| | | |
| | | YiTiXianGz?:number |
| | | YiTiXianGz?: number |
| | | |
| | | ZhongGz?:number |
| | | itCode?:string|null |
| | | ZhongGz?: number |
| | | itCode?: string | null |
| | | /** |
| | | * 是否已经发送成功 |
| | | */ |
| | | hasSendOk?: boolean | null |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | * @Author: 小飞侠 |
| | | * @Date: 2025-03-17 09:45:10 |
| | | * @LastEditors: Please set LastEditors |
| | | * @LastEditTime: 2025-03-27 13:24:58 |
| | | * @LastEditTime: 2025-10-24 17:12:56 |
| | | * Copyright: 2025 MinTinge CO.,LTD. All Rights Reserved. |
| | | * @Descripttion: 写入你的描述 |
| | | --> |
| | |
| | | --> |
| | | <!-- --> |
| | | <template> |
| | | <div style="max-width: 1440px; margin: 0 auto"> |
| | | |
| | | <div style=" margin: 0 auto"> |
| | | <el-card> |
| | | <PlusForm v-model="formdata" :columns="FromColumns" :row-props="{ gutter: 100 }" :col-props="{ |
| | | span: 5 |
| | | span: 5, |
| | | }" @submit="mysubmit"> |
| | | <template #footer="{ handleSubmit }"> |
| | | <div style="margin: 0 auto"> |
| | | <el-button type="primary" @click="handleSubmit">搜索</el-button> |
| | | |
| | | <el-button type="error" @click="RePayFun" :disabled="!canRePay">重新支付</el-button> |
| | | </div> |
| | | </template> |
| | | </PlusForm> |
| | | </el-card> |
| | | <PlusTable ref="plusTableInstance" :columns="tableConfig" :table-data="tableData" table-title="表格" show-summary |
| | | :summary-method="getSummaries" :pagination="{ total, modelValue: pageInfo }" |
| | | @paginationChange="handlePaginationChange" adaptive /> |
| | | :summary-method="getSummaries" |
| | | :pagination="{ total, modelValue: pageInfo, pageSizeList: [30, 40, 50, 100, 200, 300, 400, 500] }" |
| | | @paginationChange="handlePaginationChange" adaptive :is-selection="true" has-index-column |
| | | @selection-change="handleSelectionChange" row-key="id" /> |
| | | |
| | | </div> |
| | | </template> |
| | | <script setup lang='tsx'> |
| | | import { GetTransferOrder, OrderByType, type WeChatTransferOrder } from '@/Api/apis'; |
| | | import moment from 'moment'; |
| | | import type { PlusColumn, PlusTableInstance, PageInfo } from 'plus-pro-components' |
| | | <script setup lang="tsx"> |
| | | import { |
| | | GetTransferOderOfMain, |
| | | GetTransferOrder, |
| | | OrderByType, |
| | | ReSendCreadTransferMoney, |
| | | type WeChatTransferOrder, |
| | | } from '@/Api/apis' |
| | | import { ElMessage } from 'element-plus' |
| | | import moment from 'moment' |
| | | import type { PageInfo, PlusColumn } from 'plus-pro-components' |
| | | import { useTable } from 'plus-pro-components' |
| | | import { h, onMounted, ref, type VNode } from 'vue' |
| | | import { computed, h, onMounted, ref, watch, type VNode } from 'vue' |
| | | const formdata = ref<WeChatTransferOrder>({ |
| | | userName: null, |
| | | userIDCode: null, |
| | | DataTime: [], |
| | | itCode: null |
| | | |
| | | itCode: null, |
| | | isSetOK: null, |
| | | hasSendOk: null, |
| | | createDataTime: [], |
| | | }) |
| | | |
| | | const multipleSelection = ref<WeChatTransferOrder[]>([]) |
| | | const FromColumns: PlusColumn[] = [ |
| | | { |
| | | label: '姓名', |
| | | prop: 'userName', |
| | | labelWidth: 60, |
| | | |
| | | }, |
| | | { |
| | | label: '身份证号码', |
| | | labelWidth: 100, |
| | | |
| | | prop: 'userIDCode' |
| | | } |
| | | , |
| | | prop: 'userIDCode', |
| | | }, |
| | | { |
| | | label: '电话号码', |
| | | labelWidth: 100, |
| | | |
| | | prop: 'itCode' |
| | | prop: 'itCode', |
| | | }, |
| | | { |
| | | label: '支付时间', |
| | | label: '更新时间', |
| | | labelWidth: 100, |
| | | width: 400, |
| | | colProps: { |
| | | span: 8 |
| | | span: 8, |
| | | }, |
| | | prop: 'DataTime', |
| | | valueType: 'date-picker', |
| | |
| | | endPlaceholder: '请选择结束时间', |
| | | rangeSeparator: '-', |
| | | valueFormat: 'YYYY-MM-DDTHH:mm:ss', |
| | | |
| | | }, |
| | | |
| | | |
| | | |
| | | } |
| | | }, |
| | | { |
| | | label: '创建时间', |
| | | labelWidth: 100, |
| | | width: 400, |
| | | colProps: { |
| | | span: 8, |
| | | }, |
| | | prop: 'createDataTime', |
| | | valueType: 'date-picker', |
| | | fieldProps: { |
| | | type: 'datetimerange', |
| | | startPlaceholder: '请选择开始时间', |
| | | endPlaceholder: '请选择结束时间', |
| | | rangeSeparator: '-', |
| | | valueFormat: 'YYYY-MM-DDTHH:mm:ss', |
| | | }, |
| | | }, |
| | | { |
| | | label: '支付失败', |
| | | labelWidth: 100, |
| | | prop: 'hasSendOk', |
| | | valueType: 'switch', |
| | | }, |
| | | ] |
| | | |
| | | const tableConfig = ref<PlusColumn[]>( |
| | | [ |
| | | { |
| | | label: '姓名', |
| | | prop: 'userName', |
| | | width: 80 |
| | | const canRePay = computed(() => { |
| | | // 必须有选中项,且所有选中项的hasSendOk都为true(支付失败) |
| | | return multipleSelection.value.length > 0 && |
| | | formdata.value.hasSendOk == true |
| | | }) |
| | | const tableConfig = ref<PlusColumn[]>([ |
| | | { |
| | | label: '姓名', |
| | | prop: 'userName', |
| | | width: 70, |
| | | }, |
| | | { |
| | | label: '身份证', |
| | | prop: 'userIDCode', |
| | | width: 162, |
| | | }, |
| | | { |
| | | label: '电话号码', |
| | | prop: 'itCode', |
| | | width: 110, |
| | | }, |
| | | |
| | | { |
| | | width: 100, |
| | | label: '总额度', |
| | | prop: 'totalAmount', |
| | | render: (value) => { |
| | | let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { |
| | | style: 'currency', |
| | | currency: 'CNY', |
| | | }) |
| | | |
| | | return <span>{formattedAmount}元 </span> |
| | | }, |
| | | { |
| | | label: '身份证', |
| | | prop: 'userIDCode', |
| | | width: 170 |
| | | }, |
| | | |
| | | { |
| | | width: 100, |
| | | label: '成功额度', |
| | | prop: 'successAmount', |
| | | sortable: true, |
| | | render: (value) => { |
| | | let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { |
| | | style: 'currency', |
| | | currency: 'CNY', |
| | | }) |
| | | |
| | | return <span>{formattedAmount}元 </span> |
| | | }, |
| | | { |
| | | label: '电话号码', |
| | | prop: 'itCode', |
| | | width: 120 |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: '失败额度', |
| | | prop: 'failAmount', |
| | | sortable: true, |
| | | render: (value) => { |
| | | let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { |
| | | style: 'currency', |
| | | currency: 'CNY', |
| | | }) |
| | | |
| | | return <span>{formattedAmount}元 </span> |
| | | }, |
| | | }, |
| | | |
| | | |
| | | { |
| | | width: 100, |
| | | label: '总额度', |
| | | prop: 'totalAmount', |
| | | render: (value) => { |
| | | |
| | | let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }); |
| | | |
| | | return <span>{formattedAmount}元</span> |
| | | } |
| | | |
| | | |
| | | { |
| | | width: 160, |
| | | label: '更新时间', |
| | | prop: 'upDataTime', |
| | | render: (value) => { |
| | | return <span>{moment(value).format('YYYY-MM-DD HH:mm:ss')} </span> |
| | | }, |
| | | |
| | | { |
| | | width: 100, |
| | | label: '成功额度', |
| | | prop: 'successAmount', |
| | | sortable: true, |
| | | render: (value) => { |
| | | |
| | | let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }); |
| | | |
| | | return <span>{formattedAmount}元</span> |
| | | } |
| | | |
| | | }, |
| | | { |
| | | width: 160, |
| | | label: '创建时间', |
| | | prop: 'createTime', |
| | | render: (value) => { |
| | | return <span>{moment(value).format('YYYY-MM-DD HH:mm:ss')} </span> |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: '失败额度', |
| | | prop: 'failAmount', |
| | | sortable: true, |
| | | render: (value) => { |
| | | }, |
| | | |
| | | let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }); |
| | | |
| | | return <span>{formattedAmount}元</span> |
| | | } |
| | | |
| | | { |
| | | width: 80, |
| | | label: '补发单', |
| | | prop: 'weChatTransferOrderPrId', |
| | | render: (value) => { |
| | | const color = value > 0 ? 'red' : 'green'; |
| | | return <span style={{ color }}>{value ? `是${value}` : '否'} </span> |
| | | }, |
| | | }, |
| | | { |
| | | label: '腾讯单号', |
| | | prop: 'batchId', |
| | | }, |
| | | { |
| | | label: '客户单号', |
| | | prop: 'outBatchNumber', |
| | | }, |
| | | { |
| | | width: 160, |
| | | label: '总工资', |
| | | prop: 'zhongGz', |
| | | render: (value) => { |
| | | let formattedAmount = (value ?? 0).toLocaleString('zh-CN', { |
| | | style: 'currency', |
| | | currency: 'CNY', |
| | | }) |
| | | |
| | | { |
| | | width: 180, |
| | | label: '提现时间', |
| | | prop: 'upDataTime', |
| | | render: (value) => { |
| | | return <span>{moment(value).format('YYYY-MM-DD HH:mm:ss')}</span> |
| | | } |
| | | |
| | | return <span>{formattedAmount}元 </span> |
| | | }, |
| | | { |
| | | }, |
| | | { |
| | | width: 160, |
| | | label: '已提工资', |
| | | prop: 'yiTiXianGz', |
| | | render: (value) => { |
| | | let formattedAmount = (value ?? 0).toLocaleString('zh-CN', { |
| | | style: 'currency', |
| | | currency: 'CNY', |
| | | }) |
| | | |
| | | label: '腾讯单号', |
| | | prop: 'batchId' |
| | | |
| | | return <span>{formattedAmount}元 </span> |
| | | }, |
| | | { |
| | | |
| | | label: '客户单号', |
| | | prop: 'outBatchNumber' |
| | | |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: '总工资', |
| | | prop: 'zhongGz', |
| | | render: (value) => { |
| | | |
| | | let formattedAmount = ((value ?? 0)).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }); |
| | | |
| | | return <span>{formattedAmount}元</span> |
| | | } |
| | | |
| | | }, |
| | | { |
| | | width: 100, |
| | | label: '已提工资', |
| | | prop: 'yiTiXianGz', |
| | | render: (value) => { |
| | | let formattedAmount = ((value ?? 0)).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }); |
| | | |
| | | return <span>{formattedAmount}元</span> |
| | | } |
| | | |
| | | } |
| | | |
| | | ] |
| | | ); |
| | | |
| | | }, |
| | | ]) |
| | | const handleSelectionChange = (val: WeChatTransferOrder[]) => { |
| | | multipleSelection.value = val |
| | | } |
| | | const { tableData, pageInfo, total, loadingStatus } = useTable<WeChatTransferOrder[]>() |
| | | pageInfo.value.page = 1; |
| | | pageInfo.value.pageSize = 40; |
| | | |
| | | onMounted(() => { |
| | | getList(); |
| | | getList() |
| | | }) |
| | | const getList = async () => { |
| | | loadingStatus.value = true |
| | | if (formdata.value.DataTime && Array.isArray(formdata.value.DataTime) && formdata.value.DataTime.length === 2) { |
| | | debugger |
| | | formdata.value.upDataTime = `${formdata.value.DataTime[0]}~${formdata.value.DataTime[1].toString()}`; |
| | | } else { |
| | | |
| | | if ( |
| | | formdata.value.DataTime && |
| | | Array.isArray(formdata.value.DataTime) && |
| | | formdata.value.DataTime.length === 2 |
| | | ) { |
| | | formdata.value.upDataTime = `${formdata.value.DataTime[0]}~${formdata.value.DataTime[1].toString()}` |
| | | } else { |
| | | } |
| | | if ( |
| | | formdata.value.createDataTime && |
| | | Array.isArray(formdata.value.createDataTime) && |
| | | formdata.value.createDataTime.length === 2 |
| | | ) { |
| | | formdata.value.createTime = `${formdata.value.createDataTime[0]}~${formdata.value.createDataTime[1].toString()}` |
| | | } else { |
| | | } |
| | | if (formdata.value.hasSendOk == true) { |
| | | // 支付失败的表 |
| | | GetTransferOderOfMain({ |
| | | |
| | | pageIndex: pageInfo.value.page, |
| | | pageSize: pageInfo.value.pageSize, |
| | | hasSendOk: false, |
| | | isSetOK: false |
| | | }) |
| | | .then((res) => { |
| | | if (res.data.code == 1) { |
| | | tableData.value = (res.data?.data?.listdata ?? []) as WeChatTransferOrder[] |
| | | |
| | | total.value = res.data.data?.page?.totalCount as number |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | loadingStatus.value = false |
| | | }) |
| | | return |
| | | } |
| | | GetTransferOrder({ |
| | | page: { pageIndex: pageInfo.value.page, pageSize: pageInfo.value.pageSize }, |
| | | where: JSON.stringify(formdata.value), |
| | | order:{ |
| | | name:"upDataTime", |
| | | des:OrderByType.Desc |
| | | } |
| | | |
| | | }).then((res) => { |
| | | |
| | | if (res.data.code == 1) { |
| | | tableData.value = res.data.data?.data as WeChatTransferOrder[]; |
| | | |
| | | total.value = res.data.data?.page?.totalCount as number; |
| | | } |
| | | }).finally(() => { |
| | | loadingStatus.value = false |
| | | where: JSON.stringify(formdata.value), |
| | | order: { |
| | | name: 'upDataTime', |
| | | des: OrderByType.Desc, |
| | | }, |
| | | }) |
| | | .then((res) => { |
| | | if (res.data.code == 1) { |
| | | tableData.value = res.data.data?.data as WeChatTransferOrder[] |
| | | |
| | | total.value = res.data.data?.page?.totalCount as number |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | loadingStatus.value = false |
| | | }) |
| | | } |
| | | const RePayFun = async () => { |
| | | if (multipleSelection.value.length == 0) { |
| | | ElMessage.error('请选择要重新支付的记录') |
| | | return |
| | | } |
| | | let ids = multipleSelection.value.map((x) => x.id) |
| | | for (let index = 0; index < ids.length; index++) { |
| | | const element = ids[index] |
| | | await ReSendCreadTransferMoney(element as number) |
| | | } |
| | | ElMessage.success('支付完毕刷新列表') |
| | | loadingStatus.value = false |
| | | } |
| | | |
| | | |
| | | const mysubmit = () => { |
| | | getList(); |
| | | getList() |
| | | } |
| | | const getSummaries = (param: any) => { |
| | | const { columns, data } = param |
| | | const sums: (string | VNode)[] = [] |
| | | columns.forEach((column: { property: string | number; }, index: number) => { |
| | | columns.forEach((column: { property: string | number }, index: number) => { |
| | | if (index === 0) { |
| | | sums[index] = h('div', { style: { textDecoration: 'underline' } }, [ |
| | | '统计', |
| | | ]) |
| | | sums[index] = h('div', { style: { textDecoration: 'underline' } }, ['统计']) |
| | | return |
| | | } |
| | | if (column.property == "totalAmount") { |
| | | const values = data.map((x:any) => x.totalAmount); |
| | | let formattedAmount = (values.reduce((prev: any, cur: any) => prev + cur) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }); |
| | | if (column.property == 'totalAmount') { |
| | | const values = data.map((x: any) => x.totalAmount ?? 0) |
| | | let formattedAmount = ( |
| | | values.reduce((prev: any, cur: any) => prev + cur) / 100 |
| | | ).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }) |
| | | sums[index] = formattedAmount |
| | | return |
| | | } |
| | | |
| | | |
| | | if (column.property == "successAmount") { |
| | | const values = data.map((x: { successAmount: any; }) => x.successAmount); |
| | | let formattedAmount = (values.reduce((prev: any, cur: any) => prev + cur) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }); |
| | | if (column.property == 'successAmount') { |
| | | const values = data.map((x: { successAmount: any }) => x.successAmount ?? 0) |
| | | let formattedAmount = ( |
| | | values.reduce((prev: any, cur: any) => prev + cur) / 100 |
| | | ).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }) |
| | | sums[index] = formattedAmount |
| | | return |
| | | } |
| | | if (column.property == "failAmount") { |
| | | const values = data.map((x: { failAmount: any; }) => x.failAmount); |
| | | let formattedAmount = (values.reduce((prev: any, cur: any) => prev + cur) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }); |
| | | if (column.property == 'failAmount') { |
| | | const values = data.map((x: { failAmount: any }) => x.failAmount ?? 0) |
| | | let formattedAmount = ( |
| | | values.reduce((prev: any, cur: any) => prev + cur) / 100 |
| | | ).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }) |
| | | sums[index] = formattedAmount |
| | | return |
| | | } |
| | | }) |
| | | |
| | | |
| | | |
| | | return sums |
| | | } |
| | |
| | | pageInfo.value = _pageInfo |
| | | getList() |
| | | } |
| | | |
| | | </script> |
| | | <style lang='scss' scoped></style> |
| | | <style lang="scss" scoped></style> |
| | |
| | | AccountId = FirmAccount.Keyid, |
| | | Money = data.PlanMoney ?? 0, |
| | | LastUpdateTime = DateTime.Now, |
| | | Department = data.PlanContent, |
| | | Department = data?.Depart?.Name??"", |
| | | RecordTypeId = 2, |
| | | SubjectId = 3,//报销必须为3 |
| | | Operator = Permissions.Name, |
| | |
| | | SearchList = SearchList.And(x => x.MemberId == _OAServices.firmId); |
| | | SearchList = SearchList.And(x => x.PlanType == 3); |
| | | SearchList = SearchList.And(x => x.PlanDataType == 17); |
| | | //SearchList = SearchList.And(x => x.ApprovalStatus == PlanStatusType.unApproval); |
| | | //SearchList = SearchList.And(x => x.OaWorkPlanShenpis.Where(y => y.Buzhou == 1 && y.ApprovalStaffId == Permissions.MemberId).Count()<=0); |
| | | SearchList = SearchList.And(x => x.OaWorkPlanShenpis.Count(y => y.Buzhou == 1&& y.ApprovalStaffId != Permissions.MemberId) < 2);//只需要两个人审批 另外两个人审批了,不在显示 |
| | | //SearchList = SearchList.And(x => x.ApprovalStatus == PlanStatusType.unApproval); |
| | | //SearchList = SearchList.And(x => x.OaWorkPlanShenpis.Where(y => y.Buzhou == 1 && y.ApprovalStaffId == Permissions.MemberId).Count() <= 0); |
| | | //SearchList = SearchList.And(x => x.DepartId == Permissions.DepartId); 部门筛选 |
| | | if (!string.IsNullOrEmpty(param.StaffName)) |
| | | { |
| | |
| | | //强制增加员工过滤 |
| | | |
| | | var data = await _SugarClient.Queryable<OaWorkPlan>().Includes(x=>x.Depart) |
| | | .Includes(x=>x.OaWorkPlanShenpis.Where(y=>y.ApprovalStaffId==Permissions.MemberId&&y.Buzhou==1).ToList()) |
| | | .Includes(x=>x.OaWorkPlanShenpis.Where(y=>y.Buzhou==1).ToList()) |
| | | .Where(SearchList).OrderByDescending(x => x.PlanStartTime).Mapper( |
| | | x => |
| | | { |
| | |
| | | { |
| | | throw Oops.Oh("报销单未提交不可审批"); |
| | | } |
| | | int shenpiCount = data.OaWorkPlanShenpis.Where(x => x.ApprovalStaffId != Permissions.MemberId && x.Buzhou == 1).Count(); |
| | | if(shenpiCount >= 2) |
| | | { |
| | | //两个人审批后。不可再审批 |
| | | throw Oops.Oh("已经已经结束"); |
| | | |
| | | } |
| | | OaWorkPlanShenpi shenpi = data.OaWorkPlanShenpis.Where(x => x.ApprovalStaffId == Permissions.MemberId&&x.Buzhou==1).FirstOrDefault(); |
| | | if (shenpi!=null) |
| | | { |
| | |
| | | /// </summary> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | [ApiExplorerSettings(IgnoreApi = true)] |
| | | [ApiExplorerSettings(IgnoreApi = true)] |
| | | public async Task<TransferOderOut> GetTransferOder(SearchTransferOder param) |
| | | { |
| | | |
| | |
| | | else |
| | | //有一笔大余0 的视为失败 |
| | | SearchList= SearchList.And(x => x.FailNum ==0&&x.BatchStatus=="FINISHED"); |
| | | var data=await WeChatTransferOrderwork.AsQueryable().Where(SearchList).Select(x=>new WeChatTransferOrder |
| | | var data=await WeChatTransferOrderwork.AsQueryable().Includes(x => x.user, u => u.Worek).Where(SearchList).Select(x=>new WeChatTransferOrder |
| | | { |
| | | BatchRemark= SqlFunc.Subqueryable<UserWorker>().Where(uw=>uw.UserId==x.UserID).Select(uw => uw.name+ uw.IdCode) |
| | | UserName=x.user.Worek.name, |
| | | UserIDCode = x.user.Worek.IdCode, |
| | | ItCode = x.user.ItCode, |
| | | YiTiXianGz = x.user.Worek.YiTiXianJine, |
| | | ZhongGz = x.user.Worek.TiXianZonge, |
| | | BatchRemark = SqlFunc.Subqueryable<UserWorker>().Where(uw=>uw.UserId==x.UserID).Select(uw => uw.name+ uw.IdCode) |
| | | },true).ToPageListAsync(pageModel.PageIndex, pageModel.PageSize,pageModel.TotalCount); |
| | | //var data = await WeChatTransferOrderwork.GetPageListAsync(SearchList, pageModel); |
| | | |
| | |
| | | } |
| | | RefAsync<int> title = 0; |
| | | var BR = new BaseRepository<WeChatTransferOrder>(); |
| | | var data= await BR.AsQueryable().Includes(x=>x.user,u=>u.Worek).Select(x=>new WeChatTransferOrder |
| | | { |
| | | UserIDCode= x.user.Worek.IdCode, |
| | | UserName=x.user.Worek.name, |
| | | TotalAmount=x.TotalAmount, |
| | | TotalNum=x.TotalNum, |
| | | BatchId=x.BatchId, |
| | | SuccessNum=x.SuccessNum, |
| | | OutBatchNumber=x.OutBatchNumber, |
| | | BatchName = x.BatchName, |
| | | BatchStatus=x.BatchStatus, |
| | | UserID= x.UserID, |
| | | UpDataTime=x.UpDataTime, |
| | | YiTiXianGz=x.user.Worek.YiTiXianJine, |
| | | ZhongGz=x.user.Worek.TiXianZonge, |
| | | ItCode=x.user.ItCode, |
| | | SuccessAmount= x.SuccessAmount, |
| | | FailAmount=x.FailAmount |
| | | |
| | | var data = await BR.AsQueryable().Includes(x => x.user, u => u.Worek).Select(x => new WeChatTransferOrder |
| | | { |
| | | Id = 0, |
| | | UserIDCode = x.user.Worek.IdCode, |
| | | UserName = x.user.Worek.name, |
| | | TotalAmount = x.TotalAmount, |
| | | TotalNum = x.TotalNum, |
| | | BatchId = x.BatchId, |
| | | SuccessNum = x.SuccessNum, |
| | | OutBatchNumber = x.OutBatchNumber, |
| | | BatchName = x.BatchName, |
| | | BatchStatus = x.BatchStatus, |
| | | UserID = x.UserID, |
| | | UpDataTime = x.UpDataTime, |
| | | YiTiXianGz = x.user.Worek.YiTiXianJine, |
| | | ZhongGz = x.user.Worek.TiXianZonge, |
| | | ItCode = x.user.ItCode, |
| | | SuccessAmount = x.SuccessAmount, |
| | | FailAmount = x.FailAmount, |
| | | CreateTime = x.CreateTime |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }).MergeTable().WhereIF(where != null, where).OrderByIF(order!=null,order,Param.Order?.Des?? OrderByType.Asc).ToPageListAsync(Param.Page.PageIndex,Param.Page.PageSize, title); |
| | | |
| | | },true).MergeTable().WhereIF(where != null, where).OrderByIF(order!=null,order,Param.Order?.Des?? OrderByType.Asc).ToPageListAsync(Param.Page.PageIndex,Param.Page.PageSize, title); |
| | | |
| | | |
| | | |
| | |
| | | public string Operator { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 审批步骤 |
| | | /// 审批步骤 1 是主管审批,2是经理审批 |
| | | /// </summary> |
| | | [SugarColumn(ColumnName = "Buzhou")] |
| | | public int? Buzhou { get; set; } |
| | |
| | | |
| | | |
| | | // "ConnectionString": "Server=192.168.0.31;Database=CyLsgDb; MultipleActiveResultSets=true;pooling=true;min pool size=5;max pool size=32767;connect timeout=20;Encrypt=True;TrustServerCertificate=True;integrated security=True;", |
| | | "ConnectionString": "Server=192.168.18.15;Database=CyLsgDb; MultipleActiveResultSets=true;pooling=true;min pool size=5;max pool size=32767;connect timeout=20;Encrypt=True;TrustServerCertificate=True;User Id=SA;Password=123456;", |
| | | "ConnectionString": "Server=192.168.18.5;Database=CyLsgDb; MultipleActiveResultSets=true;pooling=true;min pool size=5;max pool size=32767;connect timeout=20;Encrypt=True;TrustServerCertificate=True;User Id=SA;Password=123456;", |
| | | "DbType": "SqlServer", // "SqlServer" ,mysql, |
| | | "IsAutoCloseConnection": true |
| | | } |
| | |
| | | //"IsAutoCloseConnection": true |
| | | |
| | | |
| | | "ConnectionString": "Server=192.168.18.15;Database=ECTEST_NEW; MultipleActiveResultSets=true;pooling=true;min pool size=5;max pool size=32767;connect timeout=20;Encrypt=True;TrustServerCertificate=True;User Id=SA;Password=123456;", |
| | | "ConnectionString": "Server=192.168.18.5;Database=ECTEST_NEW; MultipleActiveResultSets=true;pooling=true;min pool size=5;max pool size=32767;connect timeout=20;Encrypt=True;TrustServerCertificate=True;User Id=SA;Password=123456;", |
| | | // "ConnectionString": "Server=118.123.213.60;Database=ECTEST_NEW; MultipleActiveResultSets=true;pooling=true;min pool size=5;max pool size=32767;connect timeout=20;Encrypt=True;TrustServerCertificate=True;User Id=SA;Password=123qwe!@#;", |
| | | "DbType": "SqlServer", // "SqlServer" ,mysql, |
| | | "IsAutoCloseConnection": true, |
| | |
| | | "ValidateAudience": true, // 是否验证签收方,bool 类型,默认true |
| | | "ValidAudience": "www.51zhengcai.com", // 签收方,string 类型 |
| | | "ValidateLifetime": true, // 是否验证过期时间,bool 类型,默认true,建议true |
| | | "ExpiredTime": 14400, // 过期时间,long 类型,单位分钟,默认20分钟 |
| | | "ExpiredTime": 10, // 过期时间,long 类型,单位分钟,默认20分钟 |
| | | "ClockSkew": 5, // 过期时间容错值,long 类型,单位秒,默认 5秒 |
| | | "Algorithm": "HS256", // 加密算法,string 类型,默认 HS256 |
| | | "RefreshTokenExpires": 14400 //分钟 1天 1440分钟 |
| | | "RefreshTokenExpires": 1 //分钟 1天 1440分钟 |
| | | } |
| | | } |