16 files added
18 files modified
| | |
| | | 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, |
| | | }; |
| | |
| | | "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", |
| | |
| | | |
| | | // 获取信息 |
| | | 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; |
| | | } |
| | | }, |
| | | }, |
| | | }); |
| | |
| | | data-type="location" |
| | | is-link="{{ !isCheck }}" |
| | | label="居住地" |
| | | placeholder="省/市/区(县)/街道" |
| | | placeholder="市/区(县)/街道" |
| | | readonly |
| | | value="{{ submitData.prov ? wxs.showLocation(submitData) : '' }}" |
| | | /> |
| | |
| | | <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> |
New file |
| | |
| | | // 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, |
| | | }) |
| | | }, |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "解纷助手", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--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> |
New file |
| | |
| | | /* 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); |
| | | } |
New file |
| | |
| | | // 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() { |
| | | |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "典型案例", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--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> |
New file |
| | |
| | | /* 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; |
| | | } |
New file |
| | |
| | | // 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) |
| | | } |
| | | }, |
| | | |
| | | |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "当事人信息", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--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> |
New file |
| | |
| | | /* 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); |
| | | } |
| | |
| | | |
| | | .cell-item-select {} |
| | | |
| | | .addPerson-main { |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .cell-idCard { |
| | | color: var(--main-color); |
| | | display: flex; |
| | |
| | | } |
| | | }, |
| | | }); |
| | | let agreement = wx.getStorageSync('agreement'); |
| | | |
| | | // 获取弹窗信息提醒 |
| | | if (app.globalData.token) { |
| | | if (!agreement) { |
| | | this.getAgreement(); |
| | | return; |
| | | } |
| | | |
| | | if (!$$.userTest('realName', 'bottom')) { |
| | | this.setData({ |
| | | popupMsg: [{ |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | |
| | | } |
| | | |
| | | .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 { |
| | |
| | | |
| | | .dt_card_r { |
| | | flex: 1; |
| | | background: #ef6c24; |
| | | width: 184rpx; |
| | | height: 136rpx; |
| | | } |
| | | |
| | | .dt_card_r image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .dt_card_title { |
| | |
| | | } |
| | | |
| | | .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%); |
| | | } |
| | | |
New file |
| | |
| | | // 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); |
| | | }, |
| | | |
| | | |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "事项详情", |
| | | "usingComponents": {} |
| | | } |
New file |
| | |
| | | <!--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> |
New file |
| | |
| | | /* 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; |
| | | } |
| | |
| | | label: '不予受理', |
| | | value: '4' |
| | | }], |
| | | dataList: [{ |
| | | title: '', |
| | | show: true |
| | | }, { |
| | | title: '', |
| | | show: false |
| | | }] |
| | | dataList: [] |
| | | }, |
| | | |
| | | // 查看 |
| | |
| | | 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 |
| | |
| | | ...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) |
| | | }, |
| | | |
| | | // 折叠列表 |
| | |
| | | }); |
| | | } |
| | | 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') { |
| | |
| | | { |
| | | "navigationBarTitleText": "进度查询", |
| | | "usingComponents": {} |
| | | "usingComponents": { |
| | | "time-format": "../../components/time-format/index" |
| | | } |
| | | } |
| | |
| | | </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> |
| | | |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | gap: 8rpx; |
| | | } |
| | | |
| | | |
| | | |
| | | .list-detail-title { |
| | | font-size: 28rpx; |
| | | } |
| | |
| | | |
| | | // 实名认证 |
| | | 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; |
| | | } |
| | | }, |
| | | }); |
| | |
| | | }); |
| | | } |
| | | |
| | | // 附件上传的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', |
| | |
| | | select: {}, // 下拉框数据 |
| | | goToMaterialSave: false, // 避免跳转到材料上传页面重复保存草稿 |
| | | agreementMsg: '', // 服务协议 |
| | | ownerId: '', //附件上传id |
| | | data: { |
| | | stepText: 5, //用户须知倒计时5秒 |
| | | timer: null, // 用于存储定时器的引用 |
| | |
| | | amount: '', |
| | | caseDes: '', |
| | | caseClaim: '', |
| | | plaintiffList: [], |
| | | defendantList: [], |
| | | }, // 表单数据 |
| | | fileList: [], //表单附件 |
| | | addPersonData: {}, //添加的当事人 |
| | | materialNum: 0, // 纠纷材料总数量 |
| | | userInfoVisible: false, // 是否采用个人信息更新申请人信息 |
| | |
| | | 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) { |
| | |
| | | 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 |
| | |
| | | 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 || '' |
| | | }) |
| | | } |
| | | }, |
| | | |
| | |
| | | const res = await caseRegisterSaveApi(params); |
| | | $$.hideLoading(); |
| | | if (res.type) { |
| | | Toast('提交成功'); |
| | | // Toast('提交成功'); |
| | | this.setData({ |
| | | saveStatus: true |
| | | }) |
| | | } |
| | | }, |
| | | |
| | |
| | | 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 |
| | | }); |
| | | } |
| | | }, |
| | | }); |
| | | }, |
| | | }); |
| | | }, |
| | | |
| | |
| | | }) |
| | | }, |
| | | |
| | | // 获取省市区等地理资源 |
| | | 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 |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | }, |
| | | |
| | | // 请求下拉框资源 |
| | |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad: function () { |
| | | this.getLocationData(); |
| | | let agreement = wx.getStorageSync('agreement'); |
| | | if (!agreement) { |
| | | this.getAgreement(); |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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="" /> |
| | |
| | | 说明:建议上传人员身份证及纠纷涉及的证件材料,代理人请上传身份证及授权委托书 |
| | | </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}}"> |
| | |
| | | <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"> |
| | |
| | | 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 { |
| | |
| | | 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 { |
| | |
| | | } |
| | | |
| | | .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; |
| | | } |
| | |
| | | } |
| | | |
| | | .success-link { |
| | | color: #D1021C; |
| | | color: #fff; |
| | | width: 116px; |
| | | height: 36px; |
| | | background: #1a6fb8; |
| | | border-radius: 6px; |
| | | padding: 6px 26px; |
| | | margin-top: 32px; |
| | | } |
| | | |
| | | .success-NewButton { |
| | |
| | | const url = api.url; |
| | | |
| | | // 是否是开发环境 |
| | | const isDebug = true; |
| | | const isDebug = false; |
| | | |
| | | const baseUrl = isDebug ? api.url.debug : api.url.web; |
| | | |
| | |
| | | |
| | | // 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, |
| | | }; |