This commit is contained in:
ylj20011123 2026-02-09 19:28:24 +08:00
parent 5e6b143a72
commit abcad3423f
11 changed files with 2920 additions and 44 deletions

View File

@ -85,9 +85,19 @@ export default [
},
{
path: '/ComplaintForwardingProcess/index',
name: '投诉转发流程',
name: '投诉受理',
component: "@/pages/ComplaintForwardingProcess/index",
},
{
path: '/ComplaintForwardingProcess/ComplaintForwardingProcessReview',
name: '投诉审核',
component: "@/pages/ComplaintForwardingProcess/ComplaintForwardingProcessReview",
},
{
path: '/ComplaintForwardingProcess/ComplaintForwardingProcessList',
name: '投诉台账',
component: "@/pages/ComplaintForwardingProcess/ComplaintForwardingProcessList",
},
{
path: '/BusinessConfiguration/index',
name: '业务配置',

Binary file not shown.

View File

@ -314,9 +314,21 @@ const UserModel: UserModelType = {
{
path: '/ComplaintForwardingProcess/index',
redirect: '',
name: '投诉转发流程',
name: '投诉受理',
component: "@/pages/ComplaintForwardingProcess/index",
},
{
path: '/ComplaintForwardingProcess/ComplaintForwardingProcessReview',
redirect: '',
name: '投诉审核',
component: "@/pages/ComplaintForwardingProcess/ComplaintForwardingProcessReview",
},
{
path: '/ComplaintForwardingProcess/ComplaintForwardingProcessList',
redirect: '',
name: '投诉台账',
component: "@/pages/ComplaintForwardingProcess/ComplaintForwardingProcessList",
},
{
path: '/BusinessConfiguration/index',
redirect: '',
@ -408,6 +420,8 @@ const UserModel: UserModelType = {
"/realEstate/index",
"/ComplaintApproval/index",
"/ComplaintForwardingProcess/index",
"/ComplaintForwardingProcess/ComplaintForwardingProcessReview",
"/ComplaintForwardingProcess/ComplaintForwardingProcessList",
"/BusinessConfiguration/index",
// '/examine/index',
// '/examine/modal',

View File

@ -106,7 +106,7 @@ const ChosePlayers = ({ actionRef, onRef, defaultPerson }: { actionRef?: any, on
useEffect(() => {
getUserTypeTree({ UserTypePattern: 1000, ShowStatus: true }).then((res: any) => {
console.log('fdsklfja', res);
setTreeView(res[0].children)
setTreeView(res)
})
}, [])

View File

@ -463,15 +463,17 @@ const BusinessConfiguration = () => {
}}
onOk={(e) => {
setShowChosePlayer(false)
let detailList: any = chosePlayerRef.current.selectedRowDetail
let detailList: any = chosePlayerRef?.current?.selectedRowDetail
console.log('detailListdetailList', detailList);
let list: any = []
if (detailList && detailList.length > 0) {
detailList.forEach((item: any) => {
list.push({ label: item.USER_NAME, value: item.USER_ID })
list.push({ label: item?.USER_NAME, value: item.USER_ID })
})
}
setPlayerList(list)
modalFormRef.current?.setFieldsValue({ APPROVALSTAFF_ID: chosePlayerRef.current.selectedRowKeys })
modalFormRef.current?.setFieldsValue({ APPROVALSTAFF_ID: chosePlayerRef?.current?.selectedRowKeys })
}}
onCancel={(e) => {
setShowChosePlayer(false)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,287 @@
import moment from 'moment';
import React from 'react';
import ReactDOM from 'react-dom';
let SUGGESTION_TYPEOBJ: any = {
1000: "小程序",
2000: "12328交通运输",
3000: "网络舆情",
4000: "监控中心值班电话",
5000: "话务转办",
}
// 附件1 结构
export const Attachment1 = ({ record }: { record: any }) => {
// 根据 record 数据处理显示逻辑
return (
<div className="printContainer attachment1">
<div className="printTitle">1</div>
<div style={{ textAlign: 'left', marginBottom: '5px' }}>{record?.SUGGESTION_CODE || ''}</div>
<table className="printTable">
<tbody>
<tr>
<td className="labelCell"></td>
<td className="contentCell">{record?.SUGGESTION_NAME || ''}</td>
<td className="labelCell"></td>
<td className="contentCell">{record?.PHONE_NUMBER || ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td className="contentCell">{record?.DISPOSITION_PERSON || ''}</td>
<td className="labelCell"></td>
<td className="contentCell">{record?.OPERATE_DATE ? moment(record?.OPERATE_DATE).format('YYYY-MM-DD HH:mm:ss') : ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td className="contentCell">{record?.MANAGER_NAME || ''}</td>
<td className="labelCell"></td>
<td className="contentCell">{record?.SUGGESTION_TYPE ? SUGGESTION_TYPEOBJ[Number(record?.SUGGESTION_TYPE)] : ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="contentCell">{record?.SUGGESTION_REASON || ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="requirement-cell">{record?.SUGGESTION_INFO || ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="feedback-cell">
<div className="feedback-content-wrapper">
<div className="feedback-text">{record?.FEEDBACK_INFO || ''}</div>
<div className="feedback-footer">
{record?.LEADERSHIP_NAME || ''} {record?.FEEDBACK_DATE ? moment(record?.FEEDBACK_DATE).format('YYYY年MM月DD日 HH时mm分') : ''}
</div>
</div>
</td>
</tr>
</tbody>
</table>
<div style={{ textAlign: 'left', marginTop: '5px', marginBottom: '5px' }}>驿CYYGY0001</div>
</div>
);
};
// 附件2 结构
export const Attachment2 = ({ record }: { record: any }) => (
<div className="printContainer attachment2">
<div className="printTitle">12328</div>
<div style={{ textAlign: 'left', marginBottom: '5px' }}>{record?.SUGGESTION_CODE || ''}</div>
<table className="printTable">
<tbody>
<tr>
<td className="labelCell"></td>
<td className="contentCell">{record?.SUGGESTION_NAME || ''}</td>
<td className="labelCell"></td>
<td className="contentCell">{record?.PHONE_NUMBER || ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td className="contentCell">{record?.SERVERPART_NAME || ''}</td>
<td className="labelCell"></td>
<td className="contentCell">{record?.SUGGESTION_CREATEDATE || ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td className="contentCell">{record?.MANAGER_NAME || ''}</td>
<td className="labelCell"></td>
<td className="contentCell">{record?.SUGGESTION_TYPE ? SUGGESTION_TYPEOBJ[Number(record?.SUGGESTION_TYPE)] : ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="requirement-cell">
<div className="feedback-content-wrapper">
<div className="feedback-text">{record?.SUGGESTION_REASON || ''}</div>
</div>
</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="requirement-cell">
<div className="feedback-content-wrapper">
<div className="feedback-text">{record?.SUGGESTION_INFO || ''}</div>
<div className="feedback-footer">
{record?.DISPOSITION_PERSON || ''} {record?.OPERATE_DATE ? moment(record?.OPERATE_DATE).format('YYYY年MM月DD日 HH时mm分') : ''}
</div>
</div>
</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="feedback-cell">
<div className="feedback-content-wrapper">
<div className="feedback-text">{record?.FEEDBACK_INFO || ''}</div>
<div className="feedback-footer">
{record?.LEADERSHIP_NAME || ''} {record?.FEEDBACK_DATE ? moment(record?.FEEDBACK_DATE).format('YYYY年MM月DD日 HH时mm分') : ''}
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
);
// 附件3 结构
export const Attachment3 = ({ record }: { record: any }) => (
<div className="printContainer attachment3">
<div className="printTitle"></div>
<div style={{ textAlign: 'right', marginBottom: '5px' }}>{record?.SUGGESTION_CREATEDATE ? moment(record?.SUGGESTION_CREATEDATE).format('YYYY年MM月DD日 HH时mm分') : ''}</div>
<table className="printTable">
<tbody>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="contentCell">{record?.MANAGER_NAME || ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="contentCell">{record?.LEADERSHIP_NAME || ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td className="contentCell">{record?.LEADERSHIP_NAME || ''}</td>
<td className="labelCell"></td>
<td className="contentCell">{record?.PHONE_NUMBER || ''}</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="requirement-cell">
<div className="feedback-content-wrapper">
<div className="feedback-text">{record?.SUGGESTION_REASON || ''}</div>
</div>
</td>
</tr>
<tr>
<td className="labelCell"></td>
<td colSpan={3} className="feedback-cell">
<div className="feedback-content-wrapper">
<div className="feedback-text">{record?.SUGGESTION_INFO || ''}</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
);
// 打印函数
export const handlePrintByIframe = (AttachmentComponent: React.ComponentType<any>, record: any) => {
const iframe = document.createElement('iframe');
iframe.style.position = 'fixed';
iframe.style.right = '0';
iframe.style.bottom = '0';
iframe.style.width = '0';
iframe.style.height = '0';
iframe.style.border = '0';
document.body.appendChild(iframe);
const iframeDoc = iframe.contentWindow?.document;
if (!iframeDoc) return;
iframeDoc.open();
iframeDoc.write(`
<html>
<head>
<title></title>
<style>
@page { size: A4; margin: 15mm; }
body { margin: 0; padding: 0; font-family: SimSun, STSong, serif; }
.printContainer {
width: 100%;
box-sizing: border-box;
}
.printTitle { text-align: center; font-size: 24px; font-weight: bold; margin-bottom: 25px; margin-top: 10px; }
.printTable {
width: 100%;
border-collapse: collapse;
border: 2px solid #000;
table-layout: fixed;
}
.printTable td { border: 1px solid #000; padding: 10px 12px; font-size: 15px; word-break: break-all; }
.labelCell { background-color: #f2f2f2 !important; width: 110px; font-weight: bold; text-align: center; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.contentCell { text-align: left; }
/* --- 附件1 专用样式 --- */
.attachment1 {
min-height: 260mm;
display: flex;
flex-direction: column;
}
.attachment1 .printTable { height: auto; }
.attachment1 .requirement-cell { height: 100px; vertical-align: top; }
.attachment1 .feedback-cell { vertical-align: top; padding: 0 !important; }
.attachment1 .feedback-content-wrapper {
display: flex; flex-direction: column; min-height: 550px; padding: 12px; box-sizing: border-box;
}
.attachment1 .feedback-text { flex: 1; }
.attachment1 .feedback-footer { text-align: right; margin-top: 20px; }
/* --- 附件2 专用样式 --- */
.attachment2 {
min-height: 260mm;
display: flex;
flex-direction: column;
}
.attachment2 .printTable { height: auto; }
.attachment2 .requirement-cell { height: 130px; vertical-align: top; padding: 0 !important; }
.attachment2 .feedback-cell { vertical-align: top; padding: 0 !important; }
.attachment2 .feedback-content-wrapper {
display: flex;
flex-direction: column;
height: 100%;
padding: 12px;
box-sizing: border-box;
}
.attachment2 .feedback-cell .feedback-content-wrapper {
min-height: 400px;
}
.attachment2 .feedback-text { flex: 1; }
.attachment2 .feedback-footer { text-align: right; margin-top: 10px; }
/* --- 附件3 专用样式 --- */
.attachment3 {
min-height: 260mm;
display: flex;
flex-direction: column;
}
.attachment3 .printTable { height: auto; }
.attachment3 .requirement-cell { height: 70px; vertical-align: top; padding: 0 !important; }
.attachment3 .feedback-cell { vertical-align: top; padding: 0 !important; }
.attachment3 .feedback-content-wrapper {
display: flex;
flex-direction: column;
height: 100%;
padding: 12px;
box-sizing: border-box;
}
.attachment3 .feedback-cell .feedback-content-wrapper {
min-height: 500px;
}
.attachment3 .feedback-text { flex: 1; }
</style>
</head>
<body>
<div id="print-root"></div>
</body>
</html>
`);
iframeDoc.close();
const printRoot = iframeDoc.getElementById('print-root');
if (printRoot) {
ReactDOM.render(React.createElement(AttachmentComponent, { record }), printRoot);
}
setTimeout(() => {
iframe.contentWindow?.focus();
iframe.contentWindow?.print();
setTimeout(() => {
document.body.removeChild(iframe);
}, 1000);
}, 300);
};

View File

@ -5,10 +5,8 @@
*/
.custom-steps {
.ant-steps {
display: flex !important;
flex-wrap: wrap !important;
}
display: flex !important;
flex-wrap: wrap !important;
.ant-steps-item {
flex: none !important;

View File

@ -1,12 +1,15 @@
// 受理页面
import { ActionType, FormInstance, ProForm, ProFormSelect, ProFormText, ProFormTextArea, ProFormTreeSelect, ProFormUploadButton, ProTable } from "@ant-design/pro-components";
import "./index.less";
import { useRef, useState } from "react";
import { Button, Col, message, Modal, Row, Image, Space, Popconfirm, Steps, Tooltip } from "antd";
import { Button, Col, message, Modal, Row, Image, Space, Popconfirm, Steps, Tooltip, Popover } from "antd";
import { ExclamationCircleOutlined, PlusOutlined } from "@ant-design/icons";
import { getFieldEnum, getFieldEnumTreeNoSession, handleDeletePicture, handleDeleteSUGGESTION, handleGetAPPLYAPPROVEList, handleGetAPPROVALROUTEList, handleGetPictureList, handleGetServerpartDDL, handleGetSUGGESTIONList, handleSynchroAPPLYAPPROVE, handleSynchroSUGGESTION, uploadAHYDPicture } from "../serverpartAssets/service";
import moment from "moment";
import { resizeImageHalf } from "./resizeImageHalf";
import { handleGetPassportInfoById } from "../DigitalElectronics/service";
import { Attachment1, Attachment2, Attachment3, handlePrintByIframe } from "./downFile";
import { request } from "express";
const beforeUpload = (file: any) => {
@ -72,6 +75,20 @@ const ComplaintForwardingProcess = () => {
},
initialValue: "0"
},
{
title: "投诉渠道",
width: 120,
dataIndex: "SUGGESTION_CHANNEL",
valueType: "select",
align: 'center',
hideInSearch: true,
request: async () => {
const taxRateLabel: any = await getFieldEnumTreeNoSession({ FieldExplainField: 'SUGGESTION_CHANNEL', notformate: true })
console.log('taxRateLabel', taxRateLabel);
return taxRateLabel
},
},
{
title: "服务区",
width: 120,
@ -96,6 +113,20 @@ const ComplaintForwardingProcess = () => {
hideInSearch: true,
ellipsis: true,
},
{
title: "处理状态",
width: 120,
align: 'center',
dataIndex: "SUGGESTION_STATE",
valueType: "select",
valueEnum: {
"0": "全部",
"1000": "待受理",
},
hideInTable: true,
ellipsis: true,
initialValue: "0"
},
{
title: "处理状态",
width: 120,
@ -115,7 +146,7 @@ const ComplaintForwardingProcess = () => {
}
const data = await handleGetAPPROVALROUTEList(req)
console.log('dsjakdjaslkd', data);
setSUGGESTIONSTATELIST(data)
setSUGGESTIONSTATELIST(JSON.parse(JSON.stringify(data)))
setLastApprovalRoute(data[data.length - 1])
if (data && data.length > 0) {
let list: any = []
@ -123,14 +154,15 @@ const ComplaintForwardingProcess = () => {
list.push({ label: item.APPROVALROUTE_NAME, value: item.APPROVALROUTE_STATE })
})
list.unshift({ label: "待受理", value: 1000 })
list.push({ label: "已审结", value: 2000 })
list.push({ label: "已审结", value: 3000 })
list.push({ label: "已审结", value: 9000 })
return list
} else {
return []
}
},
ellipsis: true
hideInSearch: true,
ellipsis: true,
initialValue: "0"
},
{
title: <div style={{ textAlign: 'center' }}></div>,
@ -138,6 +170,13 @@ const ComplaintForwardingProcess = () => {
dataIndex: "SUGGESTION_REASON",
hideInSearch: true,
ellipsis: true,
render: (_, record) => {
return record?.SUGGESTION_REASON ?
<a onClick={() => {
setCurrentRow(record)
setModalVisible(true)
}}>{record?.SUGGESTION_REASON}</a> : ""
}
},
{
title: <div style={{ textAlign: 'center' }}></div>,
@ -189,14 +228,14 @@ const ComplaintForwardingProcess = () => {
// 若当前记录流程 为最审结状态 那么就出现下载附件下载
lastApprovalRoute && lastApprovalRoute.NEXT_STATE === record.SUGGESTION_STATE ?
<a onClick={() => {
handleDownloadFile(record)
}}>
</a> :
""
}
{/* 一般情况下注释掉 */}
<a style={{ color: 'red' }} onClick={async () => {
{/* <a style={{ color: 'red' }} onClick={async () => {
const req = {
SUGGESTIONId: record.SUGGESTION_ID
}
@ -207,7 +246,7 @@ const ComplaintForwardingProcess = () => {
} else {
message.error(res.Result_Desc)
}
}}></a>
}}></a> */}
</Space>
}
}
@ -246,8 +285,8 @@ const ComplaintForwardingProcess = () => {
}
} else {
req = {
SUGGESTION_CHANNEL: res.SUGGESTION_CHANNEL,
SUGGESTION_TYPE: res.SUGGESTION_TYPE,
SUGGESTION_CHANNEL: "1", // 小程序上应该是空 后台我就写 1
SERVERPART_ID: res.SERVERPART_ID,
PROVINCE_CODE: "530000",
MEMBERSHIP_ID: currentUser?.ID || "",
@ -259,6 +298,8 @@ const ComplaintForwardingProcess = () => {
SUGGESTION_CREATEDATE: moment().format("YYYY-MM-DD HH:mm:ss"),
SUGGESTION_STATE: 1000, // 1000 为待受理状态
OPERATE_DATE: moment().format("YYYY-MM-DD HH:mm:ss"),
DISPOSITION_PERSON: res?.DISPOSITION_PERSON || "",
CHAIRMAN_STAFFID: currentUser?.ID || "",
}
}
setConfirmLoading(true)
@ -296,7 +337,7 @@ const ComplaintForwardingProcess = () => {
message.success("同步成功")
actionRef.current?.reload()
setModalVisible(false)
modalRef.current?.resetFields()
// modalRef?.current?.resetFields()
setReviewType(null)
setFileList([])
setNextApprovalRoute(null)
@ -325,13 +366,27 @@ const ComplaintForwardingProcess = () => {
if (reviewType === 1 || reviewType === 3) {
console.log('下一环节信息', nextApprovalRoute);
console.log('当前表单数据', record);
let newOtherDetail: any = {}
if (currentRow?.SUGGESTION_STATE === 1010) {
newOtherDetail = {
FEEDBACK_DATE: moment().format("YYYY-MM-DD HH:mm:ss"),
LEADERSHIP_STAFFID: record.nextPerson,
LEADERSHIP_NAME: record.nextPersonName
}
}
const req: any = {
...currentRow,
...newOtherDetail,
MANAGER_NAME: record?.MANAGER_NAME,
SUGGESTION_INFO: record?.SUGGESTION_INFO,
CHAIRMAN_ID: record?.nextPerson,
CHAIRMAN_NAME: record?.nextPersonName,
SUGGESTION_STATE: nextApprovalRoute?.APPROVALROUTE_STATE,
SUGGESTION_STATE: currentApprovalRoute?.NEXT_STATE === 9000 ? 9000 : nextApprovalRoute?.APPROVALROUTE_STATE,
LEADERSHIP_INFO: record?.LEADERSHIP_INFO || "",
FEEDBACK_INFO: record?.FEEDBACK_INFO || ""
FEEDBACK_INFO: record?.FEEDBACK_INFO || "",
CHAIRMAN_STAFFID: record?.nextPerson,
}
setConfirmLoading(true)
const data: any = await handleSynchroSUGGESTION(req)
@ -369,7 +424,7 @@ const ComplaintForwardingProcess = () => {
setFileList([])
setNextApprovalRoute(null)
setCurrentApprovalRoute(null)
modalRef.current?.resetFields()
// modalRef?.current?.resetFields()
actionRef.current?.reload()
} else {
@ -400,7 +455,7 @@ const ComplaintForwardingProcess = () => {
setFileList([])
setNextApprovalRoute(null)
setCurrentApprovalRoute(null)
modalRef.current?.resetFields()
// modalRef?.current?.resetFields()
actionRef.current?.reload()
} else {
@ -429,7 +484,11 @@ const ComplaintForwardingProcess = () => {
if (data && data.length > 0) {
data.forEach((item: any) => {
list.push({
title: item?.APPLYAPPROVE_NAME,
title: (
<Tooltip title={item.APPLYAPPROVE_INFO}>
<span style={{ cursor: 'pointer', color: '#1890ff' }}>{item.APPLYAPPROVE_NAME}</span>
</Tooltip >
),
description: item?.APPLYAPPROVE_DATE,
status: "finish"
// description: item?.APPLYAPPROVE_INFO,
@ -439,18 +498,39 @@ const ComplaintForwardingProcess = () => {
})
}
console.log('SUGGESTIONSTATELISTSUGGESTIONSTATELIST', SUGGESTIONSTATELIST);
let newSUGGESTIONSTATELIST = JSON.parse(JSON.stringify(SUGGESTIONSTATELIST))
// 若有两个1000 的话 去掉 监控受理中心的1000
if (newSUGGESTIONSTATELIST && newSUGGESTIONSTATELIST.length > 0) {
newSUGGESTIONSTATELIST.forEach((item: any) => {
if (item.APPROVALROUTE_STATE === 1000 && currentRow?.SUGGESTION_STATE !== 1000) {
newSUGGESTIONSTATELIST.splice(newSUGGESTIONSTATELIST.indexOf(item), 1)
}
})
}
console.log('SUGGESTIONSTATELISTSUGGESTIONSTATELIST2', newSUGGESTIONSTATELIST);
// 拿到还没到的流程 和当前的流程数据
let currentList: any = []
if (SUGGESTIONSTATELIST && SUGGESTIONSTATELIST.length > 0) {
SUGGESTIONSTATELIST.forEach((item: any) => {
if (item.APPROVALROUTE_STATE > currentStatus) {
currentList.push({
title: item?.APPROVALROUTE_NAME,
description: "",
status: "finish"
})
if (newSUGGESTIONSTATELIST && newSUGGESTIONSTATELIST.length > 0) {
newSUGGESTIONSTATELIST.forEach((item: any) => {
if (currentStatus === 1000) {
if (item.APPROVALROUTE_STATE >= currentStatus) {
currentList.push({
title: item?.APPROVALROUTE_NAME,
description: "",
status: "finish"
})
}
} else {
if (item.APPROVALROUTE_STATE > currentStatus) {
currentList.push({
title: item?.APPROVALROUTE_NAME,
description: "",
status: "finish"
})
}
}
})
}
@ -464,7 +544,6 @@ const ComplaintForwardingProcess = () => {
})
}
console.log('currentList', currentList);
setProgressList(list)
}
@ -487,6 +566,21 @@ const ComplaintForwardingProcess = () => {
const data = await handleSynchroAPPLYAPPROVE(req)
}
// 下载附件的方法
const handleDownloadFile = async (record: any) => {
console.log('recordrecord', record);
if (record?.SUGGESTION_CHANNEL === 1000 || record?.SUGGESTION_CHANNEL === 4000 || record?.SUGGESTION_CHANNEL === 5000) {
// 附件1
handlePrintByIframe(Attachment1, record)
} else if (record?.SUGGESTION_CHANNEL === 2000) {
// 附件2
handlePrintByIframe(Attachment2, record)
} else if (record?.SUGGESTION_CHANNEL === 3000) {
// 附件3
handlePrintByIframe(Attachment3, record)
}
}
return (
<div style={{ width: "100%", height: 'calc(100vh - 100px)', background: "#fff", display: 'flex' }}>
<ProTable
@ -502,17 +596,19 @@ const ComplaintForwardingProcess = () => {
headerTitle={'流程审批'}
search={{ span: 6 }}
request={async (params) => {
let userInfo: any = {}
if (!currentUser) {
const search = window.location.search;
const addressParams = Object.fromEntries(new URLSearchParams(search).entries());
await handleGetUserInfo(addressParams.UserIdEncrypted)
userInfo = await handleGetUserInfo(addressParams.UserIdEncrypted)
}
console.log('paramsparamsparams', params);
const req: any = {
SearchParameter: {
SUGGESTION_TYPES: params?.SUGGESTION_TYPE === "0" ? '1000,1050,4000' : params?.SUGGESTION_TYPE,// 类型
SUGGESTION_STATES: params?.SUGGESTION_TYPE === "0" ? '' : params?.SUGGESTION_TYPE,// 状态
SUGGESTION_STATES: params?.SUGGESTION_STATE === "0" || !params?.SUGGESTION_STATE ? '1000' : params?.SUGGESTION_STATE,// 状态
// CHAIRMAN_STAFFID: currentUser?.ID || userInfo.ID
},
SortStr: "SUGGESTION_CREATEDATE desc",
PageIndex: 1,
@ -585,7 +681,7 @@ const ComplaintForwardingProcess = () => {
setCurrentApprovalRoute(null)
setAllProcessRecord([])
setProgressList([])
modalRef.current?.resetFields()
// modalRef?.current?.resetFields()
}}
footer={<div>
{
@ -622,7 +718,7 @@ const ComplaintForwardingProcess = () => {
<Button style={{ marginRight: "16px" }} onClick={() => {
setModalVisible(false)
setCurrentRow(undefined)
modalRef.current?.resetFields()
// modalRef?.current?.resetFields()
setReviewType(null)
setFileList([])
setNextApprovalRoute(null)
@ -692,7 +788,7 @@ const ComplaintForwardingProcess = () => {
return {
...currentRow,
ENUM_LABEL: Number(currentRow?.ENUM_LABEL),
ENUM_LABEL: currentRow?.ENUM_LABEL.split(',').map((item: any) => Number(item)),
SERVERPART_ID: currentRow?.SERVERPART_ID ? String(currentRow?.SERVERPART_ID) : "",
SUGGESTION_TYPE: currentRow?.SUGGESTION_TYPE ? String(currentRow?.SUGGESTION_TYPE) : "",
LOCALEPHOTO: list,
@ -750,6 +846,23 @@ const ComplaintForwardingProcess = () => {
readonly={reviewType}
/>
</Col>
<Col span={8}>
<ProFormSelect
label={"投诉渠道"}
name={"SUGGESTION_CHANNEL"}
request={async () => {
const taxRateLabel: any = await getFieldEnumTreeNoSession({ FieldExplainField: 'SUGGESTION_CHANNEL', notformate: true })
console.log('taxRateLabel', taxRateLabel);
return taxRateLabel
}}
rules={[{
required: true,
message: '请选择投诉渠道!'
}]}
readonly={reviewType}
/>
</Col>
<Col span={8}>
<ProFormSelect
@ -775,7 +888,7 @@ const ComplaintForwardingProcess = () => {
required: true,
message: '请选择投诉类型!'
}]}
readonly={reviewType}
readonly={reviewType && currentRow?.SUGGESTION_STATE !== 1000}
/>
</Col>
@ -786,8 +899,6 @@ const ComplaintForwardingProcess = () => {
request={async () => {
const taxRateLabel: any = await getFieldEnumTreeNoSession({ FieldExplainField: 'BUSINESS_TARGET', notformate: true })
let list: any = addDisabledIfHasChildren(taxRateLabel)
console.log('list', list);
return list
}}
fieldProps={{
@ -828,6 +939,19 @@ const ComplaintForwardingProcess = () => {
/>
</Col>
<Col span={8}>
<ProFormText
label={"受理部门"}
name={"DISPOSITION_PERSON"}
rules={[{
required: true,
message: '请输入受理部门!'
}]}
readonly={reviewType}
initialValue={currentUser?.DepartmentName}
/>
</Col>
<Col span={24}>
<ProFormTextArea
label={"详细描述"}
@ -886,6 +1010,28 @@ const ComplaintForwardingProcess = () => {
{
currentRow?.SUGGESTION_STATE >= 1010 ?
<>
<Col span={8}>
<ProFormText
label={"转办部门"}
name={"MANAGER_NAME"} //
rules={[{
required: true,
message: '请输入转办部门!'
}]}
readonly={currentRow?.SUGGESTION_STATE > 1010}
/>
</Col>
<Col span={8}>
<ProFormText
label={"转办要求"}
name={"SUGGESTION_INFO"} //
rules={[{
required: true,
message: '请输入转办要求!'
}]}
readonly={currentRow?.SUGGESTION_STATE > 1010}
/>
</Col>
<Col span={24}>
<ProFormTextArea
label={"核实情况"}
@ -926,7 +1072,7 @@ const ComplaintForwardingProcess = () => {
}
{
reviewType !== 2 && currentRow ?
reviewType !== 2 && currentRow && currentRow?.SUGGESTION_STATE !== 9000 && currentApprovalRoute?.NEXT_STATE !== 9000 ?
<Col span={8}>
<ProFormSelect
label={"下一环节审核人"}
@ -956,6 +1102,7 @@ const ComplaintForwardingProcess = () => {
}
})
console.log('下一环节配置', nextStatusObj);
console.log('当前环节配置', currentObj);
setNextApprovalRoute(nextStatusObj)
setCurrentApprovalRoute(currentObj)
let idList: any = nextStatusObj?.APPROVALSTAFF_ID ? nextStatusObj?.APPROVALSTAFF_ID.split(',') : []

View File

@ -16,6 +16,8 @@ const authority: PageAuthority = {
'/realEstate/index': ['/realEstate/index'],
'/ComplaintApproval/index': ['/ComplaintApproval/index'],
'/ComplaintForwardingProcess/index': ['/ComplaintForwardingProcess/index'],
'/ComplaintForwardingProcess/ComplaintForwardingProcessReview': ['/ComplaintForwardingProcess/ComplaintForwardingProcessReview'],
'/ComplaintForwardingProcess/ComplaintForwardingProcessList': ['/ComplaintForwardingProcess/ComplaintForwardingProcessList'],
'/BusinessConfiguration/index': ['/BusinessConfiguration/index'],
};