shenwu преди 5 месеца
родител
ревизия
be8ca4fdaf

+ 13 - 4
src/models/global.tsx

@@ -1,4 +1,5 @@
 import { enumDictList, queryLabelList, queryCategoryList, queryAuthList } from "@/services/global"
+import { Badge } from "antd"
 import { useReducer, useState } from "react"
 
 type State = {
@@ -28,7 +29,7 @@ export function reducer(state: State, action: Action) {
             return state;
     }
 }
-export default (): { state: State, init: () => void, getEnum: (enumName: string, type: "map" | "arr" | "obj") => any, getLabelAndClassList: (params?: { workDirection: number | string }) => Promise<boolean> } => {
+export default (): { state: State, init: () => void, getEnum: (enumName: string, type: "map" | "arr" | "obj"| "stateObj", stateEnum?: {[key: string]:"success"|"error"|"default"|"processing"|"warning"}) => any, getLabelAndClassList: (params?: { workDirection: number | string }) => Promise<boolean> } => {
     const [state, dispatch] = useReducer(reducer, {})
     let isLoding = false
     const init = async () => {
@@ -61,8 +62,8 @@ export default (): { state: State, init: () => void, getEnum: (enumName: string,
                 { value: "unverified", description: "注册号" },
             ]
         }
-         //企微通讯录状态
-         enumList["CORPSTATE"] = {
+        //企微通讯录状态
+        enumList["CORPSTATE"] = {
             values: [
                 { value: 1, description: "已激活" },
                 { value: 2, description: "已禁用" },
@@ -110,7 +111,7 @@ export default (): { state: State, init: () => void, getEnum: (enumName: string,
         dispatch({ type: "setAll", params: { ...state, labelList, categoryList } })
         return true
     }
-    const getEnum = (enumName: string, type: "map" | "arr" | "obj") => {
+    const getEnum = (enumName: string, type: "map" | "arr" | "obj"| "stateObj", stateEnum?: {[key: string]:"success"|"error"|"default"|"processing"|"warning"}) => {
         let arr = state?.enumList?.[enumName]?.values
         // console.log("arr",enumName,arr)
         switch (type) {
@@ -126,6 +127,14 @@ export default (): { state: State, init: () => void, getEnum: (enumName: string,
                     }
                 }
                 return obj
+            case "stateObj":
+                let stateObj: any = {}
+                if (arr && stateEnum) {
+                    for (let item of arr) {
+                        stateObj[item?.value] = { text: <Badge status={stateEnum[item?.value]} text={item.description} />, disabled: false }
+                    }
+                }
+                return stateObj
         }
     }
     return {

+ 33 - 11
src/pages/MiniApp/PayLog/Long/tableConfig.tsx

@@ -3,7 +3,7 @@ import { useModel } from "@umijs/max";
 import { Badge } from "antd";
 
 export const columns = (): ProColumns<any>[] => {
-    let {getEnum} = useModel("global")
+    let { getEnum } = useModel("global")
     let payChannelObj: any = { '1': '微信小程序支付' };
     let orderTypeObj: any = { '1': '书币充值', "2": "vip充值", "3": "购买整本" };
     let orderStatusObj: any = { '1': '待支付', "2": "已支付" };
@@ -23,7 +23,7 @@ export const columns = (): ProColumns<any>[] => {
             dataIndex: 'bookName',
             key: "bookName",
             align: "center",
-            render:(a,b:any)=>{
+            render: (a, b: any) => {
                 return b?.bookInfo?.bookName
             }
         },
@@ -32,9 +32,9 @@ export const columns = (): ProColumns<any>[] => {
             dataIndex: 'payChannel',
             key: "payChannel",
             align: "center",
-            valueType:'select',
-            valueEnum:payChannelObj,
-            render: (a: any,b:any) => {
+            valueType: 'select',
+            valueEnum: payChannelObj,
+            render: (a: any, b: any) => {
                 return payChannelObj[b.payChannel]
             },
         },
@@ -49,10 +49,10 @@ export const columns = (): ProColumns<any>[] => {
             title: "订单类型",
             dataIndex: 'orderType',
             key: "orderType",
-            valueType:'select',
-            valueEnum:orderTypeObj,
+            valueType: 'select',
+            valueEnum: orderTypeObj,
             align: "center",
-            render: (a: any,b:any) => {
+            render: (a: any, b: any) => {
                 return orderTypeObj[b.orderType]
             }
         },
@@ -60,10 +60,10 @@ export const columns = (): ProColumns<any>[] => {
             title: "订单状态",
             dataIndex: 'orderStatus',
             key: "orderStatus",
-            valueType:'select',
-            valueEnum:orderStatusObj,
+            valueType: 'select',
+            valueEnum: orderStatusObj,
             align: "center",
-            render: (a: any,b:any) => {
+            render: (a: any, b: any) => {
                 return <Badge text={orderStatusObj[b.orderStatus]} status={b.orderStatus != 1 ? "success" : "warning"} />
             }
         },
@@ -86,6 +86,13 @@ export const columns = (): ProColumns<any>[] => {
             hideInSearch: true,
             align: "center",
         },
+        {
+            title: "下单场景",
+            dataIndex: 'orderCondition',
+            key: "orderCondition",
+            hideInSearch: true,
+            align: "center",
+        },
         {
             title: "支付时间",
             tooltip: "实际到账时间",
@@ -94,6 +101,21 @@ export const columns = (): ProColumns<any>[] => {
             hideInSearch: true,
             align: "center",
         },
+        {
+            title: "上报金额",
+            dataIndex: 'backMoney',
+            key: "backMoney",
+            hideInSearch: true,
+            align: "center",
+        },
+        {
+            title: "上报状态",
+            dataIndex: 'backStatus',
+            key: "backStatus",
+            hideInSearch: true,
+            align: "center",
+            valueEnum: getEnum("BACK_STATUS", "stateObj", { "0": 'default', "-1": "error", "1": "processing", "2": "success", "3": "warning" }),
+        },
         {
             title: '归因渠道',
             dataIndex: 'userChannel',

+ 16 - 4
src/pages/MiniApp/PayLog/Short/index.tsx

@@ -1,16 +1,28 @@
-import { PageContainer, ProTable } from "@ant-design/pro-components"
+import { ActionType, PageContainer, ProTable } from "@ant-design/pro-components"
 import { columns } from "./tableConfig"
 import { useAjax } from "@/Hook/useAjax"
 import { useModel } from "@umijs/max"
-import { shortBookOrderList } from "@/services/miniApp/payLog"
+import { shortBookOrderList, shortBookOrderReportOrder } from "@/services/miniApp/payLog"
+import { useCallback, useRef } from "react"
 
 const Page: React.FC = () => {
     let { initialState } = useModel("@@initialState")
+    const actionRef = useRef<ActionType>();
     let getList = useAjax((params) => shortBookOrderList(params), { type: 'table' })
+    let ShortBookOrderReportOrder = useAjax((params) => shortBookOrderReportOrder(params))
+    const submit = useCallback((params: { orderNo: string }) => {
+        ShortBookOrderReportOrder.run(params).then(res => {
+            if (res.code === 200) {
+                actionRef?.current?.reload()
+            }
+        })
+    }, [])
     return <PageContainer title={false}
     >
         <ProTable<any, any>
-            scroll={{ x: true}}
+            actionRef={actionRef}
+            scroll={{ x: true }}
+            loading={getList?.loading || ShortBookOrderReportOrder?.loading}
             params={{
                 appId: initialState?.selectApp?.id || "",
                 distributorId: initialState?.currentUser?.distributorId,
@@ -24,7 +36,7 @@ const Page: React.FC = () => {
             request={async (params) => {
                 return await getList.run(params)
             }}
-            columns={columns()}
+            columns={columns(submit)}
         // bordered
         />
     </PageContainer>

+ 22 - 3
src/pages/MiniApp/PayLog/Short/tableConfig.tsx

@@ -1,9 +1,9 @@
 import { ProColumns } from "@ant-design/pro-components";
 import { useModel } from "@umijs/max";
-import { Badge } from "antd";
+import { Badge, Button, Space, Tag } from "antd";
 
-export const columns = (): ProColumns<any>[] => {
-    let {getEnum} = useModel("global")
+export const columns = (submit: (params: { orderNo: string }) => void): ProColumns<any>[] => {
+    let { getEnum } = useModel("global")
     let payChannelObj: any = { '1': '微信小程序支付' };
     let orderTypeObj: any = { '1': '书币充值', "2": "vip充值", "3": "购买整本" };
     let orderStatusObj: any = { '1': '待支付', "2": "已支付" };
@@ -101,6 +101,25 @@ export const columns = (): ProColumns<any>[] => {
             hideInSearch: true,
             align: "center",
         },
+        {
+            title: "上报金额",
+            dataIndex: 'backMoney',
+            key: "backMoney",
+            hideInSearch: true,
+            align: "center",
+        },
+        {
+            title: "上报状态",
+            dataIndex: 'backStatus',
+            key: "backStatus",
+            hideInSearch: true,
+            align: "center",
+            render: (_, row) => {
+                let obj = getEnum("BACK_STATUS", "stateObj", { "0": 'default', "-1": "error", "1": "processing", "2": "success", "3": "warning" })
+                let isShowBtn = [1, -1].includes(row?.backStatus)
+                return <Space>{obj[row.backStatus]?.text}{isShowBtn && <Tag.CheckableTag checked onClick={() => {submit({orderNo:row.orderNo}) }}>上报</Tag.CheckableTag>}</Space>
+            }
+        },
         {
             title: '归因渠道',
             dataIndex: 'userChannel',

+ 8 - 1
src/services/miniApp/payLog/index.tsx

@@ -33,4 +33,11 @@ export async function shortBookOrderList(params:Params) {
       method: 'GET',
       params
     })
-  }
+  }
+/**上报订单 */
+export async function shortBookOrderReportOrder(params:Params) {
+  return request(api+'/admin/shortBookOrder/reportOrder', {
+    method: 'POST',
+    params
+  })
+}