diff --git a/config/routes.ts b/config/routes.ts index 2811740..d8e23d8 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -992,7 +992,14 @@ export default [ path: 'scenicSpotConfig', name: 'scenicSpotConfig', component: './travelMember/scenicSpotConfig/index' - } + }, + // 交易台账 + { + path: 'TradingLedger', + name: 'TradingLedger', + component: './travelMember/TradingLedger/index' + }, + ] }, { diff --git a/src/pages/Setting/serviceConfig/index.tsx b/src/pages/Setting/serviceConfig/index.tsx index 117a612..a907fac 100644 --- a/src/pages/Setting/serviceConfig/index.tsx +++ b/src/pages/Setting/serviceConfig/index.tsx @@ -1,18 +1,18 @@ -import {connect} from "umi"; -import type {CurrentUser} from "umi"; -import type {ConnectState} from "@/models/connect"; -import React, {useRef, useState} from "react"; +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 {FileSearchOutlined, MenuFoldOutlined, PlusOutlined} from "@ant-design/icons"; -import type {FormInstance} from "antd"; -import { Popconfirm} from "antd"; -import {Button, message, Modal, Space, Spin, Tree} from "antd"; +import { FileSearchOutlined, MenuFoldOutlined, PlusOutlined } from "@ant-design/icons"; +import type { FormInstance } from "antd"; +import { Popconfirm } from "antd"; +import { Button, message, Modal, Space, Spin, Tree } from "antd"; import useRequest from "@ahooksjs/use-request"; -import {getFieldEnumTree, getServerpartTree} from "@/services/options"; -import type {ActionType} from "@ant-design/pro-table"; +import { getFieldEnumTree, 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 {ModalForm, ProFormRadio, ProFormSelect, ProFormText, ProFormTreeSelect} from "@ant-design/pro-form"; +import { ModalForm, ProFormRadio, ProFormSelect, ProFormText, ProFormTreeSelect } from "@ant-design/pro-form"; import { handleDeleteAPPROVALROUTE, handleDeleteBUSINESSAPPROVAL, @@ -20,13 +20,13 @@ import { handleSynchroAPPROVALROUTE } from "@/pages/Setting/serviceConfig/service"; 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 Draggable from "react-draggable"; import session from "@/utils/session"; -const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { +const ServiceConfig: React.FC<{ currentUser: CurrentUser }> = (props) => { const { currentUser } = props // 选择参与人的 const choseDetail = useRef() @@ -46,9 +46,9 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { const serviceType = session.get('PROCESS_TYPEList') const treeView = session.get('PROCESS_TYPETree') // 选择的角色类型 - const [selectRoleType,setSelectRoleType] = useState(0) + const [selectRoleType, setSelectRoleType] = useState(0) // 选择的角色类别id - const [selectRoleTypeId,setSelectRoleTypeId] = useState() + const [selectRoleTypeId, setSelectRoleTypeId] = useState() // 加载服务区树 // const { loading: treeLoading, data: treeViews } = useRequest(async () => { @@ -67,46 +67,46 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { // // return data // }) // 显示悬浮抽屉 - const [modalVisible,setModalVisible] = useState(false) -// 树相关的属性和方法 + const [modalVisible, setModalVisible] = useState(false) + // 树相关的属性和方法 const [selectedId, setSelectedId] = useState() -// 导出的加载效果 - const [showLoading,setShowLoading] = useState(false) + // 导出的加载效果 + const [showLoading, setShowLoading] = useState(false) // 是否显示打印的表格 - const [showExportTable,setShowExportTable] = useState(false) + const [showExportTable, setShowExportTable] = useState(false) // 业务状态选择 - const [businessTypeState,setBussinessTypeState] = useState([ + const [businessTypeState, setBussinessTypeState] = useState([ // 1000,2000,2010,2020,2030,2040,2050,2060,2070,2080,2090 - {label:'1000',value:1000}, - {label:'2000',value:2000}, - {label:'2010',value:2010}, - {label:'2020',value:2020}, - {label:'2030',value:2030}, - {label:'2040',value:2040}, - {label:'2050',value:2050}, - {label:'2060',value:2060}, - {label:'2070',value:2070}, - {label:'2080',value:2080}, - {label:'2090',value:2090}, + { label: '1000', value: 1000 }, + { label: '2000', value: 2000 }, + { label: '2010', value: 2010 }, + { label: '2020', value: 2020 }, + { label: '2030', value: 2030 }, + { label: '2040', value: 2040 }, + { label: '2050', value: 2050 }, + { label: '2060', value: 2060 }, + { label: '2070', value: 2070 }, + { label: '2080', value: 2080 }, + { label: '2090', value: 2090 }, // {label:'商户确认审核',value:2000}, // {label:'服务区经理审核',value:2010}, // {label:'片区中心审核',value:2020}, // {label:'经发部审核',value:2030}, // {label:'财务部审核',value:2040}, ]) - const [nextBusinessTypeState,setNextBusinessTypeState]= useState([ + const [nextBusinessTypeState, setNextBusinessTypeState] = useState([ // 2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,9000 - {label:'2000',value:2000}, - {label:'2010',value:2010}, - {label:'2020',value:2020}, - {label:'2030',value:2030}, - {label:'2040',value:2040}, - {label:'2050',value:2050}, - {label:'2060',value:2060}, - {label:'2070',value:2070}, - {label:'2080',value:2080}, - {label:'2090',value:2090}, - {label:'9000',value:9000}, + { label: '2000', value: 2000 }, + { label: '2010', value: 2010 }, + { label: '2020', value: 2020 }, + { label: '2030', value: 2030 }, + { label: '2040', value: 2040 }, + { label: '2050', value: 2050 }, + { label: '2060', value: 2060 }, + { label: '2070', value: 2070 }, + { label: '2080', value: 2080 }, + { label: '2090', value: 2090 }, + { label: '9000', value: 9000 }, // {label:'商户确认审核',value:2000}, // {label:'服务区经理审核',value:2010}, // {label:'片区中心审核',value:2020}, @@ -114,14 +114,14 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { // {label:'财务部审核',value:2040}, ]) // 显示参与人的悬浮框 - const [showChosePlayer,setShowChosePlayer] = useState(false) + const [showChosePlayer, setShowChosePlayer] = useState(false) // 参与人列表 - const [playerList,setPlayerList] = useState() - const [playDefaulterList,setPlayDefaulterList] = useState() + const [playerList, setPlayerList] = useState() + const [playDefaulterList, setPlayDefaulterList] = useState() // 点击的行的详情数据 - const [currentRow,setCurrentRow] = useState() + const [currentRow, setCurrentRow] = useState() // 默认的人 - const [defaultPerson,setDefaultPerson] = useState() + const [defaultPerson, setDefaultPerson] = useState() const draggleRef = React.createRef() const [disabled, setDraggleDisabled] = useState() // 是否拖动 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 = [ { - title:'环节名称', - dataIndex:'APPROVALROUTE_NAME', + title: '环节名称', + dataIndex: 'APPROVALROUTE_NAME', hideInSearch: true }, { - title:'业务状态', - dataIndex:'APPROVALROUTE_STATE', - sorter: (a,b)=> a.APPROVALROUTE_STATE - b.APPROVALROUTE_STATE, + title: '业务状态', + dataIndex: 'APPROVALROUTE_STATE', + sorter: (a, b) => a.APPROVALROUTE_STATE - b.APPROVALROUTE_STATE, defaultSortOrder: 'ascend', // valueType: 'select', // 暂时只支持业务类型为11的商户对账审批 @@ -161,15 +161,15 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { // } }, { - title:'业务类型', - dataIndex:'OPERATION_TYPE', + title: '业务类型', + dataIndex: 'OPERATION_TYPE', valueType: 'select', hideInSearch: true, valueEnum: serviceTypeObj }, { - title:'下一业务状态', - dataIndex:'NEXT_STATE', + title: '下一业务状态', + dataIndex: 'NEXT_STATE', // valueType: 'select', hideInSearch: true, // valueEnum:{ @@ -181,33 +181,39 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { // } }, { - title:'参与人', - dataIndex:'APPROVALSTAFF_NAME', + title: '参与人', + dataIndex: 'APPROVALSTAFF_NAME', width: 200, ellipsis: true, hideInSearch: true, }, { - title:'生成时间', - dataIndex:'RECORD_DATE', + title: '生成时间', + dataIndex: 'RECORD_DATE', hideInSearch: true, - render:(_,record)=>{ - return record?.RECORD_DATE?moment(record?.RECORD_DATE).format('YYYY-MM-DD'):'' + render: (_, record) => { + return record?.RECORD_DATE ? moment(record?.RECORD_DATE).format('YYYY-MM-DD') : '' } }, + { + title: '业主单位', + width: 120, + dataIndex: 'PROVINCE_CODE', + hideInSearch: true, + }, { dataIndex: 'option', title: '操作', width: 120, valueType: 'option', align: 'center', - fixed:'right', + fixed: 'right', hideInSearch: true, - render: (_,record)=>{ + render: (_, record) => { return ( - { - console.log('record',record) + { + console.log('record', record) setSelectRoleType(record?.USER_PATTERN) setCurrentRow(record) setModalVisible(true) @@ -259,7 +265,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { tempTable.remove() // 防止重复打印一个内容 } // 查询的条件 - const [searchParams,setSearchParams] = useState() + const [searchParams, setSearchParams] = useState() return (
{ @@ -291,13 +297,13 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { borderRadius: '8px', width: '200px' }}> - - 数据导出中... + + 数据导出中...
: '' } -
+
{ showExportTable && reqDetailList && reqDetailList.length > 0 ? = (props) => { /> : '' }
-
+
-
+
{ setCollapsible(!collapsible) - }}/>} + }} />} colSpan={!collapsible ? "300px" : "60px"} title={!collapsible ? "请选择业务类型" : ""} headerBordered @@ -345,11 +351,11 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { // actionRef?.current?.reload() // getData(selectedIds.map(n => n?.value)?.toString() || '') }} - // switcherIcon={} + // switcherIcon={} /> : ''}
= (props) => { expandRowByClick: true }} headerTitle={'业务配置'} - search={{span: 6}} - request={async(params)=>{ - if (!selectedId){ + search={{ span: 6 }} + request={async (params) => { + if (!selectedId) { return } const req: any = { - SearchParameter:{ + SearchParameter: { OPERATION_TYPES: selectedId || '11', APPROVALROUTE_VALID: 1, APPROVALROUTE_STATES: params?.APPROVALROUTE_STATE || '', @@ -380,10 +386,10 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { } setSearchParams(params) const data = await handleGetAPPROVALROUTEList(req) - if (data && data.length>0){ - return {data,success: true} + if (data && data.length > 0) { + return { data, success: true } } - return {data:[],success: true} + return { data: [], success: true } }} toolbar={{ actions: [ @@ -406,68 +412,68 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { { - if (!value){ + onVisibleChange={async (value) => { + if (!value) { addFormRef.current?.resetFields(); setSelectRoleType(0) setPlayerList([]) setDefaultPerson([]) setCurrentRow(undefined) setNextBusinessTypeState([ - {label:'2000',value:2000}, - {label:'2010',value:2010}, - {label:'2020',value:2020}, - {label:'2030',value:2030}, - {label:'2040',value:2040}, - {label:'2050',value:2050}, - {label:'2060',value:2060}, - {label:'2070',value:2070}, - {label:'2080',value:2080}, - {label:'2090',value:2090}, - {label:'9000',value:9000}, + { label: '2000', value: 2000 }, + { label: '2010', value: 2010 }, + { label: '2020', value: 2020 }, + { label: '2030', value: 2030 }, + { label: '2040', value: 2040 }, + { label: '2050', value: 2050 }, + { label: '2060', value: 2060 }, + { label: '2070', value: 2070 }, + { label: '2080', value: 2080 }, + { label: '2090', value: 2090 }, + { label: '9000', value: 9000 }, ]) - }else{ - if (currentRow){ + } else { + if (currentRow) { setSelectRoleTypeId(currentRow.SYSTEMROLEIDS) - if (currentRow?.APPROVALROUTE_STATE){ - const list: any = [{label:'2000',value:2000}, - {label:'2010',value:2010}, - {label:'2020',value:2020}, - {label:'2030',value:2030}, - {label:'2040',value:2040}, - {label:'2050',value:2050}, - {label:'2060',value:2060}, - {label:'2070',value:2070}, - {label:'2080',value:2080}, - {label:'2090',value:2090}, - {label:'9000',value:9000}] - list.forEach((item: any)=>{ - if (item.value<=Number(currentRow?.APPROVALROUTE_STATE)){ + if (currentRow?.APPROVALROUTE_STATE) { + const list: any = [{ label: '2000', value: 2000 }, + { label: '2010', value: 2010 }, + { label: '2020', value: 2020 }, + { label: '2030', value: 2030 }, + { label: '2040', value: 2040 }, + { label: '2050', value: 2050 }, + { label: '2060', value: 2060 }, + { label: '2070', value: 2070 }, + { label: '2080', value: 2080 }, + { label: '2090', value: 2090 }, + { label: '9000', value: 9000 }] + list.forEach((item: any) => { + if (item.value <= Number(currentRow?.APPROVALROUTE_STATE)) { item.disabled = true } }) setNextBusinessTypeState(list) } - else{ - const list: any = [{label:'2000',value:2000}, - {label:'2010',value:2010}, - {label:'2020',value:2020}, - {label:'2030',value:2030}, - {label:'2040',value:2040}, - {label:'2050',value:2050}, - {label:'2060',value:2060}, - {label:'2070',value:2070}, - {label:'2080',value:2080}, - {label:'2090',value:2090}, - {label:'9000',value:9000}] - list.forEach((item: any)=>{ + else { + const list: any = [{ label: '2000', value: 2000 }, + { label: '2010', value: 2010 }, + { label: '2020', value: 2020 }, + { label: '2030', value: 2030 }, + { label: '2040', value: 2040 }, + { label: '2050', value: 2050 }, + { label: '2060', value: 2060 }, + { label: '2070', value: 2070 }, + { label: '2080', value: 2080 }, + { label: '2090', value: 2090 }, + { label: '9000', value: 9000 }] + list.forEach((item: any) => { item.disabled = false }) setNextBusinessTypeState(list) @@ -478,17 +484,17 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { }) const req: any = { - SearchParameter:{ + SearchParameter: { USER_IDS: currentRow?.APPROVALSTAFF_ID }, PageIndex: 1, PageSize: 999999 } const data = await handleGetUSERList(req) - if (data && data.length>0){ + if (data && data.length > 0) { const list: any = [] - data.forEach((item: any)=>{ - list.push({label:item.USER_NAME,value: item.USER_ID.toString()}) + data.forEach((item: any) => { + list.push({ label: item.USER_NAME, value: item.USER_ID.toString() }) }) setPlayerList(list) setPlayDefaulterList(list) @@ -496,29 +502,29 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { } } }} - onFinish={ ()=>{ - addFormRef.current.validateFields().then(async (res: any)=>{ - if (res){ + onFinish={() => { + addFormRef.current.validateFields().then(async (res: any) => { + if (res) { let req: any = {} - if (currentRow){ + if (currentRow) { req = { APPROVALROUTE_ID: currentRow?.APPROVALROUTE_ID, - APPROVALROUTE_NAME:res?.APPROVALROUTE_NAME || '', - APPROVALROUTE_STATE:res?.APPROVALROUTE_STATE || '', - OPERATION_TYPE:res?.OPERATION_TYPE || '', - USER_PATTERN:res?.USER_PATTERN, - APPROVALSTAFF_ID:res?.APPROVALSTAFF_ID?res?.APPROVALSTAFF_ID.toString():null, + APPROVALROUTE_NAME: res?.APPROVALROUTE_NAME || '', + APPROVALROUTE_STATE: res?.APPROVALROUTE_STATE || '', + OPERATION_TYPE: res?.OPERATION_TYPE || '', + USER_PATTERN: res?.USER_PATTERN, + APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null, APPROVALROUTE_VALID: 1, // RECORD_DATE:moment().format('YYYY-MM-DD'), NEXT_STATE: res?.NEXT_STATE } - }else{ + } else { req = { - APPROVALROUTE_NAME:res?.APPROVALROUTE_NAME || '', - APPROVALROUTE_STATE:res?.APPROVALROUTE_STATE || '', - OPERATION_TYPE:res?.OPERATION_TYPE || '', - USER_PATTERN:res?.USER_PATTERN, - APPROVALSTAFF_ID:res?.APPROVALSTAFF_ID?res?.APPROVALSTAFF_ID.toString():null, + APPROVALROUTE_NAME: res?.APPROVALROUTE_NAME || '', + APPROVALROUTE_STATE: res?.APPROVALROUTE_STATE || '', + OPERATION_TYPE: res?.OPERATION_TYPE || '', + USER_PATTERN: res?.USER_PATTERN, + APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null, APPROVALROUTE_VALID: 1, // RECORD_DATE:moment().format('YYYY-MM-DD'), NEXT_STATE: res?.NEXT_STATE @@ -526,7 +532,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { } const data = await handleSynchroAPPROVALROUTE(req) - if (data.Result_Code===100){ + if (data.Result_Code === 100) { message.success('新增成功') addFormRef.current?.resetFields(); setCurrentRow(undefined) @@ -534,14 +540,14 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { setModalVisible(false) return true } - message.error(data.Result_Desc) + message.error(data.Result_Desc) } }) }} modalProps={{ - modalRender:(modal)=>{ + modalRender: (modal) => { return = (props) => { label={'业务类型'} name={'OPERATION_TYPE'} request={async (params) => { - if (treeView && treeView.length>0){ - treeView.forEach((item: any)=>{ + if (treeView && treeView.length > 0) { + treeView.forEach((item: any) => { item.disabled = true }) } @@ -594,39 +600,39 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { name={'APPROVALROUTE_STATE'} fieldProps={{ options: businessTypeState || [], - onChange:(e)=>{ - if (e){ - const list: any = [{label:'2000',value:2000}, - {label:'2010',value:2010}, - {label:'2020',value:2020}, - {label:'2030',value:2030}, - {label:'2040',value:2040}, - {label:'2050',value:2050}, - {label:'2060',value:2060}, - {label:'2070',value:2070}, - {label:'2080',value:2080}, - {label:'2090',value:2090}, - {label:'9000',value:9000}] - list.forEach((item: any)=>{ - if (item.value<=e){ - // if (item.value===e){ + onChange: (e) => { + if (e) { + const list: any = [{ label: '2000', value: 2000 }, + { label: '2010', value: 2010 }, + { label: '2020', value: 2020 }, + { label: '2030', value: 2030 }, + { label: '2040', value: 2040 }, + { label: '2050', value: 2050 }, + { label: '2060', value: 2060 }, + { label: '2070', value: 2070 }, + { label: '2080', value: 2080 }, + { label: '2090', value: 2090 }, + { label: '9000', value: 9000 }] + list.forEach((item: any) => { + if (item.value <= e) { + // if (item.value===e){ item.disabled = true } }) setNextBusinessTypeState(list) - }else{ - const list: any = [{label:'2000',value:2000}, - {label:'2010',value:2010}, - {label:'2020',value:2020}, - {label:'2030',value:2030}, - {label:'2040',value:2040}, - {label:'2050',value:2050}, - {label:'2060',value:2060}, - {label:'2070',value:2070}, - {label:'2080',value:2080}, - {label:'2090',value:2090}, - {label:'9000',value:9000}] - list.forEach((item: any)=>{ + } else { + const list: any = [{ label: '2000', value: 2000 }, + { label: '2010', value: 2010 }, + { label: '2020', value: 2020 }, + { label: '2030', value: 2030 }, + { label: '2040', value: 2040 }, + { label: '2050', value: 2050 }, + { label: '2060', value: 2060 }, + { label: '2070', value: 2070 }, + { label: '2080', value: 2080 }, + { label: '2090', value: 2090 }, + { label: '9000', value: 9000 }] + list.forEach((item: any) => { item.disabled = false }) setNextBusinessTypeState(list) @@ -655,7 +661,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { } ]} fieldProps={{ - onChange:(e: any)=>{ + onChange: (e: any) => { setSelectRoleType(Number(e.target.value)) } }} @@ -672,7 +678,7 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { label={'下一个业务状态'} name={'NEXT_STATE'} fieldProps={{ - options:nextBusinessTypeState || [] + options: nextBusinessTypeState || [] }} rules={[ { @@ -684,13 +690,13 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { { - selectRoleType===2000?'': + selectRoleType === 2000 ? '' : = (props) => { // disabled addonAfter={ } /> @@ -743,38 +749,38 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { APPROVALSTAFF_ID: rowList }) setDefaultPerson([]) - if (rowDetailList && rowDetailList.length>0){ - console.log('rowDetailList',rowDetailList) + if (rowDetailList && rowDetailList.length > 0) { + console.log('rowDetailList', rowDetailList) // 去重 const indexList: any = [] // 去重后的list const deduplicationList: any = [] - rowDetailList.forEach((item: any)=>{ - if (indexList && indexList.length>0){ - if (indexList.indexOf(item.value)===-1){ + rowDetailList.forEach((item: any) => { + if (indexList && indexList.length > 0) { + if (indexList.indexOf(item.value) === -1) { indexList.push(item.value) deduplicationList.push(item) } - }else{ + } else { indexList.push(item.value) deduplicationList.push(item) } }) - console.log('deduplicationList',deduplicationList) + console.log('deduplicationList', deduplicationList) setPlayerList(deduplicationList) - }else{ + } else { const req: any = { - SearchParameter:{ - USER_IDS: rowList && rowList.length>0?rowList.toString():'' + SearchParameter: { + USER_IDS: rowList && rowList.length > 0 ? rowList.toString() : '' }, PageIndex: 1, PageSize: 999999 } const data = await handleGetUSERList(req) - if (data && data.length>0){ + if (data && data.length > 0) { const list: any = [] - data.forEach((item: any)=>{ - list.push({label:item.USER_NAME,value: Number(item.USER_ID)}) + data.forEach((item: any) => { + list.push({ label: item.USER_NAME, value: Number(item.USER_ID) }) }) setPlayerList(list) setPlayDefaulterList(list) @@ -803,10 +809,10 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser}> = (props) => { }} > + onRef={choseDetail} showChosePlayer={showChosePlayer} currentUser={currentUser} selectRoleTypeId={selectRoleTypeId} />
-) + ) } export default connect(({ diff --git a/src/pages/reports/settlementAccount/component/YearExamineDetailTable.tsx b/src/pages/reports/settlementAccount/component/YearExamineDetailTable.tsx index dae6823..a985ee0 100644 --- a/src/pages/reports/settlementAccount/component/YearExamineDetailTable.tsx +++ b/src/pages/reports/settlementAccount/component/YearExamineDetailTable.tsx @@ -2374,7 +2374,6 @@ const YearExamineDetailTable = ({ parentRow, currentApprovalstate, onRef, setIsS } setPrintDetailTableData(exportDetailList) // exportDetailList.push(sumObj) - console.log('exportDetailListexportDetailListexportDetailListexportDetailList', 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) { 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) { handleCloseSettlement(closeReqTableDataRef.current) } else if (isShowClosebtn.current && parentRow?.CLOSED_DATE && !isYear && parentRow?.PeriodClosed) { - console.log('parentRow', parentRow); confirm({ title: '该项目为提前撤场项目,是否进行撤场结算?', icon: , async onOk() { - console.log('isFirst', isFirst.current); - console.log('closeReqTableDataRef', closeReqTableDataRef.current); - handleCloseSettlement(closeReqTableDataRef.current) }, onCancel() { @@ -2845,7 +2831,7 @@ const YearExamineDetailTable = ({ parentRow, currentApprovalstate, onRef, setIsS {signature?.developManagerName || ''} */} {/* - + }} /> */} diff --git a/src/pages/reports/settlementAccount/component/yearExamine.tsx b/src/pages/reports/settlementAccount/component/yearExamine.tsx index 7ff183a..e3b5eee 100644 --- a/src/pages/reports/settlementAccount/component/yearExamine.tsx +++ b/src/pages/reports/settlementAccount/component/yearExamine.tsx @@ -244,6 +244,7 @@ const YearExamine = ({ searchParams, parentRow, examineState, searchContent, cur title: '操作', hideInTable: !endReject, dataIndex: 'option', + hideInSearch: true, align: 'center', render: (_, record) => { return
{ diff --git a/src/pages/reports/settlementAccount/component/yearExamineProcess.tsx b/src/pages/reports/settlementAccount/component/yearExamineProcess.tsx index 4c9b568..d3a6c5f 100644 --- a/src/pages/reports/settlementAccount/component/yearExamineProcess.tsx +++ b/src/pages/reports/settlementAccount/component/yearExamineProcess.tsx @@ -846,6 +846,8 @@ const YearExamineProcess = ({ currentUser, onShow, setOnShow, parentRow, setPare } ]} request={async () => { + console.log('parentRowparentRowparentRowparentRow211', parentRow); + // merchantState 判断哪几个状态是商户的 商户调用拿到 商户下面的全部人列表选择一个 不是商户的 就根据选择了的人去指定一个人 // 接口直接返回就不用判断了 if (toExamineType !== 1) { @@ -872,15 +874,18 @@ const YearExamineProcess = ({ currentUser, onShow, setOnShow, parentRow, setPare setCurrentNowState(data.BUSINESSAPPROVAL_STATE) // 拿到下一环节 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, IsValid: 1 } + console.log('nextReq', nextReq); + const nextData = await handleGetAPPROVALROUTEDetail(nextReq) 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) { data.UserList.forEach((item: any) => { if (item.USER_STATUS === 1) { @@ -889,13 +894,25 @@ const YearExamineProcess = ({ currentUser, onShow, setOnShow, parentRow, setPare }) } if (list && list.length > 0 && list.length === 1) { - formDescRef.current?.setFieldsValue({ nextPerson: list[0].value }) + if (list[0].value !== 827) { + 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) { list.push({ label: '严琅杰', value: 2785 }) } + console.log('listlistlistlist213231', list); + + return list diff --git a/src/pages/travelMember/GrowthValueRecordSearch/index.tsx b/src/pages/travelMember/GrowthValueRecordSearch/index.tsx index fea4953..5a79aa3 100644 --- a/src/pages/travelMember/GrowthValueRecordSearch/index.tsx +++ b/src/pages/travelMember/GrowthValueRecordSearch/index.tsx @@ -30,7 +30,7 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) const [treeView, setTreeView] = useState() const [printIndex, setPrintIndex] = useState(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: { transform: (value) => { return { - CHECK_STARTDATE: value[0], - CHECK_ENDDATE: value[1], + OPERATE_DATE_Start: value[0], + 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: "服务区名称", @@ -99,18 +99,16 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) dataIndex: "GROWTH_SOURCE", align: 'center', ellipsis: true, - valueType: 'select', - valueEnum: { - "0": "全部", - ...POINTTYPEObj - }, + valueType: 'treeSelect', + request: () => { + return SCORETYPETree + } // valueEnum: { // "0": "全部", // "1000": "消费赠送", // "2000": "消费抵扣", // "3000": "注册赠送", // }, - initialValue: "0" }, { title: "成长方式", @@ -170,6 +168,8 @@ const GrowthValueRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) const req: any = { searchParameter: { // PROVINCE_CODE: currentUser?.ProvinceCode || "", + OPERATE_DATE_Start: params?.OPERATE_DATE_Start || "", + OPERATE_DATE_End: params?.OPERATE_DATE_End || "", OWNERUNIT_ID: 911, SCORESETTING_STATE: 1, GROWTH_SOURCES: params?.GROWTH_SOURCE === "0" ? "" : params?.GROWTH_SOURCE, diff --git a/src/pages/travelMember/PointsRecordSearch/index.tsx b/src/pages/travelMember/PointsRecordSearch/index.tsx index 5bcf8df..87d705a 100644 --- a/src/pages/travelMember/PointsRecordSearch/index.tsx +++ b/src/pages/travelMember/PointsRecordSearch/index.tsx @@ -31,6 +31,7 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) => { const [printIndex, setPrintIndex] = useState(new Date().getTime()) let POINTTYPEObj = session.get('POINTTYPEObj') + let SCORETYPETree = session.get('SCORETYPETree') // 树相关的属性和方法 const [selectedId, setSelectedId] = useState() @@ -51,12 +52,12 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) => { search: { transform: (value) => { return { - CHECK_STARTDATE: value[0], - CHECK_ENDDATE: value[1], + OPERATE_DATE_Start: value[0], + 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: "服务区名称", @@ -93,19 +94,18 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) => { width: 120, dataIndex: "POINT_SOURCE", ellipsis: true, - valueType: 'select', + valueType: 'treeSelect', align: 'center', - valueEnum: { - "0": "全部", - ...POINTTYPEObj - }, + request: () => { + return SCORETYPETree + } // valueEnum: { // "0": "全部", // "1000": "消费赠送", // "2000": "消费抵扣", // "3000": "注册赠送" // }, - initialValue: "0" + // initialValue: "0" }, { title: "本次积分", @@ -168,12 +168,15 @@ const PointsRecordSearch: React.FC<{ currentUser: CurrentUser }> = (props) => { const req: any = { SearchParameter: { // PROVINCE_CODE: currentUser?.ProvinceCode || "", + OPERATE_DATE_Start: params?.OPERATE_DATE_Start || "", + OPERATE_DATE_End: params?.OPERATE_DATE_End || "", OWNERUNIT_ID: 911, POINT_TYPE: params?.POINT_TYPE === '-2' ? '' : params?.POINT_TYPE, POINT_SOURCE: params?.POINT_SOURCE === '0' ? '' : params?.POINT_SOURCE }, PageIndex: params?.current, - PageSize: 20 + PageSize: 20, + sortstr: "OPERATE_DATE desc", } const data = await handleGetPOINTRECORDList(req) if (data.List && data.List.length > 0) { diff --git a/src/pages/travelMember/SupplierMerchantManage/index.tsx b/src/pages/travelMember/SupplierMerchantManage/index.tsx index d8e6a92..9f62a3e 100644 --- a/src/pages/travelMember/SupplierMerchantManage/index.tsx +++ b/src/pages/travelMember/SupplierMerchantManage/index.tsx @@ -138,6 +138,9 @@ const SupplierMerchantManage: React.FC<{ currentUser: CurrentUser | undefined }> hideInTable: true, width: 120, ellipsis: true, + fieldProps: { + placeholder: "请输入商户名称/商户ID" + } }, { dataIndex: 'MERCHANTS_TELEPHONE', diff --git a/src/pages/travelMember/TradingLedger/index.tsx b/src/pages/travelMember/TradingLedger/index.tsx new file mode 100644 index 0000000..ef307d7 --- /dev/null +++ b/src/pages/travelMember/TradingLedger/index.tsx @@ -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() + const actionRef = useRef(); + const formRef = useRef(); + const [reqDetailList, setReqDetailList] = useState(); // 合计项数据源 + const [printOut, setPrintOut] = useState(); // 打印数据的内容 + const [collapsible, setCollapsible] = useState(false) + const [treeView, setTreeView] = useState() + const [printIndex, setPrintIndex] = useState(new Date().getTime()) + + + // 树相关的属性和方法 + const [selectedId, setSelectedId] = useState() + // 导出的加载效果 + const [showLoading, setShowLoading] = useState(false) + // 是否显示打印的表格 + const [showExportTable, setShowExportTable] = useState(false) + // 查询的条件 + const [searchParams, setSearchParams] = useState() + const [currentRow, setCurrentRow] = useState(); + const [modalVisible, handleModalVisible] = useState(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:
供应商名称
, + align: 'left', + width: 200, + ellipsis: true, + hideInSearch: true, + }, + { + dataIndex: 'SALEBILL_CODE', + title:
订单编码
, + align: 'left', + width: 220, + ellipsis: true, + hideInSearch: true, + render: (_, record) => { + return record?.SALEBILL_CODE ? +
{ + setCurrentRow(record); + handleModalVisible(true) + }}>{record?.SALEBILL_CODE} : "-" + } + }, + { + dataIndex: 'COMMODITY_NAME', + title:
购买商品
, + 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 ( +
{ + // 打印报表 + if (!reqDetailList || reqDetailList.length === 0) return; + setPrintOut(el); + }} > + + { + showLoading ? +
+
+ + 数据导出中... +
+
: '' + } + +
+ { + showExportTable && reqDetailList && reqDetailList.length > 0 ? + : '' + } +
+
+ +
+ {/* */} +
+ } // 列表表头 + 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: [ + + + , + + ] + }} + /> +
+
+ + + +
+ ) +} + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.currentUser +}))(TradingLedger); diff --git a/src/pages/travelMember/memberInfor/index.tsx b/src/pages/travelMember/memberInfor/index.tsx index 0d78f55..c133fce 100644 --- a/src/pages/travelMember/memberInfor/index.tsx +++ b/src/pages/travelMember/memberInfor/index.tsx @@ -42,7 +42,6 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => { let MEMBERSHIP_TYPEObj = session.get('MEMBERSHIP_TYPEObj'); - let MEMBERSHIP_LEVELObj = session.get('MEMBERSHIP_LEVELObj'); let MEMBERSHIP_LEVELList = session.get('MEMBERSHIP_LEVELList'); let COMPANY_STATEObj = session.get('COMPANY_STATEObj'); let COMPANY_STATEList = session.get('COMPANY_STATEList'); @@ -70,6 +69,8 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => { // 当前选中在详情里面要查看的内容 const [selectTab, setSelectTab] = useState(1) + let MEMBERSHIPLEVELYNObj = session.get('MEMBERSHIPLEVELYNObj') + let SCORETYPETree = session.get('SCORETYPETree') const [columnsStateMap, setColumnsStateMap] = useState({ MEMBERSHIP_CODE: { show: false }, @@ -233,11 +234,7 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => { ellipsis: true, align: 'center', valueType: 'select', - valueEnum: { - "0": "全部", - ...MEMBERSHIP_LEVELObj, - "9000": "VIP会员" - }, + valueEnum: MEMBERSHIPLEVELYNObj, initialValue: "0" }, { @@ -476,20 +473,18 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => { valueEnum: { "1": "累计", "-1": "消耗" - } + }, }, { title: "积分来源", width: 120, - dataIndex: "POINT_TYPE", + dataIndex: "POINT_SOURCE", hideInSearch: true, ellipsis: true, + valueType: 'treeSelect', align: 'center', - valueType: 'select', - valueEnum: { - "1000": "消费赠送", - "2000": "消费抵扣", - "3000": "注册赠送" + request: () => { + return SCORETYPETree } }, { @@ -558,15 +553,13 @@ const memberInfor: React.FC<{ currentUser: CurrentUser }> = (props) => { { title: "成长来源", width: 120, - dataIndex: "GROWTH_VALUE", + dataIndex: "GROWTH_SOURCE", hideInSearch: true, ellipsis: true, + valueType: 'treeSelect', align: 'center', - valueType: 'select', - valueEnum: { - "1000": "消费赠送", - "2000": "消费抵扣", - "3000": "注册赠送", + request: () => { + return SCORETYPETree } }, { diff --git a/src/pages/travelMember/service.ts b/src/pages/travelMember/service.ts index 6b19ce5..7bc2c1c 100644 --- a/src/pages/travelMember/service.ts +++ b/src/pages/travelMember/service.ts @@ -712,4 +712,16 @@ export async function handeGetFIELDEXPLAINList(params: any) { return [] } 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 } \ No newline at end of file