import React, { memo, useEffect, useRef, useState, useReducer } from "react"; import { Image, Divider, Menu, Dropdown, Button, Modal, Row, Col, Tooltip, Drawer, } from "antd"; import { connect, useRequest } from "umi"; import AutoTable from "@/components/AutoTable"; import getPrem from "@/utils/getPrem"; //权限判断fn import { doFetch } from "@/utils/doFetch"; import { paBusinessMsgScene, paBusinessMsgOption } from "@/services/platform"; import { addFields } from "./fields"; import Formpage from "./Formpage"; import Details from "@/components/Details"; const initState = { vs: false, fields: {}, iftype: {}, details: { totalTitle: "", visible: false, dataSource: {}, totalCard: [], }, shown: false, rowMessage: {}, }; function reducer(state, action) { if (action.type == "add") { return { ...state, vs: true, fields: action.fields, iftype: { val: "add", title: "新增推送配置", }, rowMessage: {}, }; } else if (action.type == "close") { return { ...state, vs: false, iftype: {}, fields: {}, details: { totalTitle: "", visible: false, dataSource: {}, totalCard: [], }, shown: false, }; } else if (action.type == "edit") { return { ...state, vs: true, fields: action.fields, iftype: { val: "edit", title: "修改推送配置", id: action.rowMessage.id, }, rowMessage: action.rowMessage, }; } else if (action.type == "seeDetails") { return { ...state, details: { totalTitle: "推送详情", visible: true, dataSource: { ...action.dataSource }, totalCard: [...action.totalCard], }, }; } else if (action.type == "changeShown") { return { ...state, shown: action.shown, }; } } const Pushdeploy = (props) => { let actionRef = useRef(), ChildRef = null; function reload() { actionRef?.current?.reload(); ChildRef?.onRefresh(); } const [state, dispatch] = useReducer(reducer, initState), { vs, fields, iftype, details, shown, rowMessage } = state, columns = [ { title: "推送类型", dataIndex: "msgSceneName", key: "businessMsgSceneId", valueType: "select", render: (_, row) => { return (
{ let commons = [ { title: "推送类型", key: "msgSceneName", }, { title: "推送方式", key: "sendMethodName", }, { title: "适用类型", key: "fitFieldName", }, ], table = { key: "detailList", col: { span: 24 }, type: "table", columns: [ { title: "推送流程", dataIndex: "sendProcessName", key: "sendProcessName", search: false, }, { title: "推送对象", dataIndex: "sendToName", key: "sendToName", search: false, }, { title: "选择对象", dataIndex: "targetNames", key: "targetNames", search: false, }, { title: "初始触发时长", dataIndex: "initialTime", key: "initialTime", search: false, }, { title: "初始触发时长单位", dataIndex: "initialUnitName", key: "initialUnitName", search: false, }, { title: "间隔时长", dataIndex: "intervalTime", key: "intervalTime", search: false, }, { title: "间隔时长单位", dataIndex: "intervalUnitName", key: "intervalUnitName", search: false, }, { title: "触发次数", dataIndex: "sendNum", key: "sendNum", search: false, }, ], }, totalCardsc, contentMsg, fieldMsg; contentMsg = { title: "推送内容", key: "sendContent", col: { span: 24 }, }; if (row.fitField == 1) { fieldMsg = null; } else { fieldMsg = { title: "类型名称", key: "fieldName", }; } totalCardsc = [ { cardTitle: "推送信息", itemData: [ ...commons, fieldMsg && { ...fieldMsg }, contentMsg && { ...contentMsg }, ], }, { cardTitle: "基础配置", itemData: [{ ...table }], }, ]; totalCardsc.map((it) => { let newData = it.itemData.filter((item) => item); it.itemData = [...newData]; }); paBusinessMsgOption({ id: row.id }).then((res) => { if (res.code == "0000") { let data = res?.data?.data || {}; dispatch({ type: "seeDetails", totalCard: [...totalCardsc], dataSource: { ...data }, }); } }); }} > {row.msgSceneName}
); }, options: { database: paBusinessMsgScene, params: {}, }, }, { title: "推送方式", dataIndex: "sendMethodName", key: "sendMethodName", search: false, }, { title: "适用范围", dataIndex: "fitFieldName", key: "fitField", valueType: "select", options: [ { label: "全部", value: 1, }, { label: "工厂", value: 2, }, { label: "组织", value: 3, }, { label: "仓库", value: 4, }, ], }, { title: "范围名称", dataIndex: "fieldName", key: "fieldName", }, { title: "推送内容", dataIndex: "sendContent", key: "sendContent", search: false, }, { title: "操作", valueType: "option", width: 150, render: (text, row, _, action) => extraAction(text, row, _, action), }, ], { run, loading } = useRequest(doFetch, { manual: true, formatResult: (res) => res, onSuccess: (result, params) => { if (result.code == "0000") { reload(); dispatch({ type: "close" }); } }, }); function extraAction(text, record, _, action) { return (
{getPrem("paBusinessMsgOption_save", action, "修改", () => { paBusinessMsgOption({ id: record.id }).then((res) => { if (res.code == "0000") { let data = res?.data?.data || {}; for (let i in addFields) { addFields[i].value = data[i]; } dispatch({ type: "edit", rowMessage: data, fields: addFields }); } }); })} {getPrem("paBusinessMsgOption_save", "ifs") && ( )} {getPrem("paBusinessMsgOption_deleteById", action, "删除", null, { title: "确认删除该推送配置?", onConfirm: () => { run({ url: "/ngic-base-business/paBusinessMsgOption/deleteById", params: { id: record.id }, }); }, })}
); } function reset() { reload(); dispatch({ type: "close" }); } let extrarender = [ , ]; return (
(ChildRef = node)} path="/ngic-base-business/paBusinessMsgOption/queryList" > dispatch({ type: "close" })} destroyOnClose={true} getContainer={false} afterVisibleChange={(v) => { dispatch({ type: "changeShown", shown: v }); }} style={{ position: "absolute" }} width="100%" > {shown && ( )}
dispatch({ type: "close" })} getContainer={false} style={{ position: "absolute" }} width={800} >
); }; export default Pushdeploy;