import React, { memo, useEffect, useRef, useState, useReducer } from "react"; import { Image, Divider, Menu, Dropdown, Button, Modal, Row, Col, Tooltip, Drawer, Form, Input, message, Typography, } from "antd"; import { connect, useRequest } from "umi"; import AutoTable from "@/components/AutoTable"; import getPrem from "@/utils/getPrem"; //权限判断fn import InitForm from "@/components/InitForm"; import { doFetch } from "@/utils/doFetch"; import { tableField } from "./fields"; import moment from "moment"; import { factorySelect, zuzhi, allDepartment, allShop, depart, selectionBoxAll, roleList, currentUserList, } from "@/services/system"; const { TextArea } = Input, { Paragraph } = Typography; const initState = { vs: false, tableFields: {}, iftype: {}, tableData: [], hidesTitle: true, hidesContent: true, formFields: {}, tableLoading: false, variableVisible: false, variableExtraparams: "", }, sendToArr = [ { label: "可操作人员", value: 1, }, { label: "创建人", value: 2, }, { label: "(上个通知人员)上级领导", value: 3, }, { label: "选择角色", value: 4, }, { label: "选择人员", value: 5, }, ], unitArr = [ { label: "分钟", value: 1, }, { label: "小时", value: 2, }, { label: "天", value: 3, }, ], sendProcessArr = [ { label: "一级通知", value: 1, }, { label: "二级通知", value: 2, }, { label: "三级通知", value: 3, }, { label: "四级通知", value: 4, }, { label: "五级通知", value: 5, }, { label: "六级通知", value: 6, }, { label: "七级通知", value: 7, }, { label: "八级通知", value: 8, }, ]; function reducer(state, action) { if (action.type == "add") { return { ...state, vs: true, tableFields: { ...action.tableFields }, iftype: { val: "add", title: "新增基础设置", id: "", }, }; } else if (action.type == "edit") { return { ...state, vs: true, tableFields: { ...action.tableFields }, iftype: { val: "edit", title: "修改基础设置", id: action.curitem.id, }, }; } else if (action.type == "changeHideTitle") { return { ...state, hidesTitle: action.hidesTitle, }; } else if (action.type == "changeHideContent") { return { ...state, hidesContent: action.hidesContent, }; } else if (action.type == "changeFormFields") { return { ...state, formFields: { ...action.formFields }, }; } else if (action.type == "start") { return { ...state, formFields: { ...action.formFields }, tableData: [...action.tableData], }; } else if (action.type == "changeTableFields") { return { ...state, tableFields: { ...action.tableFields }, }; } else if (action.type == "changeTableData") { return { ...state, tableData: [...action.tableData], vs: false, tableLoading: false, }; } else if (action.type == "changeLoading") { return { ...state, tableLoading: true, }; } else if (action.type == "changeShown") { return { ...state, shown: action.shown, }; } else if (action.type == "openVariable") { return { ...state, variableVisible: true, variableExtraparams: action.variableExtraparams, }; } else if (action.type == "close") { return { ...state, vs: false, iftype: {}, tableFields: {}, variableVisible: false, variableExtraparams: "", }; } } const Variable = (props) => { const { businessMsgSceneId, dispatch } = props; return (
{ return ( { dispatch({ type: "close" }); }, }} > 复制 ); }, }, ]} bordered={false} path="/ngic-base-business/paBusinessMsgSceneVariable/queryPageBySceneId" extraparams={{ businessMsgSceneId }} x={"100%"} >
); }; const Formpage = (props) => { const { rowMessage, reset, iftypeParent } = props; let actionRef = useRef(), ChildRef = null; function reload() { actionRef?.current?.reload(); ChildRef?.onRefresh(); } useEffect(() => { if (iftypeParent.val == "add") { for (let i in fields) { fields[i].hides = false; fields[i].value = null; } } else if (iftypeParent.val == "edit") { let database = getdatabase(rowMessage["fitField"]); for (let i in fields) { fields[i].value = rowMessage[i]; if (i == "sendMethodType") { showTitleorContent(rowMessage[i]); form.setFieldsValue({ sendTitle: rowMessage.sendTitle, sendContent: rowMessage.sendContent, }); } if (i == "fieldId" && rowMessage["fitField"] == 1) { fields[i].hides = true; } else if (i == "fieldId" && rowMessage["fitField"] != 1) { fields[i].hides = false; fields[i].options = { database, params: {}, }; } } } dispatch({ type: "start", formFields: { ...fields }, tableData: iftypeParent.val == "add" ? [] : rowMessage?.detailList, }); }, [fields]); const { fields } = props, [form] = Form.useForm(), [forms] = Form.useForm(), [tableFormRef] = Form.useForm(), [state, dispatch] = useReducer(reducer, initState), { vs, tableFields, iftype, tableData, hidesTitle, hidesContent, formFields, tableLoading, variableVisible, shown, variableExtraparams, } = state, 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, }, { 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") { reset && reset(); } }, }); let extrarender = [ , ]; function extraAction(text, record, _, action) { return (
{getPrem(true, null, "修改", () => { for (let j in tableField) { tableField[j].value = record[j]; if (j == "targetIdList") { if (record.sendTo != 4 && record.sendTo != 5) { tableField[j].hides = true; } else { let database = getformdatabase(record.sendTo); tableField[j].hides = false; tableField[j].options = { database, params: {}, }; } } dispatch({ type: "edit", tableFields: tableField, curitem: record, }); } })} {getPrem(true, "red", "删除", null, { title: "确认删除该基础配置?", onConfirm: () => { let newData = tableData.filter((it) => it.id != record.id); dispatch({ type: "changeTableData", tableData: newData }); }, })}
); } let saveData = (values, fn) => { dispatch({ type: "changeLoading" }); const { sendTo, targetIdList, sendProcess, initialUnit, initialTime, intervalTime, intervalUnit, sendNum, } = values; let targetNames = []; let all = async () => { if (sendTo == 4) { let data = await roleList({}); return { newArr: data?.data?.dataList || [], }; } else if (sendTo == 5) { let data = await currentUserList({}); return { newArr: data?.data?.dataList || [], }; } else { return { newArr: [], }; } }; all().then((res) => { let dataArr = res.newArr; targetNames = dataArr ?.filter((it) => targetIdList?.indexOf(it.value) > -1) ?.map((it) => it.label) ?.join(",") || ""; let params = { sendTo, targetNames, sendProcess, sendProcessName: sendProcessArr.filter((it) => it.value == sendProcess).length > 0 ? sendProcessArr.filter((it) => it.value == sendProcess)[0] .label : "", initialUnit, initialTime, intervalTime, intervalUnit, sendNum, targetIdList, id: iftype.id ? iftype.id : moment().valueOf() + Math.floor(Math.random() * (9999 - 1000)) + 1000, sendToName: sendToArr.filter((it) => it.value == sendTo).length > 0 ? sendToArr.filter((it) => it.value == sendTo)[0].label : "", initialUnitName: unitArr.filter((it) => it.value == initialUnit).length > 0 ? unitArr.filter((it) => it.value == initialUnit)[0].label : "", intervalUnitName: unitArr.filter((it) => it.value == intervalUnit).length > 0 ? unitArr.filter((it) => it.value == intervalUnit)[0].label : "", }, newTable; if (iftype.val == "edit") { newTable = tableData.map((it) => { if (it.id == iftype.id) { it = { ...params }; } return it; }); } else { newTable = [...tableData]; newTable.unshift(params); } dispatch({ type: "changeTableData", tableData: newTable }); }); }, saveForm = () => { let editId = rowMessage ? { id: rowMessage.id } : {}, all = async () => { let values = await forms.validateFields(), valuesc = await form.validateFields(); return { values, valuesc, }; }; all().then((res) => { if (!tableData.length) { return message.warning("基础配置不可为空!"); } let detailList = tableData.map((it) => { if (iftypeParent.val == "edit") { return { sendProcess: it.sendProcess, sendTo: it.sendTo, targetIdList: it.targetIdList, initialTime: it.initialTime, initialUnit: it.initialUnit, intervalTime: it.intervalTime, intervalUnit: it.intervalUnit, sendNum: it.sendNum, id: it.id && typeof it.id == "number" ? "" : it.id, }; } else { return { sendProcess: it.sendProcess, sendTo: it.sendTo, targetIdList: it.targetIdList, initialTime: it.initialTime, initialUnit: it.initialUnit, intervalTime: it.intervalTime, intervalUnit: it.intervalUnit, sendNum: it.sendNum, }; } }), params = { ...res.values, ...res.valuesc, detailList, ...editId, }; run({ url: "/ngic-base-business/paBusinessMsgOption/save", params: { ...params }, }); }); }; function showTitleorContent(val) { if (val == 4) { dispatch({ type: "changeHideTitle", hidesTitle: false }); } else { dispatch({ type: "changeHideTitle", hidesTitle: false }); } if (val == 2) { dispatch({ type: "changeHideContent", hidesContent: false }); } else { dispatch({ type: "changeHideContent", hidesContent: false }); } } function getdatabase(val) { let database; switch (val) { case 2: database = factorySelect; break; case 3: database = zuzhi; break; case 4: database = selectionBoxAll; break; } return database; } function getformdatabase(val) { let database; switch (val) { case 4: database = roleList; break; case 5: database = currentUserList; break; } return database; } return (
{ for (let i in changedValues) { if (i == "sendMethodType") { showTitleorContent(changedValues[i]); } if (i == "fitField") { let database = getdatabase(changedValues[i]); for (let j in formFields) { if (j == "fieldId" && changedValues[i] == 1) { formFields[j].hides = true; } else if (j == "fieldId" && changedValues[i] != 1) { formFields[j].hides = false; formFields[j].options = { database, params: {}, }; formFields[j].type = changedValues[i] == 3 ? "treeselect" : "select"; forms.setFieldsValue({ fieldId: "" }); } } dispatch({ type: "changeFormFields", formFields: formFields }); } } }} actions={(form, submitBtn) => { return null; }} formRef={forms} >
{!hidesTitle && (
* 推送标题