forked from gzzfw/frontEnd/gzDyh

xusd
2024-09-09 d178386d1d5b63e2f648f0a637b00fca669cccd1
Merge branch 'master' of http://120.79.193.119:9090/r/gzzfw/frontEnd/gzDyh
27 files added
33 files modified
5044 ■■■■ changed files
gz-customerSystem/src/api/appUrl.js 6 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/assets/font/douYuZhuiGuangTi2.0.ttf patch | view | raw | blame | history
gz-customerSystem/src/assets/images/checkInto.png patch | view | raw | blame | history
gz-customerSystem/src/assets/images/floating.png patch | view | raw | blame | history
gz-customerSystem/src/assets/images/index.js 22 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/assets/images/tab1.png patch | view | raw | blame | history
gz-customerSystem/src/assets/images/tab2.png patch | view | raw | blame | history
gz-customerSystem/src/assets/images/tab3.png patch | view | raw | blame | history
gz-customerSystem/src/assets/images/tab4.png patch | view | raw | blame | history
gz-customerSystem/src/assets/images/tab5.png patch | view | raw | blame | history
gz-customerSystem/src/assets/images/tab6.png patch | view | raw | blame | history
gz-customerSystem/src/assets/images/visitInto.png patch | view | raw | blame | history
gz-customerSystem/src/components/personCard/DetailDialog.jsx 12 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/router/router.js 6 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/styles/public.less 9 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/utils/caseTypeSelect.js 414 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/utils/download.js 41 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/handleFeedback/index.jsx 2 ●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/index.jsx 854 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/index.less 87 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/matterDetail/FileTable.jsx 194 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/matterDetail/NewFileCheck.jsx 76 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/matterDetail/fileMessage.jsx 203 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/matterDetail/index.jsx 125 ●●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/visit/component/previewTable.jsx 8 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx 2 ●●● patch | view | raw | blame | history
gz-wxparty/api/api.js 67 ●●●●● patch | view | raw | blame | history
gz-wxparty/app.json 4 ●●●● patch | view | raw | blame | history
gz-wxparty/components/personal-data-dom/index.js 335 ●●●● patch | view | raw | blame | history
gz-wxparty/components/personal-data-dom/index.wxml 2 ●●● patch | view | raw | blame | history
gz-wxparty/components/steps/index.wxml 2 ●●● patch | view | raw | blame | history
gz-wxparty/pages/AIAide/index.js 116 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/AIAide/index.json 4 ●●●● patch | view | raw | blame | history
gz-wxparty/pages/AIAide/index.wxml 50 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/AIAide/index.wxss 90 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/AIAideDetail/index.js 93 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/AIAideDetail/index.json 4 ●●●● patch | view | raw | blame | history
gz-wxparty/pages/AIAideDetail/index.wxml 17 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/AIAideDetail/index.wxss 25 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/DetailPerson/index.js 79 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/DetailPerson/index.json 4 ●●●● patch | view | raw | blame | history
gz-wxparty/pages/DetailPerson/index.wxml 43 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/DetailPerson/index.wxss 16 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/addPerson/index.wxss 5 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/homePage/index.js 6 ●●●● patch | view | raw | blame | history
gz-wxparty/pages/homePage/index.wxml 27 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/homePage/index.wxss 22 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/myRegisterDetail/index.js 86 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/myRegisterDetail/index.json 4 ●●●● patch | view | raw | blame | history
gz-wxparty/pages/myRegisterDetail/index.wxml 82 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/myRegisterDetail/index.wxss 128 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/myRegisterList/index.js 37 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/myRegisterList/index.json 4 ●●● patch | view | raw | blame | history
gz-wxparty/pages/myRegisterList/index.wxml 18 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/myRegisterList/index.wxss 2 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/realNameAuthentication/index.js 376 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/register/index.js 289 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/register/index.wxml 105 ●●●●● patch | view | raw | blame | history
gz-wxparty/pages/register/index.wxss 79 ●●●●● patch | view | raw | blame | history
gz-wxparty/utils/util.js 762 ●●●● patch | view | raw | blame | history
gz-customerSystem/src/api/appUrl.js
@@ -2,7 +2,7 @@
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-02-16 11:25:57
 * @LastEditTime: 2024-09-07 16:35:00
 * @LastEditTime: 2024-09-09 10:07:53
 * @LastEditors: dminyi 1301963064@qq.com
 * @Version: 1.0.0
 * @Description: api地址
