import React, { useState, useRef, useEffect } from "react"; import { ResultFlowResult, QuickMenu } from "@/components" import { Select, Button, Table, message, Pagination, Input, Modal, Image, DatePicker, Space, Upload } from 'antd' import { pageSizeOptions } from '@/config/character.config.js' import "./index.scss"; import { SearchOutlined, DeleteOutlined, PlusOutlined, DownOutlined, UpOutlined } from '@ant-design/icons'; import ajax from '@/services' import moment from 'moment' import copy from 'copy-to-clipboard'; const { RangePicker } = DatePicker; const { TextArea } = Input; function CallbackSuggestion(props) { const [ajaxLoading, setAjaxLoading] = useState(false) const [resultData, setResultData] = useState({ data: [], total_records: 0, export_url: '', process_url: "" }) const parameter = { carAppealId: '', //意见ID mobile: '',//手机号 content: '',//标题 adviseType: 0,//意见类型 operateType: 0,//意见状态 start_time: moment().subtract(30, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'), end_time: moment().format('YYYY-MM-DD 23:59:59'), pn: 1, page_size: Number(pageSizeOptions[0]), // 每页条数 } const [formData, setFormData] = useState(parameter) const [lastFormData, setLastFormData] = useState(formData) const lastFormDataRef = useRef(formData) const [imgVisible, setImgVisible] = useState(false) const [orderVisible, setOrderVisible] = useState(false) const [evidenceVisible, setEvidenceVisible] = useState(false) //物品型号 const handleAdviseType = (value) => { setFormData({ ...formData, adviseType: value }) } //申诉ID const handleCarAppealId = (v) => { setFormData({ ...formData, carAppealId: v.target.value }) } //手机号 const handleMobile = (v) => { setFormData({ ...formData, mobile: v.target.value }) } //车牌号 const handleContent = (v) => { setFormData({ ...formData, content: v.target.value }) } const onChange = (value, dateString) => { setFormData({ ...formData, start_time: dateString[0], end_time: dateString[1] }) }; //审核状态 const handleStatus = (value) => { setFormData({ ...formData, operateType: value }) } const addChild = (child, res) => { if (child.children) { child.children.forEach((item) => { addChild(item, res); }); } else { res.push(child.id); } }; //列表 const handleColumns = (tab) => { let result = [...deployListColumns]; switch (tab) { case '1': result.splice(5, 1) break; } return result; } const handleDealData = (tab) => { let result = [...dealListColumns]; switch (tab) { case '1': result.splice(5, 1) break; } return result; } const [rotate, setRotate] = useState(false) const dealListColumns = [ { title: '停车订单ID', dataIndex: 'parkRecordId', key: 'parkRecordId', render: (text, record) => { return <>
{rotate === false ? : } { navigator.clipboard.writeText(`${record.park_id}`).then(() => { message.success("已复制到剪切板") }); }}>{record.park_id}
} }, { title: '车牌号', dataIndex: 'plateNumber', key: 'plateNumber', }, { title: '停车场名称', dataIndex: 'parkName', key: 'parkName', }, { title: '入场时间', dataIndex: 'strEntryTime', key: 'strEntryTime', }, { title: '出场时间', dataIndex: 'strExitTime', key: 'strExitTime', }, ] //列表 const deployListColumns = [ { title: '意见ID', dataIndex: 'memberAdviseId', key: 'memberAdviseId', }, { title: '手机号', dataIndex: 'mobile', key: 'mobile', }, { title: '标题', dataIndex: 'content', key: 'content', }, { title: '意见状态', dataIndex: 'adviseStatus', key: 'adviseStatus', }, { title: '意见类型', dataIndex: 'adviseType', key: 'adviseType', }, { title: '停车订单ID', dataIndex: 'parkRecordsId', key: 'parkRecordsId', }, { title: '最后信息时间', dataIndex: 'updatedTime', key: 'updatedTime', }, { title: '操作', render: (text, record) => { return <> { CheckImg(record) }}>查看详情 } }] //图片 const [getImg, setGetImg] = useState({}) const [getImgList, setGetImgList] = useState([]) const [getId, setGetId] = useState({}) const CheckImg = (record) => { setGetId(record.id) let data = { id: record.id } ajax.checkFeedData(data).then(res => { if (res.status === 20000) { setImgVisible(true) setGetImg(res.data) setGetImgList(res.data.dialogueDetail) } else { message.error(res.message) } }) } const imgModal = () => { setImgVisible(false) setRepairData({ content: '', image: [] }) setFileList([]) } const cancelImg = () => { setImgVisible(false) setRepairData({ content: '', image: [] }) setFileList([]) } const getParkId = (record) => { if (copy(record.parkRecordId)) { message.success("复制成功"); } else message.error("复制失败,请手动复制"); } // 获取列表数据 const getData = (data = formData) => { if (moment(data.end_time) - moment(data.start_time) > 180 * 3600 * 24000) { if (!(data.carAppealId || data.mobile)) { message.error('查询时间范围大于半年,需填写手机号或意见ID!') return } } setAjaxLoading(true) ajax.getFeedbackList(data).then(res => { setAjaxLoading(false) if (res.status === 20000) { let resDataArr = res.data.list.map((item) => { item.key = item.id return item }) setResultData({ ...resultData, data: resDataArr, total_records: res.data.total_records }) } else { setResultData({ data: [], total_records: 0, export_url: '', process_url: "" }) message.error(res.message) } }, err => { console.log(err) }) } //切换分页 const changePn = (pn, length) => { if (lastFormData.page_size === length) { setFormData(Object.assign({}, formData, { pn: pn, page_size: length })) setLastFormData(Object.assign({}, lastFormData, { pn: pn, page_size: length })) lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn, page_size: length }) getData(Object.assign({}, formData, { pn: pn, page_size: length })) } } //切换每页条数 const changeLength = (pn, length) => { setFormData(Object.assign({}, formData, { pn: 1, page_size: length })) setLastFormData(Object.assign({}, lastFormData, { pn: 1, page_size: length })) lastFormDataRef.current = Object.assign({}, lastFormData, { pn: 1, page_size: length }) getData(Object.assign({}, formData, { pn: 1, page_size: length })) } //检索数据 const getSearchData = (data = formData) => { // getData(data) setFormData({ ...formData, pn: 1 }) getData(Object.assign({}, formData, { pn: 1 })) } //重置数据 const getResetData = () => { setFormData({ ...parameter }) getData({ ...parameter, pn: 1 }) } //详情回复 const onChangeText = (value) => { setRepairData({ ...repairData, content: value.target.value }) } const getBase64 = (file) => new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); reader.onerror = (error) => reject(error); }); const [previewOpen, setPreviewOpen] = useState(false); const [previewImage, setPreviewImage] = useState(''); const [previewTitle, setPreviewTitle] = useState(''); const [repairData, setRepairData] = useState({}) const handleCancel = () => setPreviewOpen(false); const [fileList, setFileList] = useState([]) console.log(fileList); const imgData = () => { let imgUrl = [] fileList.map(res => { imgUrl.push(res.response?.data) }) setRepairData( Object.assign({}, repairData, { image: imgUrl }) ); } //撤回 const handleReject = (res) => { let data = { dialogueId: res.dialogueId, id: getId } ajax.getRejectData(data).then(res => { if (res.status === 20000) { console.log(res.data); setGetImgList(res.data.dialogueDetail) } else { message.error(res.message) } }) } // 日期转换 const parseDate = (val, format) => { if (val) { return moment(val, format ? format : "YYYY-MM-DD HH:mm:ss"); } else { return null; } }; const handleAgain = (res) => { setRepairData({ content: res.replyContent }) } const handleRepair = () => { let data = { ...repairData, id: getId } let dataId = { id: getId } ajax.replyData(data).then(res => { if (res.status === 20000) { ajax.checkFeedData(dataId).then(res => { if (res.status === 20000) { setGetImg(res.data) setGetImgList(res.data.dialogueDetail) setRepairData({ content: '', image: [] }) setFileList([]) } else { message.error(res.message) } }) } else { message.error(res.message) } }) } useEffect(() => { imgData() }, [fileList]) // 在上传前进行文件类型检查 const beforeUpload = (file) => { const isValidType = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg'; if (!isValidType) { message.error(`请上传png,jpeg,jpg类型图片`); } return isValidType || Upload.LIST_IGNORE; }; const handlePreview = async (file) => { if (!file.url && !file.preview) { file.preview = await getBase64(file.originFileObj); } setPreviewImage(file.url || file.preview); setPreviewOpen(true); setPreviewTitle(file.name || file.url.substring(file.url.lastIndexOf('/') + 1)); }; const handleChange = ({ fileList: newFileList }) => setFileList(newFileList); const uploadButton = (
点击上传
); const handleTrans = () => { if (rotate === false) { setRotate(true) } if (rotate === true) { setRotate(false) } console.log(rotate); } //去处理 const orderModal = () => { setOrderVisible(false) setSubmitDeploy({ change_content: '', update_value: '', plate_type: '', deal_reason: '' }) setGetAdjustTimeValue(1) setGetValueList({}) } const [getDealData, setGetDealData] = useState({ data: [] }) const [getOrderData, setGetOrderData] = useState({}) const handleDeal = () => { let data = { id: getImg.parkRecordId } ajax.dealData(data).then(res => { if (res.status === 20000) { let resDataArr = res.data.map((item) => { setGetOrderData(item) item.key = item.id return item }) setOrderVisible(true) setGetDealData({ ...getDealData, data: resDataArr }) } else { message.error(res.message) } }) } const [submitDeploy, setSubmitDeploy] = useState({ change_content: '', update_value: '', plate_type: '', deal_reason: '', adjustTime:1 }) //提交审核 const onChangeReason = (value) => { setSubmitDeploy({ ...submitDeploy, deal_reason: value.target.value }) } const [getValueList, setGetValueList] = useState({}) const handleChoose = (value) => { setGetValueList(value) // setSubmitDeploy({ ...submitDeploy, change_content: value }) if (value) { setSubmitDeploy({ ...submitDeploy, update_value: '', plate_type: '', change_content: value }) } } const [getAdjustTimeValue, setGetAdjustTimeValue] = useState(1) const handleAdjust = (value) => { setGetAdjustTimeValue(value) submitDeploy.update_value = '' } const handleAdjustTime = (v, dateString) => { setSubmitDeploy({ ...submitDeploy, update_value: dateString }) } const handlePlateColor = (v) => { setSubmitDeploy({ ...submitDeploy, plate_type: v }) } const handlePlateNumber = (v) => { setSubmitDeploy({ ...submitDeploy, update_value: v.target.value }) } const handleAdd = (v) => { setSubmitDeploy({ ...submitDeploy, add: v }) } const handleAddCount = (v) => { setSubmitDeploy({ ...submitDeploy, update_value: v.target.value }) } const handleComeTime = (v) => { setSubmitDeploy({ ...submitDeploy, update_value: v.target.value }) } const cancelBtn = () => { setOrderVisible(false) setSubmitDeploy({ change_content: '', update_value: '', plate_type: '', deal_reason: '' }) setGetAdjustTimeValue(1) setGetValueList({}) } const submitBtn = () => { let data = { ...submitDeploy, id: [getImg.parkRecordId], examine_reason_id: submitDeploy.change_content, examine_reason: submitDeploy.deal_reason } if (submitDeploy.deal_reason === '') { message.error('请输入处理理由') } else if (submitDeploy.change_content === '') { message.error('请选择对应的更改项') }else if (submitDeploy.update_value === '') { message.error('请输入对应的更改项') }else { ajax.submitData(data).then(res => { if (res.status === 20000) { setOrderVisible(false) setImgVisible(false) setSubmitDeploy({ change_content: '', update_value: '', plate_type: '', deal_reason: '' }) setGetAdjustTimeValue(1) setGetValueList({}) } else { message.error(res.message) } }) } } const exportData = () => { let data = { ...formData } ajax.exportDataList(data).then(res => { window.open(res.data.export_url) }) } const checkPic = () => { setEvidenceVisible(true) } const evidenceModal = () => { setEvidenceVisible(false) } const closePic = () => { setEvidenceVisible(false) } useEffect(() => { getData() }, []) return <>
{ setFormData({ ...formData, start_time: v.startDateTime, end_time: v.endDateTime }) }} />
共检索到{resultData.total_records}条结果
`共 ${resultData.total_records} 条`} total={resultData.total_records} current={formData.pn} pageSize={formData.page_size} pageSizeOptions={pageSizeOptions} onChange={changePn} onShowSizeChange={changeLength} />
意见ID:{getImg.memberAdviseId}
停车订单ID:{getImg.parkRecordId}
出场时间:{getImg.strExitTime}
手机号:{getImg.memberName}
车牌号:{getImg.plateNumber}
类型:{getImg.adviseType}
停车场名称:{getImg.parkName}
状态:{getImg.adviseStatus}
入场时间:{getImg.strEntryTime}
意见反馈
{ getImgList.map((res, index) => { console.log(res); return (
{res.type == '1' ?
{res.adviseTime}
意见内容:{res.content}
{res.answerImgMap.length ? res.answerImgMap.map(res => { return ( ) }) : '' }
:
{ res.status == 0 ?
{res.replyTime}
{res.sysUserName}回复:{res.replyContent}
{res.answerImgMap.length ? res.answerImgMap.map(res => { return (
) }) : '' }
{ handleReject(res) }}>撤回
:
你撤回了一条消息 { handleAgain(res) }}>重新编辑
}
}
) }) }