From c3e2c371bbc34d78d115bee77853f98d4137f478 Mon Sep 17 00:00:00 2001 From: ylj20011123 Date: Thu, 24 Apr 2025 21:27:20 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=A5=20feat(=E6=A8=A1=E5=9D=97):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E4=B8=AA=E5=BE=88=E6=A3=92=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leftSelectTree/leftSelectTree.tsx | 4 +- src/components/leftSelectTree/service.ts | 8 +- src/pages/examine/modal/index.tsx | 292 +++++++++++++----- .../question/components/addQuestion.tsx | 16 + src/pages/examine/question/service.ts | 2 +- .../record/components/recordDetail.tsx | 1 + src/pages/examine/record/index.tsx | 48 ++- src/pages/examine/recordSummary/index.tsx | 14 +- src/utils/request.ts | 8 +- src/utils/requestJava.ts | 11 +- src/utils/requestTest.ts | 156 ++++++++++ 11 files changed, 437 insertions(+), 123 deletions(-) create mode 100644 src/utils/requestTest.ts diff --git a/src/components/leftSelectTree/leftSelectTree.tsx b/src/components/leftSelectTree/leftSelectTree.tsx index 2094822..99ecf8a 100644 --- a/src/components/leftSelectTree/leftSelectTree.tsx +++ b/src/components/leftSelectTree/leftSelectTree.tsx @@ -50,8 +50,8 @@ const LeftSelectTree = ({ setSelectedId, reload, actionRef, currentUser, width, code: '510000' } data = await handleGetAllServicePart(req) - data.data.list[0].key = data.data.list[0].id - data = data.data.list + // data.data.list[0].key = data.data.list[0].id + // data = data.data.list } console.log('datatree', data); diff --git a/src/components/leftSelectTree/service.ts b/src/components/leftSelectTree/service.ts index 3ae2bb4..70ab9dd 100644 --- a/src/components/leftSelectTree/service.ts +++ b/src/components/leftSelectTree/service.ts @@ -60,13 +60,13 @@ export async function handleGetServerpartDDL(params: any) { } -import requestNew from "@/utils/request" -// 新的拿到服务区的树的接口 +import requestNew from "@/utils/requestJava" +// 新的拿到服务区的树的接口 export async function handleGetAllServicePart(params?: any) { const data = await requestNew.get('/server-part/provinces', params) - if (data.code === 200) { - return data.data + if (data.Result_Code === 100) { + return data.Result_Data.List } return [] } \ No newline at end of file diff --git a/src/pages/examine/modal/index.tsx b/src/pages/examine/modal/index.tsx index 27ec442..5d64db1 100644 --- a/src/pages/examine/modal/index.tsx +++ b/src/pages/examine/modal/index.tsx @@ -1,5 +1,5 @@ import LeftSelectTree from "@/components/leftSelectTree/leftSelectTree"; -import { handleGetServerpartDDL } from "@/components/leftSelectTree/service"; +import { handleGetAllServicePart, handleGetServerpartDDL } from "@/components/leftSelectTree/service"; import { ActionType, FormInstance, ProCard, ProForm, ProFormDigit, ProFormList, ProFormSelect, ProFormSwitch, ProFormText, ProFormTextArea, ProTable } from "@ant-design/pro-components"; import { Button, Col, message, Modal, Popconfirm, Row, Space, Image, Drawer } from "antd"; import moment from "moment"; @@ -52,6 +52,10 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { const [selectedQuestionDetail, setSelectedQuestionDetail] = useState() // 选择的问题列表的id const [selectedQuestionId, setSelectedQuestionId] = useState() + // 选择克隆的服务区数据 key数组 + const [selectCloneServiceList, setSelectCloneServiceList] = useState() + // 选择批量克隆的服务区数据 详情数组 + const [selectCloneServiceDetail, setSelectCloneServiceDetail] = useState() // 显示的附件数据 const [showImgList, setShowImgList] = useState([]) @@ -81,6 +85,8 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { const [showBatchCloneModal, setshowBatchCloneModal] = useState(false) // 批量克隆的loading效果 const [batchLoading, setBatchLoading] = useState(false) + // 悬浮框的点击确定之后的加载效果 + const [modalLoading, setModalLoading] = useState(false) const columns: any = [ // { @@ -352,7 +358,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { columns={columns} bordered expandable={{ - expandRowByClick: true + // expandRowByClick: true }} rowKey={(record) => { return `${record?.id}` @@ -421,6 +427,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { title={`${currentRow?.id ? '编辑' : '创建'}点位`} open={showPlaceModal} destroyOnClose + confirmLoading={modalLoading} onOk={() => { modalRef.current?.validateFields().then(async (res) => { console.log('res', res); @@ -428,50 +435,60 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { console.log('selectedQuestionDetail', selectedQuestionDetail); let req = {} let data = {} + setModalLoading(true) if (currentRow?.id) { let questions: any = [] - if (selectedQuestionDetail && selectedQuestionDetail.length > 0) { - selectedQuestionDetail.forEach((item) => { + if (res.questions && res.questions.length > 0) { + res.questions.forEach((item: any) => { questions.push({ - questionId: item.id, - isRequired: item.required, + questionId: item.questionId || item.id, + isRequired: item.isRequired || item.required, sortOrder: item.sortOrder }) }) - } else { - // 判断是否有改动 一样 说明没改动 那么把老的拿进去就行 - // if (currentRow?.questionnaireTemplateQuestions.length === res.questions.length) { - // if (currentRow?.questionnaireTemplateQuestions && currentRow?.questionnaireTemplateQuestions.length > 0) { - // currentRow?.questionnaireTemplateQuestions.forEach((item) => { - // questions.push({ - // questionId: item.question.id, - // isRequired: item.question.required, - // sortOrder: item.question.sortOrder - // }) - // }) - // } - // } else { - // // 不一样 说明有删除 不然走的是第一个 - // if (res.questions && res.questions.length > 0) { - // res.questions.forEach((item) => { - // questions.push({ - // questionId: item.id, - // isRequired: item.required, - // sortOrder: item.sortOrder - // }) - // }) - // } - // } - if (res.questions && res.questions.length > 0) { - res.questions.forEach((item: any) => { - questions.push({ - questionId: item.questionId, - isRequired: item.isRequired, - sortOrder: item.sortOrder - }) - }) - } } + // if (selectedQuestionDetail && selectedQuestionDetail.length > 0) { + // selectedQuestionDetail.forEach((item) => { + // questions.push({ + // questionId: item.id, + // isRequired: item.required, + // sortOrder: item.sortOrder + // }) + // }) + // } else { + // // 判断是否有改动 一样 说明没改动 那么把老的拿进去就行 + // // if (currentRow?.questionnaireTemplateQuestions.length === res.questions.length) { + // // if (currentRow?.questionnaireTemplateQuestions && currentRow?.questionnaireTemplateQuestions.length > 0) { + // // currentRow?.questionnaireTemplateQuestions.forEach((item) => { + // // questions.push({ + // // questionId: item.question.id, + // // isRequired: item.question.required, + // // sortOrder: item.question.sortOrder + // // }) + // // }) + // // } + // // } else { + // // // 不一样 说明有删除 不然走的是第一个 + // // if (res.questions && res.questions.length > 0) { + // // res.questions.forEach((item) => { + // // questions.push({ + // // questionId: item.id, + // // isRequired: item.required, + // // sortOrder: item.sortOrder + // // }) + // // }) + // // } + // // } + // if (res.questions && res.questions.length > 0) { + // res.questions.forEach((item: any) => { + // questions.push({ + // questionId: item.questionId, + // isRequired: item.isRequired, + // sortOrder: item.sortOrder + // }) + // }) + // } + // } req = { ...currentRow, @@ -485,12 +502,12 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { status: res.status, description: res.description } - console.log('req', req); + console.log('reqadd', req); data = await handleUpdateTemplates(req) } else { let questions: any = [] - if (selectedQuestionDetail && selectedQuestionDetail.length > 0) { - selectedQuestionDetail.forEach((item: any, index: number) => { + if (res.questions && res.questions.length > 0) { + res.questions.forEach((item: any, index: number) => { questions.push({ questionId: item.id, isRequired: item.required, @@ -498,6 +515,15 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { }) }) } + // if (selectedQuestionDetail && selectedQuestionDetail.length > 0) { + // selectedQuestionDetail.forEach((item: any, index: number) => { + // questions.push({ + // questionId: item.id, + // isRequired: item.required, + // sortOrder: index + 1 + // }) + // }) + // } req = { title: res.title, @@ -515,32 +541,37 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { } console.log('reqreqreqreqreq', req); data = await handleAddTemplates(req) - console.log('datadsadsa1', data); + // console.log('datadsadsa1', data); - const myQRCodeDataUrl = await QRCode.toDataURL(`pages/walkAroundManager/index?id=${data.Result_Data.id}`); - const file = base64ToFile(myQRCodeDataUrl, `wenjuan${data.Result_Data.id}.png`); - console.log('file', file); - const formData = new FormData(); - formData.append("file", file, `wenjuan${data.Result_Data.id}.png`); // 确保文件名也传递 + // const myQRCodeDataUrl = await QRCode.toDataURL(`pages/walkAroundManager/index?id=${data.Result_Data.id}`); + // const file = base64ToFile(myQRCodeDataUrl, `wenjuan${data.Result_Data.id}.png`); + // console.log('file', file); + // const formData = new FormData(); + // formData.append("file", file, `wenjuan${data.Result_Data.id}.png`); // 确保文件名也传递 - const fileData = await handleUploadFile(formData) - console.log('fileData', fileData); - let imgUrl: string = `https://es.eshangtech.com/${fileData.data.path}` - await handleUpdateTemplates({ - ...data.Result_Data, - qrUrl: imgUrl - }) - setQrCodeUrl(imgUrl) + // const fileData = await handleUploadFile(formData) + // console.log('fileData', fileData); + // let imgUrl: string = `https://es.eshangtech.com/${fileData.data.path}` + // await handleUpdateTemplates({ + // ...data.Result_Data, + // qrUrl: imgUrl + // }) + + setQrCodeUrl(data.Result_Data.qrUrl || '') // setQrCodeUrl(myQRCodeDataUrl) } console.log('datadsadsa', data); + setModalLoading(true) if (data.Result_Code === 100) { modalRef.current?.resetFields() message.success('新增成功!') setShowPlaceModal(false) actionRef.current?.reload() setCurrentRow(undefined) + setSelectedQuestionDetail(undefined) + setSelectedQuestionId(undefined) + setModalLoading(false) } else { message.error(data.Result_Desc) } @@ -552,6 +583,9 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { setShowPlaceModal(false) setCurrentRow(undefined) setQrCodeUrl(undefined) + setModalLoading(false) + setSelectedQuestionDetail(undefined) + setSelectedQuestionId(undefined) }} > { @@ -574,7 +608,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { // obj.text = obj.title // obj.mark = JSON.stringify(obj.options) // obj.showText = str - keyList.push(obj.id) + keyList.push(obj.id.toString()) // questionsList.push(obj) @@ -606,6 +640,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { setSelectedQuestionId(keyList) console.log('questionsList', questionsList); + console.log('keyList', keyList); return { ...currentRow, serverPartId: currentRow.serverPartId.toString(), @@ -674,6 +709,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { { label: "每日任务", value: 1 }, { label: "每月任务", value: 2 } ]} + initialValue={1} /> @@ -709,7 +745,6 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { alignItems: 'flex-start', marginBottom: '10px', padding: '12px', - backgroundColor: '#fafafa', borderRadius: '4px' }}>
{listDom}
@@ -786,12 +821,14 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { fieldProps={{ style: { width: '100%' } }} + readonly /> @@ -845,7 +882,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { str += `${index > 0 ? ',' : ''}选项${index + 1}:${item.text}` }) } - showQuestion.push({ text: item.title, showText: str, mark: item.options ? JSON.stringify(item.options) : "" }) + showQuestion.push({ text: item.title, showText: str, mark: item.options ? JSON.stringify(item.options) : "", id: item.id, required: item.required }) }) } console.log('showQuestion', showQuestion); @@ -868,11 +905,11 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { }} scroll={{ y: 'calc(100vh - 500px)' }} request={async (params) => { - console.log('查询参数:', params); const req: any = { categoryId: params.id } const data = await handleGetQuestionList(req) + console.log('问题列表:', data); if (data && data.length > 0) { return { data, success: true } } @@ -922,7 +959,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { if (list && list.length > 0) { list.forEach((item: any) => { detailList.push(item) - idList.push(item.question.id.toString()) + idList.push(item.questionId.toString()) if (item.question) { let obj = JSON.parse(JSON.stringify(item.question)) @@ -943,6 +980,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { setSelectedQuestionDetail(detailList) console.log('idList', idList); + console.log('res', res); setSelectedQuestionId(idList) @@ -1085,28 +1123,27 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { {/* 批量克隆点位 */} { - batchCloneForm.current?.validateFields().then(async (res: any) => { - console.log('res', res); - console.log('currentRow', currentRow); - console.log('currentUser', currentUser); - console.log('serviceObj', serviceObj); + onOk={async () => { + console.log('selectCloneServiceList', selectCloneServiceList); + console.log('selectCloneServiceDetail', selectCloneServiceDetail); - let list: any = res.serviceList + // 判断有没有选择了服务区 + if (selectCloneServiceDetail && selectCloneServiceDetail.length > 0) { + setBatchLoading(true) let serverParts: any = [] - if (list && list.length > 0) { - list.forEach((item: any) => { - serverParts.push({ - serverPartName: serviceObj[item], - serverPartId: item - }) + + selectCloneServiceDetail.forEach((item: any) => { + serverParts.push({ + serverPartName: item.name, + serverPartId: item.id }) - } + }) + let question: any = [] if (currentRow?.questionnaireTemplateQuestions && currentRow?.questionnaireTemplateQuestions.length > 0) { currentRow.questionnaireTemplateQuestions.forEach((item: any) => { @@ -1130,6 +1167,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { } console.log('req', req); const data = await handleBatchService(req) + setBatchLoading(false) console.log('datadatadatadata', data); if (data.Result_Code === 100) { message.success('批量克隆成功!') @@ -1140,7 +1178,57 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { } else { message.error(data.Result_Desc) } - }) + } else { + message.error('请选择要克隆到的服务区') + } + + + + // batchCloneForm.current?.validateFields().then(async (res: any) => { + // let list: any = res.serviceList + // let serverParts: any = [] + // // if (list && list.length > 0) { + // // list.forEach((item: any) => { + // // serverParts.push({ + // // serverPartName: serviceObj[item], + // // serverPartId: item + // // }) + // // }) + // // } + // let question: any = [] + // if (currentRow?.questionnaireTemplateQuestions && currentRow?.questionnaireTemplateQuestions.length > 0) { + // currentRow.questionnaireTemplateQuestions.forEach((item: any) => { + // question.push({ + // questionId: item.questionId, + // isRequired: item.isRequired, + // sortOrder: item.sortOrder + // }) + // }) + // } + + // let req: any = { + // title: currentRow?.title, + // placeName: currentRow?.placeName, + // placeId: currentRow?.placeId, + // serverParts: serverParts, + // questions: question, + // operator: currentUser?.operator, + // status: currentRow?.status, + // description: currentRow?.description + // } + // console.log('req', req); + // const data = await handleBatchService(req) + // console.log('datadatadatadata', data); + // if (data.Result_Code === 100) { + // message.success('批量克隆成功!') + // actionRef.current?.reload() + // batchCloneForm.current?.resetFields() + // setshowBatchCloneModal(false) + // setCurrentRow(undefined) + // } else { + // message.error(data.Result_Desc) + // } + // }) // setshowBatchCloneModal(false) }} onCancel={() => { @@ -1148,7 +1236,53 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { batchCloneForm.current?.resetFields() }} > - { + return `${record?.id}-${record?.type}` + }} + request={async (params) => { + let req: any = { + page: 1, + limit: 999, + sortBy: 'sort', + sortOrder: 'ASC', + code: '510000' + } + const data = await handleGetAllServicePart(req) + let list: any = data[0].children + if (list && list.length > 0) { + return { data: list, success: true } + } + return { data: [], success: true } + }} + columns={[ + { + title: "片区/服务区名称", + dataIndex: "name" + } + ]} + rowSelection={{ + type: "radio", + defaultSelectedRowKeys: selectCloneServiceList, + getCheckboxProps: (record) => ({ + disabled: record.type === "district", + // || record.type === "servicePart" + }), + onChange: (selectedRowKeys, selectedRows) => { + setSelectCloneServiceDetail(selectedRows) + setSelectCloneServiceList(selectedRowKeys) + } + }} + > + + + + {/* @@ -1190,7 +1324,7 @@ const examineModal: React.FC<{ currentUser: any }> = (props) => { /> - + */} ) diff --git a/src/pages/examine/question/components/addQuestion.tsx b/src/pages/examine/question/components/addQuestion.tsx index 465384f..9b60051 100644 --- a/src/pages/examine/question/components/addQuestion.tsx +++ b/src/pages/examine/question/components/addQuestion.tsx @@ -39,8 +39,24 @@ const addQuestion = ({ parentRow, onRef, currentUser, showQuestionModal, setShow destroyOnClose onOk={() => { modalRef.current?.validateFields().then(async (res) => { + console.log('res', res); + // 先判断一下 问题列表是否都完善了 + let allAnwersOk: boolean = true + if (res.options && res.options.length > 0) { + res.options.forEach((item: any) => { + if (!item.text) { + allAnwersOk = false + } + }) + } + if (!allAnwersOk) { + message.error('请先完善选项列表!') + return + } + let req = {} let data = {} + if (parentRow?.id) { req = { ...parentRow, diff --git a/src/pages/examine/question/service.ts b/src/pages/examine/question/service.ts index 7084766..fccdac6 100644 --- a/src/pages/examine/question/service.ts +++ b/src/pages/examine/question/service.ts @@ -3,7 +3,7 @@ import request from "@/utils/requestJava" // 拿到问题列表接口 export async function handleGetQuestionList(params?: any) { - const data = await request.post('/questions/search/many', params) + const data = await request.get('/questions/getList', params) if (data.Result_Code === 100) { return data.Result_Data.List } diff --git a/src/pages/examine/record/components/recordDetail.tsx b/src/pages/examine/record/components/recordDetail.tsx index 6855234..713fd27 100644 --- a/src/pages/examine/record/components/recordDetail.tsx +++ b/src/pages/examine/record/components/recordDetail.tsx @@ -102,6 +102,7 @@ const RecordDetail = ({ parentRow, show, detailType, currentUser, onRef, showErr ...parentRow, ...extendObj, placeName: parentRow.template?.title || '', + serverPartName: parentRow.template?.serverPartName, submittedAt: moment(parentRow?.submittedAt).format('YYYY-MM-DD HH:mm:ss') } console.log('formRes', obj); diff --git a/src/pages/examine/record/index.tsx b/src/pages/examine/record/index.tsx index 251b40b..e415384 100644 --- a/src/pages/examine/record/index.tsx +++ b/src/pages/examine/record/index.tsx @@ -118,8 +118,8 @@ const examineRecord: React.FC<{ currentUser: any }> = (props) => { align: 'center', ellipsis: true, render: (_, record) => { - let res: any = record.extend ? JSON.parse(record.extend) : "-" - return {res.situation === 1 ? '异常' : res.situation === 0 ? '正常' : ''} + // let res: any = record.extend ? JSON.parse(record.extend) : "-" + return {record.situation === 1 ? '异常' : record.situation === 0 ? '正常' : ''} } }, { @@ -129,8 +129,8 @@ const examineRecord: React.FC<{ currentUser: any }> = (props) => { width: 200, ellipsis: true, render: (_, record) => { - let extendObj = record?.extend ? JSON.parse(record?.extend) : "" - return extendObj?.uploadResult ? extendObj?.uploadResult : "-" + // let extendObj = record?.extend ? JSON.parse(record?.extend) : "" + return record?.uploadResult ? record?.uploadResult : "-" } }, { @@ -190,13 +190,13 @@ const examineRecord: React.FC<{ currentUser: any }> = (props) => { ellipsis: true, align: 'center', render: (_, record) => { - let res: any = record.extend ? JSON.parse(record.extend) : "-" - return { - res.errorStatus === 0 + // let res: any = record.extend ? JSON.parse(record.extend) : "-" + return { + record.errorStatus === 0 ? "待处理" - : res.errorStatus === 1 + : record.errorStatus === 1 ? "处理中" - : res.errorStatus === 2 + : record.errorStatus === 2 ? "已处理" : "-" } @@ -210,8 +210,8 @@ const examineRecord: React.FC<{ currentUser: any }> = (props) => { ellipsis: true, align: 'center', render: (_, record) => { - let extendObj = record?.extend ? JSON.parse(record?.extend) : "" - let imgList = extendObj.imgsList + // let extendObj = record?.extend ? JSON.parse(record?.extend) : "" + let imgList = record.imgsList return imgList && imgList.length > 0 ?