This commit is contained in:
ylj20011123 2025-07-14 19:31:26 +08:00
parent 59c2d7d5bd
commit b3eba7b8bd
11 changed files with 661 additions and 274 deletions

View File

@ -992,7 +992,14 @@ export default [
path: 'scenicSpotConfig', path: 'scenicSpotConfig',
name: 'scenicSpotConfig', name: 'scenicSpotConfig',
component: './travelMember/scenicSpotConfig/index' component: './travelMember/scenicSpotConfig/index'
} },
// 交易台账
{
path: 'TradingLedger',
name: 'TradingLedger',
component: './travelMember/TradingLedger/index'
},
] ]
}, },
{ {

View File

@ -1,18 +1,18 @@
import {connect} from "umi"; import { connect } from "umi";
import type {CurrentUser} from "umi"; import type { CurrentUser } from "umi";
import type {ConnectState} from "@/models/connect"; import type { ConnectState } from "@/models/connect";
import React, {useRef, useState} from "react"; import React, { useRef, useState } from "react";
import ProCard from "@ant-design/pro-card"; import ProCard from "@ant-design/pro-card";
import {FileSearchOutlined, MenuFoldOutlined, PlusOutlined} from "@ant-design/icons"; import { FileSearchOutlined, MenuFoldOutlined, PlusOutlined } from "@ant-design/icons";
import type {FormInstance} from "antd"; import type { FormInstance } from "antd";
import { Popconfirm} from "antd"; import { Popconfirm } from "antd";
import {Button, message, Modal, Space, Spin, Tree} from "antd"; import { Button, message, Modal, Space, Spin, Tree } from "antd";
import useRequest from "@ahooksjs/use-request"; import useRequest from "@ahooksjs/use-request";
import {getFieldEnumTree, getServerpartTree} from "@/services/options"; import { getFieldEnumTree, getServerpartTree } from "@/services/options";
import type {ActionType} from "@ant-design/pro-table"; import type { ActionType } from "@ant-design/pro-table";
import ProTable from "@ant-design/pro-table"; import ProTable from "@ant-design/pro-table";
import ReactHTMLTableToExcel from "react-html-table-to-excel"; import ReactHTMLTableToExcel from "react-html-table-to-excel";
import {ModalForm, ProFormRadio, ProFormSelect, ProFormText, ProFormTreeSelect} from "@ant-design/pro-form"; import { ModalForm, ProFormRadio, ProFormSelect, ProFormText, ProFormTreeSelect } from "@ant-design/pro-form";
import { import {
handleDeleteAPPROVALROUTE, handleDeleteAPPROVALROUTE,
handleDeleteBUSINESSAPPROVAL, handleDeleteBUSINESSAPPROVAL,
@ -20,13 +20,13 @@ import {
handleSynchroAPPROVALROUTE handleSynchroAPPROVALROUTE
} from "@/pages/Setting/serviceConfig/service"; } from "@/pages/Setting/serviceConfig/service";
import moment from "moment"; import moment from "moment";
import {getUserList, getUserTypeTree} from "@/pages/Setting/Users/service"; import { getUserList, getUserTypeTree } from "@/pages/Setting/Users/service";
import ChosePlayers from "@/pages/Setting/serviceConfig/component/ChosePlayers"; import ChosePlayers from "@/pages/Setting/serviceConfig/component/ChosePlayers";
import Draggable from "react-draggable"; import Draggable from "react-draggable";
import session from "@/utils/session"; import session from "@/utils/session";
const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { const ServiceConfig: React.FC<{ currentUser: CurrentUser }> = (props) => {
const { currentUser } = props const { currentUser } = props
// 选择参与人的 // 选择参与人的
const choseDetail = useRef() const choseDetail = useRef()
@ -46,9 +46,9 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
const serviceType = session.get('PROCESS_TYPEList') const serviceType = session.get('PROCESS_TYPEList')
const treeView = session.get('PROCESS_TYPETree') const treeView = session.get('PROCESS_TYPETree')
// 选择的角色类型 // 选择的角色类型
const [selectRoleType,setSelectRoleType] = useState<number>(0) const [selectRoleType, setSelectRoleType] = useState<number>(0)
// 选择的角色类别id // 选择的角色类别id
const [selectRoleTypeId,setSelectRoleTypeId] = useState<any>() const [selectRoleTypeId, setSelectRoleTypeId] = useState<any>()
// 加载服务区树 // 加载服务区树
// const { loading: treeLoading, data: treeViews } = useRequest(async () => { // const { loading: treeLoading, data: treeViews } = useRequest(async () => {
@ -67,46 +67,46 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
// // return data // // return data
// }) // })
// 显示悬浮抽屉 // 显示悬浮抽屉
const [modalVisible,setModalVisible] = useState<boolean>(false) const [modalVisible, setModalVisible] = useState<boolean>(false)
// 树相关的属性和方法 // 树相关的属性和方法
const [selectedId, setSelectedId] = useState<string>() const [selectedId, setSelectedId] = useState<string>()
// 导出的加载效果 // 导出的加载效果
const [showLoading,setShowLoading] = useState<boolean>(false) const [showLoading, setShowLoading] = useState<boolean>(false)
// 是否显示打印的表格 // 是否显示打印的表格
const [showExportTable,setShowExportTable] = useState<boolean>(false) const [showExportTable, setShowExportTable] = useState<boolean>(false)
// 业务状态选择 // 业务状态选择
const [businessTypeState,setBussinessTypeState] = useState<any>([ const [businessTypeState, setBussinessTypeState] = useState<any>([
// 1000,2000,2010,2020,2030,2040,2050,2060,2070,2080,2090 // 1000,2000,2010,2020,2030,2040,2050,2060,2070,2080,2090
{label:'1000',value:1000}, { label: '1000', value: 1000 },
{label:'2000',value:2000}, { label: '2000', value: 2000 },
{label:'2010',value:2010}, { label: '2010', value: 2010 },
{label:'2020',value:2020}, { label: '2020', value: 2020 },
{label:'2030',value:2030}, { label: '2030', value: 2030 },
{label:'2040',value:2040}, { label: '2040', value: 2040 },
{label:'2050',value:2050}, { label: '2050', value: 2050 },
{label:'2060',value:2060}, { label: '2060', value: 2060 },
{label:'2070',value:2070}, { label: '2070', value: 2070 },
{label:'2080',value:2080}, { label: '2080', value: 2080 },
{label:'2090',value:2090}, { label: '2090', value: 2090 },
// {label:'商户确认审核',value:2000}, // {label:'商户确认审核',value:2000},
// {label:'服务区经理审核',value:2010}, // {label:'服务区经理审核',value:2010},
// {label:'片区中心审核',value:2020}, // {label:'片区中心审核',value:2020},
// {label:'经发部审核',value:2030}, // {label:'经发部审核',value:2030},
// {label:'财务部审核',value:2040}, // {label:'财务部审核',value:2040},
]) ])
const [nextBusinessTypeState,setNextBusinessTypeState]= useState<any>([ const [nextBusinessTypeState, setNextBusinessTypeState] = useState<any>([
// 2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,9000 // 2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,9000
{label:'2000',value:2000}, { label: '2000', value: 2000 },
{label:'2010',value:2010}, { label: '2010', value: 2010 },
{label:'2020',value:2020}, { label: '2020', value: 2020 },
{label:'2030',value:2030}, { label: '2030', value: 2030 },
{label:'2040',value:2040}, { label: '2040', value: 2040 },
{label:'2050',value:2050}, { label: '2050', value: 2050 },
{label:'2060',value:2060}, { label: '2060', value: 2060 },
{label:'2070',value:2070}, { label: '2070', value: 2070 },
{label:'2080',value:2080}, { label: '2080', value: 2080 },
{label:'2090',value:2090}, { label: '2090', value: 2090 },
{label:'9000',value:9000}, { label: '9000', value: 9000 },
// {label:'商户确认审核',value:2000}, // {label:'商户确认审核',value:2000},
// {label:'服务区经理审核',value:2010}, // {label:'服务区经理审核',value:2010},
// {label:'片区中心审核',value:2020}, // {label:'片区中心审核',value:2020},
@ -114,14 +114,14 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
// {label:'财务部审核',value:2040}, // {label:'财务部审核',value:2040},
]) ])
// 显示参与人的悬浮框 // 显示参与人的悬浮框
const [showChosePlayer,setShowChosePlayer] = useState<boolean>(false) const [showChosePlayer, setShowChosePlayer] = useState<boolean>(false)
// 参与人列表 // 参与人列表
const [playerList,setPlayerList] = useState<any>() const [playerList, setPlayerList] = useState<any>()
const [playDefaulterList,setPlayDefaulterList] = useState<any>() const [playDefaulterList, setPlayDefaulterList] = useState<any>()
// 点击的行的详情数据 // 点击的行的详情数据
const [currentRow,setCurrentRow] = useState<any>() const [currentRow, setCurrentRow] = useState<any>()
// 默认的人 // 默认的人
const [defaultPerson,setDefaultPerson] = useState<any>() const [defaultPerson, setDefaultPerson] = useState<any>()
const draggleRef = React.createRef<any>() const draggleRef = React.createRef<any>()
const [disabled, setDraggleDisabled] = useState<boolean>() // 是否拖动 const [disabled, setDraggleDisabled] = useState<boolean>() // 是否拖动
const [bounds, setBounds] = useState<{ left: number, right: number, top: number, bottom: number }>() // 移动的位置 const [bounds, setBounds] = useState<{ left: number, right: number, top: number, bottom: number }>() // 移动的位置
@ -141,14 +141,14 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
const columns: any = [ const columns: any = [
{ {
title:'环节名称', title: '环节名称',
dataIndex:'APPROVALROUTE_NAME', dataIndex: 'APPROVALROUTE_NAME',
hideInSearch: true hideInSearch: true
}, },
{ {
title:'业务状态', title: '业务状态',
dataIndex:'APPROVALROUTE_STATE', dataIndex: 'APPROVALROUTE_STATE',
sorter: (a,b)=> a.APPROVALROUTE_STATE - b.APPROVALROUTE_STATE, sorter: (a, b) => a.APPROVALROUTE_STATE - b.APPROVALROUTE_STATE,
defaultSortOrder: 'ascend', defaultSortOrder: 'ascend',
// valueType: 'select', // valueType: 'select',
// 暂时只支持业务类型为11的商户对账审批 // 暂时只支持业务类型为11的商户对账审批
@ -161,15 +161,15 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
// } // }
}, },
{ {
title:'业务类型', title: '业务类型',
dataIndex:'OPERATION_TYPE', dataIndex: 'OPERATION_TYPE',
valueType: 'select', valueType: 'select',
hideInSearch: true, hideInSearch: true,
valueEnum: serviceTypeObj valueEnum: serviceTypeObj
}, },
{ {
title:'下一业务状态', title: '下一业务状态',
dataIndex:'NEXT_STATE', dataIndex: 'NEXT_STATE',
// valueType: 'select', // valueType: 'select',
hideInSearch: true, hideInSearch: true,
// valueEnum:{ // valueEnum:{
@ -181,33 +181,39 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
// } // }
}, },
{ {
title:'参与人', title: '参与人',
dataIndex:'APPROVALSTAFF_NAME', dataIndex: 'APPROVALSTAFF_NAME',
width: 200, width: 200,
ellipsis: true, ellipsis: true,
hideInSearch: true, hideInSearch: true,
}, },
{ {
title:'生成时间', title: '生成时间',
dataIndex:'RECORD_DATE', dataIndex: 'RECORD_DATE',
hideInSearch: true, hideInSearch: true,
render:(_,record)=>{ render: (_, record) => {
return record?.RECORD_DATE?moment(record?.RECORD_DATE).format('YYYY-MM-DD'):'' return record?.RECORD_DATE ? moment(record?.RECORD_DATE).format('YYYY-MM-DD') : ''
} }
}, },
{
title: '业主单位',
width: 120,
dataIndex: 'PROVINCE_CODE',
hideInSearch: true,
},
{ {
dataIndex: 'option', dataIndex: 'option',
title: '操作', title: '操作',
width: 120, width: 120,
valueType: 'option', valueType: 'option',
align: 'center', align: 'center',
fixed:'right', fixed: 'right',
hideInSearch: true, hideInSearch: true,
render: (_,record)=>{ render: (_, record) => {
return ( return (
<Space> <Space>
<a onClick={()=>{ <a onClick={() => {
console.log('record',record) console.log('record', record)
setSelectRoleType(record?.USER_PATTERN) setSelectRoleType(record?.USER_PATTERN)
setCurrentRow(record) setCurrentRow(record)
setModalVisible(true) setModalVisible(true)
@ -259,7 +265,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
tempTable.remove() // 防止重复打印一个内容 tempTable.remove() // 防止重复打印一个内容
} }
// 查询的条件 // 查询的条件
const [searchParams,setSearchParams] = useState<any>() const [searchParams, setSearchParams] = useState<any>()
return ( return (
<div ref={(el) => { <div ref={(el) => {
@ -291,13 +297,13 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
borderRadius: '8px', borderRadius: '8px',
width: '200px' width: '200px'
}}> }}>
<Spin/> <Spin />
<span style={{marginLeft: '5px'}}>...</span> <span style={{ marginLeft: '5px' }}>...</span>
</div> </div>
</div> : '' </div> : ''
} }
<div className={'saleReportHideBox'} style={{position: 'fixed', zIndex: -1, top: 0, left: 0}}> <div className={'saleReportHideBox'} style={{ position: 'fixed', zIndex: -1, top: 0, left: 0 }}>
{ {
showExportTable && reqDetailList && reqDetailList.length > 0 ? showExportTable && reqDetailList && reqDetailList.length > 0 ?
<ProTable <ProTable
@ -310,16 +316,16 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
/> : '' /> : ''
} }
</div> </div>
<div id='hiddenBox' style={{position: 'fixed', zIndex: -1, top: 0, left: 0}}/> <div id='hiddenBox' style={{ position: 'fixed', zIndex: -1, top: 0, left: 0 }} />
<div style={{backgroundColor: '#fff',display:'flex'}}> <div style={{ backgroundColor: '#fff', display: 'flex' }}>
<ProCard <ProCard
style={{width:!collapsible ? "300px" : "60px"}} style={{ width: !collapsible ? "300px" : "60px" }}
className="pageTable-leftnav" className="pageTable-leftnav"
bodyStyle={{padding: 0, paddingTop: 20, paddingLeft: 20,width:!collapsible ? "300px" : "60px"}} bodyStyle={{ padding: 0, paddingTop: 20, paddingLeft: 20, width: !collapsible ? "300px" : "60px" }}
extra={<MenuFoldOutlined onClick={() => { extra={<MenuFoldOutlined onClick={() => {
setCollapsible(!collapsible) setCollapsible(!collapsible)
}}/>} }} />}
colSpan={!collapsible ? "300px" : "60px"} colSpan={!collapsible ? "300px" : "60px"}
title={!collapsible ? "请选择业务类型" : ""} title={!collapsible ? "请选择业务类型" : ""}
headerBordered headerBordered
@ -349,7 +355,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
/> : ''} /> : ''}
</ProCard> </ProCard>
<div style={{ <div style={{
width:!collapsible?'calc(100% - 300px)':'calc(100% - 60px)', width: !collapsible ? 'calc(100% - 300px)' : 'calc(100% - 60px)',
paddingTop: 0, paddingTop: 0,
paddingBottom: 0, paddingBottom: 0,
paddingRight: 0 paddingRight: 0
@ -363,13 +369,13 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
expandRowByClick: true expandRowByClick: true
}} }}
headerTitle={'业务配置'} headerTitle={'业务配置'}
search={{span: 6}} search={{ span: 6 }}
request={async(params)=>{ request={async (params) => {
if (!selectedId){ if (!selectedId) {
return return
} }
const req: any = { const req: any = {
SearchParameter:{ SearchParameter: {
OPERATION_TYPES: selectedId || '11', OPERATION_TYPES: selectedId || '11',
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
APPROVALROUTE_STATES: params?.APPROVALROUTE_STATE || '', APPROVALROUTE_STATES: params?.APPROVALROUTE_STATE || '',
@ -380,10 +386,10 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
} }
setSearchParams(params) setSearchParams(params)
const data = await handleGetAPPROVALROUTEList(req) const data = await handleGetAPPROVALROUTEList(req)
if (data && data.length>0){ if (data && data.length > 0) {
return {data,success: true} return { data, success: true }
} }
return {data:[],success: true} return { data: [], success: true }
}} }}
toolbar={{ toolbar={{
actions: [ actions: [
@ -406,68 +412,68 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
<ModalForm <ModalForm
formRef={addFormRef} formRef={addFormRef}
title={currentRow?"编辑环节":"新建环节"} title={currentRow ? "编辑环节" : "新建环节"}
visible={modalVisible} visible={modalVisible}
layout={"horizontal"} layout={"horizontal"}
wrapperCol={{ span: 16 }} wrapperCol={{ span: 16 }}
labelCol={{ span: 6 }} labelCol={{ span: 6 }}
labelAlign="right" labelAlign="right"
width={600} width={600}
onVisibleChange={async (value)=>{ onVisibleChange={async (value) => {
if (!value){ if (!value) {
addFormRef.current?.resetFields(); addFormRef.current?.resetFields();
setSelectRoleType(0) setSelectRoleType(0)
setPlayerList([]) setPlayerList([])
setDefaultPerson([]) setDefaultPerson([])
setCurrentRow(undefined) setCurrentRow(undefined)
setNextBusinessTypeState([ setNextBusinessTypeState([
{label:'2000',value:2000}, { label: '2000', value: 2000 },
{label:'2010',value:2010}, { label: '2010', value: 2010 },
{label:'2020',value:2020}, { label: '2020', value: 2020 },
{label:'2030',value:2030}, { label: '2030', value: 2030 },
{label:'2040',value:2040}, { label: '2040', value: 2040 },
{label:'2050',value:2050}, { label: '2050', value: 2050 },
{label:'2060',value:2060}, { label: '2060', value: 2060 },
{label:'2070',value:2070}, { label: '2070', value: 2070 },
{label:'2080',value:2080}, { label: '2080', value: 2080 },
{label:'2090',value:2090}, { label: '2090', value: 2090 },
{label:'9000',value:9000}, { label: '9000', value: 9000 },
]) ])
}else{ } else {
if (currentRow){ if (currentRow) {
setSelectRoleTypeId(currentRow.SYSTEMROLEIDS) setSelectRoleTypeId(currentRow.SYSTEMROLEIDS)
if (currentRow?.APPROVALROUTE_STATE){ if (currentRow?.APPROVALROUTE_STATE) {
const list: any = [{label:'2000',value:2000}, const list: any = [{ label: '2000', value: 2000 },
{label:'2010',value:2010}, { label: '2010', value: 2010 },
{label:'2020',value:2020}, { label: '2020', value: 2020 },
{label:'2030',value:2030}, { label: '2030', value: 2030 },
{label:'2040',value:2040}, { label: '2040', value: 2040 },
{label:'2050',value:2050}, { label: '2050', value: 2050 },
{label:'2060',value:2060}, { label: '2060', value: 2060 },
{label:'2070',value:2070}, { label: '2070', value: 2070 },
{label:'2080',value:2080}, { label: '2080', value: 2080 },
{label:'2090',value:2090}, { label: '2090', value: 2090 },
{label:'9000',value:9000}] { label: '9000', value: 9000 }]
list.forEach((item: any)=>{ list.forEach((item: any) => {
if (item.value<=Number(currentRow?.APPROVALROUTE_STATE)){ if (item.value <= Number(currentRow?.APPROVALROUTE_STATE)) {
item.disabled = true item.disabled = true
} }
}) })
setNextBusinessTypeState(list) setNextBusinessTypeState(list)
} }
else{ else {
const list: any = [{label:'2000',value:2000}, const list: any = [{ label: '2000', value: 2000 },
{label:'2010',value:2010}, { label: '2010', value: 2010 },
{label:'2020',value:2020}, { label: '2020', value: 2020 },
{label:'2030',value:2030}, { label: '2030', value: 2030 },
{label:'2040',value:2040}, { label: '2040', value: 2040 },
{label:'2050',value:2050}, { label: '2050', value: 2050 },
{label:'2060',value:2060}, { label: '2060', value: 2060 },
{label:'2070',value:2070}, { label: '2070', value: 2070 },
{label:'2080',value:2080}, { label: '2080', value: 2080 },
{label:'2090',value:2090}, { label: '2090', value: 2090 },
{label:'9000',value:9000}] { label: '9000', value: 9000 }]
list.forEach((item: any)=>{ list.forEach((item: any) => {
item.disabled = false item.disabled = false
}) })
setNextBusinessTypeState(list) setNextBusinessTypeState(list)
@ -478,17 +484,17 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
}) })
const req: any = { const req: any = {
SearchParameter:{ SearchParameter: {
USER_IDS: currentRow?.APPROVALSTAFF_ID USER_IDS: currentRow?.APPROVALSTAFF_ID
}, },
PageIndex: 1, PageIndex: 1,
PageSize: 999999 PageSize: 999999
} }
const data = await handleGetUSERList(req) const data = await handleGetUSERList(req)
if (data && data.length>0){ if (data && data.length > 0) {
const list: any = [] const list: any = []
data.forEach((item: any)=>{ data.forEach((item: any) => {
list.push({label:item.USER_NAME,value: item.USER_ID.toString()}) list.push({ label: item.USER_NAME, value: item.USER_ID.toString() })
}) })
setPlayerList(list) setPlayerList(list)
setPlayDefaulterList(list) setPlayDefaulterList(list)
@ -496,29 +502,29 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
} }
} }
}} }}
onFinish={ ()=>{ onFinish={() => {
addFormRef.current.validateFields().then(async (res: any)=>{ addFormRef.current.validateFields().then(async (res: any) => {
if (res){ if (res) {
let req: any = {} let req: any = {}
if (currentRow){ if (currentRow) {
req = { req = {
APPROVALROUTE_ID: currentRow?.APPROVALROUTE_ID, APPROVALROUTE_ID: currentRow?.APPROVALROUTE_ID,
APPROVALROUTE_NAME:res?.APPROVALROUTE_NAME || '', APPROVALROUTE_NAME: res?.APPROVALROUTE_NAME || '',
APPROVALROUTE_STATE:res?.APPROVALROUTE_STATE || '', APPROVALROUTE_STATE: res?.APPROVALROUTE_STATE || '',
OPERATION_TYPE:res?.OPERATION_TYPE || '', OPERATION_TYPE: res?.OPERATION_TYPE || '',
USER_PATTERN:res?.USER_PATTERN, USER_PATTERN: res?.USER_PATTERN,
APPROVALSTAFF_ID:res?.APPROVALSTAFF_ID?res?.APPROVALSTAFF_ID.toString():null, APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null,
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
// RECORD_DATE:moment().format('YYYY-MM-DD'), // RECORD_DATE:moment().format('YYYY-MM-DD'),
NEXT_STATE: res?.NEXT_STATE NEXT_STATE: res?.NEXT_STATE
} }
}else{ } else {
req = { req = {
APPROVALROUTE_NAME:res?.APPROVALROUTE_NAME || '', APPROVALROUTE_NAME: res?.APPROVALROUTE_NAME || '',
APPROVALROUTE_STATE:res?.APPROVALROUTE_STATE || '', APPROVALROUTE_STATE: res?.APPROVALROUTE_STATE || '',
OPERATION_TYPE:res?.OPERATION_TYPE || '', OPERATION_TYPE: res?.OPERATION_TYPE || '',
USER_PATTERN:res?.USER_PATTERN, USER_PATTERN: res?.USER_PATTERN,
APPROVALSTAFF_ID:res?.APPROVALSTAFF_ID?res?.APPROVALSTAFF_ID.toString():null, APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null,
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
// RECORD_DATE:moment().format('YYYY-MM-DD'), // RECORD_DATE:moment().format('YYYY-MM-DD'),
NEXT_STATE: res?.NEXT_STATE NEXT_STATE: res?.NEXT_STATE
@ -526,7 +532,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
} }
const data = await handleSynchroAPPROVALROUTE(req) const data = await handleSynchroAPPROVALROUTE(req)
if (data.Result_Code===100){ if (data.Result_Code === 100) {
message.success('新增成功') message.success('新增成功')
addFormRef.current?.resetFields(); addFormRef.current?.resetFields();
setCurrentRow(undefined) setCurrentRow(undefined)
@ -541,7 +547,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
}} }}
modalProps={{ modalProps={{
modalRender:(modal)=>{ modalRender: (modal) => {
return <Draggable return <Draggable
disabled={disabled} disabled={disabled}
bounds={bounds} bounds={bounds}
@ -560,8 +566,8 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
label={'业务类型'} label={'业务类型'}
name={'OPERATION_TYPE'} name={'OPERATION_TYPE'}
request={async (params) => { request={async (params) => {
if (treeView && treeView.length>0){ if (treeView && treeView.length > 0) {
treeView.forEach((item: any)=>{ treeView.forEach((item: any) => {
item.disabled = true item.disabled = true
}) })
} }
@ -594,39 +600,39 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
name={'APPROVALROUTE_STATE'} name={'APPROVALROUTE_STATE'}
fieldProps={{ fieldProps={{
options: businessTypeState || [], options: businessTypeState || [],
onChange:(e)=>{ onChange: (e) => {
if (e){ if (e) {
const list: any = [{label:'2000',value:2000}, const list: any = [{ label: '2000', value: 2000 },
{label:'2010',value:2010}, { label: '2010', value: 2010 },
{label:'2020',value:2020}, { label: '2020', value: 2020 },
{label:'2030',value:2030}, { label: '2030', value: 2030 },
{label:'2040',value:2040}, { label: '2040', value: 2040 },
{label:'2050',value:2050}, { label: '2050', value: 2050 },
{label:'2060',value:2060}, { label: '2060', value: 2060 },
{label:'2070',value:2070}, { label: '2070', value: 2070 },
{label:'2080',value:2080}, { label: '2080', value: 2080 },
{label:'2090',value:2090}, { label: '2090', value: 2090 },
{label:'9000',value:9000}] { label: '9000', value: 9000 }]
list.forEach((item: any)=>{ list.forEach((item: any) => {
if (item.value<=e){ if (item.value <= e) {
// if (item.value===e){ // if (item.value===e){
item.disabled = true item.disabled = true
} }
}) })
setNextBusinessTypeState(list) setNextBusinessTypeState(list)
}else{ } else {
const list: any = [{label:'2000',value:2000}, const list: any = [{ label: '2000', value: 2000 },
{label:'2010',value:2010}, { label: '2010', value: 2010 },
{label:'2020',value:2020}, { label: '2020', value: 2020 },
{label:'2030',value:2030}, { label: '2030', value: 2030 },
{label:'2040',value:2040}, { label: '2040', value: 2040 },
{label:'2050',value:2050}, { label: '2050', value: 2050 },
{label:'2060',value:2060}, { label: '2060', value: 2060 },
{label:'2070',value:2070}, { label: '2070', value: 2070 },
{label:'2080',value:2080}, { label: '2080', value: 2080 },
{label:'2090',value:2090}, { label: '2090', value: 2090 },
{label:'9000',value:9000}] { label: '9000', value: 9000 }]
list.forEach((item: any)=>{ list.forEach((item: any) => {
item.disabled = false item.disabled = false
}) })
setNextBusinessTypeState(list) setNextBusinessTypeState(list)
@ -655,7 +661,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
} }
]} ]}
fieldProps={{ fieldProps={{
onChange:(e: any)=>{ onChange: (e: any) => {
setSelectRoleType(Number(e.target.value)) setSelectRoleType(Number(e.target.value))
} }
}} }}
@ -672,7 +678,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
label={'下一个业务状态'} label={'下一个业务状态'}
name={'NEXT_STATE'} name={'NEXT_STATE'}
fieldProps={{ fieldProps={{
options:nextBusinessTypeState || [] options: nextBusinessTypeState || []
}} }}
rules={[ rules={[
{ {
@ -684,13 +690,13 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
{ {
selectRoleType===2000?'': selectRoleType === 2000 ? '' :
<ProFormSelect <ProFormSelect
label={'参与人'} label={'参与人'}
name={'APPROVALSTAFF_ID'} name={'APPROVALSTAFF_ID'}
fieldProps={{ fieldProps={{
options: playerList || [], options: playerList || [],
mode:'multiple' mode: 'multiple'
}} }}
// rules={[ // rules={[
// { // {
@ -703,13 +709,13 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
<Button type="primary" icon={<FileSearchOutlined />} <Button type="primary" icon={<FileSearchOutlined />}
onClick={() => { onClick={() => {
const res = addFormRef.current?.getFieldValue('APPROVALSTAFF_ID') const res = addFormRef.current?.getFieldValue('APPROVALSTAFF_ID')
if (res && res.length>0){ if (res && res.length > 0) {
const list: any = [] const list: any = []
res.forEach((item: any)=>{ res.forEach((item: any) => {
list.push(Number(item)) list.push(Number(item))
}) })
setDefaultPerson(list) setDefaultPerson(list)
}else{ } else {
setDefaultPerson([]) setDefaultPerson([])
setPlayerList([]) setPlayerList([])
} }
@ -743,38 +749,38 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
APPROVALSTAFF_ID: rowList APPROVALSTAFF_ID: rowList
}) })
setDefaultPerson([]) setDefaultPerson([])
if (rowDetailList && rowDetailList.length>0){ if (rowDetailList && rowDetailList.length > 0) {
console.log('rowDetailList',rowDetailList) console.log('rowDetailList', rowDetailList)
// 去重 // 去重
const indexList: any = [] const indexList: any = []
// 去重后的list // 去重后的list
const deduplicationList: any = [] const deduplicationList: any = []
rowDetailList.forEach((item: any)=>{ rowDetailList.forEach((item: any) => {
if (indexList && indexList.length>0){ if (indexList && indexList.length > 0) {
if (indexList.indexOf(item.value)===-1){ if (indexList.indexOf(item.value) === -1) {
indexList.push(item.value) indexList.push(item.value)
deduplicationList.push(item) deduplicationList.push(item)
} }
}else{ } else {
indexList.push(item.value) indexList.push(item.value)
deduplicationList.push(item) deduplicationList.push(item)
} }
}) })
console.log('deduplicationList',deduplicationList) console.log('deduplicationList', deduplicationList)
setPlayerList(deduplicationList) setPlayerList(deduplicationList)
}else{ } else {
const req: any = { const req: any = {
SearchParameter:{ SearchParameter: {
USER_IDS: rowList && rowList.length>0?rowList.toString():'' USER_IDS: rowList && rowList.length > 0 ? rowList.toString() : ''
}, },
PageIndex: 1, PageIndex: 1,
PageSize: 999999 PageSize: 999999
} }
const data = await handleGetUSERList(req) const data = await handleGetUSERList(req)
if (data && data.length>0){ if (data && data.length > 0) {
const list: any = [] const list: any = []
data.forEach((item: any)=>{ data.forEach((item: any) => {
list.push({label:item.USER_NAME,value: Number(item.USER_ID)}) list.push({ label: item.USER_NAME, value: Number(item.USER_ID) })
}) })
setPlayerList(list) setPlayerList(list)
setPlayDefaulterList(list) setPlayDefaulterList(list)
@ -803,10 +809,10 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => {
}} }}
> >
<ChosePlayers playerList={playerList} defaultPerson={defaultPerson} currentRow={currentRow} modalVisible={modalVisible} <ChosePlayers playerList={playerList} defaultPerson={defaultPerson} currentRow={currentRow} modalVisible={modalVisible}
onRef={choseDetail} showChosePlayer={showChosePlayer} currentUser={currentUser} selectRoleTypeId={selectRoleTypeId}/> onRef={choseDetail} showChosePlayer={showChosePlayer} currentUser={currentUser} selectRoleTypeId={selectRoleTypeId} />
</Modal> </Modal>
</div> </div>
) )
} }
export default connect(({ export default connect(({

View File

@ -2374,7 +2374,6 @@ const YearExamineDetailTable = ({ parentRow, currentApprovalstate, onRef, setIsS
} }
setPrintDetailTableData(exportDetailList) setPrintDetailTableData(exportDetailList)
// exportDetailList.push(sumObj) // exportDetailList.push(sumObj)
console.log('exportDetailListexportDetailListexportDetailListexportDetailList', exportDetailList);
setExportDetailTableData(exportDetailList) setExportDetailTableData(exportDetailList)
} }
@ -2382,30 +2381,17 @@ const YearExamineDetailTable = ({ parentRow, currentApprovalstate, onRef, setIsS
} }
// 如果是第一次进入到页面 再判断是不是退场项目 是的话 就弹出询问的内容问它要不要进行退场结算 // 如果是第一次进入到页面 再判断是不是退场项目 是的话 就弹出询问的内容问它要不要进行退场结算
console.log('isFirst.currentisFirst.currentisFirst.currentisFirst.current', isFirst.current);
if (isFirst.current) { if (isFirst.current) {
isFirst.current = false isFirst.current = false
// 年度结算页面进来
console.log('isYearisYearisYearisYear', isYear);
console.log('isShowClosebtn.currentisShowClosebtn.current isShowClosebtn.current ', isShowClosebtn.current);
console.log('parentRow?.PeriodClosed', parentRow?.PeriodClosed);
console.log('parentRow?.CLOSED_DATE', parentRow?.CLOSED_DATE);
console.log('parentRow?.PeriodClosed', parentRow?.PeriodClosed);
if (isYear && isShowClosebtn.current && parentRow?.PeriodClosed) { if (isYear && isShowClosebtn.current && parentRow?.PeriodClosed) {
handleCloseSettlement(closeReqTableDataRef.current) handleCloseSettlement(closeReqTableDataRef.current)
} else if (isShowClosebtn.current && parentRow?.CLOSED_DATE && !isYear && parentRow?.PeriodClosed) { } else if (isShowClosebtn.current && parentRow?.CLOSED_DATE && !isYear && parentRow?.PeriodClosed) {
console.log('parentRow', parentRow);
confirm({ confirm({
title: '该项目为提前撤场项目,是否进行撤场结算?', title: '该项目为提前撤场项目,是否进行撤场结算?',
icon: <ExclamationCircleOutlined />, icon: <ExclamationCircleOutlined />,
async onOk() { async onOk() {
console.log('isFirst', isFirst.current);
console.log('closeReqTableDataRef', closeReqTableDataRef.current);
handleCloseSettlement(closeReqTableDataRef.current) handleCloseSettlement(closeReqTableDataRef.current)
}, },
onCancel() { onCancel() {

View File

@ -244,6 +244,7 @@ const YearExamine = ({ searchParams, parentRow, examineState, searchContent, cur
title: '操作', title: '操作',
hideInTable: !endReject, hideInTable: !endReject,
dataIndex: 'option', dataIndex: 'option',
hideInSearch: true,
align: 'center', align: 'center',
render: (_, record) => { render: (_, record) => {
return <a onClick={() => { return <a onClick={() => {

View File

@ -846,6 +846,8 @@ const YearExamineProcess = ({ currentUser, onShow, setOnShow, parentRow, setPare
} }
]} ]}
request={async () => { request={async () => {
console.log('parentRowparentRowparentRowparentRow211', parentRow);
// merchantState 判断哪几个状态是商户的 商户调用拿到 商户下面的全部人列表选择一个 不是商户的 就根据选择了的人去指定一个人 // merchantState 判断哪几个状态是商户的 商户调用拿到 商户下面的全部人列表选择一个 不是商户的 就根据选择了的人去指定一个人
// 接口直接返回就不用判断了 // 接口直接返回就不用判断了
if (toExamineType !== 1) { if (toExamineType !== 1) {
@ -872,15 +874,18 @@ const YearExamineProcess = ({ currentUser, onShow, setOnShow, parentRow, setPare
setCurrentNowState(data.BUSINESSAPPROVAL_STATE) setCurrentNowState(data.BUSINESSAPPROVAL_STATE)
// 拿到下一环节 // 拿到下一环节
const nextReq: any = { const nextReq: any = {
OperationType: parentRow?.SETTLEMENT_TYPE === '1' ? 11 : 12, OperationType: parentRow?.SETTLEMENT_TYPE === '1' || parentRow?.SETTLEMENT_TYPE === 1 ? 11 : 12,
CurState: data.BUSINESSAPPROVAL_STATE, CurState: data.BUSINESSAPPROVAL_STATE,
IsValid: 1 IsValid: 1
} }
console.log('nextReq', nextReq);
const nextData = await handleGetAPPROVALROUTEDetail(nextReq) const nextData = await handleGetAPPROVALROUTEDetail(nextReq)
setCurrentNextState(nextData) setCurrentNextState(nextData)
console.log('data', data); console.log('nextDatanextDatanextDatanextData2', nextData);
console.log('datadatadatadatadatadatadatadata2', data);
const list: any = [] let list: any = []
if (data.UserList && data.UserList.length > 0) { if (data.UserList && data.UserList.length > 0) {
data.UserList.forEach((item: any) => { data.UserList.forEach((item: any) => {
if (item.USER_STATUS === 1) { if (item.USER_STATUS === 1) {
@ -889,13 +894,25 @@ const YearExamineProcess = ({ currentUser, onShow, setOnShow, parentRow, setPare
}) })
} }
if (list && list.length > 0 && list.length === 1) { if (list && list.length > 0 && list.length === 1) {
if (list[0].value !== 827) {
formDescRef.current?.setFieldsValue({ nextPerson: list[0].value }) formDescRef.current?.setFieldsValue({ nextPerson: list[0].value })
} }
}
// 剔除 结算时间在2025年4月1日 之后的数据 不给孙青
if (parentRow?.PROJECT_ENDDATE && new Date(parentRow?.PROJECT_ENDDATE).getTime() > new Date('2025-04-01 00:00:00').getTime()) {
list = list.filter((item: any) => item.value !== 827);
}
if (currentUser?.ID === 2785) { if (currentUser?.ID === 2785) {
list.push({ label: '严琅杰', value: 2785 }) list.push({ label: '严琅杰', value: 2785 })
} }
console.log('listlistlistlist213231', list);
return list return list

View File

@ -30,7 +30,7 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props)
const [treeView, setTreeView] = useState<any>() const [treeView, setTreeView] = useState<any>()
const [printIndex, setPrintIndex] = useState<number>(new Date().getTime()) const [printIndex, setPrintIndex] = useState<number>(new Date().getTime())
let POINTTYPEObj = session.get('POINTTYPEObj') let SCORETYPETree = session.get('SCORETYPETree')
// 树相关的属性和方法 // 树相关的属性和方法
@ -52,12 +52,12 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props)
search: { search: {
transform: (value) => { transform: (value) => {
return { return {
CHECK_STARTDATE: value[0], OPERATE_DATE_Start: value[0],
CHECK_ENDDATE: value[1], OPERATE_DATE_End: value[1],
}; };
}, },
}, },
initialValue: [moment().format('YYYY-MM-DD'), moment().subtract(1, 'M').format('YYYY-MM-DD')], initialValue: [moment().subtract(1, 'M').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')],
}, },
{ {
title: "服务区名称", title: "服务区名称",
@ -99,18 +99,16 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props)
dataIndex: "GROWTH_SOURCE", dataIndex: "GROWTH_SOURCE",
align: 'center', align: 'center',
ellipsis: true, ellipsis: true,
valueType: 'select', valueType: 'treeSelect',
valueEnum: { request: () => {
"0": "全部", return SCORETYPETree
...POINTTYPEObj }
},
// valueEnum: { // valueEnum: {
// "0": "全部", // "0": "全部",
// "1000": "消费赠送", // "1000": "消费赠送",
// "2000": "消费抵扣", // "2000": "消费抵扣",
// "3000": "注册赠送", // "3000": "注册赠送",
// }, // },
initialValue: "0"
}, },
{ {
title: "成长方式", title: "成长方式",
@ -170,6 +168,8 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props)
const req: any = { const req: any = {
searchParameter: { searchParameter: {
// PROVINCE_CODE: currentUser?.ProvinceCode || "", // PROVINCE_CODE: currentUser?.ProvinceCode || "",
OPERATE_DATE_Start: params?.OPERATE_DATE_Start || "",
OPERATE_DATE_End: params?.OPERATE_DATE_End || "",
OWNERUNIT_ID: 911, OWNERUNIT_ID: 911,
SCORESETTING_STATE: 1, SCORESETTING_STATE: 1,
GROWTH_SOURCES: params?.GROWTH_SOURCE === "0" ? "" : params?.GROWTH_SOURCE, GROWTH_SOURCES: params?.GROWTH_SOURCE === "0" ? "" : params?.GROWTH_SOURCE,

View File

@ -31,6 +31,7 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) => {
const [printIndex, setPrintIndex] = useState<number>(new Date().getTime()) const [printIndex, setPrintIndex] = useState<number>(new Date().getTime())
let POINTTYPEObj = session.get('POINTTYPEObj') let POINTTYPEObj = session.get('POINTTYPEObj')
let SCORETYPETree = session.get('SCORETYPETree')
// 树相关的属性和方法 // 树相关的属性和方法
const [selectedId, setSelectedId] = useState<string>() const [selectedId, setSelectedId] = useState<string>()
@ -51,12 +52,12 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) => {
search: { search: {
transform: (value) => { transform: (value) => {
return { return {
CHECK_STARTDATE: value[0], OPERATE_DATE_Start: value[0],
CHECK_ENDDATE: value[1], OPERATE_DATE_End: value[1],
}; };
}, },
}, },
initialValue: [moment().format('YYYY-MM-DD'), moment().subtract(1, 'M').format('YYYY-MM-DD')], initialValue: [moment().subtract(1, 'M').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')],
}, },
{ {
title: "服务区名称", title: "服务区名称",
@ -93,19 +94,18 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) => {
width: 120, width: 120,
dataIndex: "POINT_SOURCE", dataIndex: "POINT_SOURCE",
ellipsis: true, ellipsis: true,
valueType: 'select', valueType: 'treeSelect',
align: 'center', align: 'center',
valueEnum: { request: () => {
"0": "全部", return SCORETYPETree
...POINTTYPEObj }
},
// valueEnum: { // valueEnum: {
// "0": "全部", // "0": "全部",
// "1000": "消费赠送", // "1000": "消费赠送",
// "2000": "消费抵扣", // "2000": "消费抵扣",
// "3000": "注册赠送" // "3000": "注册赠送"
// }, // },
initialValue: "0" // initialValue: "0"
}, },
{ {
title: "本次积分", title: "本次积分",
@ -168,12 +168,15 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) => {
const req: any = { const req: any = {
SearchParameter: { SearchParameter: {
// PROVINCE_CODE: currentUser?.ProvinceCode || "", // PROVINCE_CODE: currentUser?.ProvinceCode || "",
OPERATE_DATE_Start: params?.OPERATE_DATE_Start || "",
OPERATE_DATE_End: params?.OPERATE_DATE_End || "",
OWNERUNIT_ID: 911, OWNERUNIT_ID: 911,
POINT_TYPE: params?.POINT_TYPE === '-2' ? '' : params?.POINT_TYPE, POINT_TYPE: params?.POINT_TYPE === '-2' ? '' : params?.POINT_TYPE,
POINT_SOURCE: params?.POINT_SOURCE === '0' ? '' : params?.POINT_SOURCE POINT_SOURCE: params?.POINT_SOURCE === '0' ? '' : params?.POINT_SOURCE
}, },
PageIndex: params?.current, PageIndex: params?.current,
PageSize: 20 PageSize: 20,
sortstr: "OPERATE_DATE desc",
} }
const data = await handleGetPOINTRECORDList(req) const data = await handleGetPOINTRECORDList(req)
if (data.List && data.List.length > 0) { if (data.List && data.List.length > 0) {

View File

@ -138,6 +138,9 @@ const SupplierMerchantManage: React.FC<{ currentUser: CurrentUser | undefined }>
hideInTable: true, hideInTable: true,
width: 120, width: 120,
ellipsis: true, ellipsis: true,
fieldProps: {
placeholder: "请输入商户名称/商户ID"
}
}, },
{ {
dataIndex: 'MERCHANTS_TELEPHONE', dataIndex: 'MERCHANTS_TELEPHONE',

View File

@ -0,0 +1,359 @@
// 商城交易台账
import { connect } from "umi";
import type { CurrentUser } from "umi";
import type { ConnectState } from "@/models/connect";
import React, { useRef, useState } from "react";
import ProCard from "@ant-design/pro-card";
import { MenuFoldOutlined } from "@ant-design/icons";
import type { FormInstance } from "antd";
import { Button, message, Space, Spin, Tree } from "antd";
import useRequest from "@ahooksjs/use-request";
import { getServerpartTree } from "@/services/options";
import type { ActionType } from "@ant-design/pro-table";
import ProTable from "@ant-design/pro-table";
import ReactHTMLTableToExcel from "react-html-table-to-excel";
import LeftSelectTree from "@/pages/reports/settlementAccount/component/leftSelectTree";
import PageTitleBox from "@/components/PageTitleBox";
import { handeGetSupplierSaleBillList } from "../service";
import moment from 'moment'
import OrderDetailModal from "../BookingMealOrder/components/orderDetailModal";
const TradingLedger: React.FC<{ currentUser: CurrentUser }> = (props) => {
const { currentUser } = props
const downloadBtnRef = useRef<any>()
const actionRef = useRef<ActionType>();
const formRef = useRef<FormInstance>();
const [reqDetailList, setReqDetailList] = useState<any>(); // 合计项数据源
const [printOut, setPrintOut] = useState<any>(); // 打印数据的内容
const [collapsible, setCollapsible] = useState<boolean>(false)
const [treeView, setTreeView] = useState<any>()
const [printIndex, setPrintIndex] = useState<number>(new Date().getTime())
// 树相关的属性和方法
const [selectedId, setSelectedId] = useState<string>()
// 导出的加载效果
const [showLoading, setShowLoading] = useState<boolean>(false)
// 是否显示打印的表格
const [showExportTable, setShowExportTable] = useState<boolean>(false)
// 查询的条件
const [searchParams, setSearchParams] = useState<any>()
const [currentRow, setCurrentRow] = useState<any>();
const [modalVisible, handleModalVisible] = useState<boolean>(false);
const columns: any = [
{
title: '查询内容',
hideInTable: true,
dataIndex: 'searchText',
fieldprop: {
placeholder: "请输入供应商名称/订单号等"
}
},
{
title: '下单时间',
dataIndex: 'search_date',
valueType: 'dateRange',
hideInTable: true,
hideInDescriptions: true,
search: {
transform: (value) => {
return {
ORDER_DATE_Start: value[0],
ORDER_DATE_End: value[1],
};
},
},
initialValue: [moment().subtract(1, 'M').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')],
},
{
dataIndex: 'MERCHANTS_NAME',
title: <div style={{ textAlign: 'center' }}></div>,
align: 'left',
width: 200,
ellipsis: true,
hideInSearch: true,
},
{
dataIndex: 'SALEBILL_CODE',
title: <div style={{ textAlign: 'center' }}></div>,
align: 'left',
width: 220,
ellipsis: true,
hideInSearch: true,
render: (_, record) => {
return record?.SALEBILL_CODE ?
<a onClick={() => {
setCurrentRow(record);
handleModalVisible(true)
}}>{record?.SALEBILL_CODE}</a> : "-"
}
},
{
dataIndex: 'COMMODITY_NAME',
title: <div style={{ textAlign: 'center' }}></div>,
align: 'left',
width: 300,
ellipsis: true,
hideInSearch: true,
},
{
title: "订单类型",
width: 150,
dataIndex: "SALEBILL_TYPE",
valueType: "select",
align: 'center',
valueEnum: {
"0": "全部",
"3000": "零售商城",
"3001": "工会商城",
"3002": "品诺商城",
"3010": "积分商城"
},
initialValue: '0',
},
{
title: "订单状态",
dataIndex: "SALEBILL_STATE",
width: 150,
hideInSearch: true,
ellipsis: true,
valueType: "select",
valueEnum: {
"0": "全部",
"1005": "订单待支付",
"1010": "订单待发货",
"2010": "订单已发货",
"3000": "订单已完成",
"8000": "退款申请中",
"8900": "订单已退款",
"9000": "订单已关闭",
"9999": "订单已撤销"
},
align: "center",
initialValue: '0',
},
{
dataIndex: 'ORDER_AMOUNT',
title: '订单金额',
align: 'center',
width: 150,
ellipsis: true,
hideInSearch: true,
},
{
dataIndex: 'PAY_AMOUNT',
title: '实付金额',
align: 'center',
width: 150,
ellipsis: true,
hideInSearch: true,
},
{
title: "支付方式",
dataIndex: "CHANNEL_TYPE",
valueType: "select",
valueEnum: {
"0": "全部",
"支付宝": "支付宝",
"微信": "微信",
"积分兑换": "积分兑换",
"余额支付": "余额支付",
},
width: 120,
hideInSearch: true,
ellipsis: true,
align: "center",
initialValue: '0',
},
{
dataIndex: 'ORDER_DATE',
title: '下单时间',
align: 'center',
width: 150,
ellipsis: true,
hideInSearch: true,
render: (_, record) => {
return record?.ORDER_DATE ? moment(record?.ORDER_DATE).format('YYYY-MM-DD HH:mm:ss') : "-"
}
}
]
const exportTable = (e) => {
e.stopPropagation(); // 防止Collapse组件收起
const main = document.getElementsByClassName(`saleReportHideBox${printIndex}`)[0]
const thead = main.querySelector('thead').cloneNode(true); // 深克隆DOM节点
const tbody = main.querySelector('tbody').cloneNode(true); // 深克隆DOM节点
const container = document.querySelector('#hiddenBox');
const tempTable = document.createElement('table');
tempTable.appendChild(thead);
tempTable.appendChild(tbody);
tempTable.setAttribute('id', 'table-to-xls-TradingLedger'); // 给table添加id值与按钮上的table字段对应
container.appendChild(tempTable); // 把创建的节点添加到页面容器中
setShowLoading(false)
downloadBtnRef.current.handleDownload();
setShowExportTable(false)
tempTable.remove() // 防止重复打印一个内容
}
const handleCloseModal = () => {
handleModalVisible(false)
}
return (
<div ref={(el) => {
// 打印报表
if (!reqDetailList || reqDetailList.length === 0) return;
setPrintOut(el);
}} >
{
showLoading ?
<div
style={{
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.1)',
position: 'fixed',
zIndex: 5,
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}}
>
<div style={{
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
padding: '15px 20px 10px',
background: '#fff',
borderRadius: '8px',
width: '200px'
}}>
<Spin />
<span style={{ marginLeft: '5px' }}>...</span>
</div>
</div> : ''
}
<div className={`saleReportHideBox${printIndex}`} style={{ position: 'fixed', zIndex: -1, top: 0, left: 0 }}>
{
showExportTable && reqDetailList && reqDetailList.length > 0 ?
<ProTable
columns={columns}
dataSource={reqDetailList}
pagination={false}
expandable={{
defaultExpandAllRows: true
}}
/> : ''
}
</div>
<div id='hiddenBox' style={{ position: 'fixed', zIndex: -1, top: 0, left: 0 }} />
<div style={{ backgroundColor: '#fff', display: 'flex' }}>
{/* <LeftSelectTree setSelectedId={setSelectedId} setCollapsible={setCollapsible} collapsible={collapsible} /> */}
<div style={{
width: '100%',
paddingTop: 0,
paddingBottom: 0,
paddingRight: 0
}}>
<ProTable
actionRef={actionRef}
formRef={formRef}
columns={columns}
bordered
expandable={{
expandRowByClick: true
}}
scroll={{ x: "100%", y: "calc(100vh - 410px)" }}
headerTitle={<PageTitleBox props={props} />} // 列表表头
search={{ span: 6 }}
request={async (params) => {
const req: any = {
SearchParameter: {
SALEBILL_IDS: "",
SALEBILL_TYPES: params?.SALEBILL_TYPE === '0' ? '' : params?.SALEBILL_TYPE,
MEMBERSHIP_IDS: "",
MERCHANTS_IDS: "",
// PROVINCE_CODE: currentUser?.ProvinceCode,
SERVERPART_IDS: "",
SERVERPARTSHOP_IDS: "",
ORDER_DATE_Start: params?.ORDER_DATE_Start || "",
ORDER_DATE_End: params?.ORDER_DATE_End || "",
SALEBILL_STATES: params?.SALEBILL_STATE === "0" ? "1010,2010,3000" : params?.SALEBILL_STATE || "",
CHANNEL_TYPE: params?.CHANNEL_TYPE === "0" ? "" : params?.CHANNEL_TYPE || "",
WECHATAPPSIGN_ID: "",
WECHATAPP_APPID: "",
OWNERUNIT_ID: currentUser?.OwnerUnitId,
SearchKeyValue: params?.searchText || "",
},
PageIndex: 1,
PageSize: 999999
}
setSearchParams(params)
console.log('reqreqreqreq', req);
const data = await handeGetSupplierSaleBillList(req)
console.log('datadatadatadatadata', data);
setReqDetailList(data)
if (data && data.length > 0) {
return { data, success: true }
}
return { data: [], success: true }
}}
toolbar={{
actions: [
<span style={{ visibility: 'hidden' }}>
<ReactHTMLTableToExcel
buttonText={'导出excel'}
ref={downloadBtnRef}
table="table-to-xls-TradingLedger"
filename={`交易台账${searchParams?.ORDER_DATE_Start}-${searchParams?.ORDER_DATE_End}`}
sheet="sheet1"
/>
</span>,
<Button
key="new"
type="primary"
onClick={(e) => {
if (reqDetailList && reqDetailList.length > 0) {
setShowLoading(true)
setTimeout(() => {
setShowExportTable(true)
setTimeout(() => {
exportTable(e)
}, 100)
}, 100)
} else {
message.error('暂无数据可导出!')
}
}}
>
excel
</Button>
]
}}
/>
</div>
</div>
<OrderDetailModal modalVisible={modalVisible} handleCloseModal={handleCloseModal} currentRow={currentRow} />
</div>
)
}
export default connect(({ user }: ConnectState) => ({
currentUser: user.currentUser
}))(TradingLedger);

View File

@ -42,7 +42,6 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => {
let MEMBERSHIP_TYPEObj = session.get('MEMBERSHIP_TYPEObj'); let MEMBERSHIP_TYPEObj = session.get('MEMBERSHIP_TYPEObj');
let MEMBERSHIP_LEVELObj = session.get('MEMBERSHIP_LEVELObj');
let MEMBERSHIP_LEVELList = session.get('MEMBERSHIP_LEVELList'); let MEMBERSHIP_LEVELList = session.get('MEMBERSHIP_LEVELList');
let COMPANY_STATEObj = session.get('COMPANY_STATEObj'); let COMPANY_STATEObj = session.get('COMPANY_STATEObj');
let COMPANY_STATEList = session.get('COMPANY_STATEList'); let COMPANY_STATEList = session.get('COMPANY_STATEList');
@ -70,6 +69,8 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => {
// 当前选中在详情里面要查看的内容 // 当前选中在详情里面要查看的内容
const [selectTab, setSelectTab] = useState<number>(1) const [selectTab, setSelectTab] = useState<number>(1)
let MEMBERSHIPLEVELYNObj = session.get('MEMBERSHIPLEVELYNObj')
let SCORETYPETree = session.get('SCORETYPETree')
const [columnsStateMap, setColumnsStateMap] = useState<any>({ const [columnsStateMap, setColumnsStateMap] = useState<any>({
MEMBERSHIP_CODE: { show: false }, MEMBERSHIP_CODE: { show: false },
@ -233,11 +234,7 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => {
ellipsis: true, ellipsis: true,
align: 'center', align: 'center',
valueType: 'select', valueType: 'select',
valueEnum: { valueEnum: MEMBERSHIPLEVELYNObj,
"0": "全部",
...MEMBERSHIP_LEVELObj,
"9000": "VIP会员"
},
initialValue: "0" initialValue: "0"
}, },
{ {
@ -476,20 +473,18 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => {
valueEnum: { valueEnum: {
"1": "累计", "1": "累计",
"-1": "消耗" "-1": "消耗"
} },
}, },
{ {
title: "积分来源", title: "积分来源",
width: 120, width: 120,
dataIndex: "POINT_TYPE", dataIndex: "POINT_SOURCE",
hideInSearch: true, hideInSearch: true,
ellipsis: true, ellipsis: true,
valueType: 'treeSelect',
align: 'center', align: 'center',
valueType: 'select', request: () => {
valueEnum: { return SCORETYPETree
"1000": "消费赠送",
"2000": "消费抵扣",
"3000": "注册赠送"
} }
}, },
{ {
@ -558,15 +553,13 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => {
{ {
title: "成长来源", title: "成长来源",
width: 120, width: 120,
dataIndex: "GROWTH_VALUE", dataIndex: "GROWTH_SOURCE",
hideInSearch: true, hideInSearch: true,
ellipsis: true, ellipsis: true,
valueType: 'treeSelect',
align: 'center', align: 'center',
valueType: 'select', request: () => {
valueEnum: { return SCORETYPETree
"1000": "消费赠送",
"2000": "消费抵扣",
"3000": "注册赠送",
} }
}, },
{ {

View File

@ -713,3 +713,15 @@ export async function handeGetFIELDEXPLAINList(params: any) {
} }
return data.Result_Data.List return data.Result_Data.List
} }
// 交易台账列表接口
export async function handeGetSupplierSaleBillList(params: any) {
const data = await requestEncryption(`/OnlineOrder/GetSupplierSaleBillList`, {
method: 'POST',
data: { ...params, requestEncryption: true }
})
if (data.Result_Code !== 100) {
return []
}
return data.Result_Data.List
}