From 242945e6e4708a2ae6ac896ba62241fffe456dac Mon Sep 17 00:00:00 2001 From: zhouwenxuan <1175765986@qq.com> Date: 星期二, 01 八月 2023 15:23:02 +0800 Subject: [PATCH] 响应反馈 --- pages/tabBar/notice/measures.vue | 85 ++++++++++--- pages/tabBar/current/current.vue | 55 ++++---- pages/tabBar/notice/detail.vue | 55 +++++++- pages/tabBar/notice/notice.vue | 3 pages/tabBar/responsivity/showMeasures.vue | 101 +++------------- pages/tabBar/weather/weather.vue | 2 api/notice.js | 40 ++++++ pages/index/index.vue | 1 pages/tabBar/examine/examine.vue | 2 pages/tabBar/response/response.vue | 2 10 files changed, 203 insertions(+), 143 deletions(-) diff --git a/api/notice.js b/api/notice.js index 1731239..3bcdf38 100644 --- a/api/notice.js +++ b/api/notice.js @@ -22,3 +22,43 @@ data }) } + +export function measureList(data) { + return service({ + url: '/response/measure/page', + method: 'POST', + data + }) +} + +export function submitMeasures(data) { + return service({ + url: '/app/warninfo/responseMeasure/submit', + method: 'POST', + data + }) +} + +export function getPublished(data) { + return service({ + url: '/app/warninfo/published/Page', + method: 'POST', + data + }) +} + +export function getMeasureDetail(data) { + return service({ + url: '/app/warninfo/responseMeasure/get', + method: 'POST', + data + }) +} + +export function getResponseDetail(data) { + return service({ + url: '/app/warninfo/responses/page', + method: 'POST', + data + }) +} \ No newline at end of file diff --git a/pages/index/index.vue b/pages/index/index.vue index 302c190..f5ae232 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -64,6 +64,7 @@ uni.setStorageSync("tk", res.data.tk); uni.setStorageSync("uid",res.data.uid); uni.setStorageSync('user', res.data); + uni.setStorageSync('unittype',res.data.unittype); uni.setStorageSync('roleName', res.data.role.roleName); if(res.data.role.roleName == '工作人员'){ this.$store.commit('setRoleId', 'user_other'); diff --git a/pages/tabBar/current/current.vue b/pages/tabBar/current/current.vue index e0f559d..9ad74a3 100644 --- a/pages/tabBar/current/current.vue +++ b/pages/tabBar/current/current.vue @@ -74,7 +74,7 @@ <script> import tabBar from '../tabBarIndex.vue' - import {getExamine} from '../../../api/examine.js' + import { getPublished } from '../../../api/notice.js' import tebBar from '../tabBarIndex.vue' export default { components:{ @@ -84,11 +84,10 @@ return { data: { pageIndex: 1, - pageSize: 10, + pageSize: 10000000, searchParams: { emergType: null,//1-紧急;2-常规 warningLevel: null,//1-红色预警;2-橙色预警;3-黄色预警;4-蓝色预警 - reviewStatus: null//1:未审核,2:已审核,3:审核已驳回 } }, page: 'pages/tabBar/current/current', @@ -115,9 +114,12 @@ ], selectedSaleAnalysis: 'all', InfoList: [], + unitType: '', } }, onLoad() { + this.unitType = uni.getStorageSync('unittype'); + console.log("11",this.unitType) //获取手机状态栏高度 this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight']; uni.hideTabBar(); @@ -135,30 +137,17 @@ getInfoList() { this.data.searchParams.emergType = this.checked ? 1 : null; this.data.searchParams.warningLevel = this.selectedSaleAnalysis == 'all' ? null : this.selectedSaleAnalysis =='red' ? 1 : this.selectedSaleAnalysis =='orange' ? 2: this.selectedSaleAnalysis =='yellow'? 3 : 4; - // getExamine(this.data).then(res => { - // if(res.code == 100) { - this.InfoList = [ - { - attachment: null, - disasterType: 1, - gmtReviewSubmit: "2023-07-21 14:36:16", - id: 111, - infoSubmitter: "1-1", - infoSubmitterReal: "省级工作人员", - publishingUnit: "自治区自然灾害综合检测预警中心", - reviewStatus: 1, - title: "【20230721】预警信息标题", - warningLevel: 1, - } - ]; - if(this.InfoList.length > 0) { + getPublished(this.data).then(res => { + if(res.code == 100) { + this.InfoList = res.data + if(this.InfoList && this.InfoList.length > 0) { this.InfoList.forEach((item, index) => { this.InfoList[index].colorContent = item.warningLevel == 1 ? '红色预警': item.warningLevel == 2 ? '橙色预警': item.warningLevel == 3 ? '黄色预警':'蓝色预警'; this.InfoList[index].warningLevel = item.warningLevel; }); } - // } - // }) + } + }) }, handleButtonClick(button) { this.selectedSaleAnalysis = button.label; @@ -171,12 +160,22 @@ }) }, toResponsivity(item) { - //县 - uni.navigateTo({ - url: `/pages/tabBar/responsivity/countyResponsivity?data=` + encodeURIComponent(JSON.stringify(item)) - }) - //市 - //村 + console.log("item",item) + + // if(this.unitType == 2 || this.unitType == 1 ){ + // uni.navigateTo({ + // url: `/pages/tabBar/responsivity/countyResponsivity?data=` + encodeURIComponent(JSON.stringify(item)) + // }) + // }else if(this.unitType == 3){ + // uni.navigateTo({ + // url: `/pages/tabBar/responsivity/cityResponsivity?data=` + encodeURIComponent(JSON.stringify(item)) + // }) + // }else if(this.unitType == 4){ + // uni.navigateTo({ + // url: `/pages/tabBar/responsivity/villageResponsivity?data=` + encodeURIComponent(JSON.stringify(item)) + // }) + // } + }, //下拉刷新 onPullDownRefresh() { diff --git a/pages/tabBar/examine/examine.vue b/pages/tabBar/examine/examine.vue index c23c6e1..90c1acd 100644 --- a/pages/tabBar/examine/examine.vue +++ b/pages/tabBar/examine/examine.vue @@ -86,7 +86,7 @@ return { data: { pageIndex: 1, - pageSize: 10, + pageSize: 999999999, searchParams: { emergType: null,//1-紧急;2-常规 warningLevel: null,//1-红色预警;2-橙色预警;3-黄色预警;4-蓝色预警 diff --git a/pages/tabBar/notice/detail.vue b/pages/tabBar/notice/detail.vue index 5be604a..28aee18 100644 --- a/pages/tabBar/notice/detail.vue +++ b/pages/tabBar/notice/detail.vue @@ -25,11 +25,19 @@ border-color="white"> </u-tag> </view> - <text class="textTop"><b>发布单位:</b>{{detailData.publishingUnit}}</text> + <text class="textTop" v-if="detailData.forwardPath" style="display: flex;"><b>发布单位:</b> + <text v-for="(item,index) in detailData.forwardPath"> + <text v-if="index !=detailData.forwardPath.length-1"> + {{item}}> + </text> + <text v-else>{{item}}</text> + </text> + </text> + <text class="textTop" v-else><b>发布单位:</b>{{detailData.publishingUnit}}</text> <text class="textTop"><b>短信内容:</b><i style="background-color: rgb(240, 248, 255);">{{detailData.content}}发布单位:{{detailData.publishingUnit}}</i></text> <view style="display: flex;"> <text class="textTop" style="width: 76px;" ><b>附件内容:</b></text> - <!-- <view class="attache" v-if="isAllImg == 'no'"> + <view class="attache" v-if="isAllImg == 'no'"> <view v-for="(item, index) in detailData.attachments" :key="index" > <view style="display: flex;margin-top: 10px;" v-if="item.suffix == 'jpg'|| item.suffix =='jpeg' || item.suffix =='png'"> <image @click="previewSqs(item,index)" :src="item.attachment" style="width: 100rpx; height: 100rpx;margin-left: 5rpx;border: 3px solid #ccc;margin-right: 3px;"></image> @@ -49,7 +57,7 @@ <u-icon name="attach" color="#2979ff" size="20"></u-icon> {{item.attachementName}} </view> </view> - </view> --> + </view> <!-- <view style="width: 100%; height: 100px;"> <iframe :src="" width="100%" height="100%"> </iframe> @@ -102,8 +110,8 @@ </view> <!-- //村级显示 --> </view> - <view class="measures"> - <u-button class="resBtn" type="primary" @click="goMeasures">响应措施反馈</u-button> + <view class="measures" v-if="unitType == 4"> + <u-button class="resBtn" type="primary" @click="goMeasures" v-if="role == '工作人员'">响应措施反馈</u-button> </view> </view> </template> @@ -112,6 +120,7 @@ import VUE_APP_BASE_URL from '../../../common/constant.js' import { submit } from '../../../api/examine.js' import { publishInfo } from '../../../api/information.js' + import { getMeasureDetail } from '../../../api/notice.js' export default { data() { return { @@ -133,15 +142,29 @@ submitData: { id: null, reviewStatus: null - } + }, + role: '', + unitType: '' } }, onLoad:function(options){ + this.role = uni.getStorageSync('roleName'); //获取手机状态栏高度 this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight']; let test = options.data && JSON.parse(decodeURIComponent(options.data)); this.detailData = test; - + // if(this.detailData.forwardPath){ + // this.detailData.publishingUnit = this.detailData.forwardPath.map((item,index) => { + // if(index == this.detailData.forwardPath.length){ + // return item + // }else { + // return item + '>' + // } + + // }) + // } + this.unitType = uni.getStorageSync('unittype'); + console.log("this.unitType",this.unitType); if(this.detailData.role == 'leader' || this.detailData.role == 'infoPeople' ) { this.detailData.attachments = this.detailData.attachment; if (this.detailData.attachments){ @@ -176,9 +199,23 @@ }); }, goMeasures() { - uni.navigateTo({ - url: `/pages/tabBar/notice/measures?data=` + encodeURIComponent("2") + getMeasureDetail({id: this.detailData.id}).then(res => { + if(res.code == 100){ + if(res.data.id){ + console.log('111111') + uni.navigateTo({ + url: `/pages/tabBar/responsivity/showMeasures?data=` + encodeURIComponent(JSON.stringify(res.data)) + }) + }else { + uni.navigateTo({ + url: `/pages/tabBar/notice/measures?data=` + encodeURIComponent(JSON.stringify(this.detailData)) + }) + } + } }) + + + }, //审核通过 approved() { diff --git a/pages/tabBar/notice/measures.vue b/pages/tabBar/notice/measures.vue index b83563c..0a6832b 100644 --- a/pages/tabBar/notice/measures.vue +++ b/pages/tabBar/notice/measures.vue @@ -22,8 +22,8 @@ :customStyle="{marginBottom: '8px'}" v-for="(item, index) in list" :key="index" - :label="item.name" - :name="item.name" + :label="item.measure" + :name="item.id" > </u-checkbox> </u-checkbox-group> @@ -43,18 +43,19 @@ :maxCount="10" style="margin-top: -10px;" ></u-upload> - <view class="pic" v-for="item in nameList" :key="index"> + <view class="pic" v-for="(item,index) in nameList" :key="index"> {{item.name}} </view> </view> </view> <view class="measures"> - <u-button class="measureBtn" type="success">提交</u-button> + <u-button class="measureBtn" type="primary" @click="submit">提交</u-button> </view> </view> </template> <script> + import { measureList, submitMeasures, getMeasureDetail } from '@/api/notice.js' export default { components:{ @@ -64,34 +65,46 @@ statusBarHeight: [], fileList1: [], nameList: [], - checkboxValue1: '', + checkboxValue1: [], measures: "", type: 'textarea', border: true, height: 100, autoHeight: true, - list: [ - { - name: '苹果', - disabled: false - }, - { - name: '香蕉', - disabled: false - }, - { - name: '橙子', - disabled: false - } - ] + detailData : {}, + measureIds : [], + baseUrl: '', + list: [], + showBtn: false } }, - onLoad() { + onLoad(options) { + let test = options.data && JSON.parse(decodeURIComponent(options.data)); + console.log("test",test) + this.detailData = test; //获取手机状态栏高度 this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight']; uni.hideTabBar(); + this.getMeasureList(); + console.log("huan",process.env.NODE_ENV) + if (process.env.NODE_ENV == 'development') { + this.baseUrl = 'http://192.168.0.41:8086' + }else { + this.baseUrl = 'http://121.239.169.30:13001' + } }, methods: { + getMeasureList() { + const param = { + pageIndex: 1, + pageSize: 10000000, + } + measureList(param).then(res => { + if(res.code == 100){ + this.list = res.data; + } + }).catch(err=>{}) + }, goBack() { uni.navigateBack({ url:'./detail/detail' @@ -99,7 +112,28 @@ }, checkboxChange(n) { - console.log('change', n); + let finalArr = this.list.filter(item => !(n.indexOf(item.id) < 0)); + this.measureIds = finalArr.map((item) => { + return {id: item.id, baseMeasureContent: item.measure}; + }); + console.log('change', this.measureIds); + }, + submit() { + const param = { + id: this.detailData.id, + baseMeasures: this.measureIds, + responseMeasure: this.measures + } + submitMeasures(param).then(res => { + if(res.code == 100){ + uni.showToast({ + icon: "none", + title: '提交成功' + }); + this.goBack(); + } + }) + }, // 删除图片 deletePic(event) { @@ -136,11 +170,16 @@ uploadFilePromise(url) { return new Promise((resolve, reject) => { let a = uni.uploadFile({ - url: 'http://www.example.com', // 仅为示例,非真实的接口地址 + url: this.baseUrl + '/attachment/uploadMeasureImage/key', filePath: url, name: 'file', + header: { + 'tk':uni.getStorageSync('tk'), + 'uid': uni.getStorageSync('uid') + }, formData: { - user: 'test' + id: this.detailData.id, + module: 'naturalDisasterPath' }, success: (res) => { setTimeout(() => { diff --git a/pages/tabBar/notice/notice.vue b/pages/tabBar/notice/notice.vue index 0114ab8..9f64fa3 100644 --- a/pages/tabBar/notice/notice.vue +++ b/pages/tabBar/notice/notice.vue @@ -182,6 +182,7 @@ }); } } + }).catch(err=>{ }) }, handleButtonClick(button) { @@ -237,7 +238,7 @@ }, clickSwitch(e) { this.getNoticeList(); - } + }, } } </script> diff --git a/pages/tabBar/response/response.vue b/pages/tabBar/response/response.vue index 8cd873c..1f14e52 100644 --- a/pages/tabBar/response/response.vue +++ b/pages/tabBar/response/response.vue @@ -44,7 +44,7 @@ return { data: { pageIndex: 1, - pageSize: 1000 + pageSize: 10000000 }, // 状态栏高度 statusBarHeight: 0, diff --git a/pages/tabBar/responsivity/showMeasures.vue b/pages/tabBar/responsivity/showMeasures.vue index 27dae5b..6364cf7 100644 --- a/pages/tabBar/responsivity/showMeasures.vue +++ b/pages/tabBar/responsivity/showMeasures.vue @@ -13,21 +13,21 @@ <view class="measureCard"> <view class="head"> <u-form :model="form" ref="uForm" label-width="100px"> - <u-form-item label="信息标题 :" ></u-form-item> - <u-form-item label="发布单位 :"></u-form-item> - <u-form-item label="发布时间 :"></u-form-item> - <u-form-item label="反馈时间 :"></u-form-item> + <u-form-item label="信息标题 :" >{{form.title}}</u-form-item> + <u-form-item label="发布单位 :">{{form.publishingUnit}}</u-form-item> + <u-form-item label="发布时间 :">{{form.publishingTime}}</u-form-item> + <u-form-item label="反馈时间 :">{{form.measureSubmitTime}}</u-form-item> </u-form> </view> <view class="first"> <text style="font-size: 16px;margin-bottom: 20px;font-weight: 600;">基础措施</text> <view v-for="(item, index) in measureList" :key="index" style="margin-left: 18px;margin-bottom:10px; font-size:16px;"> - <text style="margin-top: 15px;">{{item.name}}</text> + <text style="margin-top: 15px;">{{item}}</text> </view> </view> <view class="second"> <text style="font-size: 16px;margin-bottom: 20px;font-weight: 600;">补充措施</text> - <u--textarea style="margin-top: -5px;" v-model="measures" disabled="true" placeholder="请输入内容" ></u--textarea> + <u--textarea style="margin-top: -5px;" v-model="measures" disabled placeholder="请输入内容" ></u--textarea> </view> <view class="third"> <view v-for="(item, index) in images" :key="index"> @@ -39,6 +39,7 @@ </template> <script> + import VUE_APP_BASE_URL from '../../../common/constant.js' export default { components:{ @@ -49,32 +50,27 @@ fileList1: [], nameList: [], checkboxValue1: '', - measures: "111", + measures: "", type: 'textarea', border: true, height: 100, autoHeight: true, - measureList: [ - { - name: '苹果', - }, - { - name: '香蕉', - }, - { - name: '橙子', - } - ], - images: [ - { - url: 'https://img2.baidu.com/it/u=638285213,1746517464&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800' - }, - - ] + form: { + }, + measureList: [], + images: [] } }, - onLoad() { - //获取手机状态栏高度 + onLoad(options) { + let test = options.data && JSON.parse(decodeURIComponent(options.data)); + console.log("tes111t",test) + this.form = test; + this.measures = this.form.responseMeasure; + this.measureList = this.form.baseMeasures; + this.images = this.form.attachments.map((item) => { + return {url: VUE_APP_BASE_URL + item.attachment}; + }); + console.log("img",this.images) this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight']; uni.hideTabBar(); }, @@ -83,59 +79,6 @@ uni.navigateBack({ url:'/pages/tabBar/responsivity/villageResponsivity' }); - }, - - checkboxChange(n) { - console.log('change', n); - }, - // 删除图片 - deletePic(event) { - this[`fileList${event.name}`].splice(event.index, 1) - this.nameList.splice(event.index,1) - console.log("name",this.nameList) - }, - // 新增图片 - async afterRead(event) { - // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式 - let lists = [].concat(event.file) - let fileListLen = this[`fileList${event.name}`].length - console.log("list",lists) - lists.map((item) => { - this.nameList.push({name: item.name}); - this[`fileList${event.name}`].push({ - ...item, - status: 'uploading', - message: '上传中' - }) - }) - console.log("nameList",this.nameList) - for (let i = 0; i < lists.length; i++) { - const result = await this.uploadFilePromise(lists[i].url) - let item = this[`fileList${event.name}`][fileListLen] - this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, { - status: 'success', - message: '', - url: result - })) - fileListLen++ - } - }, - uploadFilePromise(url) { - return new Promise((resolve, reject) => { - let a = uni.uploadFile({ - url: 'http://www.example.com', // 仅为示例,非真实的接口地址 - filePath: url, - name: 'file', - formData: { - user: 'test' - }, - success: (res) => { - setTimeout(() => { - resolve(res.data.data) - }, 1000) - } - }); - }) }, //预览图片 previewSqs(item,index) { diff --git a/pages/tabBar/weather/weather.vue b/pages/tabBar/weather/weather.vue index 0ad52a8..2cac95d 100644 --- a/pages/tabBar/weather/weather.vue +++ b/pages/tabBar/weather/weather.vue @@ -12,7 +12,7 @@ </view> </view> </view> - <view style="height: 85%;"> + <view style="height: 83%;"> <!-- <web-view :src="webViewUrl"></web-view> --> <iframe :src="webViewUrl" width="100%" height="100%"> </iframe> </view> -- Gitblit v1.9.2