@@ -10,11 +10,11 @@
export const debug = {
  // web服务
  // baseUrl: 'http://gz.hugeinfo.com.cn',
  baseUrl: "http://fydddb.natappfree.cc",
  baseUrl: "http://w88bsz.natappfree.cc",
  // baseUrl: 'http://mdqgnh.natappfree.cc',
  // 附件服务
  fileUrl: "http://fydddb.natappfree.cc",
  fileUrl: "http://w88bsz.natappfree.cc",
  // fileUrl: 'http://gz.hugeinfo.com.cn',
  // 文件查看url 后面接附件编号
gz-customerSystem/src/assets/font/douYuZhuiGuangTi2.0.ttf
Binary files differ
gz-customerSystem/src/assets/images/checkInto.png
gz-customerSystem/src/assets/images/floating.png
gz-customerSystem/src/assets/images/index.js
@@ -2,7 +2,7 @@
 * @Company: hugeInfo
 * @Author: lwh
 * @Date: 2023-04-24 16:12:00
 * @LastEditTime: 2024-09-07 14:08:18
 * @LastEditTime: 2024-09-09 15:35:32
 * @LastEditors: dminyi 1301963064@qq.com
 * @Version: 1.0.0
 * @Description:
@@ -64,6 +64,15 @@
import Audit from "./Audit.png";
import aiPerson from "./aiPerson.png";
import caselogo from "./caselogo.png";
import tab1 from "./tab1.png";
import tab2 from "./tab2.png";
import tab3 from "./tab3.png";
import tab4 from "./tab4.png";
import tab5 from "./tab5.png";
import tab6 from "./tab6.png";
import visitInto from "./visitInto.png";
import checkInto from "./checkInto.png";
import floating from "./floating.png";
export {
  ledger_1,
@@ -122,5 +131,14 @@
  up,
  Audit,
  aiPerson,
  caselogo
  caselogo,
  tab1,
  tab2,
  tab3,
  tab4,
  tab5,
  tab6,
  visitInto,
  checkInto,
  floating
};
gz-customerSystem/src/assets/images/tab1.png
gz-customerSystem/src/assets/images/tab2.png
gz-customerSystem/src/assets/images/tab3.png
gz-customerSystem/src/assets/images/tab4.png
gz-customerSystem/src/assets/images/tab5.png
gz-customerSystem/src/assets/images/tab6.png
gz-customerSystem/src/assets/images/visitInto.png
gz-customerSystem/src/components/personCard/DetailDialog.jsx
@@ -1,6 +1,7 @@
import React, { useEffect, useState } from 'react'
import KeyVisits from "./KeyVisits";
import { link } from '@/assets/images'
import { link } from '@/assets/images';
import { Scrollbars } from "react-custom-scrollbars";
export default function DetailDialog(props) {
  const nuturalList = [
@@ -359,7 +360,12 @@
  }, [])
  return (
    <div style={{ maxHeight: '590px', overflowY: 'scroll' }}>
    <Scrollbars
      autoHide
      autoHeight
      autoHeightMin={200} // 最小高度为300px
      autoHeightMax={590}
    >
      <table border="1" align="center" cellpadding="8" className="table" style={{ marginBottom: '20px' }}>
        {
          tableList?.map((item, index) => {
@@ -385,6 +391,6 @@
      {/* <div style={{ width: 'calc(100% - 9px)', background: '#f2f3f5', marginBottom: '20px', padding: '12px' }}>
        <KeyVisits />
      </div> */}
    </div>
    </Scrollbars>
  )
}
gz-customerSystem/src/router/router.js
@@ -2,7 +2,7 @@
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-03-28 11:22:41
 * @LastEditTime: 2024-09-08 15:15:51
 * @LastEditTime: 2024-09-09 15:48:38
 * @LastEditors: dminyi 1301963064@qq.com
 * @Version: 1.0.0
 * @Description: 路由
@@ -221,12 +221,10 @@
                        <Route path="visit/:id?" element={<Visit />} />
                        <Route path="visit/eventFlow/:caseTaskId?/:caseId?" element={<EventFlow />} />
                        <Route path="visit/handleFeedback/:caseTaskId?/:caseId?" element={<HandleFeedback />} />
                        <Route path="visit/fileMessage" element={<FileMessage />} />
                        <Route path="visit/fileMessage/:caseTaskId?/:caseId?" element={<FileMessage />} />
                        <Route path="visit/closingReview/:caseTaskId?/:caseId?" element={<ClosingReview />}/>
                        <Route path="visit/visitWorkBench" element={<VisitWorkBench />}/>
                        {/* 工作流模块 */}
                        <Route path="workflowTemplate" element={<WorkflowTemplate />} />
                        <Route path="workflowTemplate/workflowTemplateEdit" element={<WorkflowTemplateEdit />} />
gz-customerSystem/src/styles/public.less
@@ -15,6 +15,11 @@
    src: url('../assets/font/DingTalk_JinBuTi_Regular.ttf');
}
@font-face {
    font-family: DouYu;
    src: url('../assets/font/DingTalk_JinBuTi_Regular.ttf');
}
html,
body {
    margin: 0;
@@ -800,10 +805,12 @@
    .arco-modal-header {
        padding: 0;
        margin-bottom: 0;
    }
    .arco-modal-header {
    .arco-modal-footer {
        text-align: right;
        margin-top: 0;
    }
}
gz-customerSystem/src/utils/caseTypeSelect.js
@@ -10,40 +10,412 @@
let caseTypeSelect = [
  {
    'label': '家庭邻里',
    'value': '24_000010-1',
    'parentId': 'root',
    'children': [
    "label": "城市管理",
    "value": "24_01-3",
    "icon": null,
    "parentId": "root",
    "children": [
      {
        'label': '邻里纠纷',
        'value': '24_000011-1',
        'parentId': '24_000010-1',
        "label": "施工问题",
        "value": "24_02-20",
        "icon": null,
        "parentId": "24_01-3",
        "children": null
      },
      {
        'label': '婚姻家庭纠纷',
        'value': '24_000011-2',
        'parentId': '24_000010-1',
        "label": "违章建筑",
        "value": "24_02-21",
        "icon": null,
        "parentId": "24_01-3",
        "children": null
      },
      {
        "label": "路桥坑洼、破损",
        "value": "24_02-22",
        "icon": null,
        "parentId": "24_01-3",
        "children": null
      },
      {
        "label": "消防隐患举报",
        "value": "24_02-23",
        "icon": null,
        "parentId": "24_01-3",
        "children": null
      },
      {
        "label": "噪声、气味、污水等环境问题",
        "value": "24_02-25",
        "icon": null,
        "parentId": "24_01-3",
        "children": null
      },
      {
        "label": "乱摆卖、垃圾清理等街面问题",
        "value": "24_02-24",
        "icon": null,
        "parentId": "24_01-3",
        "children": null
      }
    ]
  },
  {
    'label': '劳动社保',
    'value': '24_000010-2',
    'parentId': 'root',
    'children': [
    "label": "家庭邻里",
    "value": "24_01-8",
    "icon": null,
    "parentId": "root",
    "children": [
      {
        'label': '拖欠、克扣工资',
        'value': '24_000011-3',
        'parentId': '24_000010-2',
        "label": "邻里纠纷",
        "value": "24_02-48",
        "icon": null,
        "parentId": "24_01-8",
        "children": null
      },
      {
        'label': '门诊及住院待遇',
        'value': '24_000011-4',
        'parentId': '24_000010-2',
        "label": "婚姻家庭纠纷",
        "value": "24_02-47",
        "icon": null,
        "parentId": "24_01-8",
        "children": null
      },
      {
        "label": "男女情感问题",
        "value": "24_02-49",
        "icon": null,
        "parentId": "24_01-8",
        "children": null
      }
    ]
  },
  {
    "label": "交通运输",
    "value": "24_01-4",
    "icon": null,
    "parentId": "root",
    "children": [
      {
        "label": "出租车、公交车、站点等营运问题",
        "value": "24_02-32",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      },
      {
        "label": "交通灯、电子警察等公安设施",
        "value": "24_02-28",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      },
      {
        "label": "交通拥堵",
        "value": "24_02-27",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      },
      {
        "label": "道路违章举报",
        "value": "24_02-29",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      },
      {
        "label": "物流快递管理",
        "value": "24_02-30",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      },
      {
        "label": "驾校纠纷",
        "value": "24_02-31",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      },
      {
        "label": "车辆乱停放",
        "value": "24_02-26",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      },
      {
        "label": "电动车违规问题",
        "value": "24_02-33",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      },
      {
        "label": "其他(社会治安、限行、养犬等)",
        "value": "24_02-34",
        "icon": null,
        "parentId": "24_01-4",
        "children": null
      }
    ]
  },
  {
    "label": "教育医疗",
    "value": "24_01-5",
    "icon": null,
    "parentId": "root",
    "children": [
      {
        "label": "教育事务、培训机构投诉",
        "value": "24_02-35",
        "icon": null,
        "parentId": "24_01-5",
        "children": null
      },
      {
        "label": "医疗服务",
        "value": "24_02-36",
        "icon": null,
        "parentId": "24_01-5",
        "children": null
      }
    ]
  },
  {
    "label": "劳动社保",
    "value": "24_01-2",
    "icon": null,
    "parentId": "root",
    "children": [
      {
        "label": "社保费用补缴",
        "value": "24_02-16",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "生育待遇",
        "value": "24_02-12",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "异地就医办理",
        "value": "24_02-13",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "养老待遇",
        "value": "24_02-14",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "失业保险待遇",
        "value": "24_02-15",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "参保流程",
        "value": "24_02-17",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "其他(职业技能、社保补贴等)",
        "value": "24_02-18",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "港澳青年来穗服务",
        "value": "24_02-19",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "医保个人账户",
        "value": "24_02-11",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "门诊及住院待遇",
        "value": "24_02-10",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      },
      {
        "label": "拖欠、克扣工资",
        "value": "24_02-9",
        "icon": null,
        "parentId": "24_01-2",
        "children": null
      }
    ]
  },
  {
    "label": "房屋规划",
    "value": "24_01-7",
    "icon": null,
    "parentId": "root",
    "children": [
      {
        "label": "物业/业委会管理",
        "value": "24_02-41",
        "icon": null,
        "parentId": "24_01-7",
        "children": null
      },
      {
        "label": "不动产登记",
        "value": "24_02-42",
        "icon": null,
        "parentId": "24_01-7",
        "children": null
      },
      {
        "label": "开发商/中介纠纷",
        "value": "24_02-43",
        "icon": null,
        "parentId": "24_01-7",
        "children": null
      },
      {
        "label": "电梯加装",
        "value": "24_02-44",
        "icon": null,
        "parentId": "24_01-7",
        "children": null
      },
      {
        "label": "建设项目规划",
        "value": "24_02-45",
        "icon": null,
        "parentId": "24_01-7",
        "children": null
      },
      {
        "label": "租赁纠纷",
        "value": "24_02-46",
        "icon": null,
        "parentId": "24_01-7",
        "children": null
      }
    ]
  },
  {
    "label": "公共服务",
    "value": "24_01-6",
    "icon": null,
    "parentId": "root",
    "children": [
      {
        "label": "个人危险行为",
        "value": "24_02-40",
        "icon": null,
        "parentId": "24_01-6",
        "children": null
      },
      {
        "label": "停水/电/气",
        "value": "24_02-37",
        "icon": null,
        "parentId": "24_01-6",
        "children": null
      },
      {
        "label": "自然灾害",
        "value": "24_02-38",
        "icon": null,
        "parentId": "24_01-6",
        "children": null
      },
      {
        "label": "公共卫生安全",
        "value": "24_02-39",
        "icon": null,
        "parentId": "24_01-6",
        "children": null
      }
    ]
  },
  {
    "label": "市场监管",
    "value": "24_01-1",
    "icon": null,
    "parentId": "root",
    "children": [
      {
        "label": "金融纠纷",
        "value": "24_02-6",
        "icon": null,
        "parentId": "24_01-1",
        "children": null
      },
      {
        "label": "网购及其他消费纠纷",
        "value": "24_02-5",
        "icon": null,
        "parentId": "24_01-1",
        "children": null
      },
      {
        "label": "其他经济违法举报",
        "value": "24_02-7",
        "icon": null,
        "parentId": "24_01-1",
        "children": null
      },
      {
        "label": "无证/无照/冒用信息等违法经营行为举报",
        "value": "24_02-4",
        "icon": null,
        "parentId": "24_01-1",
        "children": null
      },
      {
        "label": "食品消费纠纷",
        "value": "24_02-3",
        "icon": null,
        "parentId": "24_01-1",
        "children": null
      },
      {
        "label": "旅游消费纠纷",
        "value": "24_02-2",
        "icon": null,
        "parentId": "24_01-1",
        "children": null
      },
      {
        "label": "通讯、宽带消费纠纷",
        "value": "24_02-1",
        "icon": null,
        "parentId": "24_01-1",
        "children": null
      },
      {
        "label": "电费问题",
        "value": "24_02-8",
        "icon": null,
        "parentId": "24_01-1",
        "children": null
      }
    ]
  }
]
const obj = {
gz-customerSystem/src/utils/download.js
New file
@@ -0,0 +1,41 @@
import axios from 'axios'
import qs from 'qs'
import * as $$ from '@/utils/utility';
export default function downloadFile(url, params) {
    const link = document.createElement('a')
    return axios({
            url,
            params,
            method: 'GET',
            headers: {
                Authorization: $$.getSessionStorage('customerSystemToken')
            },
            responseType: 'blob',
            paramsSerializer: (v) => qs.stringify(v, {
                arrayFormat: 'repeat'
            }),
        })
        .then((res) => {
            // 切割文件名
            const fileNameEncode = res.headers['content-disposition'].split('filename=')[1]
            // 解码
            const fileName = decodeURIComponent(fileNameEncode)
            // 设置type类型
            const blob = new Blob([res.data], {
                type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; application/octet-stream',
            })
            const fileUrl = window.URL.createObjectURL(blob)
            link.href = fileUrl
            link.setAttribute('download', fileName)
            link.style.display = 'none'
            link.click()
            link.remove()
        })
        .catch(() => {
            $$.info({
                type: 'error',
                content: '文件下载请求失败'
            });
        })
}
gz-customerSystem/src/views/register/handleFeedback/index.jsx
@@ -178,7 +178,7 @@
                                </div>
                            }
                            {tabsActive === 'sxxq' &&
                                <MatterDetail hasApplet={true} hasEditBtn={true} />
                                <MatterDetail hasApplet={true} hasEditBtn={true} caseId={routeData.caseId}/>
                            }
                            {
                                tabsActive === 'sxbl' && <Typography.Paragraph style={style}>
gz-customerSystem/src/views/register/index.jsx
@@ -1,63 +1,809 @@
import React from 'react';
/*
 * @Author: dminyi 1301963064@qq.com
 * @Date: 2024-09-08 15:14:12
 * @LastEditors: dminyi 1301963064@qq.com
 * @LastEditTime: 2024-09-09 17:06:20
 * @FilePath: \gzDyh\gz-customerSystem\src\views\register\index.jsx
 * @Description: 工作台
 */
import React, { useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { tab1, tab2, tab3, tab4, tab5, tab6, visitInto, checkInto } from '@/assets/images'
import TableView from '../../components/TableView';
import { Space } from 'antd';
import { Tabs, Typography, Radio } from '@arco-design/web-react';
import * as $$ from '@/utils/utility';
const TabPane = Tabs.TabPane;
function pageMyTaskBlApi(data) {
  return $$.ax.request({ url: `caseTask/pageMyTaskBl`, type: 'get', service: 'mediate', data });
}
function getCountListApi(data) {
  return $$.ax.request({ url: `caseTask/getCountList`, type: 'get', service: 'mediate', data });
}
const VisitWorkBench = () => {
  const navigate = useNavigate();
  const [tabActivekey, setTabActivekey] = useState('1')
  const [CountList, setCountList] = useState({})
  const [direction, setDirection] = useState('回退审核')
  const tabsList = [
    {
      key: '1',
      label: '待分派',
      bgColor: '#E8F8FF',
      num: 10,
      num: `${CountList?.waitDisp}`,
      img: tab1
    },
    {
      key: '2',
      label: '待签收',
      bgColor: '#E8FFEA',
      num: 30,
      num: `${CountList?.waitSign}`,
      img: tab2
    },
    {
      key: '3',
      label: '待受理',
      bgColor: '#F5E8FF',
      num: 50,
      num: `${CountList?.waitAccept}`,
      img: tab3
    },
    {
      key: '4',
      label: '办理中',
      bgColor: '#E6FFFB',
      num: 60,
      num: `${CountList?.waitReview}`,
      img: tab4
    },
    {
      key: '5',
      label: '待审核',
      bgColor: '#E8F7FF',
      num: 70,
      num: `${CountList?.supervise}`,
      img: tab5
    },
    {
      key: '6',
      label: '督办',
      bgColor: '#FFF7E6',
      num: 80,
      num: `${CountList?.processing}`,
      img: tab6
    },
  ]
  const fakeData1 =
    [
      {
        id: 1,
        caseNo: 'A20230101',
        judicNo: '申请材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 2,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 3,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 4,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 5,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 6,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 7,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 8,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 9,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      {
        id: 10,
        caseNo: 'A20230101',
        judicNo: '证据材料',
        perClassName: '李晓明的纠纷化解申请表、身份证...',
        inputUserName: '0',
        mediateUserName: '2024-7-12 12:00',
        judgeName: '王五',
        mediator: '赵六',
        handlerUserName: '钱七',
        returnUserName: '孙八',
        expireTime: '2023-08-10T08:00:00.000Z',
        processName: '进行中',
        otherMediator: '周九',
        canalName: '网络',
        judicResult: '通过',
        assistName: '吴十',
        mediTypeName: '民事调解',
        serieStatus: '1', // 1 表示非系列案,2 表示系列案
        // 更多字段...
      },
      // 更多数据...
    ]
  const [columnType, setColumnType] = useState([
    {
      title: '流转时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
    },
    {
      title: '分派时限',
      dataIndex: 'timeLimit',
      key: 'timeLimit',
      width: 60,
    },
    {
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 180,
    },
    {
      title: '事项来源',
      dataIndex: 'caseSource',
      key: 'caseSource',
      width: 180,
    },
    {
      title: '事项类型',
      dataIndex: 'caseType',
      key: 'caseType',
      width: 180,
    },
    {
      title: '申请方',
      dataIndex: 'plaintiffs',
      key: 'plaintiffs',
      width: 180,
    },
    {
      title: '被申请方',
      dataIndex: 'defendants',
      key: 'defendants',
      width: 180,
    },
    {
      title: '操作',
      dataIndex: 'actions',
      key: 'actions',
      width: 180,
      render: (text, record) => (
        <Space style={{ color: '#1A6FB8' }}>
          <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div>
          <div onClick={() => navigate(`/mediate/visit/eventFlow?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div>
        </Space>
      ),
    },
  ])
  // 列配置
  const fakeColumns3 = [
    {
      title: '流转时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
      render: (text, record, index) => <span>{index + 1}</span>,
    },
    {
      title: '分派时限',
      dataIndex: 'timeLimit',
      key: 'timeLimit',
      width: 60,
    },
    {
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 180,
    },
    {
      title: '事项来源',
      dataIndex: 'caseSource',
      key: 'caseSource',
      width: 180,
    },
    {
      title: '事项类型',
      dataIndex: 'caseType',
      key: 'caseType',
      width: 180,
    },
    {
      title: '申请方',
      dataIndex: 'plaintiffs',
      key: 'plaintiffs',
      width: 180,
    },
    {
      title: '被申请方',
      dataIndex: 'defendants',
      key: 'defendants',
      width: 180,
    },
    {
      title: '操作',
      dataIndex: 'actions',
      key: 'actions',
      width: 180,
      render: (text, record) => (
        <Space style={{ color: '#1A6FB8' }}>
          <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div>
          <div onClick={() => navigate(`/mediate/visit/eventFlow?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div>
        </Space>
      ),
    },
  ];
  const fakeColumns1 = [
    {
      title: '流转时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
      render: (text, record, index) => <span>{index + 1}</span>,
    },
    {
      title: '签收时限',
      dataIndex: 'timeLimit',
      key: 'timeLimit',
      width: 60,
    },
    {
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 180,
    },
    {
      title: '事项来源',
      dataIndex: 'caseSource',
      key: 'caseSource',
      width: 180,
    },
    {
      title: '事项类型',
      dataIndex: 'caseType',
      key: 'caseType',
      width: 180,
    },
    {
      title: '申请方',
      dataIndex: 'plaintiffs',
      key: 'plaintiffs',
      width: 180,
    },
    {
      title: '被申请方',
      dataIndex: 'defendants',
      key: 'defendants',
      width: 180,
    },
    {
      title: '操作',
      dataIndex: 'actions',
      key: 'actions',
      width: 180,
      render: (text, record) => (
        <Space style={{ color: '#1A6FB8' }}>
          <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div>
          <div>签收</div>
        </Space>
      ),
    },
  ];
  const fakeColumns2 = [
    {
      title: '流转时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
    },
    {
      title: '受理时限',
      dataIndex: 'timeLimit',
      key: 'timeLimit',
      width: 60,
    },
    {
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 180,
    },
    {
      title: '事项来源',
      dataIndex: 'caseSource',
      key: 'caseSource',
      width: 180,
    },
    {
      title: '事项类型',
      dataIndex: 'caseType',
      key: 'caseType',
      width: 180,
    },
    {
      title: '申请方',
      dataIndex: 'plaintiffs',
      key: 'plaintiffs',
      width: 180,
    },
    {
      title: '被申请方',
      dataIndex: 'defendants',
      key: 'defendants',
      width: 180,
    },
    {
      title: '操作',
      dataIndex: 'actions',
      key: 'actions',
      width: 180,
      render: (text, record) => (
        <Space style={{ color: '#1A6FB8' }}>
          <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div>
          <div onClick={() => navigate(`/mediate/visit/eventFlow?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div>
        </Space>
      ),
    },
  ];
  const [column, setColumn] = useState([
    {
      title: '流转时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
    },
    {
      title: '已办天数',
      dataIndex: 'processingDays',
      key: 'processingDays',
      width: 60,
    },
    {
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 180,
    },
    {
      title: '事项来源',
      dataIndex: 'caseSource',
      key: 'caseSource',
      width: 180,
    },
    {
      title: '事项类型',
      dataIndex: 'caseType',
      key: 'caseType',
      width: 180,
    },
    {
      title: '承办部门',
      dataIndex: 'organizingUnit',
      key: 'organizingUnit',
      width: 180,
    },
    {
      title: '配合部门',
      dataIndex: 'cooperatingUnit',
      key: 'cooperatingUnit',
      width: 180,
    },
    {
      title: '经办人',
      dataIndex: 'manager',
      key: 'manager',
      width: 180,
    },
    {
      title: '申请方',
      dataIndex: 'plaintiffs',
      key: 'plaintiffs',
      width: 180,
    },
    {
      title: '被申请方',
      dataIndex: 'defendants',
      key: 'defendants',
      width: 180,
    },
    {
      title: '操作',
      dataIndex: 'actions',
      key: 'actions',
      width: 180,
      render: (text, record) => (
        <Space>
          <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div>
          <div onClick={() => navigate(`/mediate/visit/handleFeedback?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div>
        </Space>
      ),
    },
  ])
  const [backColumn, setBackColumn] = useState([
    {
      title: '回退时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
    },
    {
      title: '回退部门',
      dataIndex: 'backUnit',
      key: 'backUnit',
      width: 60,
    },
    {
      title: '回退理由',
      dataIndex: 'reason',
      key: 'reason',
      width: 180,
    },
    {
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 180,
    },
    {
      title: '事项来源',
      dataIndex: 'caseSource',
      key: 'caseSource',
      width: 180,
    },
    {
      title: '事项类型',
      dataIndex: 'caseType',
      key: 'caseType',
      width: 180,
    },
    {
      title: '申请方',
      dataIndex: 'plaintiffs',
      key: 'plaintiffs',
      width: 180,
    },
    {
      title: '被申请方',
      dataIndex: 'defendants',
      key: 'defendants',
      width: 180,
    },
    {
      title: '操作',
      dataIndex: 'actions',
      key: 'actions',
      width: 180,
      render: (text, record) => (
        <Space>
          <div onClick={() => navigate(`/mediate/visit/fileMessage?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>详情</div>
          {/* <div onClick={() => navigate(`/mediate/visit/handleFeedback?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div> */}
          {(direction === '回退审核' || direction === '上报审核') &&
            <div onClick={() => navigate(`/mediate/visit/eventFlow?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div>
          }
          {(direction === '结案申请审核' || direction === '联合处置审核') &&
            <div onClick={() => navigate(`/mediate/visit/handleFeedback?caseTaskId=${'1'}&caseId=${'1'}`)} style={{ cursor: 'pointer' }}>处理</div>
          }
        </Space>
      ),
    },
  ])
  const [mangeColumn, setMangeColumn] = useState([
    {
      title: '督办时间',
      dataIndex: 'turnaroundTime',
      key: 'turnaroundTime',
      width: 100,
      render: (text, record, index) => <span>{index + 1}</span>,
    },
    {
      title: '回复时限',
      dataIndex: 'timeLimit',
      key: 'timeLimit',
      width: 60,
    },
    {
      title: '督办部门',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 180,
    },
    {
      title: '督办意见',
      dataIndex: 'opinion',
      key: 'opinion',
      width: 180,
    },
    {
      title: '事项等级',
      dataIndex: 'caseGrade',
      key: 'caseGrade',
      width: 180,
    },
    {
      title: '事项来源',
      dataIndex: 'caseSource',
      key: 'caseSource',
      width: 180,
    },
    {
      title: '事项类型',
      dataIndex: 'caseType',
      key: 'caseType',
      width: 180,
    },
    {
      title: '申请方',
      dataIndex: 'plaintiffs',
      key: 'plaintiffs',
      width: 180,
    },
    {
      title: '被申请方',
      dataIndex: 'defendants',
      key: 'defendants',
      width: 180,
    },
    {
      title: '操作',
      dataIndex: 'actions',
      key: 'actions',
      width: 180,
      render: (text, record) => (
        <Space>
          <div>回复</div>
          <div>详情</div>
        </Space>
      ),
    },
  ])
  const tabActive = (key) => {
    console.log(key, 'key')
    setTabActivekey(key);
    if (key === '1') {
      setColumnType(fakeColumns3)
    }
    if (key === '2') {
      setColumnType(fakeColumns1)
    }
    if (key === '3') {
      setColumnType(fakeColumns2)
    }
    if (key === '4') {
      setColumnType(column)
    }
    if (key === '5') {
      setColumnType(backColumn)
    }
    if (key === '6') {
      setColumnType(mangeColumn)
    }
  }
  const pageMyTaskBl = async () => {
    const res = await pageMyTaskBlApi({ page: 1, size: 10, timeStart: '', timeEnd: '', partyName: '', sortType: '', sortColmn: '' })
    if (res.type) {
      console.log(res.data, 'res.data')
      // setColumn(res.data)
    }
  }
  const getCountList = async () => {
    const res = await getCountListApi()
    if (res.type) {
      const data = res.data
      setCountList(data)
    }
  }
  useEffect(() => {
    // pageMyTaskBl();
    getCountList();
  }, [columnType,direction])
  return (
    <div className='VisitWorkBench'>
      <div className='VisitWorkBench-top'>
        工作总览
        <span style={{ fontWeight: 600 }}>工作总览</span>
        <div className='VisitWorkBench-top-list'>
          {
            tabsList.map((item, index) => (
              <div key={index} className='VisitWorkBench-top-list-tabsItem' style={{ backgroundColor: item.bgColor }}>
              <div key={index} className='VisitWorkBench-top-list-tabsItem' style={{ backgroundColor: item.bgColor }} onClick={() => tabActive(item.key)}>
                <div>
                  <div>{item.label}</div>
                  <div>{item.num}件</div>
                  <span className='VisitWorkBench-top-list-tabsItem-title'>{item.num}</span>件
                </div>
                <div>
                <img src={item.img} alt=''/>
                  <img src={item.img} alt='' className='VisitWorkBench-top-list-tabsItem-imgView' />
                </div>
              </div>
            ))
@@ -65,10 +811,90 @@
        </div>
      </div>
      <div className='VisitWorkBench-middle'>
        222
        <Tabs defaultActiveTab='1'>
          <TabPane
            // onChange={handleColumnType}
            key='1'
            title={
              <span style={{ fontSize: '15px' }}>
                {tabActivekey === '1' ? '待分派' :
                  tabActivekey === '2' ? '待签收' :
                    tabActivekey === '3' ? '待受理' :
                      tabActivekey === '4' ? '办理中' :
                        tabActivekey === '5' ? '待审核' : '督办-未回复'
                }
              </span>
            }
          >
            <Typography.Paragraph>
              {tabActivekey === '5' &&
                <Radio.Group
                  type='button'
                  name='direction'
                  value={direction}
                  onChange={(e) => setDirection(e)}
                  style={{ marginBottom: 16 }}
                  options={['回退审核', '上报审核', '结案申请审核', '联合处置审核']}
                ></Radio.Group>
              }
              <TableView
                columns={columnType}
                dataSource={fakeData1}
                size="small"
                rowKey="id"
                bordered={true}
                // style={{ marginBottom: '65px', marginTop: '-16px' }}
                rowSelection={{
                  type: 'Checkbox'
                }}
              />
            </Typography.Paragraph>
          </TabPane>
          <TabPane
            key='2'
            title={
              <span style={{ fontSize: '15px' }}>
                {tabActivekey === '1' ? '已分派' :
                  tabActivekey === '2' ? '已签收' :
                    tabActivekey === '3' ? '已受理' :
                      tabActivekey === '4' ? '结案申请' :
                        tabActivekey === '5' ? '已审核' : '督办-未回复'
                }
              </span>
            }
          >
            <Typography.Paragraph>
            </Typography.Paragraph>
          </TabPane>
          {tabActivekey === '4' &&
            <TabPane
              key='3'
              title={
                <span style={{ fontSize: '15px' }}>
                  已结案
                </span>
              }
            >
              <Typography.Paragraph>
              </Typography.Paragraph>
            </TabPane>
          }
        </Tabs>
      </div>
      <div className='VisitWorkBench-bottom'>
        333333
        自行排查
        <div style={{ display: 'flex', justifyContent: 'space-evenly' }}>
          <div className='bottomTab1'>
            <div className='VisitWorkBench-bottom-title' onClick={() => navigate(`/mediate/visit`)} style={{ color: '#206BCD' }}>大厅来访</div>
            <img src={visitInto} alt='' className='VisitWorkBench-bottom-img' />
          </div>
          <div className='bottomTab2'>
            <div className='VisitWorkBench-bottom-title' style={{ color: '#D46B08' }}>自行排查</div>
            <img src={checkInto} alt='' className='VisitWorkBench-bottom-img' />
          </div>
        </div>
      </div>
    </div>
  )
gz-customerSystem/src/views/register/index.less
@@ -760,13 +760,13 @@
                height: 24px;
            }
            &-name{
            &-name {
                margin: 0px 16px 0px 8px;
                max-width: 828px;
                width: fit-content;
            }
            &-btn{
            &-btn {
                color: #1A6FB8;
                width: 30px;
            }
@@ -774,66 +774,115 @@
    }
}
.marginLeft{
.marginLeft {
    margin-left: 55px;
    //fontWeight: '600', marginBottom: '16px'
    &-title{
    &-title {
        font-weight: 600;
        margin-bottom: 16px;
    }
}
.layerDetail{
.layerDetail {
    margin-top: -8px;
    &-title{
    &-title {
        color: rgb(26, 111, 184);
        margin-bottom: 16px;
    }
    &-name{
    &-name {
        font-size: 16px;
        margin-bottom: 16px;
        max-width: 400px;
    }
    &-littleTitle{
    &-littleTitle {
        margin-bottom: 16px;
    }
    &-content{
    &-content {
        margin-bottom: 16px;
    }
}
.VisitWorkBench{
    &-top{
        background: #ffffff;
    padding: 12px 16px 16px 16px;
.VisitWorkBench {
    margin: 16px;
        &-list{
    &-top {
        background: #ffffff;
        padding: 12px 16px 16px 16px;
        &-list {
            display: flex;
            &-tabsItem{
            gap: 24px;
            margin-top: 16px;
            &-tabsItem {
                display: flex;
                padding: 12px 16px;
                flex: 1;
                justify-content: space-between;
                &-title {
                    font-size: 18px;
                    margin-right: 4px;
                }
                &-imgView {
                    width: 48px;
                    height: 48px;
                }
            }
        }
    }
    &-middle{
    &-middle {
        background: #ffffff;
        padding: 12px 16px 16px 16px;
        margin-top: 12px;
    }
    &-bottom{}
    &-bottom {
        background-color: #fff;
        padding: 12px 16px 16px 16px;
        margin-top: 12px;
        &-title{
            width: 140px;
            font-family: DingTalk;
            font-size: 22px;
        }
        &-img {
            width: 72px;
            height: 72px;
        }
    }
}
.modeMore{
.modeMore {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.bottomTab1{
    // display: 'flex',    background: linear-gradient(to right, #6a1b9a, #e040fb)
    display: flex;
    background: linear-gradient(to right, #E8F7FF, #9FD4FD);
    padding: 12px 16px 16px 16px;
}
.bottomTab2{
    display: flex;
    background: linear-gradient(to right, #FFF7E6, #FFD591);
    padding: 12px 16px 16px 16px;
}
gz-customerSystem/src/views/register/matterDetail/FileTable.jsx
@@ -2,7 +2,7 @@
import * as $$ from '@/utils/utility';
import ArcoUpload from '@/components/ArcoUpload';
import NewFileCheck from './NewFileCheck';
import { Row, Col, Button } from 'antd';
import { Row, Col, Button, Typography, Space } from 'antd';
import { Form, Modal } from '@arco-design/web-react';
import {
  applyMaterials,
@@ -12,19 +12,17 @@
} from '@/assets/images';
import { CheckOutlined, } from '@ant-design/icons';
import TableView from '@/components/TableView';
import downloadFile from "@/utils/download"
const { Link, Text } = Typography;
const appUrl = $$.appUrl;
function delFile(id) {
  return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } });
}
function listIdTypeInfoApi(data) {
  return $$.ax.request({ url: `fileInfo/listIdTypeInfo`, type: 'post', service: 'sys', data });
}
function deleteFileByIdApi(data) {
  return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data });
  return $$.ax.request({ url: `fileInfo/deleteFileByIds`, type: 'delete', service: 'sys', data });
}
//表格数据
@@ -35,6 +33,7 @@
    size: 0,
    fileNames: "-",
    updateTime: '',
    id: 1,
  },
  {
    ownerType: "22_00018-102",
@@ -42,16 +41,24 @@
    size: 0,
    fileNames: "-",
    updateTime: '',
    id: 2,
  },
]
/**
 * mainId*,//就是caseId,事件id
 * fileInfoList*, //文件列表
 * isReview,//是否查看,查看的话就不能删除上传,只能查看下载
 */
export default function FileTable(props) {
  const formRef = useRef();
  const [sourceType, setSourceType] = useState();
  const [filesCheck, setFilesCheck] = useState(false);
  const [upload, setUpLoad] = useState(false);
  const [uploadVisible, setUpLoadVisible] = useState(false);
  const [tableData, setTableData] = useState(staticTableData);
  const [fileMap, setFileMap] = useState({});
  const [fileInfoList, setFileInfoList] = useState([]);
  // 列配置
  const fakeColumns = [
@@ -93,17 +100,47 @@
      title: '操作',
      dataIndex: 'perClassName',
      key: 'perClassName',
      width: 200,
      width: props.isReview ? 60 : 125,
      fixed: 'right',
      render: (text, record) => (
        <div style={{ display: 'flex', color: '#1A6FB8', gap: '16px' }}>
          <div onClick={() => setFilesCheck(true)}>查看</div>
          <div>删除</div>
          <div>下载</div>
          <div onClick={() => {
        <Space size="middle">
          <Link onClick={() => {
            setSourceType(record.ownerType)
            setUpLoad(true)
          }}>上传</div>
        </div>
            setFilesCheck(true)
          }}>
            查看
          </Link>
          {!props.isReview && <Link onClick={() => {
            if (record.fileInfoList && record.fileInfoList.length != 0) {
              let ids = record.fileInfoList?.map(item => item.id).join(',')
              handleDelete(ids)
            } else {
              $$.info({ type: 'warning', content: '还没上传关于该材料的文件!' });
            }
          }}>
            删除
          </Link>}
          <Link onClick={() => {
            if (record.fileInfoList && record.fileInfoList.length != 0) {
              let ids = record.fileInfoList?.map(item => item.id).join(',')
              handleDownlod(ids)
            } else {
              $$.info({ type: 'warning', content: '还没上传关于该材料的文件!' });
            }
          }}>
            下载
          </Link>
          {!props.isReview && <Link onClick={() => {
            setSourceType(record.ownerType)
            setUpLoadVisible(true)
            setFileInfoList(record.fileInfoList)
            setTimeout(() => {
              formRef.current.setFieldValue('file', record.fileInfoList)
            }, 0)
          }}>
            上传
          </Link>}
        </Space>
      )
    },
    // 更多列配置...
@@ -114,9 +151,53 @@
  ]
  useEffect(() => {
    console.log(props.fileInfoList);
  },[props.fileInfoList])
    if (props.fileInfoList && props.fileInfoList.length != 0) {
      //证明材料
      const applyFile = props.fileInfoList.find(item => item.ownerType == "22_00018-101")
      //证据材料
      const evidenceFile = props.fileInfoList.find(item => item.ownerType == "22_00018-102")
      setFileMap({
        '22_00018-101': applyFile?.fileList || [],
        '22_00018-102': evidenceFile?.fileList || []
      })
      const newList = tableData.map(item => {
        if (item.ownerType == '22_00018-101' && applyFile) {
          return {
            ...item,
            size: applyFile.fileList.length,
            fileNames: applyFile.fileList?.map(item => item.trueName).join(','),
            updateTime: $$.timeFormat(applyFile.fileList[applyFile.fileList.length - 1].updateTime),
            fileInfoList: applyFile.fileList.map(item => {
              return {
                ...item,
                uid: item.id,
                name: item.trueName
              }
            })
          }
        }
        if (item.ownerType == '22_00018-102' && evidenceFile) {
          return {
            ...item,
            size: evidenceFile.fileList.length,
            fileNames: evidenceFile.fileList?.map(item => item.trueName).join(','),
            updateTime: $$.timeFormat(evidenceFile.fileList[evidenceFile.fileList.length - 1].updateTime),
            fileInfoList: evidenceFile.fileList.map(item => {
              return {
                ...item,
                uid: item.id,
                name: item.trueName
              }
            })
          }
        }
        return item
      })
      setTableData(newList)
    }
  }, [props.fileInfoList])
  //上传弹窗判断用哪种种图标
  const personIconType = (v) => {
    switch (v) {
      case '22_00018-101':
@@ -135,24 +216,34 @@
    }
  }
  //上传弹窗完成后的事件
  const handleUpload = () => {
    const newList = tableData.map(item => {
      if (item.ownerType == sourceType) {
        const data = fileMap[sourceType]
        console.log(data);
        return {
          ...item,
          size: data.length,
          fileNames: data.map(item => item.name).join(','),
          updateTime: $$.timeFormat(data[data.length - 1].response.data[0].updateTime)
          fileNames: data.map(item => item.trueName).join(','),
          updateTime: $$.timeFormat(data[data.length - 1].updateTime),
          fileInfoList: data.map(item => {
            return {
              ...item,
              name: item.trueName,
              uid: item.id,
            }
          }),
        }
      } else {
        return item
      }
    })
    setTableData(newList)
    setUpLoad(false);
    setUpLoadVisible(false);
  };
  //根据sourceType生成组件
  const formType = (type) => {
    if (type === '22_00018-101') {
      //申请材料
@@ -165,11 +256,21 @@
              }}
              field='file'
              label=''
              // editData={props.editData}
              editData={{
                file: fileInfoList
              }}
              handleDelFile={handleDelFile}
              onFileListChange={(v) => {
                let newList = v?.map(item => {
                  if (item.response) {
                    return item.response.data[0]
                  } else {
                    return item
                  }
                })
                setFileMap({
                  '22_00018-101': v
                  ...fileMap,
                  '22_00018-101': newList
                })
              }}
            />
@@ -187,22 +288,50 @@
              params={{
                action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${props.mainId}&&ownerId=${props.mainId}&ownerType=22_00018-102`,
              }}
              field='file1'
              field='file'
              label=''
              // editData={props.editData}
              editData={{
                file: fileInfoList
              }}
              handleDelFile={handleDelFile}
              onFileListChange={(v) => {
                let newList = v?.map(item => {
                  if (item.response) {
                    return item.response.data[0]
                  } else {
                    return item
                  }
                })
                setFileMap({
                  '22_00018-102': v
                  ...fileMap,
                  '22_00018-102': newList
                })
              }}
            />
            {fileMap[sourceType]?.length > 0 && <div style={{ position: 'absolute', top: '198px', left: '16px', color: '#86909C' }}>证据材料累计上传:<span style={{ color: '#1A6FB8' }}>{fileMap[sourceType]?.length}</span></div>}
          </Col>
        </>
      )
    }
  }
  //删除
  const handleDelete = (ids) => {
    Modal.confirm({
      title: '删除确认',
      content: '确认全部删除该材料?',
      onOk: async () => {
        const res = await deleteFileByIdApi({ ids })
        if (res.type) {
          $$.infoSuccess({ content: '删除成功!' });
        }
      },
    });
  }
  //下载
  const handleDownlod = async (ids) => {
    await downloadFile(`${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/down/batch`, { ids })
  }
  return (
@@ -214,14 +343,19 @@
        rowKey="ownerType"
        bordered={true}
        style={{ marginBottom: '65px' }}
        scroll={{ x: 1300 }}
      />
      <Modal
        style={{ width: '512px' }}
        visible={upload}
        onCancel={() => setUpLoad(false)}
        visible={uploadVisible}
        onCancel={() => setUpLoadVisible(false)}
        footer={null}
        title='上传材料'
        centered
        mountOnEnter={false}
        unmountOnExit={true}
        maskClosable={false}
        focusLock={false}
      >
        <div style={{ paddingTop: '8px' }}>
          <Row gutter={[30, 24]}>
@@ -271,7 +405,7 @@
        maskClosable={false}
      >
        <div style={{ marginTop: '-16px' }}>
          <NewFileCheck />
          <NewFileCheck menuList={tableData} sourceType={sourceType} />
        </div>
      </Modal>
    </Fragment>
gz-customerSystem/src/views/register/matterDetail/NewFileCheck.jsx
@@ -1,14 +1,42 @@
import React, { useState, useEffect, useRef } from 'react';
import React, { useState, useEffect, useRef, Fragment } from 'react';
import { Row, Col, Space } from 'antd';
import { Select, DatePicker, Form, Button } from '@arco-design/web-react';
import { Select, DatePicker, Form, Button, Menu } from '@arco-design/web-react';
import * as $$ from '@/utils/utility';
const FormItem = Form.Item;
const MenuItem = Menu.Item;
const SubMenu = Menu.SubMenu;
const appUrl = $$.appUrl;
const formItemLayout = {
    labelCol: {
        span: 8,
    },
    wrapperCol: {
        span: 16,
    },
};
const NewFileCheck = (props) => {
    const formRef = useRef()
    const formRef = useRef();
    const [fileUrl, setFileUrl] = useState('')
    const [itemData, setItemData] = useState(null)
    const peopleTypeMap = {
        1: '工作人员',
        2: '当事人'
    }
    useEffect(() => {
        console.log(props.menuList, props.sourceType);
    }, [])
    //点击菜单
    const clickItem = (data) => {
        console.log(data);
        setItemData(data)
        setFileUrl(`${appUrl.fileUrl}/${appUrl.sys}${data.showUrl}`)
    }
    return (
        <nav className="filesCheck-nav" style={{ borderRight: '1px solid transparent' }}>
@@ -17,8 +45,7 @@
                layout='horizontal'
                style={{ marginTop: '24px', marginBottom: '20px' }}
                scrollToFirstError={true}
                initialValues={{
                }}//默认值
                {...formItemLayout}
            >
                <Row gutter={24} style={{ marginRight: '0px' }}>
                    <Col span={7}>
@@ -79,17 +106,50 @@
                    <Col span={3}>
                        <Space>
                            <Button size="middle " type='primary'>查询</Button>
                            <Button size="middle ">查询</Button>
                            <Button size="middle ">重置</Button>
                        </Space>
                    </Col>
                </Row>
            </Form>
            <div style={{ display: 'flex' }}>
                <div style={{ width: '200px' }}>
            <div style={{ display: 'flex', height: '550px' }}>
                <div style={{ width: '256px' }}>
                    <Menu
                        style={{ width: '100%', height: '100%' }}
                    >
                        {props.menuList?.map(item => {
                            return <SubMenu
                                key={item.id}
                                title={item.ownerTypeName + `(${item.fileInfoList && item.fileInfoList.length || 0})`}
                            >
                                {item.fileInfoList?.map(res => {
                                    return <MenuItem key={res.id} onClick={() => { clickItem(res) }}>{res.trueName}</MenuItem>
                                })}
                            </SubMenu>
                        })}
                    </Menu>
                </div>
                <div style={{ flex: 1 }}>
                    {
                        itemData ? <Fragment>
                            <div style={{ background: '#e8f3ff', color: '#1A6FB8', padding: '5px 10px', marginBottom: '16px' }}>
                                <span>材料名称:{itemData.trueName}</span>&nbsp;&nbsp;|&nbsp;&nbsp;
                                <span>上传时间:{itemData.updateTime}</span>&nbsp;&nbsp;|&nbsp;&nbsp;
                                <span>上传人:{itemData.uploaderName} {itemData.uploaderType && <span>({peopleTypeMap[itemData.uploaderType]})</span>}</span>
                            </div>
                            <div style={{ width: '100%', height: '470px' }}>
                                {
                                    itemData.suffix === 'pdf' ?
                                        <embed src={fileUrl} type="application/pdf" width="100%" height="100%"></embed>
                                        :
                                        <img src={fileUrl} alt="" style={{ width: '100%', height: '100%' }} />
                                }
                            </div>
                        </Fragment> : <Fragment>
                            <div style={{ padding: '100px 0' }}>{$$.MyEmpty()}</div>
                        </Fragment>
                    }
                </div>
            </div>
        </nav>
gz-customerSystem/src/views/register/matterDetail/fileMessage.jsx
@@ -2,13 +2,17 @@
import NewPage from '@/components/NewPage';
import { Row, Col, Space } from 'antd';
import { Steps, Tabs, Typography, Rate, Button } from '@arco-design/web-react';
import { apply } from '@/assets/images';
import { apply,floating } from '@/assets/images';
import { result } from '@/assets/images/icon';
import * as $$ from '@/utils/utility';
import { ApplyDialog, AgentDialog, Respondent } from '../visit/component/previewTable';
import TableView from '../../../components/TableView';
import { register, fold, down, empty, link } from '@/assets/images';
import ProgressStep from '@/components/ProgressStep/VisitStep';
import { ApplyDialog, AgentDialog, Respondent, Company } from '../visit/component/previewTable';
import HandleRecord from './HandleRecord';
import { useParams } from 'react-router-dom';
import ApplyInfo from './ApplyInfo'
const Step = Steps.Step;
const TabPane = Tabs.TabPane;
@@ -21,15 +25,27 @@
  return $$.ax.request({ url: `caseEvaluate/getByCaseId?caseId=${caseId}`, type: 'get', service: 'mediate' });
}
function getCaseInfoApi(id) {
  return $$.ax.request({ url: 'caseInfo/getCaseInfo?id=' + id, type: 'get', service: 'mediate' });
}
function listFeedbackApi(id) {
  return $$.ax.request({ url: `caseFeedback/listFeedback?id=` + id, type: 'get', service: 'mediate' });
}
function getListCaseFlow(data) {
  return $$.ax.request({ url: `caseTask/listCaseFlow`, type: 'get', service: 'mediate', data });
}
const FileMessage = (props) => {
    const routeData = useParams();
  const [tabsActive, setTabsActive] = useState('1');
  const [current, setCurrent] = useState(7);
  const [grade, setGrade] = useState(0);
  const [caseInfo, setCaseInfo] = useState({})
  const [TransactResult, setTransactResult] = useState({})
  const [filesCheck, setFilesCheck] = useState(false);
  const [infoData, setInfoData] = useState({});
  const [tabsList, setTabList] = useState([
    {
      img: result,
@@ -38,13 +54,19 @@
      isNeedStep: true
    },
    {
      img: floating,
      label: '流转督办',
      key: '2',
    },
    {
      img: apply,
      label: '申请记录',
      key: '2',
      isNeedStep: true,//加上这个就有进度条
      key: '3',
    },
  ])
  const [selectedTab, setSelectedTab] = useState('1'); // 默认选中第一个 tab
  const [list, setList] = useState([])
  const [progressData, setProgressData] = useState({})
  const tabs = [
@@ -120,59 +142,29 @@
    console.log(res, 'resrs')
  }
  const applyDialog = [
    {
      trueName: '李四',
      perClassName: '高级',
      phone: '13700137000',
      sex: '女',
      certiTypeName: '护照',
      certiNo: 'G12345678',
      nationName: '满',
      addr: '上海市浦东新区某公寓2号楼2单元202室',
      placeAddr: '上海市黄浦区某路3号',
      extreme: '否',
      workUnit: '上海某金融公司',
      person: '/path/to/anotherPerson.jpg', // 这应该是图片的实际路径
      link: '/path/to/anotherLink.png',     // 这应该是链接图标的实际路径
  const getCaseInfo = async () => {
    const res = await getCaseInfoApi('24083010062110001')
    if (res.type) {
      setCaseInfo(res.data)
    }
    // 可以根据需要添加更多的对象来模拟更多条目的数据
  ];
  }
  const agentDialog = [
    {
      trueName: '王五',
      perClassName: '自然人',
      phone: '13600136000',
      sex: '男',
      certiTypeName: '身份证',
      certiNo: '110101199501012345',
      nationName: '汉',
      addr: '广州市天河区某大厦A座501室',
      placeAddr: '广州市越秀区某街4号',
      extreme: '否',
      workUnit: '广州某贸易公司',
      agentRelateName: '配偶',
      agentTypeName: '法定代理人',
      perTypeName: '成年人',
      person: '/path/to/person.jpg', // 应该是图片的实际路径
      link: '/path/to/link.png',     // 应该是链接图标的实际路径
    },
  ];
  const listFeedback = async (id) => {
    const res = await listFeedbackApi(id)
    if (res.type) {
      let data = res.data.caseFeedbackList
      setList(data)
    }
  }
  const respondent = [
    {
      orgaType: '广东好又多贸易有限公司',
      perClassName: '企业法人',
      phone: '020-12345678',
      address: '广州市天河区珠江新城花城大道66号',
      companyType: '有限责任公司',
      legalPerson: '江照月',
      creditCode: '914401011234567890',
      president: '广州市天河区珠江新城花城大道66号A座20层',
      link: '/path/to/link.png', // 应该是链接图标的实际路径
    },
  ];
  const getData = async () => {
    const res = await getListCaseFlow({
      caseId: routeData.caseId
    })
    if (res.type) {
      setProgressData(res.data)
    }
  }
  const fakeColumns = [
    {
@@ -350,9 +342,21 @@
  useEffect(() => {
    getByCaseId();
    getTransactResult();
    getCaseInfo();
    listFeedback('24083010062110001');
    getData()
  }, [])
  const applyData = caseInfo?.personList?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "自然人");
  const agentData = caseInfo?.personList?.filter(item => item.perTypeName === "申请方代理人");
  const company = caseInfo?.personList?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "非法人组织");
  const respondentData = caseInfo?.personList?.filter(item => item.perTypeName === "申请方当事人" && item.perClassName === "法人");
  const applyData1 = caseInfo?.personList?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "自然人");
  const agentData1 = caseInfo?.personList?.filter(item => item.perTypeName === "被申请方代理人");
  const company1 = caseInfo?.personList?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "非法人组织");
  const respondentData1 = caseInfo?.personList?.filter(item => item.perTypeName === "被申请方当事人" && item.perClassName === "法人");
@@ -399,22 +403,52 @@
                        <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>当事人信息</h4>
                      </Space>
                    </Col>
                    <div style={{ marginBottom: '8px' }}>申请方</div>
                    <div className="line-container" style={{ marginBottom: '20px' }}>
                      <div className="line left-line"></div>
                      <div className="line middle-line"></div>
                      <div className="line right-line"></div>
                    </div>
                    <ApplyDialog applyDialog={applyDialog} />
                    <AgentDialog agentDialog={agentDialog} />
                    {/* ApplyDialog 只有在 applyData 存在且不为空时才渲染 */}
                    {applyData && applyData.length > 0 ? (
                      <ApplyDialog applyDialog={applyData} />
                    ) : null}
                    {/* AgentDialog 只有在 agentData 存在且不为空时才渲染 */}
                    {agentData && agentData.length > 0 ? (
                      <AgentDialog agentDialog={agentData} />
                    ) : null}
                    {/* Respondent 只有在 respondentData 存在且不为空时才渲染 */}
                    {respondentData && respondentData.length > 0 ? (
                      <Respondent respondent={respondentData} />
                    ) : null}
                    {company && company.length > 0 ? (
                      <Company company={company} />
                    ) : null}
                    <div style={{ marginBottom: '8px' }}>被申请方</div>
                    <div className="line-container" style={{ marginBottom: '20px' }}>
                      <div className="line left-line"></div>
                      <div className="line middle-line"></div>
                      <div className="line right-line"></div>
                    </div>
                    <Respondent respondent={respondent} />
                    {applyData1 && applyData1.length > 0 ? (
                      <ApplyDialog applyDialog={applyData1} />
                    ) : null}
                    {agentData1 && agentData1.length > 0 ? (
                      <AgentDialog agentDialog={agentData1} />
                    ) : null}
                    {respondentData1 && respondentData1.length > 0 ? (
                      <Respondent respondent={respondentData1} />
                    ) : null}
                    {company1 && company1.length > 0 ? (
                      <Company company={company1} />
                    ) : null}
                    <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '4px' }}>
                      <Space size='small'>
                        <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h5>纠纷基本情况</h5>
@@ -423,68 +457,68 @@
                    <Row gutter={[16, 16]}>
                      <Col span={8}>
                        <div><div className="title-text">事项状态</div></div>
                        <div style={{ color: '#1A6FB8' }}>{infoData?.statusName || '-'}</div>
                        <div style={{ color: '#1A6FB8' }}>{caseInfo?.statusName || '-'}</div>
                      </Col>
                      <Col span={16}>
                        <div><div className="title-text">事项编号</div></div>
                        <div>{infoData?.caseRef || '-'}</div>
                        <div>{caseInfo?.caseRef || '-'}</div>
                      </Col>
                      {/*事项等级分为三级,颜色需要做判断*/}
                      <Col span={8}>
                        <div className="title"><div className="title-text">事项等级</div></div>
                        <div style={{ display: 'flex' }}><div style={{ backgroundColor: '#00B42A', marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{infoData.caseLevel || '-'}</div></div>级</div>
                        <div style={{ display: 'flex' }}><div style={{ backgroundColor: '#00B42A', marginRight: '4px', borderRadius: '4px' }}><div style={{ color: '#FFFFFF', padding: '0px 6px' }}>{caseInfo?.caseLevel || '-'}</div></div>级</div>
                      </Col>
                      <Col span={8}>
                        <div><div className="title-text">来访时间</div></div>
                        <div>{infoData.visitTime || '-'}</div>
                        <div>{caseInfo?.visitTime || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div ><div className="title-text">来访人数(人)</div></div>
                        <div>{infoData.visitPeopleNum || '-'}</div>
                        <div>{caseInfo?.visitPeopleNum || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div ><div className="title-text">纠纷类型</div></div>
                        <div>{infoData.caseType || '-'}</div>
                        <div>{caseInfo?.caseType || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div ><div className="title-text">纠纷发生时间</div></div>
                        <div>{infoData.occurTime || '-'}</div>
                        <div>{caseInfo?.occurTime || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div ><div className="title-text">纠纷发生地点</div></div>
                        <div>{infoData.addr || '-'}</div>
                        <div>{caseInfo?.addr || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div ><div className="title-text">问题属地</div></div>
                        <div>{infoData.questionName || '-'}</div>
                        <div>{caseInfo?.questionName || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div ><div className="title-text">涉及人数(人)</div></div>
                        <div>{infoData.peopleNum || '-'}</div>
                        <div>{caseInfo?.peopleNum || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div ><div className="title-text">涉及金额(元)</div></div>
                        <div>{$$.thousands(infoData.amount) || '-'}</div>
                        <div>{$$.thousands(caseInfo?.amount) || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div ><div className="title-text">事项来源</div></div>
                        <div>{infoData.canalName || '-'}</div>
                        <div>{caseInfo?.canalName || '-'}</div>
                      </Col>
                      <Col span={16}>
                        <div ><div className="title-text">来访形式</div></div>
                        <div>{infoData.visitWayName || '-'}</div>
                        <div>{caseInfo?.visitWayName || '-'}</div>
                      </Col>
                      <Col span={24}>
                        <div className="title"><div className="title-text">事项概况</div></div>
                        <div>{infoData.caseDes || '-'}</div>
                        <div>{caseInfo?.caseDes || '-'}</div>
                      </Col>
                      <Col span={24}>
                        <div className="title"><div className="title-text">事项申请</div></div>
                        <div>{infoData.caseClaim || '-'}</div>
                        <div>{caseInfo?.caseClaim || '-'}</div>
                      </Col>
                      <Col span={16}>
                        <div className="title"><div className="title-text">是否重大矛盾纠纷</div></div>
                        <div>{infoData.majorStatus === '0' ? '否' : '是'}</div>
                        <div>{caseInfo?.majorStatus === '0' ? '否' : '是'}</div>
                      </Col>
                    </Row>
                    <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '16px', marginTop: '20px' }}>
@@ -548,7 +582,9 @@
                    <div className='gap'></div>
                    <Col span={24} style={{ marginTop: '12px' }}>
                      <div style={{ color: 'rgb(134, 144, 156)' }}>办理记录</div>
                      <div>
                      <HandleRecord isReview={false} data={list} />
                      {/* <div>
                        {records.map(record => (
                          <div key={record.id} className='container-bottom-left-record'>
                            <div className='container-bottom-left-record-top'>
@@ -574,7 +610,7 @@
                            </div>
                          </div>
                        ))}
                      </div>
                      </div> */}
                    </Col>
                    <div className='gap'></div>
                    <div style={{ marginLeft: '-16px' }}>
@@ -668,14 +704,14 @@
                        <div className="title">
                          <div className="title-text">登记机构</div>
                        </div>
                        <div>天河区棠下街道综治中心</div>
                        <div>{caseInfo?.inputUnitName || '-'}</div>
                      </Col>
                      <Col span={8}>
                        <div className="title">
                          <div className="title-text">登记人</div>
                        </div>
                        <div>
                          李晓明
                          {caseInfo.inputUserName}
                          <img src={register} alt='' style={{ width: '14px', height: '14px', marginLeft: '8px', marginTop: '4px' }} />
                        </div>
                      </Col>
@@ -683,7 +719,7 @@
                        <div className="title">
                          <div className="title-text">登记时间</div>
                        </div>
                        <div>2024-7-8 10:00</div>
                        <div>{caseInfo?.visitTime || '-'}</div>
                      </Col>
                    </Row>
                  </div>
@@ -697,7 +733,10 @@
              }
              {
                tabsActive === '2' &&
                <></>
                <ProgressStep progressData={progressData} />
              }
              {tabsActive === '3' &&
                <ApplyInfo />
              }
            </TabPane>
          })}
gz-customerSystem/src/views/register/matterDetail/index.jsx
@@ -1,131 +1,28 @@
import React, { useState, useEffect } from 'react';
import { Row, Col, Space, Button, Switch } from 'antd';
import PersonCard from '@/components/personCard';
import TableView from '@/components/TableView';
import * as $$ from '@/utils/utility';
import { Typography, Steps } from '@arco-design/web-react';
import { question, register, Matter, transfer } from '@/assets/images'
import { Typography } from '@arco-design/web-react';
import { question, register } from '@/assets/images';
import FileTable from "./FileTable";
function getCaseInfoApi(id) {
  return $$.ax.request({ url: 'caseInfo/getCaseInfo?id=' + id, type: 'get', service: 'mediate' });
}
function listIdTypeInfoApi(data) {
  return $$.ax.request({ url: `fileInfo/listIdTypeInfo`, type: 'post', service: 'sys', data });
}
export default function MatterDetail(props) {
  const [fakeData, setFakeData] = useState([]);//当事人信息数据
  const [upload, setUpLoad] = useState(false);
  const [filesCheck, setFilesCheck] = useState(false);
  const [infoData, setInfoData] = useState({});
  const fakeColumns = [
    {
      title: '序号',
      dataIndex: 'caseNo',
      key: 'caseNo',
      width: 100,
      render: (text, record, index) => <span>{index + 1}</span>,
    },
    {
      title: '材料类型',
      dataIndex: 'ownerTypeName',
      key: 'ownerTypeName',
      width: 60,
    },
    {
      title: '材料数量',
      dataIndex: 'size',
      key: 'size',
      width: 180,
      render: (text) => <span>{text}份</span>,
    },
    {
      title: '材料名称',
      dataIndex: 'fileNames',
      key: 'fileNames',
      width: 180,
    },
    {
      title: '最新上传时间',
      dataIndex: 'fileNames',
      key: 'fileNames',
      width: 180,
    },
    {
      title: '操作',
      dataIndex: 'perClassName',
      key: 'perClassName',
      width: 200,
      render: (text) => (
        <div style={{ display: 'flex', color: '#1A6FB8', gap: '16px' }}>
          <div onClick={() => setFilesCheck(true)}>查看</div>
          <div>删除</div>
          <div>下载</div>
          <div onClick={() => setUpLoad(true)}>上传</div>
        </div>
      )
    },
    // 更多列配置...
  ];
  const [fakeData1, setFakeData1] = useState([
    {
      ownerTyp: "22_00018-101",
      ownerTypeName: "申请材料",
      size: '0',
      ownerId: null,
      ownerName: null,
      perType: null,
      agentStatus: null,
      fileNames: "-",
      fileList: []
    },
    {
      ownerType: "22_00018-102",
      ownerTypeName: "证据材料",
      size: '0',
      ownerId: null,
      ownerName: null,
      perType: null,
      agentStatus: null,
      fileNames: "-",
      fileList: []
    },
  ]);
  const listIdTypeInfo = async () => {
    const res = await listIdTypeInfoApi({
      mainId: props.id, //事项ID
      ownerIdList: [props.id], //具体所属编号
      typeList: []
    })
    if (res.type) {
      let data = res.data?.[0]?.fileList
      if (res.data.length > 0) {
        setFakeData1(data)
      }
    }
  }
  useEffect(() => {
    console.log(props);
    getCaseInfo(props.id)
    listIdTypeInfo()
  }, [props.id])
    getCaseInfo(props.caseId)
  }, [props.caseId])
  //获取id
  const getCaseInfo = async (id) => {
    const res = await getCaseInfoApi('24083010062110001')
    const res = await getCaseInfoApi(id)
    if (res.type) {
      let data = res.data
      const partyList = data.personList.concat(data.agentList)
@@ -261,15 +158,7 @@
              <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h5>事件材料</h5>
            </Space>
          </Col>
          <TableView
            columns={fakeColumns}
            dataSource={fakeData1}
            size="small"
            rowKey="id"
            bordered={true}
            style={{ marginBottom: '20px' }}
          />
          <FileTable mainId={props.caseId} fileInfoList={infoData.fileInfoList} isReview={true}/>
          <Col span={24} className='title'>
            <Space size='small'>
              <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h5>登记信息</h5>
gz-customerSystem/src/views/register/visit/component/previewTable.jsx
@@ -7,7 +7,7 @@
    <>
      {
        applyDialog?.map((item, index) => (
          <table border="1" align="center" cellpadding="6" className="table">
          <table border="1" align="center" cellpadding="6" className="table" key={item.id}>
            <tr>
              <th bgcolor="#F7F8FA" className="table-title" width="120">姓名</th>
              <td width='380'><div style={{ display: 'flex' }}><div>{item.trueName || '-'}</div><div className="title-personRemark">自然人</div></div></td>
@@ -65,7 +65,7 @@
  return (
    <>
      {agentDialog?.map((item, index) => (
        <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }}>
        <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }} key={item.id}>
          <tr>
            <th bgcolor="#F7F8FA" className="table-title" width="120">姓名</th>
            <td width='380'><div style={{ display: 'flex' }}><div>{item.trueName || '-'}</div><div className="title-personRemark">代理人</div></div></td>
@@ -129,7 +129,7 @@
  return (
    <>
      {respondent?.map((item, index) => (
        <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }}>
        <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }} key={item.id}>
          <tr>
            <th bgcolor="#F7F8FA" className="table-title" width="120">企业名称</th>
            <td width='380'><div style={{ display: 'flex' }}><div>{item.trueName}</div><div className="title-personRemark">{item.perClassName}</div></div></td>
@@ -175,7 +175,7 @@
  return (
    <>
      {company?.map((item, index) => (
        <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }}>
        <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }} key={item.id}>
          <tr>
            <th bgcolor="#F7F8FA" className="table-title" width="120">机构名称</th>
            <td width='380'><div style={{ display: 'flex' }}><div>{item.trueName}</div><div className="title-personRemark">{item.perClassName}</div></div></td>
gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx
@@ -390,7 +390,7 @@
          <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>事件材料</h4>
        </Space>
      </Col>
      <FileTable mainId={props.mainId} fileInfoList={props.fileInfoList}/>
      <FileTable mainId={props.mainId} fileInfoList={props.fileInfoList} isReview={false}/>
      <DocumentScanner
        visible={scanFile}
gz-wxparty/api/api.js
@@ -1,37 +1,46 @@
const url = {
    // === 测试环境 ===
    // debug: 'http://47mhcb.natappfree.cc/',
    // img: 'https://gz.hugeinfo.com.cn/dyh/wx414ae04ac3f10b4e/images/',
    // assets: 'https://gz.hugeinfo.com.cn/dyh/wx414ae04ac3f10b4e/js/',
  // === 测试环境 ===
  // debug: 'http://47mhcb.natappfree.cc/',
  // img: 'https://gz.hugeinfo.com.cn/dyh/wx414ae04ac3f10b4e/images/',
  // assets: 'https://gz.hugeinfo.com.cn/dyh/wx414ae04ac3f10b4e/js/',
  // txt: 'https://gz.hugeinfo.com.cn/dyh/wx414ae04ac3f10b4e/txt/',
      // === 测试环境 ===
    // debug: 'https://gz.hugeinfo.com.cn/',
    debug: 'http://n3uvrw.natappfree.cc/',
      img: 'http://120.79.193.119:9103/wx414ae04ac3f10b4e/images/',
      assets: 'http://120.79.193.119:9103/wx414ae04ac3f10b4e/js/',
    txt: 'http://120.79.193.119:9103/wx414ae04ac3f10b4e/txt/',
  // === 测试环境 ===
  // debug: 'https://gz.hugeinfo.com.cn/',
  debug: 'http://8pxgs3.natappfree.cc/',
  img: 'http://120.79.193.119:9103/wx414ae04ac3f10b4e/images/',
  assets: 'http://120.79.193.119:9103/wx414ae04ac3f10b4e/js/',
  txt: 'http://120.79.193.119:9103/wx414ae04ac3f10b4e/txt/',
  // === 正式环境 ===
    // web: 'https://zfw-dyh.by.gov.cn/',
    // img: 'https://zfw-dyh.by.gov.cn/wechat/images/',
    // assets: 'https://zfw-dyh.by.gov.cn/wechat/js/',
    // txt: 'https://zfw-dyh.by.gov.cn/wechat/txt/',
  web: 'https://zfw-dyh.by.gov.cn/',
  img: 'https://zfw-dyh.by.gov.cn/gz/wechat/images/',
  assets: 'https://zfw-dyh.by.gov.cn/gz/wechat/js/',
  txt: 'https://zfw-dyh.by.gov.cn/gz/wechat/txt/',
    // 文件查看url 后面接附件编号
    fileShowUrl: 'dyh-sys/api/v1/fileInfo/show/',
    // 文件下载url 后面接附件编号
    fileDownUrl: 'dyh-sys/api/v1/fileInfo/down/',
    // 不同服务接口type
    mediate: 'dyh-mediate', // dyh-mediate
    cust: 'dyh-cust', // dyh-cust
    oper: 'dyh-oper', // dyh-oper
    sys: 'dyh-sys', // dyh-sys
    disp: 'dyh-disp', //dyh-disp
  // 文件查看url 后面接附件编号
  fileShowUrl: 'gzdyh-sys/api/v1/fileInfo/show/',
  // 文件下载url 后面接附件编号
  fileDownUrl: 'gzdyh-sys/api/v1/fileInfo/down/',
  // 不同服务接口type
  // mediate: 'dyh-mediate', // dyh-mediate
  // cust: 'dyh-cust', // dyh-cust
  // oper: 'dyh-oper', // dyh-oper
  // sys: 'dyh-sys', // dyh-sys
  // disp: 'dyh-disp', //dyh-disp
  // utils: 'dyh-utils', //dyh-utils
  // 正式环境
  mediate: 'gzdyh-mediate', // gzdyh-mediate
  cust: 'gzdyh-cust', // gzdyh-cust
  oper: 'gzdyh-oper', // gzdyh-oper
  sys: 'gzdyh-sys', // gzdyh-sys
  disp: 'gzdyh-disp', //gzdyh-disp
  utils: 'gzdyh-utils', //gzdyh-utils
};
module.exports = {
    url,
};
  url,
};
gz-wxparty/app.json
@@ -8,8 +8,12 @@
    "pages/addAddress/index",
    "pages/speechToText/index",
    "pages/addPerson/index",
    "pages/DetailPerson/index",
    "pages/AIAide/index",
    "pages/AIAideDetail/index",
    "pages/myRegisterList/index",
    "pages/myRegisterFlow/index",
    "pages/myRegisterDetail/index",
    "pages/autograph/index",
    "pages/course/index",
    "pages/orderConfirm/index",
gz-wxparty/components/personal-data-dom/index.js
@@ -5,194 +5,161 @@
// 获取信息
function getUserInfoApi() {
    return $$.request({
        url: 'paUser/getUserInfo',
        type: 'get',
        service: 'cust'
    });
  return $$.request({
    url: 'paUser/getUserInfo',
    type: 'get',
    service: 'cust'
  });
}
Component({
    /**
     * 组件的属性列表
     * submitData: object form数据
     * type: string 判断当前使用组件的页面realNameAuthentication为实名认证页面
     * isCheck: boolean 判断是否只读不可修改
     * isImproveData: boolean 判断是否是完善资料,则不显示证件信息
     */
    properties: {
        submitData: {
            type: Object,
            value: {},
        },
        type: {
            type: String,
            value: '',
        },
        isCheck: {
            type: Boolean,
            value: false,
        },
        isImproveData: {
            type: Boolean,
            value: false,
        },
  /**
   * 组件的属性列表
   * submitData: object form数据
   * type: string 判断当前使用组件的页面realNameAuthentication为实名认证页面
   * isCheck: boolean 判断是否只读不可修改
   * isImproveData: boolean 判断是否是完善资料,则不显示证件信息
   */
  properties: {
    submitData: {
      type: Object,
      value: {},
    },
    /**
     * 组件的初始数据
     */
    select: {}, // 下拉框资源
    location: [],
    data: {},
    pageLifetimes: {
        show() {
            $$.showLoading();
            this._getSelectOptionData();
            this._getLocationData();
            this._getUserInfo();
        },
    type: {
      type: String,
      value: '',
    },
    /**
     * 组件的方法列表
     */
    methods: {
        //
        _handleChange(e) {
            let key = e.currentTarget.dataset.key;
            if (key === 'clearidcard') {
                this.triggerEvent('handleChange', {
                    key: 'idcard',
                    value: ''
                });
            } else {
                this.triggerEvent('handleChange', {
                    key,
                    value: e.detail
                });
            }
        },
        // 展示弹出层
        _handleShowPopup(e) {
            if (this.data.isCheck) {
                return false;
            }
            let type = e.currentTarget.dataset.type;
            let title = e.currentTarget.dataset.title;
            let selectData = [];
            if (type === 'location') {
                let selectOption = JSON.parse(JSON.stringify(this.location));
                let indexArr = $$.getLocationIndex(selectOption, this.data.submitData);
                selectData = [{
                        values: selectOption,
                        defaultIndex: indexArr[0]
                    },
                    {
                        values: selectOption[indexArr[0]].children,
                        defaultIndex: indexArr[1]
                    },
                    {
                        values: selectOption[indexArr[0]].children[indexArr[1]].children || [],
                        defaultIndex: indexArr[2]
                    },
                    {
                        values: selectOption[indexArr[0]].children[indexArr[1]].children[indexArr[2]].children || [],
                        defaultIndex: indexArr[3]
                    },
                ];
                selectData.forEach((x) => {
                    x.values.forEach((y) => {
                        delete y.children;
                    });
                });
            } else {
                let selectOption = this.select[type];
                selectData = selectOption;
            }
            this.triggerEvent('handleShowPopup', {
                visible: true,
                title: title,
                type: type,
                selectData: selectData,
            });
        },
        // 获取手机号码
        _handleGetPhoneNumber(e) {
          console.log('eeeee',e);
            this.triggerEvent('handleGetPhoneNumber', e.detail.code);
        },
        // 获取个人信息
        async _getUserInfo() {
            console.log('个人信息')
            console.log(app.globalData.access_token, 'app.globalData.access_token1111111')
            // const res = await getUserInfoApi();
            // $$.hideLoading();
            // if (res.type) {
            //     this.triggerEvent('getUserInfo', res.data);
            // }
            const res = await getUserInfoApi();
            $$.hideLoading();
            if (res.type) {
                if(res.data.trueName !== null)
                this.triggerEvent('getUserInfo', res.data);
            }
            if (app.globalData.access_token && res.data.trueName === null) {
                let actoken = app.globalData.access_token;
                wx.request({
                    url: 'https://xcx.pinganbaiyun.cn/p_060_cs_intf/api_001/sv_002_get_paby_login_info', //仅为示例,并非真实的接口地址
                    data: {
                        "access_token": '测试token',
                        "app_id": "测试",
                        "secret": "测试"
                    },
                    method: 'post',
                    success: (res1) => {
                        $$.hideLoading();
                        this.triggerEvent('getUserInfo', {
                            ...res1.data[0],
                            trueName: res1.data[0].XM,
                            idcard: res1.data[0].ZJHM,
                            mobile: res1.data[0].LXDH
                        });
                    }
                })
            }
        },
        // 请求下拉框资源
        async _getSelectOptionData() {
            const res = await $$.commonRequest({
                url: `${$$.url.assets}selectOption.json`,
                type: 'get'
            });
            if (res) {
                this.select = {
                    cardType: [],
                    sex: [],
                };
                this.select.cardType = res.data.cardType || [];
                this.select.sex = res.data.sex || [];
            }
        },
        // 获取省市区等地理资源
        async _getLocationData() {
            $$.showLoading();
            const res = await $$.commonRequest({
                url: `${$$.url.assets}locationSelect.json`,
                type: 'get'
            });
            $$.hideLoading();
            if (res) {
                let location = [];
                $$.province.forEach((x) => {
                    location.push(res[x][0]);
                });
                this.location = location;
            }
        },
    isCheck: {
      type: Boolean,
      value: false,
    },
    isImproveData: {
      type: Boolean,
      value: false,
    },
  },
  /**
   * 组件的初始数据
   */
  select: {}, // 下拉框资源
  location: [],
  data: {},
  pageLifetimes: {
    show() {
      $$.showLoading();
      this._getSelectOptionData();
      this._getLocationData();
      this._getUserInfo();
    },
  },
  /**
   * 组件的方法列表
   */
  methods: {
    //
    _handleChange(e) {
      let key = e.currentTarget.dataset.key;
      if (key === 'clearidcard') {
        this.triggerEvent('handleChange', {
          key: 'idcard',
          value: ''
        });
      } else {
        this.triggerEvent('handleChange', {
          key,
          value: e.detail
        });
      }
    },
    // 展示弹出层
    _handleShowPopup(e) {
      if (this.data.isCheck) {
        return false;
      }
      let type = e.currentTarget.dataset.type;
      let title = e.currentTarget.dataset.title;
      let selectData = [];
      if (type === 'location') {
        let selectOption = JSON.parse(JSON.stringify(this.location));
        let indexArr = $$.getLocationIndex(selectOption, this.data.submitData);
        selectData = [{
            values: selectOption,
            defaultIndex: indexArr[0]
          },
          {
            values: selectOption[indexArr[0]].children,
            defaultIndex: indexArr[1]
          },
          {
            values: selectOption[indexArr[0]].children[indexArr[1]].children || [],
            defaultIndex: indexArr[2]
          },
        ];
        selectData.forEach((x) => {
          x.values.forEach((y) => {
            delete y.children;
          });
        });
      } else {
        let selectOption = this.select[type];
        selectData = selectOption;
      }
      this.triggerEvent('handleShowPopup', {
        visible: true,
        title: title,
        type: type,
        selectData: selectData,
      });
    },
    // 获取手机号码
    _handleGetPhoneNumber(e) {
      console.log('eeeee', e);
      this.triggerEvent('handleGetPhoneNumber', e.detail.code);
    },
    // 获取个人信息
    async _getUserInfo() {
      console.log('个人信息')
      console.log(app.globalData.access_token, 'app.globalData.access_token1111111')
      const res = await getUserInfoApi();
      $$.hideLoading();
      if (res.type) {
        if (res.data.trueName !== null)
          this.triggerEvent('getUserInfo', res.data);
      }
    },
    // 请求下拉框资源
    async _getSelectOptionData() {
      const res = await $$.commonRequest({
        url: `${$$.url.assets}selectOption.json`,
        type: 'get'
      });
      if (res) {
        this.select = {
          cardType: [],
          sex: [],
        };
        this.select.cardType = res.data.cardType || [];
        this.select.sex = res.data.sex || [];
      }
    },
    // 获取省市区等地理资源
    async _getLocationData() {
      $$.showLoading();
      const res = await $$.commonRequest({
        url: `${$$.url.assets}locationSelect.json`,
        type: 'get'
      });
      $$.hideLoading();
      if (res) {
        let location = [];
        $$.province.forEach((x) => {
          location.push(res[x][0]);
        });
        this.location = location;
      }
    },
  },
});
gz-wxparty/components/personal-data-dom/index.wxml
@@ -66,7 +66,7 @@
        data-type="location"
        is-link="{{ !isCheck }}"
        label="居住地"
        placeholder="省/市/区(县)/街道"
        placeholder="市/区(县)/街道"
        readonly
        value="{{ submitData.prov ? wxs.showLocation(submitData) : '' }}"
    />
gz-wxparty/components/steps/index.wxml
@@ -12,7 +12,7 @@
          <van-icon name="{{ imgUrl }}steps-arrow.png" size="14" />
        </block>
        <block wx:else>
          <van-icon name="{{ imgUrl }}steps-arrow-active.png" size="14" />
          <van-icon custom-style="font-weight:600" name="arrow" size="14" />
        </block>
      </view>
    </view>
gz-wxparty/pages/AIAide/index.js
New file
@@ -0,0 +1,116 @@
// pages/AIAide/index.js
const $$ = require('../../utils/util');
const app = getApp();
function getawApi(submitData) {
  return $$.request({
    url: 'case-law/get-law',
    type: 'post',
    ai: true,
    submitData,
    service: 'mediate',
  });
}
// 获取案例
function getCaseApi(submitData) {
  return $$.request({
    url: 'case-law/get-case',
    type: 'post',
    ai: true,
    submitData,
    service: 'mediate',
  });
}
Page({
  /**
   * 页面的初始数据
   */
  data: {
    imgUrl: $$.url.img,
    AIData: [], //法条
    caseData: [], //案例
  },
  async getaw(data) {
    let newData = {
      caseDes: data.caseDes,
      caseClaim: data.caseClaim,
      caseId: data.caseId,
    }
    $$.showLoading();
    const res = await getawApi(newData);
    $$.hideLoading();
    if (res.type) {
      let nowData = res.data || []
      this.setData({
        AIData: nowData.map(i => ({
          ...i,
          show: false
        }))
      })
    }
  },
  // 案例
  async getCase(data) {
    let newData = {
      caseDes: data.caseDes,
      caseClaim: data.caseClaim,
      caseId: data.caseId,
    }
    $$.showLoading();
    const res = await getCaseApi(newData);
    $$.hideLoading();
    if (res.type) {
      this.setData({
        caseData: res.data || []
      })
    }
  },
  // 打开折叠法条
  lawClick(e) {
    let item = e.currentTarget.dataset.item;
    let index = e.currentTarget.dataset.index;
    this.setData({
      AIData: this.data.AIData.map((i, idx) => ({
        ...i,
        show: idx === index ? i.show ? false : true : false,
      }))
    })
  },
  // 跳转案例详情
  caseClick(e) {
    let url = e.currentTarget.dataset.url;
    let caseId = e.currentTarget.dataset.caseid;
    let caseType = e.currentTarget.dataset.casetype;
    wx.navigateTo({
      url: url + '?caseId=' + caseId + '&type=' + caseType,
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('options', options);
    let {
      caseDes,
      caseClaim,
      caseId,
    } = options;
    this.getaw({
      caseDes,
      caseClaim,
      caseId,
    })
    this.getCase({
      caseDes,
      caseClaim,
      caseId,
    })
  },
})
gz-wxparty/pages/AIAide/index.json
New file
@@ -0,0 +1,4 @@
{
  "navigationBarTitleText": "解纷助手",
  "usingComponents": {}
}
gz-wxparty/pages/AIAide/index.wxml
New file
@@ -0,0 +1,50 @@
<!--pages/AIAide/index.wxml-->
<wxs module="wxs" src="../../utils/wxs/util.wxs" />
<view class="card">
  <view class="card_main">
    <block wx:if="{{caseData.length>0}}">
      <view class="caseList_head">
        <van-icon size="22" name="{{imgUrl}}AIAide_1.png" />为您推荐与申请相似的典型案例({{caseData.length}})
      </view>
      <view class="caseList" bindtap="caseClick" data-caseId="{{item.caseId}}" data-caseType="{{item.caseType}}" data-url="../../pages/AIAideDetail/index" wx:for="{{caseData}}" wx:key="index">
        <view class="caseList_flex">
          <text class="ellipsis">{{item.caseName}}</text>
          <view class="cell-arrow">
            <van-icon color="#1A6FB8" size="14" name="arrow" />
          </view>
        </view>
        <view class="caseList_title">相似度:{{'-'}}% | 发生地:广东省 广州市</view>
      </view>
    </block>
    <block wx:if="{{AIData.length>0}}">
      <view class="line"></view>
      <view class="caseList_head">
        <van-icon size="22" name="{{imgUrl}}AIAide_2.png" />为您推荐与申请相关的专业法条({{AIData.length}})
      </view>
      <view class="caseList" wx:for="{{AIData}}" wx:key="index">
        <view bindtap="lawClick" data-item="{{item}}" data-index="{{index}}" class="caseList_flex">
          <text class="ellipsis">《{{item.lawTitle}}》{{item.lawIndex}}</text>
          <view wx:if="{{item.show}}" class="cell-arrow">
            <van-icon color="#1A6FB8" size="14" name="arrow-down" />
          </view>
          <view wx:else class="cell-arrow">
            <van-icon color="#1A6FB8" size="14" name="arrow-up" />
          </view>
        </view>
        <view wx:if="{{item.show}}" class="show-line">
        </view>
        <view wx:if="{{item.show}}" class="show-Law">
          {{item.lawDesc}}
        </view>
      </view>
      <view class="assess">
        <van-icon size="18" name="{{imgUrl}}AIAide_3.png" />
        <van-icon size="18" name="{{imgUrl}}AIAide_4.png" />
      </view>
    </block>
    <view wx:if="{{caseData.length}}" class="flex_end">以上内容均由人工智能模型生成,其生成内容的准确性和完整性无法保证,不代表我们的态度或观点</view>
  </view>
</view>
gz-wxparty/pages/AIAide/index.wxss
New file
@@ -0,0 +1,90 @@
/* pages/AIAide/index.wxss */
.card {
  padding: 24rpx;
  height: 100%;
  background-color: #fff;
  position: relative;
}
.card_main {
  background-color: #F6F7FB;
  border-radius: 8px;
}
.flex_end {
  /* position: fixed;
  bottom: 40rpx; */
  color: rgba(23, 26, 29, 0.24);
  font-size: 28rpx;
  /* padding: 0 52rpx; */
  text-align: center;
  padding: 24rpx 0;
}
.caseList {
  border-radius: 4px;
  background-color: #fff;
  padding: 24rpx;
  margin: 0 24rpx 16rpx 24rpx;
}
.caseList_flex {
  display: flex;
  justify-content: space-between;
  margin-bottom: 8rpx;
}
.cell-arrow {
  width: 16px;
  height: 16px;
  background: #f6f7fb;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 6rpx;
}
.caseList_title {
  color: rgba(23, 26, 29, 0.60);
  font-size: 24rpx;
  line-height: 40rpx;
}
.caseList_head {
  display: flex;
  gap: 8rpx;
  padding: 24rpx 24rpx;
  margin-top: 24rpx;
}
.line {
  border: 1px dashed #e5e6eb;
  margin: 32rpx 24rpx 0;
}
.assess {
  display: flex;
  gap: 32rpx;
  justify-content: flex-end;
  padding: 12rpx 24rpx 32rpx;
}
.ellipsis {
  overflow: hidden;
  /* 确保超出容器的文本会被裁剪 */
  white-space: nowrap;
  /* 保证文本在一行内显示 */
  text-overflow: ellipsis;
  /* 使用省略号表示文本超出 */
}
.show-line {
  margin: 24rpx 0;
  border-top: 1px solid #F0F0F0;
}
.show-Law {
  color: var(--main-color);
}
gz-wxparty/pages/AIAideDetail/index.js
New file
@@ -0,0 +1,93 @@
// pages/AIAideDetail/index.js
const $$ = require('../../utils/util');
const app = getApp();
function getCaseDetail(submitData) {
  return $$.request({
    url: 'case-law/get-case-detail',
    type: 'get',
    ai: true,
    submitData,
    service: 'mediate',
  });
}
Page({
  /**
   * 页面的初始数据
   */
  data: {
    data: {}
  },
  async getaw(data) {
    $$.showLoading();
    const res = await getCaseDetail(data);
    $$.hideLoading();
    if (res.type) {
      this.setData({
        data: res.data || {}
      })
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    let nowData = {
      ...options
    }
    this.getaw(nowData)
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
  }
})
gz-wxparty/pages/AIAideDetail/index.json
New file
@@ -0,0 +1,4 @@
{
  "navigationBarTitleText": "典型案例",
  "usingComponents": {}
}
gz-wxparty/pages/AIAideDetail/index.wxml
New file
@@ -0,0 +1,17 @@
<!--pages/AIAideDetail/index.wxml-->
<view class="title">{{data.caseTitle||'-'}}</view>
<view class="line"></view>
<view class="card">
  <view class="subtitle">【案件描述】</view>
  <view class="text">
    {{data.caseDesc||'-'}}
  </view>
  <view class="subtitle">【和解协议】</view>
  <view class="text">
    {{data.agreeContent||'-'}}
  </view>
  <view class="subtitle">【立案依据】</view>
  <view class="text">
    {{data.legalBasis||'-'}}
  </view>
</view>
gz-wxparty/pages/AIAideDetail/index.wxss
New file
@@ -0,0 +1,25 @@
/* pages/AIAideDetail/index.wxss */
.card {
  padding: 24rpx;
}
.title {
  text-align: center;
  padding: 24rpx;
  font-size: 34rpx;
  line-height: 50rpx;
  font-weight: 600;
}
.line {
  border: 1px dashed #e5e6eb;
  margin: 0 24rpx 24rpx 24rpx;
}
.subtitle {
  color: var(--main-color);
}
.text {
  padding-bottom: 24rpx;
}
gz-wxparty/pages/DetailPerson/index.js
New file
@@ -0,0 +1,79 @@
// pages/DetailPerson/index.js
const $$ = require('../../utils/util');
// 详情接口
function getByIdApi(param) {
  return $$.request({
    url: 'casePerson/getById',
    type: 'get',
    submitData: param || {},
    service: 'mediate'
  })
}
function getByIdAgentApi(param) {
  return $$.request({
    url: 'caseAgent/getById',
    type: 'get',
    submitData: param || {},
    service: 'mediate'
  })
}
Page({
  /**
   * 页面的初始数据
   */
  data: {
    data: {}
  },
  //获取申请人详情
  async getById(id) {
    $$.showLoading();
    const res = await getByIdApi({
      id
    });
    $$.hideLoading();
    if (res.type) {
      let data = res.data || {};
      this.setData({
        data
      });
    }
  },
  //获取被申请人详情
  async getagenById(id) {
    $$.showLoading();
    const res = await getByIdAgentApi({
      id
    });
    $$.hideLoading();
    if (res.type) {
      let data = res.data || {};
      this.setData({
        data
      });
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    let id = options.id;
    let perType = options.perType;
    // 15_020008-1申请方  24_00006-1 申请方代理人 15_020008-2被申请方  24_00006-2 被申请方代理人
    if (perType === '15_020008-1' || perType === '15_020008-2') {
      this.getById(id)
    }
    if (perType === '24_00006-1' || perType === '24_00006-2') {
      this.getagenById(id)
    }
  },
})
gz-wxparty/pages/DetailPerson/index.json
New file
@@ -0,0 +1,4 @@
{
  "navigationBarTitleText": "当事人信息",
  "usingComponents": {}
}
gz-wxparty/pages/DetailPerson/index.wxml
New file
@@ -0,0 +1,43 @@
<!--pages/DetailPerson/index.wxml-->
<view class="card">
  <view class="cell3">
    <view class="cell-title-placeholder">人员类型</view>
    <view>{{ data.perTypeName || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">姓名</view>
    <view>{{ data.trueName || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">联系方式</view>
    <view>{{ data.mobile || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">证件类型</view>
    <view>{{ data.certiTypeName || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">证件号码</view>
    <view>{{ data.certiNo || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">联系地址</view>
    <view>{{ data.addr || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">户籍地址</view>
    <view>{{ data.placeAddr || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">工作单位</view>
    <view>{{ data.workUnit || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">民族</view>
    <view>{{ data.nationName || '-' }}</view>
  </view>
  <view class="cell3">
    <view class="cell-title-placeholder">性别</view>
    <view>{{ data.sexName || '-' }}</view>
  </view>
</view>
gz-wxparty/pages/DetailPerson/index.wxss
New file
@@ -0,0 +1,16 @@
/* pages/DetailPerson/index.wxss */
.card {
  background-color: #fff;
  padding: 24rpx;
}
.cell3 {
  margin-bottom: 16rpx;
}
.cell-title-placeholder {
  font-size: 28rpx;
  line-height: 44rpx;
  color: rgba(0, 0, 0, 0.5);
}
gz-wxparty/pages/addPerson/index.wxss
@@ -19,6 +19,11 @@
.cell-item-select {}
.addPerson-main {
  display: flex;
  flex-direction: column;
}
.cell-idCard {
  color: var(--main-color);
  display: flex;
gz-wxparty/pages/homePage/index.js
@@ -379,14 +379,10 @@
        }
      },
    });
    let agreement = wx.getStorageSync('agreement');
    // 获取弹窗信息提醒
    if (app.globalData.token) {
      if (!agreement) {
        this.getAgreement();
        return;
      }
      if (!$$.userTest('realName', 'bottom')) {
        this.setData({
          popupMsg: [{
gz-wxparty/pages/homePage/index.wxml
@@ -22,20 +22,26 @@
      <view class="main_title">服务申请</view>
      <view class="flex">
        <view bindtap="handleNavigateTo" data-url="../../pages/register/index" data-type="register" class="flex_1 flex_blue">
          <view class="main_subTitle">反映诉求</view>
          <view>轻松来访</view>
          <view>
            <view class="main_subTitle">反映诉求</view>
            <!-- <view>轻松来访</view> -->
          </view>
          <image class="home-image" src="{{imgUrl}}home_3.png" mode="" />
        </view>
        <view bindtap="handleNavigateTo" data-url="../../pages/myRegisterList/index" data-type="register" class="flex_1 flex_orange">
          <view class="main_subTitle">我的申请</view>
          <view>申请进度查询</view>
          <view>
            <view class="main_subTitle">进度查询</view>
            <!-- <view>申请进度查询</view> -->
          </view>
          <image class="home-image" src="{{imgUrl}}home_4.png" mode="" />
        </view>
      </view>
      <view class="flex marginTop_12">
      <!-- <view class="flex marginTop_12">
        <view class="flex_1 flex_green">
          <view class="main_subTitle">事项咨询</view>
          <view>解决您身边的问题</view>
        </view>
      </view>
      </view> -->
    </view>
    <!-- 化解资源 -->
    <view>
@@ -62,8 +68,9 @@
    <view>
      <view class="flex_dt">
        <view class="main_title">咨询动态</view>
        <view bindtap="handleGetMore" data-type="newMsg" wx:if="{{ newMessageMore }}" class=" flex_dt_more">查看更多
          <image class="flex_dt_more_img" src="./../../img/right.png" />
        <view bindtap="handleGetMore" data-type="newMsg" wx:if="{{ newMessageMore }}" class=" flex_dt_more">
          <text>查看更多</text>
          <van-icon name="arrow" size="16" />
        </view>
      </view>
      <view class="dt_card" bindtap="goSeeMessage" wx:for="{{ newMessage }}" style="margin-top:{{index===0?0:'8px'}}" wx:key="index">
@@ -73,7 +80,9 @@
            <time-format format="YYYY-MM-DD" value="{{ item.pushTime }}" /> {{item.playNum}}人阅读
          </view>
        </view>
        <view class="dt_card_r"></view>
        <view class="dt_card_r">
          <image src="{{item.showUrl}}" mode="" />
        </view>
      </view>
    </view>
  </view>
gz-wxparty/pages/homePage/index.wxss
@@ -49,11 +49,23 @@
}
.home-image {
  width: 112rpx;
  height: 100rpx;
  position: absolute;
  right: 10rpx;
  bottom: 0;
}
.flex_1 {
  flex: 1;
  color: #fff;
  padding: 12px;
  border-radius: 4px;
  display: flex;
  justify-content: space-between;
  position: relative;
  align-items: center;
}
.flex_2 {
@@ -121,7 +133,13 @@
.dt_card_r {
  flex: 1;
  background: #ef6c24;
  width: 184rpx;
  height: 136rpx;
}
.dt_card_r image {
  width: 100%;
  height: 100%;
}
.dt_card_title {
@@ -129,10 +147,12 @@
}
.flex_blue {
  height: 80rpx;
  background: linear-gradient(90deg, #5fa6d4, #3a8ac6 50%, #1a6fb8 100%);
}
.flex_orange {
  height: 80rpx;
  background: linear-gradient(90deg, #ffa940, #fa8c16 50%, #ef6c24 100%);
}
gz-wxparty/pages/myRegisterDetail/index.js
New file
@@ -0,0 +1,86 @@
// pages/myRegisterDetail/index.js
const $$ = require('../../utils/util');
// 详情接口
function getByIdApi(param) {
  return $$.request({
    url: 'caseInfo/getCaseInfo',
    type: 'get',
    submitData: param || {},
    service: 'mediate'
  })
}
// 附件查询接口
function getfilesApi(param) {
  return $$.request({
    url: 'fileInfo/listByMainId',
    type: 'get',
    submitData: param || {},
    service: 'sys'
  })
}
Page({
  /**
   * 页面的初始数据
   */
  data: {
    imgUrl: $$.url.img,
    submitData: {},
    oneList: [],
    fileList: []
  },
  // 获取附件信息
  async getFilesId(id) {
    $$.showLoading();
    const res = await getfilesApi({
      mainId: id
    });
    $$.hideLoading();
    if (res.type) {
      let data = res.data || {};
      this.setData({
        fileList: data
      });
    }
  },
  detailPerson(e) {
    let item = e.currentTarget.dataset.item;
    console.log('item', item);
    wx.navigateTo({
      url: '../../pages/DetailPerson/index?id=' + item.id + '&perType=' + item.perType,
    });
  },
  // 获取纠纷案件详情
  async getById(data) {
    $$.showLoading();
    const res = await getByIdApi({
      id: data.id
    });
    $$.hideLoading();
    if (res.type) {
      let data = res.data || {};
      this.setData({
        submitData: data,
        oneList: [...data.personList, ...data.agentList]
      });
      this.getFilesId(data.id)
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getById(options);
  },
})
gz-wxparty/pages/myRegisterDetail/index.json
New file
@@ -0,0 +1,4 @@
{
  "navigationBarTitleText": "事项详情",
  "usingComponents": {}
}
gz-wxparty/pages/myRegisterDetail/index.wxml
New file
@@ -0,0 +1,82 @@
<!--pages/myRegisterDetail/index.wxml-->
<view class="three-tag">
  <van-tabs bind:click="threeTagChange" active="{{threeAvtice}}">
    <!-- 人员信息 -->
    <van-tab title="人员信息" name="1">
      <view style="padding:24rpx">
        <view wx:for="{{oneList}}" data-item="{{ item }}" data-index="{{ index }}" wx:key="index">
          <view class='one-list' bindtap="detailPerson" data-item="{{ item }}" wx:if="{{item.perType==='15_020008-1'||item.perType==='24_00006-1'}}">
            <view class="one-list-l green">申请方</view>
            <view class="one-list-r">
              <view class="one-list-r-t">
                <view class="one-list-text">{{item.trueName}}</view>
                <view class="one-list-phone">{{item.mobile}}</view>
                <view wx:if="{{item.perType==='24_00006-1'}}" class="one-list-tag">代理人</view>
              </view>
              <view class="one-list-r-b">{{item.perClassName}} | {{item.certiNo}} </view>
            </view>
          </view>
          <view class='one-list' bindtap="detailPerson" data-item="{{ item }}" wx:else>
            <view class="one-list-l orange"><text>被申\n请方</text></view>
            <view class="one-list-r">
              <view class="one-list-r-t">
                <view class="one-list-text">{{item.trueName}}</view>
                <view class="one-list-phone">{{item.mobile}}</view>
                <view wx:if="{{item.perType==='24_00006-2'}}" class="one-list-tag-orange">代理人</view>
              </view>
              <view class="one-list-r-b">{{item.perClassName}} |{{item.certiNo}}</view>
            </view>
          </view>
        </view>
      </view>
    </van-tab>
    <van-tab title="纠纷信息" name="2">
      <view class="three-tag2">
        <view class="cell3">
          <view class="cell-title-placeholder">纠纷类型</view>
          <view>{{ submitData.caseTypeName || '-' }}</view>
        </view>
        <view class="cell3">
          <view class="cell-title-placeholder">纠纷发生时间</view>
          <view>{{ submitData.occurTime || '-' }}</view>
        </view>
        <view class="cell3">
          <view class="cell-title-placeholder">纠纷发生地点</view>
          <view>{{ submitData.addr || '-' }}</view>
        </view>
        <view class="cell3">
          <view class="cell-title-placeholder">涉及人数(人)</view>
          <view>{{ submitData.peopleNum || '-' }}</view>
        </view>
        <view class="cell3">
          <view class="cell-title-placeholder">涉及金额(元)</view>
          <view>{{ submitData.amount || '-' }}</view>
        </view>
        <view class="cell3">
          <view class="cell-title-placeholder">事项概况</view>
          <view>{{ submitData.caseDes || '-' }}</view>
        </view>
        <view class="cell3">
          <view class="cell-title-placeholder">事项申请</view>
          <view>{{ submitData.caseClaim || '-' }}</view>
        </view>
        <!-- todo 人工智能提醒 -->
      </view>
    </van-tab>
    <van-tab title="事件材料" name="3">
      <view style="height: 16rpx;">
      </view>
      <view style="padding: 24rpx 32rpx 0; background-color: #fff;" wx:for="{{fileList}}" wx:key="index" data-item="{{item}}" data-index="{{index}}">
        <view class="fileList_border">
          <image class="fileList_img" src="{{imgUrl}}image_1.png" mode="" />
          <view class="flex_1">
            <view style="margin-bottom: 10rpx;">{{item.name}}</view>
            <view style="display: flex;gap:16rpx"><text class="fileList_title">{{item.size}}{{item.unit}}</text><text data-item="{{item}}" data-index="{{index}}" bindtap="handlePreviewImage" class="public-color">预览</text></view>
          </view>
        </view>
      </view>
    </van-tab>
  </van-tabs>
</view>
gz-wxparty/pages/myRegisterDetail/index.wxss
New file
@@ -0,0 +1,128 @@
/* pages/myRegisterDetail/index.wxss */
@import '../../styles/public_components.wxss';
.one-list {
  background: #fff;
  padding: 24rpx;
  display: flex;
  position: relative;
  gap: 8px;
  margin-bottom: 12px;
  border-radius: 8px;
}
.one-list-l {
  height: 96rpx;
  width: 96rpx;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 28rpx;
  text-align: center;
}
.one-list-r-t {
  display: flex;
  gap: 8px;
  font-size: 28rpx;
  line-height: 44rpx;
}
.one-list-phone {
  color: rgba(23, 26, 29, 0.60);
}
.one-list-tag {
  font-size: 24rpx;
  line-height: 40rpx;
  border-radius: 2px;
  background: #e6fffb;
  color: #13C2C2;
  padding: 0 8rpx;
}
.one-list-tag-orange {
  font-size: 24rpx;
  line-height: 40rpx;
  border-radius: 2px;
  background: #FFF2E6;
  color: #EF6C24;
  padding: 0 8rpx;
}
.one-list-r-b {
  color: rgba(23, 26, 29, 0.60);
  font-size: 24rpx;
  line-height: 40rpx;
  margin-top: 8rpx;
}
.three-tag {}
.three-tag .van-tabs__wrap {
  height: 96rpx !important;
}
.three-tag .van-tabs__nav {
  height: 100%;
}
.three-tag .van-tabs__scroll--line {
  height: 100%;
}
.three-tag .van-tab {
  height: 100%;
  line-height: 96rpx !important;
}
.three-tag2 {
  background-color: #fff;
  margin-top: 16rpx;
  padding: 24rpx 32rpx;
}
.green {
  background-color: #13C2C2;
}
.orange {
  background-color: #EF6C24;
}
.fileList {
  background-color: #fff;
  padding: 24rpx 32rpx;
  display: flex;
  gap: 32rpx;
  align-items: center;
}
.fileList_border {
  padding-bottom: 24rpx;
  display: flex;
  gap: 32rpx;
  align-items: center;
  border-bottom: 1px solid rgba(126, 134, 142, 0.16);
}
.fileList_img {
  width: 84rpx;
  height: 96rpx;
}
.fileList_title {
  color: rgba(23, 26, 29, 0.40);
  font-size: 28rpx;
}
.fileList_img_del {
  width: 32rpx;
  height: 32rpx;
}
.flex_1 {
  flex: 1;
}
gz-wxparty/pages/myRegisterList/index.js
@@ -44,13 +44,7 @@
      label: '不予受理',
      value: '4'
    }],
    dataList: [{
      title: '',
      show: true
    }, {
      title: '',
      show: false
    }]
    dataList: []
  },
  // 查看
@@ -78,6 +72,7 @@
  searchSelect(e) {
    let idx = e.currentTarget.dataset.index;
    let item = e.currentTarget.dataset.item;
    console.log('item', item);
    let searchData = {
      ...this.data.search,
      processStatus: item.value
@@ -88,19 +83,23 @@
        ...item,
        hover: index === idx ? true : false
      })),
      searchValue: item.label
      searchValue: item.label,
      showModal: false
    })
  },
  // 切换tab
  threeTagChange(e) {
    value = e.detail;
    let value = e.detail;
    console.log(value, );
    let data = {
      ...this.data.search,
      personType: value.name,
    }
    this.setData({
      search: {
        ...this.data.search,
        personType: value,
      }
      search: data
    });
    this.pageQuery(data)
  },
  // 折叠列表
@@ -122,14 +121,20 @@
      });
    }
    if (res.type) {
      let list = []
      if (params.page === 1) {
        this.data.data = res.data.content || [];
        list = res.data.content || [];
      } else {
        this.data.data = this.data.data.concat(res.data.content || []);
        list = this.data.data.concat(res.data.content || []);
      }
      this.setData({
        search: params,
        data: this.data.data,
        dataList: list.map((i, index) => ({
          ...i,
          plaintiffNames: i.plaintiffList.length > 0 ? i.plaintiffList.map(i => i.trueName).join('、') : '-',
          defendantNames: i.defendantList.length > 0 ? i.defendantList.map(i => i.trueName).join('、') : '-',
          show: index === 0 ? true : false
        })),
        total: res.data.totalElements || 0
      });
      if (type === 'onPullDownRefresh') {
gz-wxparty/pages/myRegisterList/index.json
@@ -1,4 +1,6 @@
{
  "navigationBarTitleText": "进度查询",
  "usingComponents": {}
  "usingComponents": {
    "time-format": "../../components/time-format/index"
  }
}
gz-wxparty/pages/myRegisterList/index.wxml
@@ -7,7 +7,7 @@
</view>
<!-- 筛选 -->
<view bindtap="searchChange" class="search">
  <view class="search-title">全部</view>
  <view class="search-title">{{searchValue}}</view>
  <van-icon size='9' name="{{imgUrl}}down.png" />
</view>
@@ -15,7 +15,7 @@
  <view style="{{!item.show&&'border-bottom:none'}}" class="list-top">
    <view>2024年7月12日反映诉求</view>
    <view class="list-top-r">
      <view class="list-top-r-tag">待受理</view>
      <view class="list-top-r-tag">{{item.processStatusName||'-'}}</view>
      <van-icon wx:if="{{item.show}}" size='16' bindtap="changeShow" data-index="{{ index }}" name="{{imgUrl}}myRegisterList_1.png" />
      <van-icon wx:else size='16' bindtap="changeShow" data-index="{{ index }}" name="{{imgUrl}}myRegisterList_4.png" />
    </view>
@@ -23,32 +23,34 @@
  <view class="list-content" wx:if="{{item.show}}">
    <view class="list-content-flex">
      <view class="list-content-title">申请时间</view>
      <view class="list-content-value">2024-7-12 12:00</view>
      <view class="list-content-value">
        <time-format format="YYYY-MM-DD" value="{{item.createTime}}" />
      </view>
    </view>
    <view class="list-content-flex margin-top">
      <view class="list-content-title">申请方</view>
      <view class="list-content-value">李晓明</view>
      <view class="list-content-value">{{item.plaintiffNames}}</view>
    </view>
    <view class="list-content-flex margin-top">
      <view class="list-content-title">被申请方</view>
      <view class="list-content-value">广东好又多贸易有限公司、张菲菲</view>
      <view class="list-content-value">{{item.defendantNames}}</view>
    </view>
    <view class="list-border"></view>
    <view class="list-detail">
    <view class="list-detail" bindtap="GoPage" data-url="{{'../../pages/myRegisterDetail/index?id='+item.id}}">
      <view class="list-detail-l">
        <van-icon size='16' name="{{imgUrl}}myRegisterList_1.png" />
        <view class="list-detail-title">事项详情</view>
      </view>
      <view class="list-detail-r">查看</view>
    </view>
    <view class="list-detail">
    <view class="list-detail" bindtap="GoPage" data-url="{{'../../pages/AIAide/index?caseDes='+item.caseDes+'&caseClaim='+item.caseClaim+'&caseId='+item.id}}">
      <view class="list-detail-l">
        <van-icon size='16' name="{{imgUrl}}myRegisterList_2.png" />
        <view class="list-detail-title">解纷助手</view>
      </view>
      <view class="list-detail-r">查看</view>
    </view>
    <view bindtap="GoPage" data-url="../../pages/myRegisterFlow/index" class="list-detail">
    <view wx:if="{{item.processStatus !==1}}" bindtap="GoPage" data-url="../../pages/myRegisterFlow/index" class="list-detail">
      <view class="list-detail-l">
        <van-icon size='16' name="{{imgUrl}}myRegisterList_3.png" />
        <view class="list-detail-title">办理流程</view>
gz-wxparty/pages/myRegisterList/index.wxss
@@ -123,6 +123,8 @@
  gap: 8rpx;
}
.list-detail-title {
  font-size: 28rpx;
}
gz-wxparty/pages/realNameAuthentication/index.js
@@ -3,182 +3,226 @@
// 实名认证
function realNameAuthenticationApi(submitData) {
    return $$.request({ url: 'paUser/realAuth', type: 'post', submitData, service: 'cust' });
  return $$.request({
    url: 'paUser/realAuth',
    type: 'post',
    submitData,
    service: 'cust'
  });
}
Page({
    /**
     * 页面的初始数据
     */
    backNum: 1, // 如果从完善资料进入则返回两级到个人中心
    data: {
        steps: ['完善信息', '刷脸认证'],
        submitData: {
            trueName: '',
            mobile: '',
            idcardType: '09_00015-1',
            idcardTypeName: '身份证',
            idcard: '',
            prov: '',
            provName: '',
            city: '',
            cityName: '',
            area: '',
            areaName: '',
            road: '',
            roadName: '',
            village: '',
            villageName: '',
            addr: '',
            agree: false,
        },
        popup: {}, // 下拉弹出框数据
    },
  /**
   * 页面的初始数据
   */
  backNum: 1, // 如果从完善资料进入则返回两级到个人中心
  data: {
    steps: ['完善信息', '刷脸认证'],
    submitData: {
      trueName: '',
      mobile: '',
      idcardType: '09_00015-1',
      idcardTypeName: '身份证',
      idcard: '',
      prov: '',
      provName: '',
      city: '',
      cityName: '',
      area: '',
      areaName: '',
      road: '',
      roadName: '',
      village: '',
      villageName: '',
      addr: '',
      agree: false,
    },
    popup: {}, // 下拉弹出框数据
  },
    // 展示弹出层
    handleShowPopup(e) {
        this.setData({ popup: e.detail });
    },
  // 展示弹出层
  handleShowPopup(e) {
    this.setData({
      popup: e.detail
    });
  },
    // 关闭弹出层
    handleClosePopup() {
        this.data.popup.visible = false;
        this.setData({ popup: this.data.popup });
    },
  // 关闭弹出层
  handleClosePopup() {
    this.data.popup.visible = false;
    this.setData({
      popup: this.data.popup
    });
  },
    // 下拉框确认选择
    handleConfirmPicker({ detail }) {
        let type = this.data.popup.type;
        let value = detail.detail.value;
        let arr = [];
        this.data.popup.visible = false;
        if (type === 'location') {
            arr = [
                ['prov', 'provName'],
                ['city', 'cityName'],
                ['area', 'areaName'],
                ['road', 'roadName'],
                ['village', 'villageName'],
            ];
            arr.forEach((x, t) => {
                this.data.submitData[x[0]] = value[t]?.value || '';
                this.data.submitData[x[1]] = value[t]?.label || '';
            });
        } else {
            if (type === 'cardType') {
                arr = ['idcardType', 'idcardTypeName'];
            } else if (type === 'sex') {
                arr = ['sex', 'sexName'];
            }
            arr.forEach((x, t) => {
                this.data.submitData[x] = value[t === 0 ? 'value' : 'label'];
            });
        }
        this.setData({ popup: this.data.popup, submitData: this.data.submitData });
    },
  // 下拉框确认选择
  handleConfirmPicker({
    detail
  }) {
    let type = this.data.popup.type;
    let value = detail.detail.value;
    let arr = [];
    this.data.popup.visible = false;
    if (type === 'location') {
      arr = [
        ['prov', 'provName'],
        ['city', 'cityName'],
        ['area', 'areaName'],
        ['road', 'roadName'],
        ['village', 'villageName'],
      ];
      arr.forEach((x, t) => {
        this.data.submitData[x[0]] = value[t]?.value || '';
        this.data.submitData[x[1]] = value[t]?.label || '';
      });
    } else {
      if (type === 'cardType') {
        arr = ['idcardType', 'idcardTypeName'];
      } else if (type === 'sex') {
        arr = ['sex', 'sexName'];
      }
      arr.forEach((x, t) => {
        this.data.submitData[x] = value[t === 0 ? 'value' : 'label'];
      });
    }
    this.setData({
      popup: this.data.popup,
      submitData: this.data.submitData
    });
  },
    // form的change
    handleChange(e) {
        const { key, value } = e.detail;
        this.data.submitData[key] = value;
        this.setData({ submitData: this.data.submitData });
    },
  // form的change
  handleChange(e) {
    const {
      key,
      value
    } = e.detail;
    this.data.submitData[key] = value;
    this.setData({
      submitData: this.data.submitData
    });
  },
    // 修改picker的列时触发
    handleChangeColumns(e) {
        if (this.data.popup.type === 'location') {
            let selectData = $$.changeLocation(e, this.selectComponent('#personal-data-dom').location, this.data.popup.selectData);
            this.setData({ popup: { ...this.data.popup, selectData } });
        }
    },
  // 修改picker的列时触发
  handleChangeColumns(e) {
    if (this.data.popup.type === 'location') {
      let selectData = $$.changeLocation(e, this.selectComponent('#personal-data-dom').location, this.data.popup.selectData);
      this.setData({
        popup: {
          ...this.data.popup,
          selectData
        }
      });
    }
  },
    // 进行刷脸认证
    handleRealName() {
        let submitData = this.data.submitData;
        let msg = '';
        if (!submitData.trueName) {
            msg = '请输入姓名';
        } else if (!submitData.idcard) {
            msg = '请输入证件号码';
        } else if (!$$.mobileRegExp(submitData.mobile)) {
            msg = '请输入正确的手机号码';
        } else if (!submitData.agree) {
            msg = '请勾选确认信息';
        }
        if (msg) {
            $$.showToast({ title: msg });
            return false;
        }
        let that = this;
        wx.checkIsSupportFacialRecognition({
            success() {
                wx.startFacialRecognitionVerify({
                    name: that.data.submitData.trueName,
                    idCardNumber: that.data.submitData.idcard,
                    success() {
                        console.log('识别成功');
                        that.realNameAuthentication();
                    },
                    fail() {
                        $$.showToast({ title: '抱歉!识别失败,请稍后重试' });
                    },
                });
            },
            fail(res) {
                $$.showToast({ title: '抱歉!请求失败,稍后重试' });
            },
        });
    },
    // 上传实名认证数据
    async realNameAuthentication() {
        $$.showLoading();
        const res = await realNameAuthenticationApi(this.data.submitData);
        $$.hideLoading();
        if (res.type) {
            wx.getStorage({
                key: 'userInfo',
                success(res2) {
                    res2.data.realStatus = '1';
                    wx.setStorage({ key: 'userInfo', data: res2.data });
                },
            });
            $$.showToast({ icon: 'success', title: '实名认证成功' });
            wx.removeStorage({
                key: 'access_token'
  // 进行刷脸认证
  handleRealName() {
    let submitData = this.data.submitData;
    let msg = '';
    if (!submitData.trueName) {
      msg = '请输入姓名';
    } else if (!submitData.idcard) {
      msg = '请输入证件号码';
    } else if (!$$.mobileRegExp(submitData.mobile)) {
      msg = '请输入正确的手机号码';
    } else if (!submitData.agree) {
      msg = '请勾选确认信息';
    }
    if (msg) {
      $$.showToast({
        title: msg
      });
      return false;
    }
    let that = this;
    wx.checkIsSupportFacialRecognition({
      success() {
        wx.startFacialRecognitionVerify({
          name: that.data.submitData.trueName,
          idCardNumber: that.data.submitData.idcard,
          success() {
            console.log('识别成功');
            that.realNameAuthentication();
          },
          fail() {
            $$.showToast({
              title: '抱歉!识别失败,请稍后重试'
            });
            await $$.sleep();
            wx.navigateBack({
                delta: this.backNum || 1,
            });
        }
    },
          },
        });
      },
      fail(res) {
        $$.showToast({
          title: '抱歉!请求失败,稍后重试'
        });
      },
    });
  },
    // 获取个人信息
    async getUserInfo(e) {
        let data = e.detail || {};
        let keys = Object.keys(this.data.submitData);
        keys.forEach((x) => {
            if (data[x]) {
                this.data.submitData[x] = data[x];
            }
        });
        this.setData({ submitData: this.data.submitData });
    },
  // 上传实名认证数据
  async realNameAuthentication() {
    $$.showLoading();
    const res = await realNameAuthenticationApi(this.data.submitData);
    $$.hideLoading();
    if (res.type) {
      wx.getStorage({
        key: 'userInfo',
        success(res2) {
          console.log('res2', res2);
          let nowData = {
            ...res2.data,
            realStatus: 1,
          }
          wx.setStorage({
            key: 'userInfo',
            data: nowData
          });
        },
      });
      $$.showToast({
        icon: 'success',
        title: '实名认证成功'
      });
      wx.removeStorage({
        key: 'access_token'
      });
      await $$.sleep();
      wx.navigateBack({
        delta: this.backNum || 1,
      });
    }
  },
    // 获取手机号码
    async handleGetPhoneNumber(e) {
        let phone = await this.selectComponent('#common-page').handleGetPhoneNumber(e.detail);
        this.data.submitData.mobile = phone;
        this.setData({ submitData: this.data.submitData });
    },
  // 获取个人信息
  async getUserInfo(e) {
    let data = e.detail || {};
    let keys = Object.keys(this.data.submitData);
    keys.forEach((x) => {
      if (data[x]) {
        this.data.submitData[x] = data[x];
      }
    });
    this.setData({
      submitData: this.data.submitData
    });
  },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        if (options.backNum) {
            this.backNum = 2;
        }
    },
});
  // 获取手机号码
  async handleGetPhoneNumber(e) {
    let phone = await this.selectComponent('#common-page').handleGetPhoneNumber(e.detail);
    this.data.submitData.mobile = phone;
    this.setData({
      submitData: this.data.submitData
    });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    if (options.backNum) {
      this.backNum = 2;
    }
  },
});
gz-wxparty/pages/register/index.js
@@ -12,6 +12,36 @@
  });
}
// 附件上传的id
function getByIdApi(param) {
  return $$.request({
    url: 'caseUtils/getNewTimeCaseId',
    type: 'get',
    submitData: param || {},
    service: 'utils'
  });
}
// 删除附件
function delfileApi(id) {
  return $$.request({
    url: 'fileInfo/deleteFileById?id=' + id,
    type: 'get',
    service: 'sys',
  });
}
function getawApi(submitData) {
  return $$.request({
    url: 'case-law/get-clain-rise-case',
    type: 'post',
    ai: true,
    submitData,
    service: 'mediate',
  });
}
function caseRegisterSaveApi(submitData) {
  return $$.request({
    url: 'caseInfo/caseRegister',
@@ -30,6 +60,7 @@
  select: {}, // 下拉框数据
  goToMaterialSave: false, // 避免跳转到材料上传页面重复保存草稿
  agreementMsg: '', // 服务协议
  ownerId: '', //附件上传id
  data: {
    stepText: 5, //用户须知倒计时5秒
    timer: null, // 用于存储定时器的引用
@@ -71,9 +102,8 @@
      amount: '',
      caseDes: '',
      caseClaim: '',
      plaintiffList: [],
      defendantList: [],
    }, // 表单数据
    fileList: [], //表单附件
    addPersonData: {}, //添加的当事人
    materialNum: 0, // 纠纷材料总数量
    userInfoVisible: false, // 是否采用个人信息更新申请人信息
@@ -283,15 +313,28 @@
    this.setData({
      popupVisible: false
    });
    if (this.data.oneList?.length === 0) {
      this.setData({
        addMePlaintiff: true
      })
    }
  },
  // 下一步 or 上一步
  handleNext(e) {
    let type = e.currentTarget.dataset.type;
    if (type === 'next' && this.data.stepsActive === 0) {
      this.setData({
        stepsActive: 1
      });
      if (this.data.oneList?.length <= 0) {
        $$.showToast({
          title: '请至少添加一名当事人',
          duration: 500
        });
      } else {
        this.setData({
          stepsActive: 1
        });
        this.getById();
      }
      return;
    }
    if (type === 'back' && this.data.stepsActive === 1) {
@@ -301,12 +344,58 @@
      return;
    }
    if (type === 'next' && this.data.stepsActive === 1) {
      let newData = this.data.submitData;
      console.log('this.data.submitData', this.data.submitData);
      if (!newData.caseType) {
        $$.showToast({
          title: '请选择纠纷类型',
          duration: 500
        });
        return;
      }
      if (!newData.occurTime) {
        $$.showToast({
          title: '请选择纠纷发生时间',
          duration: 500
        });
        return;
      }
      if (!newData.addr) {
        $$.showToast({
          title: '请选择纠纷发生地',
          duration: 500
        });
        return;
      }
      if (!newData.caseDes) {
        $$.showToast({
          title: '请填写事项概况',
          duration: 500
        });
        return;
      }
      if (!newData.caseClaim) {
        $$.showToast({
          title: '请填写事项申请',
          duration: 500
        });
        return;
      }
      if (!this.data.fileList?.length <= 0) {
        // 附件上传提示
        this.setData({
          showFileTip: true
        })
        return;
      }
      // 提交AI接口
      this.getaw(newData);
      this.setData({
        stepsActive: 2
      });
      return;
    }
    if (type === 'back' && this.data.stepsActive === 2) {
      this.setData({
        stepsActive: 1
@@ -324,8 +413,35 @@
      this.caseRegisterSave({
        ...data,
        personList,
        agentList
        agentList,
        id: this.data.ownerId,
      });
    }
  },
  async getaw(data) {
    let newData = {
      caseDes: data.caseDes,
      caseClaim: data.caseClaim,
      caseId: this.data.ownerId,
    }
    const res = await getawApi(newData);
    if (res.type) {
      console.log('res.data', res.data);
      this.setData({
        AIData: res.data || {}
      })
    }
  },
  async getById() {
    $$.showLoading();
    const res = await getByIdApi();
    $$.hideLoading();
    if (res.type) {
      this.setData({
        ownerId: res.data || ''
      })
    }
  },
@@ -334,7 +450,10 @@
    const res = await caseRegisterSaveApi(params);
    $$.hideLoading();
    if (res.type) {
      Toast('提交成功');
      // Toast('提交成功');
      this.setData({
        saveStatus: true
      })
    }
  },
@@ -343,6 +462,54 @@
    let url = e.currentTarget.dataset.url;
    wx.navigateTo({
      url: url,
    });
  },
  // 图片识别
  ocrClick(e) {
    let key = e.currentTarget.dataset.key;
    let keyNum = e.currentTarget.dataset.keyNum;
    let that = this;
    wx.chooseMedia({
      count: 1,
      mediaType: ['image'],
      success(res2) {
        const tempFiles = res2.tempFiles[0];
        $$.showLoading();
        wx.uploadFile({
          url: `${$$.baseUrl}${$$.url.sys}/api/wechat/fileInfo/recognitionText`,
          filePath: tempFiles.tempFilePath,
          name: 'file',
          header: {
            Authorization: app.globalData.token
          },
          complete(res3) {
            $$.hideLoading();
            if (res3.errMsg === 'uploadFile:ok') {
              let {
                code,
                data
              } = JSON.parse(res3.data);
              if (code == -1) {
                $$.errorModal({
                  content: '识别失败'
                });
                return;
              }
              let wordsResult = data?.ocrResult?.wordsResult.join('');
              let wordsResultNum = data?.ocrResult?.wordsResultNum;
              console.log('wordsResult', wordsResult);
              that.setData({
                submitData: {
                  ...that.data.submitData,
                  [key]: wordsResult
                },
                [keyNum]: wordsResultNum
              });
            }
          },
        });
      },
    });
  },
@@ -384,21 +551,98 @@
    })
  },
  // 获取省市区等地理资源
  async getLocationData() {
    $$.showLoading();
    const res = await $$.commonRequest({
      url: `${$$.url.assets}locationSelect.json`,
      type: 'get'
  // 上传文件图片
  async handleUploadFile(e) {
    let id = e.currentTarget.dataset.id;
    let type = e.currentTarget.dataset.type;
    let that = this;
    this.filesArr = [];
    wx.chooseMedia({
      mediaType: ['image'],
      success(res2) {
        const tempFiles = res2.tempFiles;
        // 多个文件逐一上传
        tempFiles.forEach((x, t) => {
          $$.showLoading('上传中...');
          wx.uploadFile({
            url: `${$$.baseUrl}${$$.url.sys}/api/wechat/fileInfo/upload?mainId=${id}&ownerId=${id}&ownerType=${type}`,
            filePath: x.tempFilePath,
            name: 'file',
            header: {
              Authorization: app.globalData.token
            },
            complete(res) {
              $$.hideLoading();
              if (res.errMsg === 'uploadFile:ok') {
                const getData = JSON.parse(res.data)
                const file = {
                  ...getData.data[0],
                  wxurl: x.tempFilePath
                };
                that.setData({
                  fileList: that.data.fileList.concat(file)
                })
                $$.showToast({
                  icon: 'success',
                  title: '上传成功',
                  duration: 500
                });
              } else {
                $$.showToast({
                  title: '上传失败',
                  duration: 500
                });
              }
            },
          });
        });
      },
    });
    $$.hideLoading();
    if (res) {
      let location = [];
      $$.province.forEach((x) => {
        location.push(res[x][0]);
      });
      this.location = location;
    }
  },
  // 预览图片
  handlePreviewImage(e) {
    let item = e.currentTarget.dataset.item;
    console.log('item', item);
    let index = e.currentTarget.dataset.index;
    wx.previewImage({
      current: item.wxurl,
      urls: [item.wxurl] // 需要预览的图片http链接列表
    });
  },
  // 删除图片
  async handleDelImage(e) {
    let item = e.currentTarget.dataset.item;
    let index = e.currentTarget.dataset.index;
    let id = e.currentTarget.dataset.id;
    let type = e.currentTarget.dataset.type;
    $$.showModal({
      title: '删除材料确认',
      content: '确定删除材料' + item.name + '吗?',
      cancelText: '我再想想',
      confirmText: '确定删除',
      success: async (res) => {
        if (res.confirm) {
          $$.showLoading();
          const res = await delfileApi(id);
          if (res.type) {
            $$.showToast({
              icon: 'success',
              title: '删除成功',
              duration: 500
            });
            let list = this.data.fileList.filter((i, idx) => idx !== index);
            console.log('list', list);
            this.setData({
              fileList: list
            })
          }
        }
      },
    });
  },
  // 请求下拉框资源
@@ -521,7 +765,6 @@
   * 生命周期函数--监听页面加载
   */
  onLoad: function () {
    this.getLocationData();
    let agreement = wx.getStorageSync('agreement');
    if (!agreement) {
      this.getAgreement();
gz-wxparty/pages/register/index.wxml
@@ -66,7 +66,7 @@
    </block>
    <!-- 描述纠纷 -->
    <block wx:elif="{{stepsActive === 1}}">
    <view class="page-flex" wx:elif="{{stepsActive === 1}}">
      <view class="popupMsg-form">
        <view bindtap="caseTypeGoPage" data-url="../../pages/caseType/index" class="cell cell-item" data-title="纠纷类型" data-key="certiType" data-type="cardType">
          <view class="cell-title"><text><text class="cell-required">*</text> 纠纷类型</text></view>
@@ -105,13 +105,13 @@
        <view class="cell-item">
          <view class="cell-title1">涉及人数(人)</view>
          <view class="cell-select">
            <van-field bind:change="handleChange" border="{{ false }}" custom-style="padding:0" data-key="peopleNum" input-align="right" placeholder="请填写" value="{{ submitData.peopleNum || '' }}" />
            <van-field type='number' bind:change="handleChange" border="{{ false }}" custom-style="padding:0" data-key="peopleNum" input-align="right" placeholder="请填写" value="{{ submitData.peopleNum || '' }}" />
          </view>
        </view>
        <view class="cell-item">
          <view class="cell-title1">涉及金额(元)</view>
          <view class="cell-select">
            <van-field bind:change="handleChange" border="{{ false }}" custom-style="padding:0" data-key="amount" input-align="right" placeholder="请填写" value="{{ submitData.amount || '' }}" />
            <van-field type='number' bind:change="handleChange" border="{{ false }}" custom-style="padding:0" data-key="amount" input-align="right" placeholder="请填写" value="{{ submitData.amount || '' }}" />
          </view>
        </view>
        <view style="height: 16rpx;"></view>
@@ -123,7 +123,7 @@
          <view class="textarea-foot">
            <view class="textarea-limit">{{caseDesNum||0}}/2000字</view>
            <view class="textarea-ability">
              <view class="textarea-img">
              <view bindtap="ocrClick" data-keyNum="caseDesNum" data-key="caseDes" class=" textarea-img">
                <image src="{{imgUrl}}imgOcr.png" mode="" />识别图片
              </view>
              <view style="padding: 0 8rpx;">|</view>
@@ -142,7 +142,7 @@
          <view class="textarea-foot">
            <view class="textarea-limit">{{caseClaimNum||0}}/500字</view>
            <view class="textarea-ability">
              <view class="textarea-img">
              <view bindtap="ocrClick" data-keyNum="caseClaimNum" data-key="caseClaim" class="textarea-img">
                <image src="{{imgUrl}}imgOcr.png" mode="" />识别图片
              </view>
              <view style="padding: 0 8rpx;">|</view>
@@ -154,7 +154,7 @@
        </block>
        <view style="height: 16rpx;"></view>
        <block>
          <view style="padding-left: 32rpx;" class="cell-item">
          <view style="padding-left: 32rpx;" bindtap="handleUploadFile" data-id="{{ownerId}}" data-type="22_00014-1" class="cell-item">
            <view class="upload-title">
              事件材料
              <image src="{{imgUrl}}upload-add.png" mode="" />
@@ -163,25 +163,33 @@
              说明:建议上传人员身份证及纠纷涉及的证件材料,代理人请上传身份证及授权委托书
            </view>
          </view>
        </block>
        <view class="submitButton" catch:tap="">
          <view style="flex: 1;">
            <view class="two-button">
              <view class="two-button-flex1">
                <van-button bind:click="handleNext" block data-type="back">上一步</van-button>
              </view>
              <view class="two-button-flex2">
                <van-button bind:click="handleNext" block data-type="next" type="primary">下一步</van-button>
              </view>
          <view class="fileList" wx:for="{{fileList}}" wx:key="index" data-item="{{item}}" data-index="{{index}}">
            <image class="fileList_img" src="{{imgUrl}}image_1.png" mode="" />
            <view class="flex_1">
              <view style="margin-bottom: 10rpx;">{{item.name}}</view>
              <view style="display: flex;gap:16rpx"><text class="fileList_title">{{item.size}}{{item.unit}}</text><text data-item="{{item}}" data-index="{{index}}" bindtap="handlePreviewImage" class="public-color">预览</text></view>
            </view>
            <view class="safeHeight" />
            <image data-id="{{item.id}}" data-type="22_00014-1" data-item="{{item}}" data-index="{{index}}" bindtap="handleDelImage" class="fileList_img_del" src="{{imgUrl}}image_del.png" mode="" />
          </view>
        </block>
      </view>
      <view class="submitButton" catch:tap="">
        <view style="flex: 1;">
          <view class="two-button">
            <view class="two-button-flex1">
              <van-button bind:click="handleNext" block data-type="back">上一步</van-button>
            </view>
            <view class="two-button-flex2">
              <van-button bind:click="handleNext" block data-type="next" type="primary">下一步</van-button>
            </view>
          </view>
          <view class="safeHeight" />
        </view>
      </view>
    </block>
    </view>
    <!-- 提交申请 -->
    <block wx:elif="{{stepsActive === 2}}">
    <view class="page-flex" wx:elif="{{stepsActive === 2}}">
      <view class="popupMsg-form">
        <view class="three-tag">
          <van-tabs bind:click="threeTagChange" active="{{threeAvtice}}">
@@ -244,43 +252,56 @@
                  <view class="cell-title-placeholder">事项申请</view>
                  <view>{{ submitData.caseClaim || '-' }}</view>
                </view>
                <!-- todo 人工智能提醒 -->
                <!-- 人工智能提醒 -->
                <!-- <view class="Ai_tip"> -->
                <view class="Ai_tip" wx:if="{{AIData.isClaimRisk===1}}">
                  <view class="Ai_tip_title">{{AIData.analysisProcess||''}}</view>
                  <view class="Ai_tip_line"></view>
                  <view class="Ai_tip_text">内容依据人工智能技术和相关法律数据提供,仅供参考</view>
                </view>
              </view>
            </van-tab>
            <van-tab title="事件材料" name="3">内容 3</van-tab>
            <van-tab title="事件材料" name="3">
              <view style="height: 16rpx;">
              </view>
              <view style="padding: 24rpx 32rpx 0; background-color: #fff;" wx:for="{{fileList}}" wx:key="index" data-item="{{item}}" data-index="{{index}}">
                <view class="fileList_border">
                  <image class="fileList_img" src="{{imgUrl}}image_1.png" mode="" />
                  <view class="flex_1">
                    <view style="margin-bottom: 10rpx;">{{item.name}}</view>
                    <view style="display: flex;gap:16rpx"><text class="fileList_title">{{item.size}}{{item.unit}}</text><text data-item="{{item}}" data-index="{{index}}" bindtap="handlePreviewImage" class="public-color">预览</text></view>
                  </view>
                </view>
              </view>
            </van-tab>
          </van-tabs>
        </view>
        <view class="submitButton" catch:tap="">
          <view style="flex: 1;">
            <view class="two-button">
              <view class="two-button-flex1">
                <van-button bind:click="handleNext" block data-type="back">上一步</van-button>
              </view>
              <view class="two-button-flex2">
                <van-button bind:click="handleNext" block data-type="next" type="primary">提交申请</van-button>
              </view>
      </view>
      <view class="submitButton" catch:tap="">
        <view style="flex: 1;">
          <view class="two-button">
            <view class="two-button-flex1">
              <van-button bind:click="handleNext" block data-type="back">上一步</van-button>
            </view>
            <view class="safeHeight" />
            <view class="two-button-flex2">
              <van-button bind:click="handleNext" block data-type="next" type="primary">提交申请</van-button>
            </view>
          </view>
          <view class="safeHeight" />
        </view>
      </view>
    </block>
    </view>
  </block>
  <!-- 已提交 -->
  <block wx:else>
    <view class="success">
      <van-icon color="#07c160" name="checked" size="106rpx" />
      <view class="success-title">申请已经提交</view>
      <view class="success-subTitle">可通过小程序首页<navigator class="success-link" style="display: inline;" url="/pages/myMediate/index">我的调解</navigator>功能跟进调解进度</view>
      <view class="success-NewButton">
        <view class="success-RedButton">
          <navigator url="/pages/myMediate/index" style="color: #fff;font-size: 14px;">我的调解</navigator>
        </view>
      </view>
      <view>
      <van-icon name="{{imgUrl}}success.png" size="200rpx" />
      <view class="success-title">申请已提交</view>
      <view class="success-subTitle">您已成功提交申请,请保持联系方式畅通。您可以通过“穗好办”微信公众号了解处理进度</view>
      <view style="margin-top: 40rpx;">
        <navigator class="success-link" style="display: inline;" url="/pages/homePage/index">返回首页</navigator>
      </view>
      <!-- <view class="success-button">
gz-wxparty/pages/register/index.wxss
@@ -206,9 +206,44 @@
  align-items: center;
}
.two-addr-img image{
.two-addr-img image {
  width: 15px;
  height: 15px;
}
.fileList {
  background-color: #fff;
  padding: 24rpx 32rpx;
  display: flex;
  gap: 32rpx;
  align-items: center;
}
.fileList_border {
  padding-bottom: 24rpx;
  display: flex;
  gap: 32rpx;
  align-items: center;
  border-bottom: 1px solid rgba(126, 134, 142, 0.16);
}
.fileList_img {
  width: 84rpx;
  height: 96rpx;
}
.fileList_title {
  color: rgba(23, 26, 29, 0.40);
  font-size: 28rpx;
}
.fileList_img_del {
  width: 32rpx;
  height: 32rpx;
}
.flex_1 {
  flex: 1;
}
.three-tag {
@@ -245,6 +280,33 @@
  background-color: #fff;
  align-items: center;
  padding-left: 32rpx;
}
.Ai_tip {
  background: #FFECE8;
  padding: 8px 12px;
  border-radius: 4px;
}
.Ai_tip_title {
  color: #F53F3F;
  line-height: 46rpx;
}
.page-flex {
  display: flex;
  flex-direction: column;
}
.Ai_tip_line {
  margin: 16rpx 0;
  border-bottom: 1px solid rgba(245, 63, 63, 0.60);
}
.Ai_tip_text {
  color: rgba(245, 63, 63, 0.60);
  font-size: 24rpx;
  line-height: 40rpx;
}
.textarea-limit {
@@ -621,14 +683,13 @@
}
.success-title {
  font-size: 34rpx;
  line-height: 50rpx;
  font-weight: 600;
  font-size: 32rpx;
  line-height: 48rpx;
  padding: 32rpx 0;
}
.success-subTitle {
  width: 383rpx;
  width: 498rpx;
  color: var(--second-text-color);
  margin: auto;
}
@@ -683,7 +744,13 @@
}
.success-link {
  color: #D1021C;
  color: #fff;
  width: 116px;
  height: 36px;
  background: #1a6fb8;
  border-radius: 6px;
  padding: 6px 26px;
  margin-top: 32px;
}
.success-NewButton {
gz-wxparty/utils/util.js
@@ -5,7 +5,7 @@
const url = api.url;
// 是否是开发环境
const isDebug = true;
const isDebug = false;
const baseUrl = isDebug ? api.url.debug : api.url.web;
@@ -17,479 +17,485 @@
// request
const request = ({
    url,
    type,
    submitData,
    service,
    v1,
    noToken
  url,
  type,
  submitData,
  service,
  v1,
  ai,
  noToken
}) => {
    const app = getApp();
  const app = getApp();
    let token = app.globalData.token;
    if (!token && !noToken) {
        console.log(typeof app.globalData.access_token, 'app.globalData.access_token1111111111111')
        if (!app.globalData.access_token) {
            showModal({
  let token = app.globalData.token;
  if (!token && !noToken) {
    console.log(typeof app.globalData.access_token, 'app.globalData.access_token1111111111111')
    if (!app.globalData.access_token) {
      showModal({
        title: '提示信息',
        content: '抱歉!登录状态已失效,请重新登录',
        confirmText: '重新登录',
        showCancel: false,
        success: (res) => {
          if (res.confirm) {
            loginOutClearData();
            wx.navigateTo({
              url: '../../pages/login/index',
            });
          }
        },
      });
      return false;
    }
  }
  let baseUrl = isDebug ? api.url.debug : api.url.web;
  let visitUrl = `${baseUrl}${api.url[service] || ''}/api/${v1 ? 'v1' :ai ? 'ai' : 'wechat'}/${url}`;
  return new Promise((resolve, reject) => {
    wx.request({
      url: visitUrl,
      data: submitData,
      method: type,
      header: {
        Authorization: token,
      },
      success: (res) => {
        if (res.errMsg === 'request:ok') {
          const {
            statusCode
          } = res;
          if (statusCode >= 400) {
            errorModal({
              content: '抱歉!请求失败,稍后重试'
            });
            resolve({
              type: false
            });
            return false;
          }
          const {
            code,
            data,
            msg
          } = res.data;
          let obj = {};
          if (code === '0' || code === 0) {
            obj = {
              type: true,
              data
            };
          } else if (code === 401 || code === '401') {
            if (app.globalData.access_token !== 1) {
              errorModal({
                title: '提示信息',
                content: '抱歉!登录状态已失效,请重新登录',
                confirmText: '重新登录',
                showCancel: false,
                success: (res) => {
                    if (res.confirm) {
                        loginOutClearData();
                        wx.navigateTo({
                            url: '../../pages/login/index',
                        });
                    }
                success: () => {
                  loginOutClearData();
                  wx.navigateTo({
                    url: '../../pages/login/index'
                  });
                },
              });
            }
            obj = {
              type: false
            };
          } else {
            errorModal({
              content: msg
            });
            return false;
            obj = {
              type: false
            };
          }
          resolve(obj);
        } else {
          errorModal({
            content: '抱歉!请求失败,稍后重试'
          });
          resolve({
            type: false
          });
        }
    }
    let baseUrl = isDebug ? api.url.debug : api.url.web;
    let visitUrl = `${baseUrl}${api.url[service] || ''}/api/${v1 ? 'v1' : 'wechat'}/${url}`;
    return new Promise((resolve, reject) => {
        wx.request({
            url: visitUrl,
            data: submitData,
            method: type,
            header: {
                Authorization: token,
            },
            success: (res) => {
                if (res.errMsg === 'request:ok') {
                    const {
                        statusCode
                    } = res;
                    if (statusCode >= 400) {
                        errorModal({
                            content: '抱歉!请求失败,稍后重试'
                        });
                        resolve({
                            type: false
                        });
                        return false;
                    }
                    const {
                        code,
                        data,
                        msg
                    } = res.data;
                    let obj = {};
                    if (code === '0' || code === 0) {
                        obj = {
                            type: true,
                            data
                        };
                    } else if (code === 401 || code === '401') {
                        if (app.globalData.access_token !== 1) {
                            errorModal({
                                title: '提示信息',
                                content: '抱歉!登录状态已失效,请重新登录',
                                confirmText: '重新登录',
                                success: () => {
                                    loginOutClearData();
                                    wx.navigateTo({
                                        url: '../../pages/login/index'
                                    });
                                },
                            });
                        }
                        obj = {
                            type: false
                        };
                    } else {
                        errorModal({
                            content: msg
                        });
                        obj = {
                            type: false
                        };
                    }
                    resolve(obj);
                } else {
                    errorModal({
                        content: '抱歉!请求失败,稍后重试'
                    });
                    resolve({
                        type: false
                    });
                }
            },
            fail: () => {
                errorModal({
                    content: '抱歉!服务器出现错误,稍后重试'
                });
                resolve({
                    type: false
                });
            },
      },
      fail: () => {
        errorModal({
          content: '抱歉!服务器出现错误,稍后重试'
        });
        resolve({
          type: false
        });
      },
    });
  });
};
//
const commonRequest = ({
    url,
    submitData,
    type
  url,
  submitData,
  type
}) => {
    return new Promise((resolve, reject) => {
        wx.request({
            url: url,
            data: submitData,
            method: type,
            header: {
                'content-type': 'application/json; charset=utf-8', // 默认值
            },
            scriptCharset: 'utf-8',
            success: (res) => {
                const {
                    statusCode,
                    errMsg,
                    data
                } = res;
                if (statusCode >= 400) {
                    errorModal({
                        content: '抱歉!请求错误,稍后重试'
                    });
                    resolve(false);
                    return false;
                }
                if (errMsg === 'request:ok') {
                    resolve(data);
                } else {
                    resolve(false);
                }
            },
            fail: () => {
                resolve(false);
            },
        });
  return new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: submitData,
      method: type,
      header: {
        'content-type': 'application/json; charset=utf-8', // 默认值
      },
      scriptCharset: 'utf-8',
      success: (res) => {
        const {
          statusCode,
          errMsg,
          data
        } = res;
        if (statusCode >= 400) {
          errorModal({
            content: '抱歉!请求错误,稍后重试'
          });
          resolve(false);
          return false;
        }
        if (errMsg === 'request:ok') {
          resolve(data);
        } else {
          resolve(false);
        }
      },
      fail: () => {
        resolve(false);
      },
    });
  });
};
// 消息提示框
const showToast = ({
    title,
    icon = 'none',
    mask = true,
    duration = 2000,
    success
  title,
  icon = 'none',
  mask = true,
  duration = 2000,
  success
}) => {
    return wx.showToast({
        title: title,
        icon: icon,
        mask: mask,
        duration: duration,
        success: (res) => {
            success && success(res);
        },
    });
  return wx.showToast({
    title: title,
    icon: icon,
    mask: mask,
    duration: duration,
    success: (res) => {
      success && success(res);
    },
  });
};
const ellipsis = ({
  value,
  len
}) => {
  if (!value) return '';
  if (value.length > len) {
    return value.slice(0, len) + '...';
  }
  return value;
};
//api错误modal框消息提示
let errorNum = false; //控制报错信息不会重复弹出
const errorModal = ({
    title,
    content,
    confirmText,
    success,
    className
  title,
  content,
  confirmText,
  success,
  className
}) => {
    if (errorNum) {
        return false;
    }
    errorNum = true;
    return wx.showModal({
        title: title || '错误提示',
        content: content,
        className: className,
        showCancel: false,
        confirmColor: '#d10202',
        confirmText: confirmText || '知道了',
        success: (res) => {
            if (res.confirm) {
                errorNum = false;
                success && success(res);
            }
        },
    });
  if (errorNum) {
    return false;
  }
  errorNum = true;
  return wx.showModal({
    title: title || '错误提示',
    content: content,
    className: className,
    showCancel: false,
    confirmColor: '#d10202',
    confirmText: confirmText || '知道了',
    success: (res) => {
      if (res.confirm) {
        errorNum = false;
        success && success(res);
      }
    },
  });
};
//modal提示操作
const showModal = ({
    title = '温馨提示',
    content,
    showCancel = true,
    cancelText = '取消',
    confirmText = '确定',
    success
  title = '温馨提示',
  content,
  showCancel = true,
  cancelText = '取消',
  confirmText = '确定',
  success
}) => {
    return wx.showModal({
        content: content,
        showCancel: showCancel,
        confirmColor: '#1A6FB8',
        title: title,
        cancelText: cancelText,
        confirmText: confirmText,
        success: (res) => {
            success && success(res);
        },
    });
  return wx.showModal({
    content: content,
    showCancel: showCancel,
    confirmColor: '#1A6FB8',
    title: title,
    cancelText: cancelText,
    confirmText: confirmText,
    success: (res) => {
      success && success(res);
    },
  });
};
//loading
let loadingVisible = 0;
const showLoading = (title = '加载中...', mask = true) => {
    if (loadingVisible) {
        loadingVisible = loadingVisible + 1;
        return;
    }
    loadingVisible = 1;
    return wx.showLoading({
        title: title,
        mask: mask,
    });
  if (loadingVisible) {
    loadingVisible = loadingVisible + 1;
    return;
  }
  loadingVisible = 1;
  return wx.showLoading({
    title: title,
    mask: mask,
  });
};
const hideLoading = () => {
    loadingVisible = loadingVisible - 1;
    if (loadingVisible) return;
    return wx.hideLoading();
  loadingVisible = loadingVisible - 1;
  if (loadingVisible) return;
  return wx.hideLoading();
};
// 时间格式化
const timeFormat = (time, type) => {
    let formatType = type ? type : 'YYYY-MM-DD HH:mm';
    return time ? moment(time).format(formatType) : '';
  let formatType = type ? type : 'YYYY-MM-DD HH:mm';
  return time ? moment(time).format(formatType) : '';
};
// 计算消息时间距离当前时间
const getMsgTime = (endTime, startTime = new Date()) => {
    let end = moment(endTime),
        start = moment(startTime),
        minDiff = end.diff(start, 'minute');
    if (minDiff < 60) {
        return `${minDiff}分钟`;
    }
    let hoursDiff = minDiff / 60;
    if (hoursDiff < 24) {
        return `${hoursDiff}小时`;
    }
    let dayDiff = hoursDiff / 24;
    return `${dayDiff}天`;
  let end = moment(endTime),
    start = moment(startTime),
    minDiff = end.diff(start, 'minute');
  if (minDiff < 60) {
    return `${minDiff}分钟`;
  }
  let hoursDiff = minDiff / 60;
  if (hoursDiff < 24) {
    return `${hoursDiff}小时`;
  }
  let dayDiff = hoursDiff / 24;
  return `${dayDiff}天`;
};
// 退出登录清除数据
const loginOutClearData = () => {
    const app = getApp();
    app.globalData.token = '';
    wx.removeStorage({
        key: 'userInfo'
    });
  const app = getApp();
  app.globalData.token = '';
  wx.removeStorage({
    key: 'userInfo'
  });
};
// 手机号码正则
const mobileRegExp = (value) => {
    return /^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9]|9[0-9])\d{8}$/g.test(value);
  return /^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9]|9[0-9])\d{8}$/g.test(value);
};
// 睡眠
const sleep = (timeout = 500) => {
    return new Promise((resolve) => setTimeout(resolve, timeout));
  return new Promise((resolve) => setTimeout(resolve, timeout));
};
// 获取唯一的key
const getBusinessId = () => {
    let four = `${parseInt(Math.random() * 10)}${parseInt(Math.random() * 10)}${parseInt(Math.random() * 10)}${parseInt(Math.random() * 10)}`;
    let result = `${moment().format('YYYYMMDDHHmmss')}${four}`;
    return result;
  let four = `${parseInt(Math.random() * 10)}${parseInt(Math.random() * 10)}${parseInt(Math.random() * 10)}${parseInt(Math.random() * 10)}`;
  let result = `${moment().format('YYYYMMDDHHmmss')}${four}`;
  return result;
};
// 省市区选择
const changeLocation = (e, location, selectData) => {
    const {
        value,
        index
    } = e.detail.detail;
    let value_id = value[index].value;
    let faterArr = location;
    for (let i = 0; i < index; i++) {
        faterArr = faterArr[selectData[i].defaultIndex].children || [];
    }
    faterForEach: for (let i = 0; i <= faterArr.length - 1; i++) {
        if (faterArr[i].value === value_id) {
            selectData[index].defaultIndex = i;
            let arr = faterArr[i];
            for (let y = index + 1; y < value.length; y++) {
                selectData[y].values = JSON.parse(JSON.stringify(arr.children)) || [];
                selectData[y].defaultIndex = 0;
                // 当children不存在时赋值
                if (arr.children) {
                    arr = arr.children[0];
                }
                selectData[y].values.forEach((x) => {
                    delete x.children;
                });
            }
            break faterForEach;
  const {
    value,
    index
  } = e.detail.detail;
  let value_id = value[index].value;
  let faterArr = location;
  for (let i = 0; i < index; i++) {
    faterArr = faterArr[selectData[i].defaultIndex].children || [];
  }
  faterForEach: for (let i = 0; i <= faterArr.length - 1; i++) {
    if (faterArr[i].value === value_id) {
      selectData[index].defaultIndex = i;
      let arr = faterArr[i];
      for (let y = index + 1; y < value.length; y++) {
        selectData[y].values = JSON.parse(JSON.stringify(arr.children)) || [];
        selectData[y].defaultIndex = 0;
        // 当children不存在时赋值
        if (arr.children) {
          arr = arr.children[0];
        }
        selectData[y].values.forEach((x) => {
          delete x.children;
        });
      }
      break faterForEach;
    }
    return selectData;
  }
  return selectData;
};
// 计算默认的省市区下标
const getLocationIndex = (data, currentData) => {
    let selectOption = JSON.parse(JSON.stringify(data));
    let submitData = currentData;
    let arr = [0, 0, 0, 0];
    if (submitData.prov) {
        forEach: for (let i = 0; i < selectOption.length; i++) {
            if (selectOption[i].value === submitData.prov) {
                arr[0] = i;
                break forEach;
            }
        }
  let selectOption = JSON.parse(JSON.stringify(data));
  let submitData = currentData;
  let arr = [0, 0, 0];
  if (submitData.city) {
    forEach: for (let i = 0; i < selectOption[arr[0]].children.length; i++) {
      if (selectOption[arr[0]].children[i].value === submitData.city) {
        arr[1] = i;
        break forEach;
      }
    }
    if (submitData.city) {
        forEach: for (let i = 0; i < selectOption[arr[0]].children.length; i++) {
            if (selectOption[arr[0]].children[i].value === submitData.city) {
                arr[1] = i;
                break forEach;
            }
        }
  }
  if (submitData.area) {
    forEach: for (let i = 0; i < selectOption[arr[0]].children[arr[1]].children.length; i++) {
      if (selectOption[arr[0]].children[arr[1]].children[i].value === submitData.area) {
        arr[2] = i;
        break forEach;
      }
    }
    if (submitData.area) {
        forEach: for (let i = 0; i < selectOption[arr[0]].children[arr[1]].children.length; i++) {
            if (selectOption[arr[0]].children[arr[1]].children[i].value === submitData.area) {
                arr[2] = i;
                break forEach;
            }
        }
    }
    if (submitData.road) {
        forEach: for (let i = 0; i < selectOption[arr[0]].children[arr[1]].children[arr[2]].children.length; i++) {
            if (selectOption[arr[0]].children[arr[1]].children[arr[2]].children[i].value === submitData.road) {
                arr[3] = i;
                break forEach;
            }
        }
    }
    return arr;
  }
  // if (submitData.road) {
  //   forEach: for (let i = 0; i < selectOption[arr[0]].children[arr[1]].children[arr[2]].children.length; i++) {
  //     if (selectOption[arr[0]].children[arr[1]].children[arr[2]].children[i].value === submitData.road) {
  //       arr[3] = i;
  //       break forEach;
  //     }
  //   }
  // }
  return arr;
};
// 判断附件打开形式
const openFiles = (type, url, urls) => {
    let visible = false;
    if (type === '22_00017-3') {
        wx.previewImage({
            current: url,
            urls: urls,
  let visible = false;
  if (type === '22_00017-3') {
    wx.previewImage({
      current: url,
      urls: urls,
    });
    visible = true;
  } else if (['22_00017-4', '22_00017-5', '22_00017-6', '22_00017-9'].includes(type)) {
    showLoading();
    wx.downloadFile({
      url: url,
      success: function (res) {
        const filePath = res.tempFilePath;
        wx.openDocument({
          filePath: filePath,
          complete: () => {
            hideLoading();
          },
        });
        visible = true;
    } else if (['22_00017-4', '22_00017-5', '22_00017-6', '22_00017-9'].includes(type)) {
        showLoading();
        wx.downloadFile({
            url: url,
            success: function (res) {
                const filePath = res.tempFilePath;
                wx.openDocument({
                    filePath: filePath,
                    complete: () => {
                        hideLoading();
                    },
                });
            },
        });
        visible = true;
    } else {
        showToast({
            title: '抱歉!您所点击的附件暂不支持查看'
        });
        visible = false;
    }
    return visible;
      },
    });
    visible = true;
  } else {
    showToast({
      title: '抱歉!您所点击的附件暂不支持查看'
    });
    visible = false;
  }
  return visible;
};
// 校验登录'login' and 实名'realName' and 'all'
const userTest = (type, direction) => {
    const app = getApp();
    if (!app.globalData.token && (type === 'login' || type === 'all')) {
        showModal({
            content: '抱歉您未登录,是否前往登录?',
            success: (res) => {
                if (res.confirm) {
                    wx.navigateTo({
                        url: '../../pages/login/index',
                    });
                }
            },
        });
        return false;
    }
    let realStatus = wx.getStorageSync('userInfo')?.realStatus;
    if (realStatus !== 1 && (type === 'realName' || type === 'all')) {
        if (direction !== 'bottom') {
            showModal({
                content: '检测到您未进行实名认证,该操作需先进行实名认证,是否前往认证?',
                success: (res) => {
                    if (res.confirm) {
                        wx.navigateTo({
                            url: '../../pages/realNameAuthentication/index',
                        });
                    }
                },
            });
  const app = getApp();
  if (!app.globalData.token && (type === 'login' || type === 'all')) {
    showModal({
      content: '抱歉您未登录,是否前往登录?',
      success: (res) => {
        if (res.confirm) {
          wx.navigateTo({
            url: '../../pages/login/index',
          });
        }
        return false;
      },
    });
    return false;
  }
  let realStatus = wx.getStorageSync('userInfo')?.realStatus;
  if (realStatus !== 1 && (type === 'realName' || type === 'all')) {
    if (direction !== 'bottom') {
      showModal({
        content: '检测到您未进行实名认证,该操作需先进行实名认证,是否前往认证?',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '../../pages/realNameAuthentication/index',
            });
          }
        },
      });
    }
    return true;
    return false;
  }
  return true;
};
// 地址栏截取
function getQueryString(href, name) {
    let result = href.match(new RegExp('[?&]' + name + '=([^&]+)', 'i'));
    if (!result || result.length < 1) {
        return null;
    }
    return decodeURI(result[1]);
  let result = href.match(new RegExp('[?&]' + name + '=([^&]+)', 'i'));
  if (!result || result.length < 1) {
    return null;
  }
  return decodeURI(result[1]);
}
// 清除字符串中的空格,用于判断是否为空
function verifyEmpty(value) {
    return value?.replace(/\s+/g, '');
  return value?.replace(/\s+/g, '');
}
module.exports = {
    moment,
    url,
    request,
    commonRequest,
    isDebug,
    baseUrl,
    version,
    province,
    showToast,
    errorModal,
    showModal,
    showLoading,
    hideLoading,
    timeFormat,
    getMsgTime,
    loginOutClearData,
    mobileRegExp,
    sleep,
    getBusinessId,
    changeLocation,
    getLocationIndex,
    openFiles,
    userTest,
    getQueryString,
    verifyEmpty,
  moment,
  url,
  request,
  commonRequest,
  isDebug,
  baseUrl,
  version,
  province,
  showToast,
  errorModal,
  showModal,
  ellipsis,
  showLoading,
  hideLoading,
  timeFormat,
  getMsgTime,
  loginOutClearData,
  mobileRegExp,
  sleep,
  getBusinessId,
  changeLocation,
  getLocationIndex,
  openFiles,
  userTest,
  getQueryString,
  verifyEmpty,
};