import React, { useEffect, useState, useRef, useMemo } from 'react' import { Spin, Popconfirm, message, Button, Input, Select } from 'antd' import { connect } from 'react-redux' import ProTable from '@ant-design/pro-table' import moment from 'moment' import RelationModal from '../components/relationModal' function ProjectBinding(props) { const {loading, clientHeight, actions, dispatch, devices,anxinyunProjectLoading,relationLoading } = props const { projectBinding, projectRegime } = actions const tableRef = useRef() const proTableFormRef = useRef() const [proejctListOpt, setProjectListOpt] = useState([])//安心云结构物 const [structureListOpt, setStructureListOpt] = useState([])//巡检结构物 const [dataSource, setDataSource] = useState([]) // const [dataCopy,setDataCopy]=useState([]) const [tableParams, setTableParams] = useState({}) // const fetchData = async () => { // let data={ // url:"users/{orgId}/projects", // type:"get" // } // dispatch(projectBinding.getanxinyunProject(data)).then(async res=>{ // if(res.success){ // const d=res.payload.data?.map(item=>{ // return { // label:item?.projects[0]?.name, // value:item?.projects[0]?.id // } // }) // setProjectListOpt(d) // const r2= await dispatch(projectRegime.getProjectList()) // const dp=r2.pauseStatemap(item=>{ // return { // label:item?.name, // value:item?.id // } // }) // setStructureListOpt(dp) // const r= await dispatch(projectBinding.getRelation()) // const list = r?.payload?.data?.rows?.map(item=>{ // return { // key: item.id, // anxinyunProject:d?.find(q=>q.value===item.axyProjectId)?.label, // structName:dp?.find(q=>q.value===item.structureId)?.label // } // }) // setDataSource(list) // } // }) // } //初始化 useEffect(() => { let data = { url:'organizations/{orgId}/structures', // url: 'users/{orgId}/projects', type: 'get', } dispatch(projectBinding.getanxinyunProject(data)).then(res => { if (res.success) { const d = res.payload.data?.map(item => { return { label: item?.name, value: item?.iotaThingId, } }) setProjectListOpt(d) } }) dispatch(projectRegime.getProjectList()).then(res => { if (res.success) { const dp = res.payload.data?.rows?.map(item => { return { label: item?.name, value: item?.id, } }) setStructureListOpt(dp) } }) }, []) const queryData = () => { dispatch(projectBinding.getRelation()).then(res => { if (res.success) { const list = res?.payload?.data?.rows?.map(item => { return { key: item.id, anxinyunProject: proejctListOpt?.find(q => q.value === item.axyProjectId)?.value, structName: structureListOpt?.find(q => q.value === item.structureId)?.value, } }) setDataSource(list) // setDataCopy(list) } }) } useEffect(() => { if (proejctListOpt && structureListOpt && proejctListOpt.length && structureListOpt.length) { queryData() } }, [proejctListOpt, structureListOpt]) const onFinish = async values => { const dataToSave = { axyProjectId: values?.anxinyunProject, structrueId: values?.structName, id: values?.id } return dispatch(projectBinding.addorEditRelation(dataToSave)).then(res => { if (res.success) { queryData() // tableRef.current.reload() return true } else { return false } }) } //删除按钮 const handleDelete = id => { dispatch(projectBinding.delRelation(id)).then(res => { if (res.success) { queryData() } }) } const filterOption = (input, option) => (option?.label ?? '').toLowerCase().includes(input.toLowerCase()) const columns = [ { title: '安心云结构物', dataIndex: 'anxinyunProject', ellipsis: true, valueType: 'select', fieldProps: { options: proejctListOpt, }, renderFormItem: () => ( ), // fieldProps: { // showSearch: true, // defaultValue: '', // }, // onFilter: (value, record) => record.name.includes(value), // search:false }, { title: '结构物名称', dataIndex: 'structName', ellipsis: true, valueType: 'select', fieldProps: { options: structureListOpt, }, renderFormItem: () => ( ), // fieldProps: { // showSearch: true, // defaultValue: '', // }, // search:false valueType: 'select', fieldProps: { options: structureListOpt, }, }, { title: '操作', width: 160, key: 'option', valueType: 'option', render: (text, record) => { const options = [] options.push( 修改映射关系} editData={record} structureListOpt={structureListOpt} title='修改映射关系' onFinish={onFinish} key='editModel' /> ) options.push( handleDelete(record.key)} okText='是' cancelText='否'> 删除 ) return options }, }, ] // useMemo(()=>{ // }) const tableDatas = useMemo(() => { const { anxinyunProject, structName } = tableParams let rslt = dataSource rslt = rslt .filter(s => (anxinyunProject ? (s.anxinyunProject ? s.anxinyunProject === anxinyunProject : false) : true)) ?.filter(s => (structName ? (s.structName ? s.structName === structName : false) : true)) return rslt }) // const searchHandler=()=>{ // const anxinyunProject=proTableFormRef.current.getFieldsValue()?.anxinyunProject // const structName=proTableFormRef.current.getFieldsValue()?.structName // setDataSource( // dataCopy.filter(f => // (!anxinyunProject || f.anxinyunProject?.includes(anxinyunProject)) && // (!structName || f?.structName === structName) // ) // ) // } return (
{/* */}
项目绑定  PROJECT
新增} title='新增映射关系' onFinish={onFinish} key='addModel' /> { setTableParams(params) return { data: [], success: true, } }} actionRef={tableRef} columns={columns} pagination={{ pageSize: 10, size: 'default', className: 'global-pagination' }} dataSource={tableDatas || []} search={{ labelWidth: 100, }} // search={{ // optionRender: ({searchText, resetText}, {form}, dom) => [ // , // ] // }} > {/*
*/}
) } function mapStateToProps(state) { const { auth, global, device,anxinyunProject, relation} = state return { loading: device.isRequesting, clientHeight: global.clientHeight, actions: global.actions, relationLoading:relation.isRequesting, anxinyunProjectLoading:anxinyunProject.isRequesting, } } export default connect(mapStateToProps)(ProjectBinding)