Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/threeSide
| | |
| | | // 清空录音片段 |
| | | this.recordSegments = [] |
| | | this.currentSegment = null |
| | | // 重置计时器 |
| | | // 停止计时器 |
| | | this.stopTimer() |
| | | // 重置录音状态 |
| | | this.isRecording = false |
| | | this.isPaused = false |
| | | this.seconds = 0 |
| | | this.minutes = 0 |
| | | this.hours = 0 |
| | |
| | | { |
| | | "name": "“三个身边”群众工作机制", |
| | | "appid": "__UNI__DB035F5", |
| | | "appid": "__UNI__5DC32B0", |
| | | "description": "", |
| | | "versionName": "1.0.0", |
| | | "versionCode": "100", |
| | |
| | | <view v-for="item, index in videoContent" :key="index"> |
| | | <view class="pl-19 pr-19 pb-17 pt-17 flex j-between a-center br-8 pink"> |
| | | <view class="flex1"> |
| | | <text class="fs-27 font-bold">语音文件{{ index + 1 }}</text> |
| | | <text class="fs-27 font-bold">语音文件{{ (index + 1) | numToWords }}</text> |
| | | </view> |
| | | <view class="flex j-between a-center"> |
| | | <image src="/static/Appeal/delete.png" class="w-27 h-27 mr-38" mode="" |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import dayjs from '@/uni_modules/uview-ui/libs/util/dayjs.js'; |
| | | import { |
| | | save, |
| | | getproblem |
| | | } from './service.js' |
| | | import config from '@/config/index.js' |
| | | import voiceInputPopup from '@/components/voiceInputPopup.vue' |
| | | import { |
| | | mapActions, |
| | | mapState |
| | | } from "vuex"; |
| | | import dayjs from '@/uni_modules/uview-ui/libs/util/dayjs.js'; |
| | | import { |
| | | save, |
| | | getproblem |
| | | } from './service.js' |
| | | import config from '@/config/index.js' |
| | | import voiceInputPopup from '@/components/voiceInputPopup.vue' |
| | | import { |
| | | mapActions, |
| | | mapState |
| | | } from "vuex"; |
| | | |
| | | export default { |
| | | components: { |
| | | voiceInputPopup |
| | | export default { |
| | | components: { |
| | | voiceInputPopup |
| | | }, |
| | | data() { |
| | | return { |
| | | showList: false, |
| | | showDate: false, |
| | | value1: Number(new Date()), |
| | | columns: [ |
| | | ['医疗', '教育', '就业', '住房', '养老'] |
| | | ], |
| | | time: '', |
| | | problemType: '', |
| | | name: '', |
| | | contactNumber: '', |
| | | detailedAddress: '', |
| | | descriptionTitle: '', |
| | | descriptionContent: '', |
| | | videoContent: [], |
| | | latitude: '', |
| | | longitude: '', |
| | | location: '', |
| | | images: [], |
| | | videos: [], |
| | | voiceFile: '', //语音文件多个逗号拼接 |
| | | userInfo: uni.getStorageSync('userInfo'), //个人信息 |
| | | voiceInputShow: false, |
| | | }; |
| | | }, |
| | | computed: { |
| | | ...mapState(["playFlag"]), |
| | | }, |
| | | filters: { |
| | | formatTime(val) { |
| | | if (!val) return '' |
| | | return dayjs(val).format('YYYY-MM-DD HH:mm:ss') |
| | | }, |
| | | data() { |
| | | return { |
| | | showList: false, |
| | | showDate: false, |
| | | value1: Number(new Date()), |
| | | columns: [ |
| | | ['医疗', '教育', '就业', '住房', '养老'] |
| | | ], |
| | | time: '', |
| | | problemType: '', |
| | | name: '', |
| | | contactNumber: '', |
| | | detailedAddress: '', |
| | | descriptionTitle: '', |
| | | descriptionContent: '', |
| | | videoContent: [], |
| | | latitude: '30.5061493', |
| | | longitude: '105.574542', |
| | | location: '测试地址', |
| | | images: [], |
| | | videos: [], |
| | | voiceFile: '', //语音文件多个逗号拼接 |
| | | userInfo: uni.getStorageSync('userInfo'), //个人信息 |
| | | voiceInputShow: false, |
| | | }; |
| | | numToWords(val) { |
| | | const words = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'] |
| | | // 处理 0-10 |
| | | if (val >= 0 && val <= 10) return words[val]; |
| | | // 处理 11-99 |
| | | if (val > 10 && val < 100) { |
| | | const ten = Math.floor(val / 10); |
| | | const unit = val % 10; |
| | | return `${ten > 1 ? words[ten] : ''}十${unit > 0 ? words[unit] : ''}`; |
| | | } |
| | | return val; // 超过99返回原数字 |
| | | } |
| | | }, |
| | | onReady() { |
| | | uni.setNavigationBarTitle({ |
| | | title: '诉求录入' |
| | | }) |
| | | }, |
| | | onLoad() { |
| | | this.getproblem() |
| | | this.time = dayjs().format('YYYY-MM-DD') |
| | | }, |
| | | |
| | | methods: { |
| | | ...mapActions(["playRecording", "pausePlaying"]), |
| | | onPlayRecording(index) { |
| | | // 先处理本地播放状态 |
| | | this.videoContent.forEach((item, i) => { |
| | | item.playing = i === index; |
| | | }); |
| | | // 调用store的播放方法,传url |
| | | this.playRecording(this.videoContent[index].url); |
| | | }, |
| | | computed: { |
| | | ...mapState(["playFlag"]), |
| | | onPausePlaying(index) { |
| | | this.videoContent[index].playing = false; |
| | | this.pausePlaying(this.videoContent[index].url); |
| | | }, |
| | | onReady() { |
| | | uni.setNavigationBarTitle({ |
| | | title: '诉求录入' |
| | | deleteVoice(ind) { |
| | | this.videoContent = this.videoContent.filter((item, index) => index != ind) |
| | | }, |
| | | voiceInput() { |
| | | this.voiceInputShow = true; |
| | | }, |
| | | closeVoiceInput() { |
| | | this.voiceInputShow = false; |
| | | }, |
| | | submitVoiceInput(e) { |
| | | console.log('eeeeeeeeeeeeeeeeeee', e) |
| | | this.videoContent.push({ |
| | | url: e.url, |
| | | data: e.data, |
| | | playing: false |
| | | }); |
| | | this.voiceInputShow = false; |
| | | }, |
| | | previewImage(index) { |
| | | uni.previewImage({ |
| | | urls: this.images, |
| | | current: this.images[index], |
| | | longPressActions: { |
| | | itemList: ['发送给朋友', '保存图片', '收藏'], |
| | | success: function (data) { |
| | | |
| | | }, |
| | | fail: function (err) { |
| | | |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | deletimg(e) { |
| | | this.images = this.images.filter(item => item != e) |
| | | |
| | | }, |
| | | deletvideo(e) { |
| | | this.videos = this.videos.filter(item => item != e) |
| | | }, |
| | | gotoPage(e) { |
| | | uni.navigateTo({ |
| | | url: `/pages/work-detail/maxVideo?url=${e}` |
| | | }) |
| | | }, |
| | | onLoad() { |
| | | this.getproblem() |
| | | this.time = dayjs().format('YYYY-MM-DD') |
| | | getproblem() { |
| | | getproblem().then((resp => { |
| | | |
| | | this.columns = [resp.data.map(item => { |
| | | return item.name |
| | | })] |
| | | })) |
| | | }, |
| | | |
| | | methods: { |
| | | ...mapActions(["playRecording", "pausePlaying"]), |
| | | onPlayRecording(index) { |
| | | // 先处理本地播放状态 |
| | | this.videoContent.forEach((item, i) => { |
| | | item.playing = i === index; |
| | | async submit(type) { |
| | | if (this.videoContent.length > 0) { |
| | | uni.showLoading({ |
| | | title: '正在上传语音文件...' |
| | | }); |
| | | // 调用store的播放方法,传url |
| | | this.playRecording(this.videoContent[index].url); |
| | | }, |
| | | onPausePlaying(index) { |
| | | this.videoContent[index].playing = false; |
| | | this.pausePlaying(this.videoContent[index].url); |
| | | }, |
| | | deleteVoice(ind) { |
| | | this.videoContent = this.videoContent.filter((item, index) => index != ind) |
| | | }, |
| | | voiceInput() { |
| | | this.voiceInputShow = true; |
| | | }, |
| | | closeVoiceInput() { |
| | | this.voiceInputShow = false; |
| | | }, |
| | | submitVoiceInput(e) { |
| | | console.log('eeeeeeeeeeeeeeeeeee', e) |
| | | this.videoContent.push({ |
| | | url: e.url, |
| | | data: e.data, |
| | | playing: false |
| | | }); |
| | | this.voiceInputShow = false; |
| | | }, |
| | | previewImage(index) { |
| | | uni.previewImage({ |
| | | urls: this.images, |
| | | current: this.images[index], |
| | | longPressActions: { |
| | | itemList: ['发送给朋友', '保存图片', '收藏'], |
| | | success: function(data) { |
| | | |
| | | }, |
| | | fail: function(err) { |
| | | |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | deletimg(e) { |
| | | this.images = this.images.filter(item => item != e) |
| | | |
| | | }, |
| | | deletvideo(e) { |
| | | this.videos = this.videos.filter(item => item != e) |
| | | }, |
| | | gotoPage(e) { |
| | | uni.navigateTo({ |
| | | url: `/pages/work-detail/maxVideo?url=${e}` |
| | | }) |
| | | }, |
| | | getproblem() { |
| | | getproblem().then((resp => { |
| | | |
| | | this.columns = [resp.data.map(item => { |
| | | return item.name |
| | | })] |
| | | })) |
| | | }, |
| | | async submit(type) { |
| | | if (this.videoContent.length > 0) { |
| | | uni.showLoading({ |
| | | title: '正在上传语音文件...' |
| | | }); |
| | | |
| | | const uploadPromises = this.videoContent.map(item => { |
| | | return new Promise((resolve, reject) => { |
| | | console.log('item.data', item.data) |
| | | // uni.chooseAudio({ |
| | | // success: (res)=> { |
| | | // console.log(res.tempFilePaths[0]); |
| | | // uni.uploadFile({ |
| | | // url: config.imageUrl, |
| | | // filePath: res.tempFilePaths[0], // 使用 Blob 数据 |
| | | // name: 'file', |
| | | // header: { |
| | | // // 'Content-Type': 'multipart/form-data', |
| | | // 'Authorization': uni.getStorageSync('token') |
| | | // }, |
| | | // success: (uploadFileRes) => { |
| | | // const response = JSON.parse(uploadFileRes.data); |
| | | // if (response.code === 200) { |
| | | // resolve(response.data); |
| | | // } else { |
| | | // reject(new Error('上传失败')); |
| | | // } |
| | | // }, |
| | | // fail: (error) => { |
| | | // reject(error); |
| | | // } |
| | | // }); |
| | | // } |
| | | // }); |
| | | uni.uploadFile({ |
| | | url: config.imageUrl, |
| | | file: item.data, // 使用 Blob 数据 |
| | | name: 'file', |
| | | header: { |
| | | // 'Content-Type': 'multipart/form-data', |
| | | 'Authorization': uni.getStorageSync('token') |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | const response = JSON.parse(uploadFileRes.data); |
| | | if (response.code === 200) { |
| | | resolve(response.data); |
| | | } else { |
| | | reject(new Error('上传失败')); |
| | | } |
| | | }, |
| | | fail: (error) => { |
| | | reject(error); |
| | | const uploadPromises = this.videoContent.map(item => { |
| | | return new Promise((resolve, reject) => { |
| | | console.log('item.data', item.data) |
| | | // uni.chooseAudio({ |
| | | // success: (res)=> { |
| | | // console.log(res.tempFilePaths[0]); |
| | | // uni.uploadFile({ |
| | | // url: config.imageUrl, |
| | | // filePath: res.tempFilePaths[0], // 使用 Blob 数据 |
| | | // name: 'file', |
| | | // header: { |
| | | // // 'Content-Type': 'multipart/form-data', |
| | | // 'Authorization': uni.getStorageSync('token') |
| | | // }, |
| | | // success: (uploadFileRes) => { |
| | | // const response = JSON.parse(uploadFileRes.data); |
| | | // if (response.code === 200) { |
| | | // resolve(response.data); |
| | | // } else { |
| | | // reject(new Error('上传失败')); |
| | | // } |
| | | // }, |
| | | // fail: (error) => { |
| | | // reject(error); |
| | | // } |
| | | // }); |
| | | // } |
| | | // }); |
| | | uni.uploadFile({ |
| | | url: config.imageUrl, |
| | | file: item.data, // 使用 Blob 数据 |
| | | name: 'file', |
| | | header: { |
| | | // 'Content-Type': 'multipart/form-data', |
| | | 'Authorization': uni.getStorageSync('token') |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | const response = JSON.parse(uploadFileRes.data); |
| | | if (response.code === 200) { |
| | | resolve(response.data); |
| | | } else { |
| | | reject(new Error('上传失败')); |
| | | } |
| | | }); |
| | | }, |
| | | fail: (error) => { |
| | | reject(error); |
| | | } |
| | | }); |
| | | }); |
| | | }); |
| | | |
| | | try { |
| | | const uploadedUrls = await Promise.all(uploadPromises); |
| | | this.voiceFile = uploadedUrls.join(','); |
| | | console.log('this.voiceFile', this.voiceFile) |
| | | uni.hideLoading(); |
| | | } catch (error) { |
| | | uni.hideLoading(); |
| | | uni.showToast({ |
| | | title: '语音文件上传失败', |
| | | icon: 'error' |
| | | }); |
| | | return; |
| | | } |
| | | try { |
| | | const uploadedUrls = await Promise.all(uploadPromises); |
| | | this.voiceFile = uploadedUrls.join(','); |
| | | console.log('this.voiceFile', this.voiceFile) |
| | | uni.hideLoading(); |
| | | } catch (error) { |
| | | uni.hideLoading(); |
| | | uni.showToast({ |
| | | title: '语音文件上传失败', |
| | | icon: 'error' |
| | | }); |
| | | return; |
| | | } |
| | | const preciseRegex = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; |
| | | if (!this.time) { |
| | | uni.showToast({ |
| | | title: '请选择时间', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | |
| | | } else if (!this.problemType) { |
| | | uni.showToast({ |
| | | title: '请选择问题类型', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.name) { |
| | | uni.showToast({ |
| | | title: '请输入群众姓名', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.contactNumber) { |
| | | uni.showToast({ |
| | | title: '请输入联系电话', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!preciseRegex.test(this.contactNumber)) { |
| | | uni.showToast({ |
| | | title: '请输入正确的手机号', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.location) { |
| | | uni.showToast({ |
| | | title: '请选择地点', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.detailedAddress) { |
| | | uni.showToast({ |
| | | title: '请输入详细地址', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.descriptionContent) { |
| | | uni.showToast({ |
| | | title: '请输入问题描述', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | const data = { |
| | | time: this.time, |
| | | problemType: this.problemType, |
| | | name: this.name, |
| | | contactNumber: this.contactNumber, |
| | | location: this.location, |
| | | latitude: this.latitude, |
| | | longitude: this.longitude, |
| | | detailedAddress: this.detailedAddress, |
| | | descriptionContent: this.descriptionContent, |
| | | images: this.images.join(','), |
| | | videos: this.videos.join(','), |
| | | voiceFile: this.voiceFile, |
| | | } |
| | | // 问题上报 |
| | | if (type == 1) { |
| | | uni.navigateTo({ |
| | | url: `/pages/problemReporting/problemReporting?data=${JSON.stringify(data)}` |
| | | }) |
| | | return |
| | | } |
| | | // 办理结果录入 |
| | | if (type == 2) { |
| | | uni.navigateTo({ |
| | | url: `/pages/result-entry/index?data=${JSON.stringify(data)}` |
| | | }) |
| | | return |
| | | } |
| | | // 添加 |
| | | if (type == 3) { |
| | | save(data).then(resp => { |
| | | if (resp.code == 200) { |
| | | uni.showToast({ |
| | | title: '保存成功', |
| | | icon: 'none' |
| | | }) |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 1500) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | confirmone(e) { |
| | | |
| | | this.time = dayjs(e.value).format('YYYY-MM-DD') |
| | | this.showDate = false |
| | | }, |
| | | confirmtwo(e) { |
| | | |
| | | this.problemType = e.value[0] |
| | | this.showList = false |
| | | }, |
| | | cancel() { |
| | | this.showDate = false |
| | | this.showList = false |
| | | }, |
| | | close(e) { |
| | | this.showDate = false |
| | | this.showList = false |
| | | }, |
| | | goTopagelocation() { |
| | | |
| | | uni.navigateTo({ |
| | | url: '/pages/location/location' |
| | | } |
| | | const preciseRegex = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; |
| | | if (!this.time) { |
| | | uni.showToast({ |
| | | title: '请选择时间', |
| | | icon: 'none' |
| | | }) |
| | | }, |
| | | uploadImg() { |
| | | uni.chooseImage({ |
| | | count: 1, //默认9 |
| | | sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 |
| | | sourceType: ['album'], //从相册选择 |
| | | success: (res) => { |
| | | return |
| | | |
| | | uni.showLoading() |
| | | console.log('res.tempFilePaths[0]', res.tempFilePaths[0]) |
| | | uni.uploadFile({ |
| | | url: config.imageUrl, |
| | | filePath: res.tempFilePaths[0], |
| | | name: 'file', |
| | | header: { |
| | | 'Authorization': uni.getStorageSync('token') |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | } else if (!this.problemType) { |
| | | uni.showToast({ |
| | | title: '请选择问题类型', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.name) { |
| | | uni.showToast({ |
| | | title: '请输入群众姓名', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.contactNumber) { |
| | | uni.showToast({ |
| | | title: '请输入联系电话', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!preciseRegex.test(this.contactNumber)) { |
| | | uni.showToast({ |
| | | title: '请输入正确的手机号', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.location) { |
| | | uni.showToast({ |
| | | title: '请选择地点', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.detailedAddress) { |
| | | uni.showToast({ |
| | | title: '请输入详细地址', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } else if (!this.descriptionContent) { |
| | | uni.showToast({ |
| | | title: '请输入问题描述', |
| | | icon: 'none' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | this.images = [...this.images, JSON.parse(uploadFileRes.data).data] |
| | | uni.hideLoading() |
| | | }, |
| | | fail: () => { |
| | | uni.hideLoading() |
| | | uni.showToast({ |
| | | title: '上传失败', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | const data = { |
| | | time: this.time, |
| | | problemType: this.problemType, |
| | | name: this.name, |
| | | contactNumber: this.contactNumber, |
| | | location: this.location, |
| | | latitude: this.latitude, |
| | | longitude: this.longitude, |
| | | detailedAddress: this.detailedAddress, |
| | | descriptionContent: this.descriptionContent, |
| | | images: this.images.join(','), |
| | | videos: this.videos.join(','), |
| | | voiceFile: this.voiceFile, |
| | | } |
| | | // 问题上报 |
| | | if (type == 1) { |
| | | uni.navigateTo({ |
| | | url: `/pages/problemReporting/problemReporting?data=${JSON.stringify(data)}` |
| | | }) |
| | | return |
| | | } |
| | | // 办理结果录入 |
| | | if (type == 2) { |
| | | uni.navigateTo({ |
| | | url: `/pages/result-entry/index?data=${JSON.stringify(data)}` |
| | | }) |
| | | return |
| | | } |
| | | // 添加 |
| | | if (type == 3) { |
| | | save(data).then(resp => { |
| | | if (resp.code == 200) { |
| | | uni.showToast({ |
| | | title: '保存成功', |
| | | icon: 'none' |
| | | }) |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 1500) |
| | | } |
| | | }); |
| | | }, |
| | | uploadVideo() { |
| | | uni.chooseVideo({ |
| | | count: 1, //默认9 |
| | | sourceType: ['camera', 'album'], |
| | | success: (res) => { |
| | | const videoExtensions = /\.(mp4|avi|rmvb)$/i; |
| | | if (!videoExtensions.test(res.name)) { |
| | | }) |
| | | } |
| | | }, |
| | | confirmone(e) { |
| | | |
| | | this.time = dayjs(e.value).format('YYYY-MM-DD') |
| | | this.showDate = false |
| | | }, |
| | | confirmtwo(e) { |
| | | |
| | | this.problemType = e.value[0] |
| | | this.showList = false |
| | | }, |
| | | cancel() { |
| | | this.showDate = false |
| | | this.showList = false |
| | | }, |
| | | close(e) { |
| | | this.showDate = false |
| | | this.showList = false |
| | | }, |
| | | goTopagelocation() { |
| | | |
| | | uni.navigateTo({ |
| | | url: '/pages/location/location' |
| | | }) |
| | | }, |
| | | uploadImg() { |
| | | uni.chooseImage({ |
| | | count: 1, //默认9 |
| | | sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 |
| | | sourceType: ['album'], //从相册选择 |
| | | success: (res) => { |
| | | |
| | | uni.showLoading() |
| | | console.log('res.tempFilePaths[0]', res.tempFilePaths[0]) |
| | | uni.uploadFile({ |
| | | url: config.imageUrl, |
| | | filePath: res.tempFilePaths[0], |
| | | name: 'file', |
| | | header: { |
| | | 'Authorization': uni.getStorageSync('token') |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | |
| | | this.images = [...this.images, JSON.parse(uploadFileRes.data).data] |
| | | uni.hideLoading() |
| | | }, |
| | | fail: () => { |
| | | uni.hideLoading() |
| | | uni.showToast({ |
| | | title: '请上传mp4, avi, rmvb格式的视频', |
| | | icon: 'none', |
| | | duration: 3000 |
| | | title: '上传失败', |
| | | icon: 'error' |
| | | }) |
| | | return |
| | | } |
| | | uni.showLoading() |
| | | uni.uploadFile({ |
| | | url: config.imageUrl, |
| | | filePath: res.tempFilePath, |
| | | name: 'file', |
| | | header: { |
| | | 'Authorization': uni.getStorageSync('token') |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | |
| | | this.videos = [...this.videos, JSON.parse(uploadFileRes.data).data] |
| | | uni.hideLoading() |
| | | }, |
| | | fail: () => { |
| | | uni.hideLoading() |
| | | uni.showToast({ |
| | | title: '上传失败', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | uploadVideo() { |
| | | uni.chooseVideo({ |
| | | count: 1, //默认9 |
| | | sourceType: ['camera', 'album'], |
| | | success: (res) => { |
| | | const videoExtensions = /\.(mp4|avi|rmvb)$/i; |
| | | if (!videoExtensions.test(res.name)) { |
| | | uni.showToast({ |
| | | title: '请上传mp4, avi, rmvb格式的视频', |
| | | icon: 'none', |
| | | duration: 3000 |
| | | }) |
| | | return |
| | | } |
| | | }); |
| | | }, |
| | | } |
| | | uni.showLoading() |
| | | uni.uploadFile({ |
| | | url: config.imageUrl, |
| | | filePath: res.tempFilePath, |
| | | name: 'file', |
| | | header: { |
| | | 'Authorization': uni.getStorageSync('token') |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | |
| | | this.videos = [...this.videos, JSON.parse(uploadFileRes.data).data] |
| | | uni.hideLoading() |
| | | }, |
| | | fail: () => { |
| | | uni.hideLoading() |
| | | uni.showToast({ |
| | | title: '上传失败', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .min-108 { |
| | | min-height: 108rpx; |
| | | .min-108 { |
| | | min-height: 108rpx; |
| | | } |
| | | |
| | | .red { |
| | | color: rgba(255, 73, 72, 1); |
| | | } |
| | | |
| | | .pink { |
| | | background: #FFF1F4; |
| | | border-radius: 8rpx; |
| | | margin-top: 19rpx; |
| | | } |
| | | |
| | | .card { |
| | | border-bottom: 2rpx solid rgba(0, 10, 26, 0.07); |
| | | } |
| | | |
| | | .bg { |
| | | background: #F8F8F8; |
| | | } |
| | | |
| | | .content { |
| | | padding: 38rpx 31rpx 162rpx 31rpx; |
| | | |
| | | .main { |
| | | padding: 0 27rpx 48rpx 27rpx; |
| | | background: #FFFFFF; |
| | | box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1); |
| | | border-radius: 19rpx; |
| | | } |
| | | } |
| | | |
| | | .red { |
| | | color: rgba(255, 73, 72, 1); |
| | | textarea { |
| | | padding: 27rpx 31rpx 27rpx 31rpx; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .img { |
| | | position: relative; |
| | | |
| | | .img-icon { |
| | | height: 140rpx; |
| | | line-height: 140rpx; |
| | | position: absolute; |
| | | top: 0rpx; |
| | | left: 35rpx; |
| | | } |
| | | } |
| | | |
| | | .pink { |
| | | background: #FFF1F4; |
| | | border-radius: 8rpx; |
| | | margin-top: 19rpx; |
| | | } |
| | | /deep/.u-popup__content { |
| | | border-radius: 16rpx 16rpx 0rpx 0rpx; |
| | | } |
| | | |
| | | .card { |
| | | border-bottom: 2rpx solid rgba(0, 10, 26, 0.07); |
| | | } |
| | | /deep/ .u-toolbar { |
| | | border-bottom: 2rpx solid RGBA(243, 243, 243, 1); |
| | | } |
| | | |
| | | .bg { |
| | | background: #F8F8F8; |
| | | } |
| | | /deep/ .u-toolbar__wrapper__cancel { |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #FF4948 !important; |
| | | } |
| | | |
| | | .content { |
| | | padding: 38rpx 31rpx 162rpx 31rpx; |
| | | /deep/ .u-toolbar__wrapper__confirm { |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #FF4948 !important; |
| | | } |
| | | |
| | | .main { |
| | | padding: 0 27rpx 48rpx 27rpx; |
| | | background: #FFFFFF; |
| | | box-shadow: 0rpx 0rpx 27rpx 0rpx rgba(0, 0, 0, 0.1); |
| | | border-radius: 19rpx; |
| | | } |
| | | } |
| | | .footer { |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | box-shadow: 0rpx -4rpx 27rpx 0rpx rgba(0, 0, 0, 0.08); |
| | | width: calc(100% - 20rpx); |
| | | background-color: #fff; |
| | | display: flex; |
| | | gap: 27rpx; |
| | | padding: 33rpx 10rpx; |
| | | justify-content: space-between; |
| | | |
| | | textarea { |
| | | padding: 27rpx 31rpx 27rpx 31rpx; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .img { |
| | | position: relative; |
| | | |
| | | .img-icon { |
| | | height: 140rpx; |
| | | line-height: 140rpx; |
| | | position: absolute; |
| | | top: 0rpx; |
| | | left: 35rpx; |
| | | } |
| | | } |
| | | |
| | | /deep/.u-popup__content { |
| | | border-radius: 16rpx 16rpx 0rpx 0rpx; |
| | | } |
| | | |
| | | /deep/ .u-toolbar { |
| | | border-bottom: 2rpx solid RGBA(243, 243, 243, 1); |
| | | } |
| | | |
| | | /deep/ .u-toolbar__wrapper__cancel { |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #FF4948 !important; |
| | | } |
| | | |
| | | /deep/ .u-toolbar__wrapper__confirm { |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #FF4948 !important; |
| | | } |
| | | |
| | | .footer { |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | box-shadow: 0rpx -4rpx 27rpx 0rpx rgba(0, 0, 0, 0.08); |
| | | width: calc(100% - 20rpx); |
| | | background-color: #fff; |
| | | .cancel { |
| | | width: 331rpx; |
| | | height: 77rpx; |
| | | border: 2rpx solid rgba(252, 141, 85, 1); |
| | | border-radius: 38rpx; |
| | | display: flex; |
| | | gap: 27rpx; |
| | | padding: 33rpx 10rpx; |
| | | justify-content: space-between; |
| | | |
| | | .cancel { |
| | | width: 331rpx; |
| | | height: 77rpx; |
| | | border: 2rpx solid rgba(252, 141, 85, 1); |
| | | border-radius: 38rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | color: #FF4948; |
| | | } |
| | | |
| | | .ok { |
| | | width: 331rpx; |
| | | height: 77rpx; |
| | | background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%); |
| | | border-radius: 48rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | color: #FFFFFF; |
| | | } |
| | | align-items: center; |
| | | justify-content: center; |
| | | color: #FF4948; |
| | | } |
| | | |
| | | .ok { |
| | | width: 331rpx; |
| | | height: 77rpx; |
| | | background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%); |
| | | border-radius: 48rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | color: #FFFFFF; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </view> |
| | | </view> |
| | | <view class="person-item flex1">{{detail.name}}</view> |
| | | <view class="phone-item flex1">{{detail.contactNumber}}</view> |
| | | <view class="flex a-center"> |
| | | <view class="phone-item flex1">{{detail.contactNumber}}</view> |
| | | <image @click.stop="callPhone(detail.contactNumber)" src="../../static/tell.png" |
| | | class="w-58 h-58 shrink0 " /> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | callPhone(phoneNumber) { |
| | | uni.makePhoneCall({ |
| | | phoneNumber |
| | | }); |
| | | }, |
| | | close() { |
| | | this.showPop = false |
| | | }, |
| | |
| | | navigator.geolocation.getCurrentPosition(success, error, options);
|
| | |
|
| | | function success(position) {
|
| | | geoconv({coords:`${position.coords.longitude},${position.coords.latitude}`}).then(res=>{
|
| | | console.log('position', position)
|
| | | geoconv({
|
| | | coords: `${position.coords.longitude},${position.coords.latitude}`
|
| | | }).then(res => {
|
| | | console.log('res', res)
|
| | | const latitude = res.data.result[0].y;
|
| | | const longitude = res.data.result[0].x;
|
| | | var point = new BMapGL.Point(longitude, latitude); // 创建点坐标
|
| | |
| | | }
|
| | |
|
| | | function error(err) {
|
| | | console.log('err', err)
|
| | | switch (err.code) {
|
| | | case err.PERMISSION_DENIED:
|
| | | console.error("用户拒绝了位置请求。");
|
| | |
| | | this.map.addOverlay(marker);
|
| | | this.markers.push(marker);
|
| | | });
|
| | | |
| | |
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
| | | |
| | | // 如果第一层是街道 |
| | | if (this.regionTree[this.regionTree.length - 1]?.tier === 3) { |
| | | const streets = this.regionTree.slice(1).map(item => ({ |
| | | name: item.name, |
| | | id: item.id, |
| | | tier: item.tier, |
| | | children: item.children || [] |
| | | })); |
| | | return [{ name: "全部", id: "all", tier: 3, children: [] }, ...streets]; |
| | | } |
| | | // 如果第一层是社区 |
| | | else if (this.regionTree[this.regionTree.length - 1]?.tier === 4) { |
| | | return this.regionTree.slice(1).map(item => ({ |
| | | name: item.name, |
| | | id: item.id, |
| | |
| | | children: item.children || [] |
| | | })); |
| | | } |
| | | |
| | | // 如果当前选中的是区县 |
| | | if (county.tier === 2) { |
| | | else if (county.tier === 2) { |
| | | const streets = county.children.filter((c) => c && c.tier === 3); |
| | | return streets.length |
| | | ? [{ name: "全部", id: "all", tier: 3, children: [] }, ...streets] |
| | |
| | | const communities = street.children?.filter(c => c && c.tier === 4) || []; |
| | | return communities.length ? [{ name: "全部", id: "all", tier: 4 }, ...communities] : []; |
| | | } |
| | | |
| | | // 如果第一层是社区 |
| | | else if (this.regionTree[this.regionTree.length - 1]?.tier === 4) { |
| | | return this.regionTree.slice(1).map(item => ({ |
| | | name: item.name, |
| | | id: item.id, |
| | | tier: item.tier, |
| | | children: item.children || [] |
| | | })); |
| | | } |
| | | // 如果当前选中的是区县 |
| | | if (county.tier === 2) { |
| | | else if (county.tier === 2) { |
| | | // 区县下直接有社区 |
| | | const communities = county.children.filter((c) => c && c.tier === 4); |
| | | if (communities.length) |
| | |
| | | <image @tap="uploadImg(2)" src="@/static/Appeal/add.png" class="w-140 h-140 shrink0" /> |
| | | </view> |
| | | </view> |
| | | <view @click.stop="submit" class="mt-38 fs-35 lh-96 br-48 txt-center font-bold bgcolor6 color4 fixed" |
| | | <view @click.stop="submit" class="mt-38 fs-35 lh-96 br-48 txt-center font-bold bgcolor6 color4 fixed zIndex1000" |
| | | style="width: calc(100% - 62rpx);bottom: calc(env(safe-area-inset-bottom) + 10rpx);">确认</view> |
| | | <view class="btn-box"></view> |
| | | <view class="safe-box"></view> |
| | |
| | | <view class="allContent"> |
| | | <view class="topStatus"> |
| | | <view class="status"> |
| | | {{ ['正在办理', '延期办理', '超时办理', '已办结 ', '群众撤销', '上报待审核', '上级驳回', '延期待审核', '已办结'][orderInfo.status] || '' }} |
| | | {{ ['正在办理', '延期办理', '超时办理', '已办结 ', '群众撤销', '上报待审核', '上级驳回', '延期待审核', '已办结'][orderInfo.status] || '' |
| | | }} |
| | | </view> |
| | | <view class="flex a-center j-between mb-17"> |
| | | <view class="tit">当前状态</view> |
| | | <!-- 延期状态 --> |
| | | <view v-if="orderInfo.status == 1 " class="flex a-center" @click.stop="toDelayDetail()"> |
| | | <view v-if="orderInfo.status == 1" class="flex a-center" @click.stop="toDelayDetail()"> |
| | | <image src="../../static/detailImg/explain.png" class="plainIcon shrink0"></image> |
| | | <view class="explain">延期情况说明</view> |
| | | </view> |
| | |
| | | <view class="flex j-between a-center"> |
| | | <view class="title">诉求号:{{ orderInfo.serialNumber || '' }}</view> |
| | | <view class="flex a-center" |
| | | v-if="(orderInfo.status == 0||orderInfo.status == 6)&&orderInfo.listControlsButtonStatus == 0" |
| | | v-if="(orderInfo.status == 0 || orderInfo.status == 6) && orderInfo.listControlsButtonStatus == 0" |
| | | @click.stop="applyOverTime"> |
| | | <view class="apply">延期申请</view> |
| | | <image src="../../static/detailImg/right.png" class="rightIcon shrink0"></image> |
| | |
| | | <!-- 问题描述 --> |
| | | <view class="problem"> |
| | | <view class="title">问题描述</view> |
| | | <view v-for="(item,index) in getVoiceFile(orderInfo.voiceFile)" :key="index" |
| | | <view v-for="(item, index) in videoContent" :key="index" |
| | | class="flex a-center j-between py-17 px-19 br-8 bgcolor1 mb-19"> |
| | | <view class="fs-27 lh-38">语音文件{{(index + 1) | numToWords}}</view> |
| | | <image v-if="!playFlag" @click.stop="playRecording(item)" src="../../static/24gf-playCircle@2x.png" |
| | | class="w-27 h-27 shrink0" /> |
| | | <image v-else @click.stop="pausePlaying" src="../../static/pausePlaying.png" |
| | | <view class="fs-27 lh-38">语音文件{{ (index + 1) | numToWords }}</view> |
| | | <image v-if="!playFlag" @click.stop="onPlayRecording(index)" |
| | | src="../../static/24gf-playCircle@2x.png" class="w-27 h-27 shrink0" /> |
| | | <image v-else @click.stop="onPausePlaying(index)" src="../../static/pausePlaying.png" |
| | | class="w-27 h-27 shrink0" /> |
| | | </view> |
| | | <view class="desc"> |
| | |
| | | </view> |
| | | |
| | | <!-- 上级显示 --> |
| | | <view class="btnButtom" v-if="(!isParty)&&orderInfo.listControlsButtonStatus == 0"> |
| | | <view class="btnButtom" v-if="(!isParty) && orderInfo.listControlsButtonStatus == 0"> |
| | | <view class="btnDown" @click.stop="toUp" v-if="userInfo.levelId > 1" |
| | | :class="[2, 3].includes(userInfo.levelId) ? '' : 'partyUp'">问题上报</view> |
| | | <view class="btnDown" @click.stop="toDown" v-if="userInfo.levelId < 4" |
| | |
| | | <!-- 上级显示 --> |
| | | |
| | | <!-- 党员显示 --> |
| | | <view class="btnButtom" v-if=" isParty && orderInfo.listControlsButtonStatus == 0"> |
| | | <view class="btnButtom" v-if="isParty && orderInfo.listControlsButtonStatus == 0"> |
| | | <view class="btnDown partyUp" @click.stop="toUp">问题上报</view> |
| | | <view class="btnAdd partyDown" @click="addProgress">添加办理进度</view> |
| | | <view class="btnAdd partyDown" @click="resultEntery">办理结果录入</view> |
| | |
| | | |
| | | userInfo: uni.getStorageSync('userInfo'), //个人信息 |
| | | isParty: false, //true 党员 false 管理员 |
| | | |
| | | videoContent: [], |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | ...mapActions(["playRecording", "pausePlaying"]), |
| | | getVoiceFile(voiceFile) { |
| | | if (!voiceFile || voiceFile.length == 0) return [] |
| | | return voiceFile.split(',') |
| | | this.videoContent = voiceFile.split(',').map(item => { |
| | | return { |
| | | url: item, |
| | | playing: false |
| | | } |
| | | }) |
| | | }, |
| | | onPlayRecording(index) { |
| | | // 先处理本地播放状态 |
| | | this.videoContent.forEach((item, i) => { |
| | | item.playing = i === index; |
| | | }); |
| | | // 调用store的播放方法,传url |
| | | this.playRecording(this.videoContent[index].url); |
| | | }, |
| | | onPausePlaying(index) { |
| | | this.videoContent[index].playing = false; |
| | | this.pausePlaying(this.videoContent[index].url); |
| | | }, |
| | | callPhone(phoneNumber) { |
| | | uni.makePhoneCall({ |
| | |
| | | this.orderInfo = { |
| | | ...res.data |
| | | } |
| | | this.getVoiceFile(this.orderInfo.voiceFile) |
| | | |
| | | }) |
| | | }, |
| | |
| | | |
| | | .pop-textArea { |
| | | padding: 34rpx 44rpx 0 44rpx; |
| | | margin: 2rpx; |
| | | |
| | | ::v-deep .u-textarea {} |
| | | |
| | |
| | | } |
| | | state.innerAudioContext = uni.createInnerAudioContext(); |
| | | state.innerAudioContext.autoplay = true; |
| | | // state.innerAudioContext.src = |
| | | // 'https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/admin/6660c5497ff34ee5b2bddaed01dd3880.wav'; |
| | | state.innerAudioContext.src = url |
| | | // 设置音频格式为MPEG |
| | | state.innerAudioContext.format = 'mpeg'; |
| | | state.innerAudioContext.src = url; |
| | | |
| | | // 显示音频信息 |
| | | // uni.showToast({ |
| | | // title: '音频链接:' + url, |
| | | // icon: 'none', |
| | | // duration: 3000 |
| | | // }); |
| | | |
| | | // 添加加载事件处理 |
| | | state.innerAudioContext.onCanplay(() => { |
| | | console.log('音频可以播放了'); |
| | | uni.showToast({ |
| | | title: '音频已准备就绪', |
| | | icon: 'none', |
| | | duration: 2000 |
| | | }); |
| | | }); |
| | | |
| | | state.innerAudioContext.onPlay(() => { |
| | | state.playFlag = true; |
| | | uni.showToast({ |
| | | title: '开始播放', |
| | | icon: 'none', |
| | | duration: 2000 |
| | | }); |
| | | }); |
| | | |
| | | state.innerAudioContext.onError((res) => { |
| | | // console.log('播放错误', res); |
| | | console.log('播放错误', res); |
| | | uni.showToast({ |
| | | title: '播放错误'+`${res}`, |
| | | icon: 'none', |
| | | duration: 3000 |
| | | }); |
| | | // 显示具体的错误信息 |
| | | // let errorMsg = '音频播放失败'; |
| | | // if (res.errMsg) { |
| | | // errorMsg += ':' + res.errMsg; |
| | | // } |
| | | // uni.showToast({ |
| | | // title: errorMsg, |
| | | // icon: 'none', |
| | | // duration: 3000 |
| | | // }); |
| | | dispatch('stopPlaying') |
| | | }); |
| | | |
| | | state.innerAudioContext.onEnded((res) => { |
| | | // console.log('播放自然结束', res); |
| | | console.log('播放自然结束', res); |
| | | uni.showToast({ |
| | | title: '播放结束', |
| | | icon: 'none', |
| | | duration: 2000 |
| | | }); |
| | | dispatch('stopPlaying') |
| | | }); |
| | | }, |
| | |
| | | this.chunks.push(e.data) |
| | | }, |
| | | saveRecordingData() { |
| | | const blob = new Blob(this.chunks, { 'type': 'audio/mpeg' }), |
| | | const blob = new Blob(this.chunks, { 'type': 'audio/mp3' }), |
| | | localUrl = URL.createObjectURL(blob) |
| | | |
| | | const endTime = new Date().getTime() |
| | |
| | | |
| | | return new Promise(function(resolve, reject) { |
| | | let token = uni.getStorageSync('token') |
| | | token = |
| | | 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0MjE4MjgwODU4Mzc4MjYsInR5cGUiOjEsImV4cCI6MTc0OTAxMjMwMSwiY3JlYXRlZCI6MTc0NzcxNjMwMTM0OH0.8C2x0xHFW45XbehroA1uWziKsUdVHFck8VpIOVkS_s0KvAeTbFG7nIeEQEjGq0a8bn6kHIF3q58mJi4H34Q0Cg' |
| | | uni.setStorageSync('token', token) |
| | | // token = |
| | | // 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjE4OTI0MjE4MjgwODU4Mzc4MjYsInR5cGUiOjEsImV4cCI6MTc0OTAxMjMwMSwiY3JlYXRlZCI6MTc0NzcxNjMwMTM0OH0.8C2x0xHFW45XbehroA1uWziKsUdVHFck8VpIOVkS_s0KvAeTbFG7nIeEQEjGq0a8bn6kHIF3q58mJi4H34Q0Cg' |
| | | // uni.setStorageSync('token', token) |
| | | let header = { |
| | | 'content-type': type ? 'application/x-www-form-urlencoded;charset=UTF-8' : 'application/json', |
| | | 'Authorization': token, |
| | |
| | | const [modalVisible1, handleModalVisibles1] = useState(false); |
| | | const [roleList, setRoleList] = useState([]); |
| | | const [unitId, setUnitId] = useState(''); |
| | | const [tier, setTier] = useState(0); |
| | | const [openKeys, setOpenKeys] = useState([]); |
| | | const access = useAccess(); |
| | | const [items, setItems] = useState([]); |
| | |
| | | if (e && e.domEvent) { |
| | | e.domEvent.stopPropagation(); |
| | | } |
| | | console.log('item', item); |
| | | setUnitId(item.id); |
| | | setTier(item.tier); |
| | | const values = form.getFieldsValue(); |
| | | actionRef.current.reload(values); |
| | | }} |
| | |
| | | if (e && e.domEvent) { |
| | | e.domEvent.stopPropagation(); |
| | | } |
| | | console.log('item////////////', item); |
| | | setTier(item.tier); |
| | | setUnitId(item.id); |
| | | const values = form.getFieldsValue(); |
| | | actionRef.current.reload(values); |
| | |
| | | 2: '区县', |
| | | 3: '街道', |
| | | 4: '社区', |
| | | 5: '党员', |
| | | }, |
| | | }, |
| | | { |
| | |
| | | initialValues={{ type: 1 }} |
| | | onReset={() => { |
| | | setUnitId(''); |
| | | setTier(''); |
| | | setOpenKeys([]); |
| | | actionRef.current.reload(); |
| | | }} |
| | |
| | | rowKey="id" |
| | | onReset={() => { |
| | | setUnitId(''); |
| | | setTier(''); |
| | | setOpenKeys([]); |
| | | actionRef.current.reset(); |
| | | }} |
| | |
| | | request={(params) => { |
| | | let obj = { ...params }; |
| | | if (unitId) { |
| | | obj.departmentId = unitId; |
| | | obj.code = unitId; |
| | | } |
| | | if (params.departmentId) { |
| | | obj.departmentId = params.departmentId[params.departmentId.length - 1]; |
| | | // if (params.departmentId) { |
| | | // obj.departmentId = params.departmentId[params.departmentId.length - 1]; |
| | | // } |
| | | if (tier && !params.accountLevel) { |
| | | obj.accountLevel = tier; |
| | | } |
| | | if (form.getFieldValue('type')) { |
| | | obj.type = form.getFieldValue('type'); |
| | |
| | | const handleSearch = async (values) => { |
| | | setLoading(true); |
| | | let time = ''; |
| | | if (dateRange && dateRange.length === 2) { |
| | | time = `${dateRange[0].format('YYYY-MM-DD')} - ${dateRange[1].format('YYYY-MM-DD')}`; |
| | | let range = dateRange; |
| | | if (!range || range.length !== 2) { |
| | | // 没选时间时默认近7天 |
| | | const end = moment().endOf('day'); |
| | | const start = moment().subtract(6, 'days').startOf('day'); |
| | | range = [start, end]; |
| | | setDateRange(range); |
| | | form.setFieldsValue({ time: range }); |
| | | } |
| | | if (range && range.length === 2) { |
| | | time = `${range[0].format('YYYY-MM-DD')} - ${range[1].format('YYYY-MM-DD')}`; |
| | | } |
| | | const params = { |
| | | cityCode: values.cityCode, |
| | |
| | | }); |
| | | }, [adminLevel]); |
| | | |
| | | useEffect(() => { |
| | | // 页面初始默认近7天 |
| | | const end = moment().endOf('day'); |
| | | const start = moment().subtract(6, 'days').startOf('day'); |
| | | const dates = [start, end]; |
| | | setDateRange(dates); |
| | | form.setFieldsValue({ time: dates }); |
| | | form.submit(); |
| | | // eslint-disable-next-line |
| | | }, []); |
| | | |
| | | // 处理区县选择 |
| | | const handleDistrictChange = async (value) => { |
| | | if (!value) { |
| | |
| | | options={communityOptions} |
| | | placeholder="请选择社区" |
| | | fieldNames={{ label: 'name', value: 'communityId' }} |
| | | disabled={adminLevel <= 1 && !form.getFieldValue('districtId')} |
| | | disabled={adminLevel <= 2 && !form.getFieldValue('streetId')} |
| | | />, |
| | | }, |
| | | ]; |
| | |
| | | form.resetFields(); |
| | | setStreetOptions([]); |
| | | setCommunityOptions([]); |
| | | const end = moment().endOf('day'); |
| | | const start = moment().subtract(6, 'days').startOf('day'); |
| | | const dates = [start, end]; |
| | | setDateRange(dates); |
| | | form.setFieldsValue({ time: dates }); |
| | | form.submit(); |
| | | }}> |
| | | 重置 |
| | | </Button> |
| | |
| | | }} |
| | | /> |
| | | <Button onClick={() => { |
| | | const end = moment(); |
| | | const start = moment().subtract(7, 'days'); |
| | | const end = moment().endOf('day'); |
| | | const start = moment().subtract(6, 'days').startOf('day'); |
| | | const dates = [start, end]; |
| | | setDateRange(dates); |
| | | form.setFieldsValue({ time: dates }); |
| | | form.submit(); |
| | | }}>近7天</Button> |
| | | <Button onClick={() => { |
| | | const end = moment(); |
| | | const start = moment().subtract(30, 'days'); |
| | | const end = moment().endOf('day'); |
| | | const start = moment().subtract(29, 'days').startOf('day'); |
| | | const dates = [start, end]; |
| | | setDateRange(dates); |
| | | form.setFieldsValue({ time: dates }); |