init(): 初始化
commit
ea82eb0296
|
|
@ -0,0 +1,26 @@
|
||||||
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
node_modules/
|
||||||
|
/.pnp
|
||||||
|
.pnp.js
|
||||||
|
unpackage/
|
||||||
|
|
||||||
|
# testing
|
||||||
|
/coverage
|
||||||
|
|
||||||
|
# production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.DS_Store
|
||||||
|
.env.local
|
||||||
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
yarn.lock
|
||||||
|
build.7z
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
// launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
|
||||||
|
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
|
||||||
|
"version" : "0.0",
|
||||||
|
"configurations" : [
|
||||||
|
{
|
||||||
|
"app-plus" : {
|
||||||
|
"launchtype" : "local"
|
||||||
|
},
|
||||||
|
"default" : {
|
||||||
|
"launchtype" : "local"
|
||||||
|
},
|
||||||
|
"mp-weixin" : {
|
||||||
|
"launchtype" : "local"
|
||||||
|
},
|
||||||
|
"type" : "uniCloud"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"playground" : "standard",
|
||||||
|
"type" : "uni-app:app-android"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.formatOnPaste": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,117 @@
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
onLaunch: function() {
|
||||||
|
const token = {
|
||||||
|
loginName: uni.getStorageSync('loginName'),
|
||||||
|
secretKey: uni.getStorageSync('secretKey'),
|
||||||
|
}
|
||||||
|
if (token.secretKey){
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/homeIndex/index'
|
||||||
|
})
|
||||||
|
console.log(token.secretKey,'App Launch')
|
||||||
|
} else {
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/login/login'
|
||||||
|
// url:'/pages/zhjs/index'
|
||||||
|
})
|
||||||
|
console.log(token.secretKey,'App Launch2')
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
onShow: function() {
|
||||||
|
console.log('App Show')
|
||||||
|
},
|
||||||
|
onHide: function() {
|
||||||
|
console.log('App Hide')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
/*每个页面公共css */
|
||||||
|
@import '@/uni_modules/uni-scss/index.scss';
|
||||||
|
@import "@/uni_modules/uview-ui/index.scss";
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
@import '@/static/customicons.css';
|
||||||
|
@import 'ol/ol.css';
|
||||||
|
// 设置整个项目的背景色
|
||||||
|
page {
|
||||||
|
// background: linear-gradient(-180deg, #64acf0 0%, #ffffff 62%,#EEF3F6 70%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* #endif */
|
||||||
|
.example-info {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #333;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
.userinfo{
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
margin-top: 5vh;
|
||||||
|
margin-left: 2vw;
|
||||||
|
margin-bottom: 2vh;
|
||||||
|
align-items: center;
|
||||||
|
width: 95%;
|
||||||
|
height: 6vh;
|
||||||
|
background-color: #007afd;
|
||||||
|
|
||||||
|
}
|
||||||
|
.icon{
|
||||||
|
width: 6vw;
|
||||||
|
height: 6vh;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 6vh;
|
||||||
|
}
|
||||||
|
.Header{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex: 0.95;
|
||||||
|
justify-content: center;
|
||||||
|
color: white;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
.align-center{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.align-justufy-center{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;;
|
||||||
|
}
|
||||||
|
.justify-center{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.justify-between{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time-ranger {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
.start-time,
|
||||||
|
.end-time {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 10px 0;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-btn {
|
||||||
|
margin: 3px 0 0 5px;
|
||||||
|
// color: #3399ef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// .amap-logo {
|
||||||
|
// display: none !important;
|
||||||
|
// }
|
||||||
|
// .amap-copyright {
|
||||||
|
// display: none !important;
|
||||||
|
// }
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
|
||||||
|
<u--form labelPosition="left" :model="model1" :rules="rules" ref="uForm">
|
||||||
|
<u-form-item label="姓名" prop="userInfo.name" borderBottom ref="item1">
|
||||||
|
<u--input v-model="model1.userInfo.name" border="none"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="性别" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"
|
||||||
|
ref="item1">
|
||||||
|
<u--input v-model="model1.userInfo.sex" disabled disabledColor="#ffffff" placeholder="请选择性别"
|
||||||
|
border="none"></u--input>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="内容" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"
|
||||||
|
ref="item1">
|
||||||
|
<u--textarea v-model="model1.userInfo.namevalue1" placeholder="请输入内容"></u--textarea>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="内容" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"
|
||||||
|
ref="item1">
|
||||||
|
<u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="1" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="内容" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"
|
||||||
|
ref="item1">
|
||||||
|
<u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="1" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
</u--form>
|
||||||
|
<u-action-sheet :show="showSex" :actions="actions" title="请选择性别" description="如果选择保密会报错"
|
||||||
|
@close="showSex = false" @select="sexSelect">
|
||||||
|
</u-action-sheet>
|
||||||
|
<button @click="submit">11</button>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showSex: false,
|
||||||
|
model1: {
|
||||||
|
userInfo: {
|
||||||
|
name: 'uView UI',
|
||||||
|
sex: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions: [{
|
||||||
|
name: '男',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '女',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '保密',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
'userInfo.name': {
|
||||||
|
type: 'string',
|
||||||
|
required: true,
|
||||||
|
message: '请填写姓名',
|
||||||
|
trigger: ['blur', 'change']
|
||||||
|
},
|
||||||
|
'userInfo.sex': {
|
||||||
|
type: 'string',
|
||||||
|
max: 1,
|
||||||
|
required: true,
|
||||||
|
message: '请选择男或女',
|
||||||
|
trigger: ['blur', 'change']
|
||||||
|
},
|
||||||
|
},
|
||||||
|
radio: '',
|
||||||
|
switchVal: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
sexSelect(e) {
|
||||||
|
this.model1.userInfo.sex = e.name
|
||||||
|
this.$refs.uForm.validateField('userInfo.sex')
|
||||||
|
},
|
||||||
|
submit() {
|
||||||
|
this.$refs.uForm.validate().then(res => {
|
||||||
|
uni.$u.toast('校验通过')
|
||||||
|
}).catch(errors => {
|
||||||
|
uni.$u.toast('校验失败')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onReady() {
|
||||||
|
//如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
|
||||||
|
this.$refs.uForm.setRules(this.rules)
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
<script>
|
||||||
|
var coverSupport =
|
||||||
|
'CSS' in window &&
|
||||||
|
typeof CSS.supports === 'function' &&
|
||||||
|
(CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
|
||||||
|
document.write(
|
||||||
|
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||||
|
(coverSupport ? ', viewport-fit=cover' : '') +
|
||||||
|
'" />'
|
||||||
|
)
|
||||||
|
</script>
|
||||||
|
<title></title>
|
||||||
|
<!--preload-links-->
|
||||||
|
<!--app-context-->
|
||||||
|
<script src="./static/h5Player/h5player.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"><!--app-html--></div>
|
||||||
|
<script type="module" src="/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
// #ifndef VUE3
|
||||||
|
import Vue from 'vue'
|
||||||
|
import uView from '@/uni_modules/uview-ui'
|
||||||
|
Vue.use(uView)
|
||||||
|
import App from './App'
|
||||||
|
import {
|
||||||
|
$http
|
||||||
|
} from '@escook/request-miniprogram'
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
uni.$http = $http
|
||||||
|
$http.baseUrl = 'http://local.gunshiiot.com:18083'
|
||||||
|
// 请求拦截器
|
||||||
|
$http.beforeRequest = function (options) {
|
||||||
|
if (options.url.indexOf('/doLogin') == -1) {
|
||||||
|
options.header = {
|
||||||
|
'Authorization': 'Bearer ' + uni.getStorageSync('Gs-Token')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 响应拦截器
|
||||||
|
$http.afterRequest = function (options) {
|
||||||
|
if (options.data.code == 405) {
|
||||||
|
uni.redirectTo({
|
||||||
|
url: '/pages/login/login'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// uni.hideLoading()
|
||||||
|
}
|
||||||
|
uni.$showMsg = function (title = '数据请求失败了', duration = 1500) {
|
||||||
|
return uni.showToast({
|
||||||
|
title,
|
||||||
|
duration,
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
App.mpType = 'app'
|
||||||
|
|
||||||
|
const app = new Vue({
|
||||||
|
...App
|
||||||
|
})
|
||||||
|
app.$mount()
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #ifdef VUE3
|
||||||
|
import {
|
||||||
|
createSSRApp
|
||||||
|
} from 'vue'
|
||||||
|
import App from './App.vue'
|
||||||
|
export function createApp() {
|
||||||
|
const app = createSSRApp(App)
|
||||||
|
return {
|
||||||
|
app
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
|
@ -0,0 +1,127 @@
|
||||||
|
{
|
||||||
|
"name" : "檀树岗水库",
|
||||||
|
"appid" : "__UNI__33ED56F",
|
||||||
|
"description" : "",
|
||||||
|
"versionName" : "1.0.0",
|
||||||
|
"versionCode" : 1,
|
||||||
|
"transformPx" : false,
|
||||||
|
"app-plus" : {
|
||||||
|
/* 5+App特有相关 */
|
||||||
|
"usingComponents" : true,
|
||||||
|
"nvueCompiler" : "uni-app",
|
||||||
|
"nvueStyleCompiler" : "uni-app",
|
||||||
|
"runmode" : "liberate",
|
||||||
|
"splashscreen" : {
|
||||||
|
"alwaysShowBeforeRender" : true,
|
||||||
|
"waiting" : true,
|
||||||
|
"autoclose" : true,
|
||||||
|
"delay" : 0
|
||||||
|
},
|
||||||
|
"modules" : {
|
||||||
|
"VideoPlayer" : {},
|
||||||
|
"Messaging" : {},
|
||||||
|
"Camera" : {},
|
||||||
|
"Maps" : {},
|
||||||
|
"Contacts" : {}
|
||||||
|
},
|
||||||
|
/* 模块配置 */
|
||||||
|
"distribute" : {
|
||||||
|
/* 应用发布信息 */
|
||||||
|
"android" : {
|
||||||
|
/* android打包配置 */
|
||||||
|
"packagename" : "com.gunshi.tsg",
|
||||||
|
"permissions" : [
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ios" : {
|
||||||
|
"dSYMs" : false
|
||||||
|
},
|
||||||
|
/* ios打包配置 */
|
||||||
|
"sdkConfigs" : {
|
||||||
|
"ad" : {},
|
||||||
|
"maps" : {
|
||||||
|
"amap" : {
|
||||||
|
"name" : "4799ff37874e604a22b910b44ca948e5",
|
||||||
|
"appkey_ios" : "755dafdf984df7a1609fb30f6861bd17",
|
||||||
|
"appkey_android" : "755dafdf984df7a1609fb30f6861bd17"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splashscreen" : {
|
||||||
|
"androidStyle" : "common"
|
||||||
|
},
|
||||||
|
"icons" : {
|
||||||
|
"android" : {
|
||||||
|
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||||
|
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||||
|
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||||
|
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||||
|
},
|
||||||
|
"ios" : {
|
||||||
|
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||||
|
"ipad" : {
|
||||||
|
"app" : "unpackage/res/icons/76x76.png",
|
||||||
|
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||||
|
"notification" : "unpackage/res/icons/20x20.png",
|
||||||
|
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||||
|
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||||
|
"settings" : "unpackage/res/icons/29x29.png",
|
||||||
|
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||||
|
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||||
|
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||||
|
},
|
||||||
|
"iphone" : {
|
||||||
|
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||||
|
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||||
|
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||||
|
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||||
|
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||||
|
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||||
|
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||||
|
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/* SDK配置 */
|
||||||
|
"quickapp" : {},
|
||||||
|
/* 快应用特有相关 */
|
||||||
|
"mp-weixin" : {
|
||||||
|
/* 小程序特有相关 */
|
||||||
|
"appid" : "",
|
||||||
|
"setting" : {
|
||||||
|
"urlCheck" : false
|
||||||
|
},
|
||||||
|
"usingComponents" : true
|
||||||
|
},
|
||||||
|
"vueVersion" : "2",
|
||||||
|
"h5" : {
|
||||||
|
"template" : "template.html",
|
||||||
|
"sdkConfigs" : {
|
||||||
|
"maps" : {
|
||||||
|
"amap" : {
|
||||||
|
"key" : "4799ff37874e604a22b910b44ca948e5",
|
||||||
|
"securityJsCode" : "",
|
||||||
|
"serviceHost" : ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,428 @@
|
||||||
|
{
|
||||||
|
"name": "tsg-app",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"dependencies": {
|
||||||
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||||
|
"@escook/request-miniprogram": "^0.2.1",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
|
"echarts": "^4.9.0",
|
||||||
|
"es6-promise": "^4.2.8",
|
||||||
|
"flv.js": "^1.6.2",
|
||||||
|
"moment": "^2.30.1",
|
||||||
|
"ol": "^10.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@amap/amap-jsapi-loader": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
|
||||||
|
},
|
||||||
|
"node_modules/@escook/request-miniprogram": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@escook/request-miniprogram/-/request-miniprogram-0.2.1.tgz",
|
||||||
|
"integrity": "sha512-ueWV5YsaEm/ycQZuEjMiA88GFMhfBQSjy9GrP9omy4xAQajkGTbYIlnhzsDfWzRPmRC1fKmAiKMrCVcgS+SHcQ=="
|
||||||
|
},
|
||||||
|
"node_modules/@petamoriken/float16": {
|
||||||
|
"version": "3.8.7",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.8.7.tgz",
|
||||||
|
"integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA=="
|
||||||
|
},
|
||||||
|
"node_modules/@types/rbush": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@types/rbush/-/rbush-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-lX55lR0iYCgapxD3IrgujpQA1zDxwZI5qMRelKvmKAsSMplFVr7wmMpG7/6+Op2tjrgEex8o3vjg8CRDrRNYxg=="
|
||||||
|
},
|
||||||
|
"node_modules/color-name": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.20"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-parse": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-parse/-/color-parse-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==",
|
||||||
|
"dependencies": {
|
||||||
|
"color-name": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-rgba": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-rgba/-/color-rgba-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==",
|
||||||
|
"dependencies": {
|
||||||
|
"color-parse": "^2.0.0",
|
||||||
|
"color-space": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-space": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-space/-/color-space-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA=="
|
||||||
|
},
|
||||||
|
"node_modules/crypto-js": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||||
|
},
|
||||||
|
"node_modules/earcut": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/earcut/-/earcut-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg=="
|
||||||
|
},
|
||||||
|
"node_modules/echarts": {
|
||||||
|
"version": "4.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz",
|
||||||
|
"integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==",
|
||||||
|
"dependencies": {
|
||||||
|
"zrender": "4.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/es6-promise": {
|
||||||
|
"version": "4.2.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
|
||||||
|
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
|
||||||
|
},
|
||||||
|
"node_modules/flv.js": {
|
||||||
|
"version": "1.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/flv.js/-/flv.js-1.6.2.tgz",
|
||||||
|
"integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==",
|
||||||
|
"dependencies": {
|
||||||
|
"es6-promise": "^4.2.8",
|
||||||
|
"webworkify-webpack": "^2.1.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/geotiff": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/geotiff/-/geotiff-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@petamoriken/float16": "^3.4.7",
|
||||||
|
"lerc": "^3.0.0",
|
||||||
|
"pako": "^2.0.4",
|
||||||
|
"parse-headers": "^2.0.2",
|
||||||
|
"quick-lru": "^6.1.1",
|
||||||
|
"web-worker": "^1.2.0",
|
||||||
|
"xml-utils": "^1.0.2",
|
||||||
|
"zstddec": "^0.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.19"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lerc": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww=="
|
||||||
|
},
|
||||||
|
"node_modules/moment": {
|
||||||
|
"version": "2.30.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
|
||||||
|
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ol": {
|
||||||
|
"version": "10.2.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/ol/-/ol-10.2.1.tgz",
|
||||||
|
"integrity": "sha512-2bB/y2vEnmzjqynP0NA7Cp8k86No3Psn63Dueicep3E3i09axWRVIG5IS/bylEAGfWQx0QXD/uljkyFoY60Wig==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/rbush": "3.0.3",
|
||||||
|
"color-rgba": "^3.0.0",
|
||||||
|
"color-space": "^2.0.1",
|
||||||
|
"earcut": "^3.0.0",
|
||||||
|
"geotiff": "^2.0.7",
|
||||||
|
"pbf": "4.0.1",
|
||||||
|
"rbush": "^4.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/openlayers"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/pako": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
|
||||||
|
},
|
||||||
|
"node_modules/parse-headers": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
|
||||||
|
},
|
||||||
|
"node_modules/pbf": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/pbf/-/pbf-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==",
|
||||||
|
"dependencies": {
|
||||||
|
"resolve-protobuf-schema": "^2.1.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"pbf": "bin/pbf"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/protocol-buffers-schema": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
|
||||||
|
},
|
||||||
|
"node_modules/quick-lru": {
|
||||||
|
"version": "6.1.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-6.1.2.tgz",
|
||||||
|
"integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/quickselect": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g=="
|
||||||
|
},
|
||||||
|
"node_modules/rbush": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/rbush/-/rbush-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"quickselect": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/resolve-protobuf-schema": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"protocol-buffers-schema": "^3.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/web-worker": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA=="
|
||||||
|
},
|
||||||
|
"node_modules/webworkify-webpack": {
|
||||||
|
"version": "2.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz",
|
||||||
|
"integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw=="
|
||||||
|
},
|
||||||
|
"node_modules/xml-utils": {
|
||||||
|
"version": "1.10.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.10.1.tgz",
|
||||||
|
"integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ=="
|
||||||
|
},
|
||||||
|
"node_modules/zrender": {
|
||||||
|
"version": "4.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz",
|
||||||
|
"integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g=="
|
||||||
|
},
|
||||||
|
"node_modules/zstddec": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/zstddec/-/zstddec-0.1.0.tgz",
|
||||||
|
"integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg=="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@amap/amap-jsapi-loader": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
|
||||||
|
},
|
||||||
|
"@escook/request-miniprogram": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@escook/request-miniprogram/-/request-miniprogram-0.2.1.tgz",
|
||||||
|
"integrity": "sha512-ueWV5YsaEm/ycQZuEjMiA88GFMhfBQSjy9GrP9omy4xAQajkGTbYIlnhzsDfWzRPmRC1fKmAiKMrCVcgS+SHcQ=="
|
||||||
|
},
|
||||||
|
"@petamoriken/float16": {
|
||||||
|
"version": "3.8.7",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.8.7.tgz",
|
||||||
|
"integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA=="
|
||||||
|
},
|
||||||
|
"@types/rbush": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@types/rbush/-/rbush-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-lX55lR0iYCgapxD3IrgujpQA1zDxwZI5qMRelKvmKAsSMplFVr7wmMpG7/6+Op2tjrgEex8o3vjg8CRDrRNYxg=="
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow=="
|
||||||
|
},
|
||||||
|
"color-parse": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-parse/-/color-parse-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==",
|
||||||
|
"requires": {
|
||||||
|
"color-name": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-rgba": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-rgba/-/color-rgba-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==",
|
||||||
|
"requires": {
|
||||||
|
"color-parse": "^2.0.0",
|
||||||
|
"color-space": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-space": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/color-space/-/color-space-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA=="
|
||||||
|
},
|
||||||
|
"crypto-js": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||||
|
},
|
||||||
|
"earcut": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/earcut/-/earcut-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg=="
|
||||||
|
},
|
||||||
|
"echarts": {
|
||||||
|
"version": "4.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz",
|
||||||
|
"integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==",
|
||||||
|
"requires": {
|
||||||
|
"zrender": "4.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"es6-promise": {
|
||||||
|
"version": "4.2.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
|
||||||
|
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
|
||||||
|
},
|
||||||
|
"flv.js": {
|
||||||
|
"version": "1.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/flv.js/-/flv.js-1.6.2.tgz",
|
||||||
|
"integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==",
|
||||||
|
"requires": {
|
||||||
|
"es6-promise": "^4.2.8",
|
||||||
|
"webworkify-webpack": "^2.1.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"geotiff": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/geotiff/-/geotiff-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==",
|
||||||
|
"requires": {
|
||||||
|
"@petamoriken/float16": "^3.4.7",
|
||||||
|
"lerc": "^3.0.0",
|
||||||
|
"pako": "^2.0.4",
|
||||||
|
"parse-headers": "^2.0.2",
|
||||||
|
"quick-lru": "^6.1.1",
|
||||||
|
"web-worker": "^1.2.0",
|
||||||
|
"xml-utils": "^1.0.2",
|
||||||
|
"zstddec": "^0.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lerc": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww=="
|
||||||
|
},
|
||||||
|
"moment": {
|
||||||
|
"version": "2.30.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
|
||||||
|
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="
|
||||||
|
},
|
||||||
|
"ol": {
|
||||||
|
"version": "10.2.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/ol/-/ol-10.2.1.tgz",
|
||||||
|
"integrity": "sha512-2bB/y2vEnmzjqynP0NA7Cp8k86No3Psn63Dueicep3E3i09axWRVIG5IS/bylEAGfWQx0QXD/uljkyFoY60Wig==",
|
||||||
|
"requires": {
|
||||||
|
"@types/rbush": "3.0.3",
|
||||||
|
"color-rgba": "^3.0.0",
|
||||||
|
"color-space": "^2.0.1",
|
||||||
|
"earcut": "^3.0.0",
|
||||||
|
"geotiff": "^2.0.7",
|
||||||
|
"pbf": "4.0.1",
|
||||||
|
"rbush": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pako": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
|
||||||
|
},
|
||||||
|
"parse-headers": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
|
||||||
|
},
|
||||||
|
"pbf": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/pbf/-/pbf-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==",
|
||||||
|
"requires": {
|
||||||
|
"resolve-protobuf-schema": "^2.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"protocol-buffers-schema": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
|
||||||
|
},
|
||||||
|
"quick-lru": {
|
||||||
|
"version": "6.1.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-6.1.2.tgz",
|
||||||
|
"integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ=="
|
||||||
|
},
|
||||||
|
"quickselect": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g=="
|
||||||
|
},
|
||||||
|
"rbush": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/rbush/-/rbush-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==",
|
||||||
|
"requires": {
|
||||||
|
"quickselect": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resolve-protobuf-schema": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
|
||||||
|
"requires": {
|
||||||
|
"protocol-buffers-schema": "^3.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"web-worker": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA=="
|
||||||
|
},
|
||||||
|
"webworkify-webpack": {
|
||||||
|
"version": "2.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz",
|
||||||
|
"integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw=="
|
||||||
|
},
|
||||||
|
"xml-utils": {
|
||||||
|
"version": "1.10.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.10.1.tgz",
|
||||||
|
"integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ=="
|
||||||
|
},
|
||||||
|
"zrender": {
|
||||||
|
"version": "4.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz",
|
||||||
|
"integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g=="
|
||||||
|
},
|
||||||
|
"zstddec": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/zstddec/-/zstddec-0.1.0.tgz",
|
||||||
|
"integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||||
|
"@escook/request-miniprogram": "^0.2.1",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
|
"echarts": "^4.9.0",
|
||||||
|
"es6-promise": "^4.2.8",
|
||||||
|
"flv.js": "^1.6.2",
|
||||||
|
"moment": "^2.30.1",
|
||||||
|
"ol": "^10.2.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,284 @@
|
||||||
|
{
|
||||||
|
"easycom": {
|
||||||
|
"^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"
|
||||||
|
},
|
||||||
|
"pages": [{
|
||||||
|
"path": "pages/login/login",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/upgrade/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "",
|
||||||
|
"navigationStyle": "custom",
|
||||||
|
"app-plus": {
|
||||||
|
"bounce": "none",
|
||||||
|
"animationType": "none",
|
||||||
|
"background": "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"path": "pages/xcrw/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/xcrw/detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/stlljk/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/spjk/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/spjk/spbf/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/aqjc/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/homeIndex/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "",
|
||||||
|
"enablePullDownRefresh": true,
|
||||||
|
"app-plus": {
|
||||||
|
"pullToRefresh": {
|
||||||
|
"support": true,
|
||||||
|
"style": "default",
|
||||||
|
"offset": "70px"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"path": "pages/mypage/mypage",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/zhjs/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "",
|
||||||
|
"app-plus": {
|
||||||
|
"titleNView": false,
|
||||||
|
"subNVues": [
|
||||||
|
{
|
||||||
|
"id": "drawer",
|
||||||
|
"path": "pages/zhjs/subnvue/index.nvue",
|
||||||
|
"style": {
|
||||||
|
"position": "absolute",
|
||||||
|
"width": "100%",
|
||||||
|
"height": "100%"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/sjc/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/mypage/compents/wtcl/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/mypage/compents/wxyh/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/mypage/compents/wxyh/formZdy/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/mypage/compents/xcrw/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/mypage/compents/wtcl/detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/mypage/compents/xcrw/detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/personInfo/personInfo",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/modifyPassword/modifyPassword",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"path": "pages/wxyh/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/wtcl/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/wtcl/detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/yj/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/yj/detail/qxyj",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/yj/detail/wyyj",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/yj/detail/aiyj",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/messageList/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/messageList/detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/skInfo/detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/skInfo/waterDatail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/ylzList/detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/sws/detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"usingComponents": {
|
||||||
|
"map": "/uni_modules/@dcloudio/uni-map/components/uni-map/uni-map"
|
||||||
|
},
|
||||||
|
|
||||||
|
"tabBar": {
|
||||||
|
"color": "#333333",
|
||||||
|
"selectedColor": "#59A7FF",
|
||||||
|
"list": [{
|
||||||
|
"pagePath": "pages/homeIndex/index",
|
||||||
|
"iconPath": "/static/tabs/home.png",
|
||||||
|
"selectedIconPath": "static/tabs/home2.png",
|
||||||
|
"text": "首页"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pagePath": "pages/mypage/mypage",
|
||||||
|
"iconPath": "/static/images/my2_icon@2x.png",
|
||||||
|
"selectedIconPath": "static/images/my2_icon@2x2.png",
|
||||||
|
"text": "我的"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"globalStyle": {
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarTitleText": "uni-app",
|
||||||
|
"navigationBarBackgroundColor": "#F8F8F8",
|
||||||
|
"backgroundColor": "#F8F8F8",
|
||||||
|
"backgroundColorTop": "transparent",
|
||||||
|
"navigationStyle": "custom",
|
||||||
|
"app-plus": {
|
||||||
|
"background": "#efeff4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"subPackages": [{
|
||||||
|
"root": "subpkg",
|
||||||
|
"pages": [{
|
||||||
|
"path": "rainDetail/rainDetail"
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
"globalStyle": {
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarTitleText": "uni-app",
|
||||||
|
"navigationBarBackgroundColor": "#F8F8F8",
|
||||||
|
"backgroundColor": "#F8F8F8",
|
||||||
|
"backgroundColorTop": "transparent",
|
||||||
|
"navigationStyle": "custom",
|
||||||
|
"app-plus": {
|
||||||
|
"background": "#efeff4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,329 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{backgroundColor:'#f7f7f7'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<div class="titleBar">通讯录</div>
|
||||||
|
<div class="searchBar">
|
||||||
|
<u-search
|
||||||
|
placeholder="请输入姓名或手机号"
|
||||||
|
shape="square"
|
||||||
|
:showAction="false"
|
||||||
|
v-model="keyword"
|
||||||
|
@change="getSearch"
|
||||||
|
></u-search>
|
||||||
|
<div class="iconRow">
|
||||||
|
<div class="iconBox" @click="toMyDept">
|
||||||
|
<u--image :src="'../../static/images/dept.png'" width="22px" height="22px"></u--image>
|
||||||
|
<text class="icon_text">我的部门</text>
|
||||||
|
</div>
|
||||||
|
<div class="iconBox" @click="toFollow">
|
||||||
|
<u--image :src="'../../static/images/follow.png'" width="22px" height="22px"></u--image>
|
||||||
|
<text class="icon_text">关注人员</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="breadcrumb">
|
||||||
|
<text
|
||||||
|
v-for="(item,index) in treePath"
|
||||||
|
class="breadcrumb_item"
|
||||||
|
:style="{color:(treePath.length-1)===index?'#000000':'#3595F9'}"
|
||||||
|
@click="breadcrumbClick(item,index)"
|
||||||
|
>
|
||||||
|
{{item.name}}
|
||||||
|
<text v-if="(treePath.length-1)!==index" :style="{marginLeft:'8px',color:'#000000'}">></text>
|
||||||
|
</text>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'calc( 100vh - 280px)',overflow:'scroll'}">
|
||||||
|
<div v-if="!keyword">
|
||||||
|
<div v-for="(item,index) in treeData">
|
||||||
|
<div class="deptItem" @click="itemClick(item,index)">
|
||||||
|
<u--image :src="'../../static/images/deptItem.png'" width="22px" height="22px"></u--image>
|
||||||
|
<div class="deptItem_border">
|
||||||
|
<text class="deptItem_name">{{item.departmentName}}</text>
|
||||||
|
<text class="deptItem_num">{{item.count}}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="treeData==null || keyword">
|
||||||
|
<div :style="{display:'flex',alignItems:'center',height:'60px'}" v-for="(item,index) in personList">
|
||||||
|
<!-- <u--image :style="{margin:'0 30px'}" :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image> -->
|
||||||
|
<div class="personItemIcon"><text>{{item.userName.slice(0, 1)}}</text></div>
|
||||||
|
<div class="personItemRow_right">
|
||||||
|
<div class="personItemRow_right_top">
|
||||||
|
<rich-text :style="{width:'100px'}" :nodes="highlightKeyword(item.userName, keyword)"></rich-text>
|
||||||
|
<rich-text :style="{flex:'1'}" :nodes="highlightKeyword(item.phone, keyword)"></rich-text>
|
||||||
|
</div>
|
||||||
|
<div class="personItemRow_right_bottom">
|
||||||
|
<text :style="{fontSize:'12px',color:'rgba(0, 0, 0, 0.4)'}">{{item.duty}}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="personItemRow_right2">
|
||||||
|
<u-icon v-if="item.isMyAttendee" name="star-fill" color="#f5dc4d" size="24" @click="follow(false,item.userId)"></u-icon>
|
||||||
|
<u-icon v-if="!item.isMyAttendee" name="star" color="#f5dc4d" size="24" @click="follow(true,item.userId)"></u-icon>
|
||||||
|
<u-icon name="phone" size="24" :style="{margin:'3px 10px 0 10px'}" @click="callNum(item.phone)"></u-icon>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
keyword:'',
|
||||||
|
show:'',
|
||||||
|
treeData:[],
|
||||||
|
treePath:[],
|
||||||
|
personList:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getItem() {
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
treePath(newData,oldData){
|
||||||
|
const last = this.treePath[this.treePath.length-1]
|
||||||
|
if(this.keyword){
|
||||||
|
this.getPerson({code:last.code, name:this.keyword})
|
||||||
|
}else{
|
||||||
|
if(last.data.children === null){
|
||||||
|
this.getPerson({code:last.code})
|
||||||
|
}else{
|
||||||
|
this.personList = []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.getSearch(this.keyword)
|
||||||
|
this.setInsert()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getHighlight(val) {
|
||||||
|
const keyword = this.keyword
|
||||||
|
if (keyword && val.indexOf(keyword) !== -1) {
|
||||||
|
const text = val.replace(keyword, `<text :style="{color:'#42cccc'}">${keyword}</text>`)
|
||||||
|
console.log(text)
|
||||||
|
return text
|
||||||
|
} else {
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
},
|
||||||
|
highlightKeyword(text, keyword) {
|
||||||
|
const highlightedText = text.replace(new RegExp(keyword, 'gi'), match => {
|
||||||
|
return `<span style="color: red;">${match}</span>`;
|
||||||
|
});
|
||||||
|
return highlightedText;
|
||||||
|
},
|
||||||
|
getSearch(e) {
|
||||||
|
if(e){
|
||||||
|
const last = this.treePath[this.treePath.length-1]
|
||||||
|
this.getPerson({name:e, code:last.code})
|
||||||
|
}else{
|
||||||
|
const last = this.treePath[this.treePath.length-1]
|
||||||
|
if(last.data.children === null){
|
||||||
|
this.getPerson({code:last.code})
|
||||||
|
}else{
|
||||||
|
// this.getPerson({code:last.code,name:'不可能查到的值'})
|
||||||
|
this.personList = []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,
|
||||||
|
async getPerson({code,name}) {
|
||||||
|
try{
|
||||||
|
let url = '/gunshiApp/xfflood/addressbook/list/query'
|
||||||
|
if(name){
|
||||||
|
//搜索名字
|
||||||
|
url = '/gunshiApp/xfflood/addressbook/list/query?args='+name+'&departmentCode='+code
|
||||||
|
}else{
|
||||||
|
//搜索code
|
||||||
|
url = '/gunshiApp/xfflood/addressbook/list/query?departmentCode='+code
|
||||||
|
}
|
||||||
|
console.log('查询的url',url)
|
||||||
|
const res = await uni.$http.get(url)
|
||||||
|
this.personList = res.data.data
|
||||||
|
console.log('查询的人员',res)
|
||||||
|
}catch(e){
|
||||||
|
this.personList = []
|
||||||
|
//TODO handle the exception
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getData() {
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.get('/gunshiApp/xfflood/department/app/tree')
|
||||||
|
this.treeData = res.data.data[0].children
|
||||||
|
this.treePath = [...this.treePath,{
|
||||||
|
name:res.data.data[0].departmentName,
|
||||||
|
code:res.data.data[0].departmentCode,
|
||||||
|
data:res.data.data[0],
|
||||||
|
}]
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async follow (flag,id) {
|
||||||
|
let url = flag?'/gunshiApp/xfflood/addressbook/attendee/add':'/gunshiApp/xfflood/addressbook/attendee/cancel'
|
||||||
|
const params = {
|
||||||
|
addUserId:id
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.post(url,params)
|
||||||
|
if(res.data.code === 200){
|
||||||
|
//关注成功
|
||||||
|
this.getSearch(this.keyword)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
async setInsert () {
|
||||||
|
try {
|
||||||
|
const params = {
|
||||||
|
createId: uni.getStorageSync('value').userId,
|
||||||
|
loginType:1,
|
||||||
|
menu1:'通讯录',
|
||||||
|
menu2:'通讯录',
|
||||||
|
}
|
||||||
|
|
||||||
|
const { data } = await uni.$http.post('/gunshiApp/xfflood/visitMenuLog/insert',params)
|
||||||
|
console.log('用户行为',params,data)
|
||||||
|
} catch (error) {}
|
||||||
|
},
|
||||||
|
itemClick(item,index) {
|
||||||
|
this.treeData = item.children,
|
||||||
|
this.treePath = [...this.treePath,{
|
||||||
|
name:item.departmentName,
|
||||||
|
code:item.departmentCode,
|
||||||
|
data:item,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
breadcrumbClick(item,index) {
|
||||||
|
this.treeData = item.data.children,
|
||||||
|
this.treePath = [...this.treePath].filter((item,index2)=>index2<=index)
|
||||||
|
},
|
||||||
|
callNum(num) {
|
||||||
|
uni.makePhoneCall({
|
||||||
|
phoneNumber: num //仅为示例
|
||||||
|
});
|
||||||
|
},
|
||||||
|
toFollow() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/addressBook/follow'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
toMyDept() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/addressBook/myDept'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.titleBar{
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
background-color: #007afd;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
font-size: 18px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.searchBar{
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 10px 10px 0 10px;
|
||||||
|
border-bottom: 1px solid rgba(233, 233, 233, 1);
|
||||||
|
}
|
||||||
|
.iconRow{
|
||||||
|
margin: 15px 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
}
|
||||||
|
.iconBox{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.icon_text{
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin-top: 10px;
|
||||||
|
border-top: 1px solid rgba(233, 233, 233, 1);
|
||||||
|
height: calc( 100vh - 233px);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.breadcrumb{
|
||||||
|
padding: 10px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.breadcrumb_item{
|
||||||
|
padding: 8px;
|
||||||
|
padding-right: 0px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.deptItem{
|
||||||
|
height: 50px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
}
|
||||||
|
.deptItem_border{
|
||||||
|
width: 80%;
|
||||||
|
height: 50px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 14px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.deptItem_num{
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
.personItemIcon{
|
||||||
|
width: 40px;
|
||||||
|
height:40px;
|
||||||
|
background-color: rgb(53, 133, 249);;
|
||||||
|
border-radius: 20px;
|
||||||
|
margin: 0 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.personItemRow_right{
|
||||||
|
height: 100%;
|
||||||
|
flex: 1;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.personItemRow_right2{
|
||||||
|
width: 100px;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.personItemRow_right_top{
|
||||||
|
margin-top: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,159 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden',background:'#f7f7f7'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="关注"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<div class="searchBar">
|
||||||
|
<u-search
|
||||||
|
placeholder="请输入姓名或手机号"
|
||||||
|
shape="square"
|
||||||
|
:showAction="false"
|
||||||
|
height="35"
|
||||||
|
v-model="keyword"
|
||||||
|
></u-search>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mybody">
|
||||||
|
<div :style="{display:'flex',alignItems:'center',height:'60px'}" v-for="(item,index) in getList">
|
||||||
|
<!-- <u--image :style="{margin:'0 30px'}" :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image> -->
|
||||||
|
<div class="personItemIcon"><text>{{item.userName.slice(0, 1)}}</text></div>
|
||||||
|
<div class="personItemRow_right">
|
||||||
|
<div class="personItemRow_right_top">
|
||||||
|
<rich-text :style="{width:'100px'}" :nodes="highlightKeyword(item.userName, keyword)"></rich-text>
|
||||||
|
<rich-text :style="{flex:'1'}" :nodes="highlightKeyword(item.phone, keyword)"></rich-text>
|
||||||
|
</div>
|
||||||
|
<div class="personItemRow_right_bottom">
|
||||||
|
<text :style="{fontSize:'12px',color:'rgba(0, 0, 0, 0.4)'}">{{item.duty}}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="personItemRow_right2">
|
||||||
|
<u-icon v-if="item.isMyAttendee" name="star-fill" color="#f5dc4d" size="24" @click="follow(false,item.userId)"></u-icon>
|
||||||
|
<u-icon v-if="!item.isMyAttendee" name="star" color="#f5dc4d" size="24" @click="follow(true,item.userId)"></u-icon>
|
||||||
|
<u-icon name="phone" size="24" :style="{margin:'3px 10px 0 10px'}" @click="callNum(item.phone)"></u-icon>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div :style="{height:'100px'}"></div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
keyword:'',
|
||||||
|
list:[]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getList() {
|
||||||
|
if(this.keyword){
|
||||||
|
return [...this.list].filter(o=>o.userName.indexOf(this.keyword)!==-1)
|
||||||
|
}else{
|
||||||
|
return [...this.list]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
highlightKeyword(text, keyword) {
|
||||||
|
const highlightedText = text.replace(new RegExp(keyword, 'gi'), match => {
|
||||||
|
return `<span style="color: red;">${match}</span>`;
|
||||||
|
});
|
||||||
|
return highlightedText;
|
||||||
|
},
|
||||||
|
async getData () {
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.get('/gunshiApp/xfflood/addressbook/my/attendee')
|
||||||
|
this.list = res.data.data
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async follow (flag,id) {
|
||||||
|
let url = flag?'/gunshiApp/xfflood/addressbook/attendee/add':'/gunshiApp/xfflood/addressbook/attendee/cancel'
|
||||||
|
const params = {
|
||||||
|
addUserId:id
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.post(url,params)
|
||||||
|
if(res.data.code === 200){
|
||||||
|
//关注成功
|
||||||
|
this.getData()
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
callNum(num) {
|
||||||
|
uni.makePhoneCall({
|
||||||
|
phoneNumber: num //仅为示例
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.searchBar{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 60px;
|
||||||
|
display: flex;
|
||||||
|
padding: 0 10px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 5px 5px;
|
||||||
|
padding: 5px 0px;
|
||||||
|
height: calc( 100vh - 100px );
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.personItemIcon{
|
||||||
|
width: 40px;
|
||||||
|
height:40px;
|
||||||
|
background-color: rgb(53, 133, 249);;
|
||||||
|
border-radius: 20px;
|
||||||
|
margin: 0 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.personItemRow_right{
|
||||||
|
height: 100%;
|
||||||
|
flex: 1;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.personItemRow_right2{
|
||||||
|
width: 100px;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.personItemRow_right_top{
|
||||||
|
margin-top: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,189 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden',background:'#f7f7f7'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="我的部门"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<div class="searchBar">
|
||||||
|
<u-search
|
||||||
|
placeholder="请输入姓名或手机号"
|
||||||
|
shape="square"
|
||||||
|
:showAction="false"
|
||||||
|
height="35"
|
||||||
|
v-model="keyword"
|
||||||
|
></u-search>
|
||||||
|
</div>
|
||||||
|
<div class="breadcrumb" v-if="deptList.length>0">
|
||||||
|
<text
|
||||||
|
v-for="(item,index) in deptList"
|
||||||
|
class="breadcrumb_item"
|
||||||
|
>
|
||||||
|
{{item.departmentName}}
|
||||||
|
<text v-if="(deptList.length-1)!==index" :style="{marginLeft:'8px',color:'#000000'}">></text>
|
||||||
|
</text>
|
||||||
|
</div>
|
||||||
|
<div class="mybody">
|
||||||
|
<div :style="{display:'flex',alignItems:'center',height:'60px'}" v-for="(item,index) in getList">
|
||||||
|
<!-- <u--image :style="{margin:'0 30px'}" :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image> -->
|
||||||
|
<div class="personItemIcon"><text>{{item.userName.slice(0, 1)}}</text></div>
|
||||||
|
<div class="personItemRow_right">
|
||||||
|
<div class="personItemRow_right_top">
|
||||||
|
<rich-text :style="{width:'100px'}" :nodes="highlightKeyword(item.userName, keyword)"></rich-text>
|
||||||
|
<rich-text :style="{flex:'1'}" :nodes="highlightKeyword(item.phone, keyword)"></rich-text>
|
||||||
|
</div>
|
||||||
|
<div class="personItemRow_right_bottom">
|
||||||
|
<text :style="{fontSize:'12px',color:'rgba(0, 0, 0, 0.4)'}">{{item.duty}}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="personItemRow_right2">
|
||||||
|
<u-icon v-if="item.isMyAttendee" name="star-fill" color="#f5dc4d" size="24" @click="follow(false,item.userId)"></u-icon>
|
||||||
|
<u-icon v-if="!item.isMyAttendee" name="star" color="#f5dc4d" size="24" @click="follow(true,item.userId)"></u-icon>
|
||||||
|
<u-icon name="phone" size="24" :style="{margin:'3px 10px 0 10px'}" @click="callNum(item.phone)"></u-icon>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div :style="{height:'100px'}"></div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
keyword:'',
|
||||||
|
list:[],
|
||||||
|
deptList:[]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getList() {
|
||||||
|
if(this.keyword){
|
||||||
|
return [...this.list].filter(o=>o.userName.indexOf(this.keyword)!==-1||o.phone.indexOf(this.keyword)!==-1)
|
||||||
|
}else{
|
||||||
|
return [...this.list]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
highlightKeyword(text, keyword) {
|
||||||
|
const highlightedText = text.replace(new RegExp(keyword, 'gi'), match => {
|
||||||
|
return `<span style="color: red;">${match}</span>`;
|
||||||
|
});
|
||||||
|
return highlightedText;
|
||||||
|
},
|
||||||
|
async getData () {
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.get('/gunshiApp/xfflood/addressbook/my/department')
|
||||||
|
console.log('人员信息',res)
|
||||||
|
this.list = [...res.data.data]
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getDept () {
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.get('/gunshiApp/xfflood/addressbook/my/department/super')
|
||||||
|
console.log('部门信息',res)
|
||||||
|
this.deptList = res.data.data
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async follow (flag,id) {
|
||||||
|
let url = flag?'/gunshiApp/xfflood/addressbook/attendee/add':'/gunshiApp/xfflood/addressbook/attendee/cancel'
|
||||||
|
const params = {
|
||||||
|
addUserId:id
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.post(url,params)
|
||||||
|
if(res.data.code === 200){
|
||||||
|
//关注成功
|
||||||
|
this.getData()
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
callNum(num) {
|
||||||
|
uni.makePhoneCall({
|
||||||
|
phoneNumber: num //仅为示例
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getData()
|
||||||
|
this.getDept()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.searchBar{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 60px;
|
||||||
|
display: flex;
|
||||||
|
padding: 0 10px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
// margin: 5px 5px;
|
||||||
|
padding: 5px 0px;
|
||||||
|
height: calc( 100vh - 100px );
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.personItemIcon{
|
||||||
|
width: 40px;
|
||||||
|
height:40px;
|
||||||
|
background-color: rgb(53, 133, 249);;
|
||||||
|
border-radius: 20px;
|
||||||
|
margin: 0 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.personItemRow_right{
|
||||||
|
height: 100%;
|
||||||
|
flex: 1;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.personItemRow_right2{
|
||||||
|
width: 100px;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.personItemRow_right_top{
|
||||||
|
margin-top: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start
|
||||||
|
}
|
||||||
|
.breadcrumb{
|
||||||
|
padding: 10px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.breadcrumb_item{
|
||||||
|
padding: 8px;
|
||||||
|
padding-right: 0px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,421 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden',backgroundColor:'#fff'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar title="安全监测" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<picker @change="bindPickerChange" :range="array" range-key="profileName" style="margin-top:50px;padding: 0 10px;">
|
||||||
|
<view class="uni-input12">
|
||||||
|
<view>{{profileName}}</view>
|
||||||
|
<u-icon name="arrow-down-fill" color="#000" size="15"></u-icon>
|
||||||
|
</view>
|
||||||
|
</picker>
|
||||||
|
|
||||||
|
<view class="jcsj-box">
|
||||||
|
<view class="time-ranger">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{stm}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{etm}}</text>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="jcsj-content">
|
||||||
|
<view class="tool-btn">
|
||||||
|
<view class="scale-btn">
|
||||||
|
<u-button style="margin-right:10px" @click="fd" class="aqjc-custom-style">+</u-button>
|
||||||
|
<u-button @click="sx" class="aqjc-custom-style">-</u-button>
|
||||||
|
</view>
|
||||||
|
<view class="play-btn">
|
||||||
|
<uni-icons type="videocam" size="40" :color="swiper ? '#2979ff':'#909399' " @click="play"></uni-icons>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="jcsj-charts">
|
||||||
|
<movable-area :style="areaStyle">
|
||||||
|
<movable-view @scale="scale" direction="all" :scale-value="scaleValue" scale-min="0.5" scale="true"
|
||||||
|
scale-max="4" out-of-bounds="true">
|
||||||
|
<qiun-data-charts :chartData="chartData.chartData" :echartsApp="true" :eopts="chartData.eopts" />
|
||||||
|
</movable-view>
|
||||||
|
</movable-area>
|
||||||
|
</view>
|
||||||
|
<view style="margin-top: 20px;">
|
||||||
|
<JcsjTable :columns="columns" :data="dataSources" :newCol="newCol" :cols2="cols2" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker :show="showTime" v-model="startTime" mode="datetime" @confirm="handleStartTime"
|
||||||
|
@cancel="showTime=false"></u-datetime-picker>
|
||||||
|
<u-datetime-picker :show="showTime1" v-model="endTime" mode="datetime" @confirm="handleEndTime"
|
||||||
|
@cancel="showTime1=false"></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
import drpOption from './jrxOptions';
|
||||||
|
import JcsjTable from "./jcsjTable"
|
||||||
|
const stm = moment().subtract(1, 'days').add(1, 'hour').set({
|
||||||
|
minute: 0,
|
||||||
|
second: 0
|
||||||
|
}).format("YYYY-MM-DD HH:mm");
|
||||||
|
const etm = moment().add(1, 'hour').set({
|
||||||
|
minute: 0,
|
||||||
|
second: 0
|
||||||
|
}).format("YYYY-MM-DD HH:mm");
|
||||||
|
export default {
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
startTime: stm,
|
||||||
|
endTime: etm,
|
||||||
|
stm,
|
||||||
|
etm,
|
||||||
|
showTime: false,
|
||||||
|
showTime1: false,
|
||||||
|
array: [],
|
||||||
|
profileCode: '',
|
||||||
|
dbType: '',
|
||||||
|
trData: [],
|
||||||
|
dataSources: [],
|
||||||
|
chartData: {
|
||||||
|
chartData: {},
|
||||||
|
eopts: {}
|
||||||
|
},
|
||||||
|
areaStyle: {
|
||||||
|
left: "-450px"
|
||||||
|
},
|
||||||
|
scaleValue: 0.5,
|
||||||
|
swiper: false,
|
||||||
|
timer: 100,
|
||||||
|
columns: [],
|
||||||
|
cols1: [{
|
||||||
|
title: '序号',
|
||||||
|
key: 'index',
|
||||||
|
width: 60,
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '时间',
|
||||||
|
key: 'time',
|
||||||
|
width: 120,
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '库水位(m)',
|
||||||
|
key: 'rz',
|
||||||
|
dataIndex: 'rz',
|
||||||
|
width: 150,
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
cols2: [{
|
||||||
|
title: '结果分析',
|
||||||
|
key: 'status',
|
||||||
|
dataIndex: 'status',
|
||||||
|
width: 150,
|
||||||
|
align: "center",
|
||||||
|
}],
|
||||||
|
newCol: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
JcsjTable
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
profileName() {
|
||||||
|
if (this.array.length > 0) {
|
||||||
|
return this.array.find(item => item.profileCode == this.profileCode).profileName;
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
profileCode: {
|
||||||
|
handler(newVal, oldVal) {
|
||||||
|
if (newVal) {
|
||||||
|
let name = this.array.find(item => item.profileCode == newVal).profileName;
|
||||||
|
this.dbType = name == "大坝B0+060" ? "1" :
|
||||||
|
name == "大坝B0+090" ? "2" :
|
||||||
|
name == "大坝B0+120" ? "2" : '1'
|
||||||
|
this.getDmTree();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
trData: {
|
||||||
|
handler(newVal, oldVal) {
|
||||||
|
if (newVal) {
|
||||||
|
this.getTableData()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
},
|
||||||
|
dataSources: {
|
||||||
|
handler(newVal, oldVal) {
|
||||||
|
if (newVal) {
|
||||||
|
this.chartData = {
|
||||||
|
...drpOption(newVal[0], this.dbType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
swiper(newVal) {
|
||||||
|
console.log("ww", newVal);
|
||||||
|
|
||||||
|
if (newVal) {
|
||||||
|
this.InitialScroll(this.dataSources)
|
||||||
|
} else {
|
||||||
|
clearInterval(this.timer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
InitialScroll(data) {
|
||||||
|
let index = 0;
|
||||||
|
this.timer = setInterval(() => {
|
||||||
|
console.log("data", data[index % data.length]);
|
||||||
|
|
||||||
|
this.chartData = {
|
||||||
|
...drpOption(data[index % data.length], this.dbType)
|
||||||
|
}
|
||||||
|
index++;
|
||||||
|
}, 1000)
|
||||||
|
},
|
||||||
|
// 播放
|
||||||
|
play() {
|
||||||
|
this.swiper = !this.swiper;
|
||||||
|
},
|
||||||
|
// 放大回调
|
||||||
|
fd() {
|
||||||
|
if (this.scaleValue == 4) {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.scaleValue += 0.1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 缩小回调
|
||||||
|
sx() {
|
||||||
|
if (this.scaleValue == 0.5) {
|
||||||
|
return ''
|
||||||
|
} else {
|
||||||
|
this.scaleValue -= 0.1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 缩放
|
||||||
|
scale(e) {
|
||||||
|
this.areaStyle.left = -(e.detail.scale + 1) * 450 + 'px';
|
||||||
|
},
|
||||||
|
searchHandle() {
|
||||||
|
this.getTableData();
|
||||||
|
},
|
||||||
|
handleStartTime(e) {
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
console.log("time", time);
|
||||||
|
|
||||||
|
this.stm = time
|
||||||
|
this.showTime = false
|
||||||
|
},
|
||||||
|
handleEndTime(e) {
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.etm = time;
|
||||||
|
this.showTime1 = false
|
||||||
|
},
|
||||||
|
handleRanger(e) {
|
||||||
|
console.log(e);
|
||||||
|
this.tm = [...e]
|
||||||
|
},
|
||||||
|
bindPickerChange(e) {
|
||||||
|
this.profileCode = this.array[e.target.value].profileCode
|
||||||
|
},
|
||||||
|
// 获取监测点数据
|
||||||
|
async getMonthData() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post(
|
||||||
|
`/gunshiApp/tsg/attDamProfile/list`, )
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.array = data.data
|
||||||
|
this.profileCode = data.data[0].profileCode;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取坝面上点位数据
|
||||||
|
async getTableData() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post(
|
||||||
|
"/gunshiApp/tsg/osmoticPressR/infiltra/line", {
|
||||||
|
stationCodes: this.trData,
|
||||||
|
dateTimeRangeSo: {
|
||||||
|
start: moment(this.stm).format("YYYY-MM-DD HH:mm:00"),
|
||||||
|
end: moment(this.etm).format("YYYY-MM-DD HH:mm:00"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
if (data.code == 200) {
|
||||||
|
let newArr = [];
|
||||||
|
let newData = data.data.map((s, i) => {
|
||||||
|
newArr.push(s.list.map(c => ({
|
||||||
|
[c.stationCode]: c.value || '-',
|
||||||
|
tm: c.tm,
|
||||||
|
|
||||||
|
})))
|
||||||
|
return {
|
||||||
|
tm: s.tm,
|
||||||
|
rz: s.rz,
|
||||||
|
status: s.status || '',
|
||||||
|
inx: i + 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
let filterData = newArr.filter(s => s.length > 0).flat()
|
||||||
|
let result = newData.map(s => {
|
||||||
|
let tm1 = s.tm;
|
||||||
|
let r = filterData.filter(t => {
|
||||||
|
return t.tm == tm1
|
||||||
|
})
|
||||||
|
let obj = {};
|
||||||
|
r.forEach(s1 => {
|
||||||
|
obj = {
|
||||||
|
...s1,
|
||||||
|
...obj
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return {
|
||||||
|
...s,
|
||||||
|
...obj,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.dataSources = [...result];
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取各点
|
||||||
|
async getDmTree() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post("/gunshiApp/tsg/attDamProfile/tree")
|
||||||
|
if (data.code == 200) {
|
||||||
|
console.log("data", data);
|
||||||
|
|
||||||
|
let filterData = data.data.filter(s => s.profileCode == this.profileCode)
|
||||||
|
this.trData = filterData[0].children;
|
||||||
|
const newCol = filterData[0].children.map(s => ({
|
||||||
|
title: `${s}(m)`,
|
||||||
|
key: s,
|
||||||
|
dataIndex: s,
|
||||||
|
width: 150,
|
||||||
|
align: "center",
|
||||||
|
}))
|
||||||
|
this.columns = [...this.cols1, ...newCol, ...this.cols2]
|
||||||
|
this.newCol = newCol;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 拖动回调
|
||||||
|
onChange(e) {
|
||||||
|
console.log(e);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getMonthData()
|
||||||
|
this.getDmTree()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.uni-input12 {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
column-gap: 30px;
|
||||||
|
align-items: center;
|
||||||
|
padding: 5px 0;
|
||||||
|
border: 1px solid #f2f2f2;
|
||||||
|
border-left: none;
|
||||||
|
border-right: none;
|
||||||
|
// background-image: '../../static/images/';
|
||||||
|
}
|
||||||
|
|
||||||
|
.jcsj-box {
|
||||||
|
padding: 0 10px;
|
||||||
|
|
||||||
|
.jcsj-content {
|
||||||
|
max-height: 100vh;
|
||||||
|
width: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
overflow-x: hidden;
|
||||||
|
|
||||||
|
.tool-btn {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: "center";
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
.scale-btn {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
button {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.jcsj-charts {
|
||||||
|
width: 1310px;
|
||||||
|
height: 250px;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
|
// margin-top: 20px;
|
||||||
|
&>movable-area {
|
||||||
|
height: 250px;
|
||||||
|
width: 3000px;
|
||||||
|
// position:fixed;
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 1;
|
||||||
|
background-color: #efefef;
|
||||||
|
|
||||||
|
movable-view {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
width: 1310px;
|
||||||
|
height: 380px;
|
||||||
|
background-color: #fff;
|
||||||
|
left: 450px;
|
||||||
|
top: 10px
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
border-color: #68bbff !important;
|
||||||
|
color: #68bbff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.aqjc-custom-style {
|
||||||
|
width: 80rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,120 @@
|
||||||
|
<template>
|
||||||
|
<div class="table_div">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="display:block;width:700px;overflow-x:auto">
|
||||||
|
<tr>
|
||||||
|
<th v-for="(cols,i) in columns" :key="i" :style="getStyle(cols)">
|
||||||
|
{{ cols.title }}
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 480px; overflow-y: auto" -->
|
||||||
|
<div class="scroll-table">
|
||||||
|
<tr v-for="(item, index) in data" :key="index">
|
||||||
|
<td style="width:100px;text-align:center">{{ index + 1 }}</td>
|
||||||
|
<td style="width:200px;text-align:center">{{ item.tm }}</td>
|
||||||
|
<td style="width:100px;text-align:center">{{ item.rz }}</td>
|
||||||
|
<td v-for="(col,i) in newCol" :key="i" style="width:100px;text-align:center;">
|
||||||
|
{{item[col.key] }}
|
||||||
|
</td>
|
||||||
|
<td style="width:100px;">
|
||||||
|
{{item.status == 1 ? "正常" : rec == 0 ? "异常" : ''}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</div>
|
||||||
|
<div style="height:180px"></div>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
columns:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
},
|
||||||
|
data:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
},
|
||||||
|
cols2:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
},
|
||||||
|
newCol:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
// newList(){
|
||||||
|
// if(this.tableData.length){
|
||||||
|
// return this.tableData.map(item => ({...item,tm:moment(item.tm).format("MM-DD HH:mm")}))
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
getStyle(row){
|
||||||
|
return {
|
||||||
|
width:row.title == "时间" ? "200px": "100px"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
max-height: calc(100vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(100vh - 180px);
|
||||||
|
overflow-y: auto;
|
||||||
|
overflow-x: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
line-height: 90rpx;
|
||||||
|
// overflow-x: auto;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
height: 85rpx;
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
// font-weight: bold;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 65rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,325 @@
|
||||||
|
|
||||||
|
import { imageUrl060,imageUrl090,rule } from './dataUrl'
|
||||||
|
|
||||||
|
export default function jrxOptions(data = {}, type = "1") {
|
||||||
|
const yMin = type == "1" ? 70 : type == "2" ? 70 : 70;
|
||||||
|
const yMax = type == "1" ? 154 : type == "2" ? 150 : 150;
|
||||||
|
const type1 = ["SY05", "SY06", "SY07", "SY08"]
|
||||||
|
const type2 = ["SY09","SY10","SY11","SY12"]
|
||||||
|
const alltype = type == "1" ? type1 : type == "2" ? type2 : type2;
|
||||||
|
// 字体颜色
|
||||||
|
const textColor = '#666'
|
||||||
|
const imageUrl = type == "1" ? imageUrl060:
|
||||||
|
type == "2" ? imageUrl090 : imageUrl090;
|
||||||
|
const xValue = type == "1" ? (((data?.rz - 99) + 1.1 * 13) / 1.1):
|
||||||
|
type == "2" ? (((data?.rz - 99) + 1 * 14) / 1) : (((data?.rz - 99) + 1 * 14) / 1)
|
||||||
|
const rz = data?.rz ?
|
||||||
|
[[xValue, data?.rz], [0, data?.rz], ] :
|
||||||
|
[]
|
||||||
|
const rz1 = data?.rz ?
|
||||||
|
type == "1" ?
|
||||||
|
[[0, 99], [13, 99], [xValue, data?.rz]]:
|
||||||
|
type == "2" ?
|
||||||
|
[[0, 99], [14, 99], [xValue, data?.rz]]
|
||||||
|
: [[0, 99], [14, 99], [xValue, data?.rz]]
|
||||||
|
:
|
||||||
|
[]
|
||||||
|
const gz1 = data[alltype[0]] ?
|
||||||
|
type == "1" ? [[51.6, 85], [51.6, data[alltype[0]]]] :
|
||||||
|
type == "2" ? [[47.5, 85], [47.5, data[alltype[0]]]] :
|
||||||
|
[[47.5, 158], [85, data[alltype[0]]]]
|
||||||
|
: [];
|
||||||
|
const gz2 = data[alltype[1]] ?
|
||||||
|
type == "1" ? [[53.6, 85], [53.6, data[alltype[1]]]] :
|
||||||
|
type == "2" ? [[49.5, 85], [49.5, data[alltype[1]]]] :
|
||||||
|
[[53.6, 158], [53.6, data[alltype[1]]]] :
|
||||||
|
[];
|
||||||
|
|
||||||
|
const gz3 = data[alltype[2]] ?
|
||||||
|
type == "1" ? [[72.5, 90], [72.5, data[alltype[2]]]] :
|
||||||
|
type == "2" ? [[66.5, 90], [66.5, data[alltype[2]]]] :
|
||||||
|
[[73, 161], [73, data[alltype[2]]]] : [];
|
||||||
|
|
||||||
|
const gz4 = data[alltype[3]] ?
|
||||||
|
type == "1" ? [[84.5, 96], [84.5, data[alltype[3]]]] :
|
||||||
|
type == "2" ? [[77, 96], [77, data[alltype[3]]]] :
|
||||||
|
[[85, 166], [85, data[alltype[3]]]] : [];
|
||||||
|
|
||||||
|
const line = data?.rz ?
|
||||||
|
type == "1" ?
|
||||||
|
[
|
||||||
|
[xValue, data?.rz],
|
||||||
|
[51.6, data[alltype[0]]],
|
||||||
|
[53.6, data[alltype[1]]],
|
||||||
|
[72.5, data[alltype[2]]],
|
||||||
|
[84.5, data[alltype[3]]]
|
||||||
|
] :
|
||||||
|
type == "2" ?
|
||||||
|
[
|
||||||
|
[xValue, data?.rz],
|
||||||
|
[47.5, data[alltype[0]]],
|
||||||
|
[49.5, data[alltype[1]]],
|
||||||
|
[66.5, data[alltype[2]]],
|
||||||
|
[77, data[alltype[3]]]
|
||||||
|
] :
|
||||||
|
[
|
||||||
|
[xValue, data?.rz],
|
||||||
|
[51.6, data[alltype[0]]],
|
||||||
|
[53.6, data[alltype[1]]],
|
||||||
|
[73, data[alltype[2]]],
|
||||||
|
[85, data[alltype[3]]]
|
||||||
|
]
|
||||||
|
: []
|
||||||
|
let eopts = {
|
||||||
|
toolbox: {
|
||||||
|
show: true,
|
||||||
|
feature: {
|
||||||
|
saveAsImage: {
|
||||||
|
show: true,
|
||||||
|
excludeComponents: ['toolbox'],
|
||||||
|
pixelRatio: 2,
|
||||||
|
name:"测值图"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
right: "10%",
|
||||||
|
top:"4%"
|
||||||
|
},
|
||||||
|
graphic: [
|
||||||
|
{
|
||||||
|
type: 'image',
|
||||||
|
left: '5%',
|
||||||
|
top: 0,
|
||||||
|
bottom:0,
|
||||||
|
z: 1,
|
||||||
|
bounding: 'raw',
|
||||||
|
style: {
|
||||||
|
image: imageUrl,
|
||||||
|
width: 1310,
|
||||||
|
height: 380
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'image',
|
||||||
|
// id: 'background',
|
||||||
|
left: '5%',
|
||||||
|
bottom:"5%",
|
||||||
|
z: 1,
|
||||||
|
bounding: 'all',
|
||||||
|
style: {
|
||||||
|
image: rule,
|
||||||
|
width: 10,
|
||||||
|
height: 450
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
grid: {
|
||||||
|
top: '0%',
|
||||||
|
left: '2%',
|
||||||
|
right: '5%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
min: 0,
|
||||||
|
max:100,
|
||||||
|
axisLabel: {
|
||||||
|
show:false,
|
||||||
|
// 坐标轴字体颜色
|
||||||
|
color: textColor,
|
||||||
|
fontSize: 18
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show:false,
|
||||||
|
lineStyle: {
|
||||||
|
color: textColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
// y轴刻度线
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
// 网格
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
boundaryGap: false
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
min: yMin,
|
||||||
|
max: yMax,
|
||||||
|
interval:5,
|
||||||
|
// data:[155,160,180,190,210],
|
||||||
|
nameTextStyle: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 18,
|
||||||
|
padding: [0, 0, 0, 80]
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
// 坐标轴字体颜色
|
||||||
|
color: textColor,
|
||||||
|
fontSize: 18,
|
||||||
|
showMinLabel: false,
|
||||||
|
showMaxLabel: false
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
// y轴刻度线
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
// 网格
|
||||||
|
show: false,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#CCCCCC',
|
||||||
|
type: 'dashed'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
let chartData = {
|
||||||
|
series: [
|
||||||
|
// 和大坝坡面重合的线 斜率为0.75
|
||||||
|
{
|
||||||
|
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
symbolSize: 10,
|
||||||
|
z: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#fff'
|
||||||
|
},
|
||||||
|
areaStyle: {
|
||||||
|
origin: "end",
|
||||||
|
color: 'rgba(0, 128, 255, 0.3)' // 设置区域填充颜色
|
||||||
|
},
|
||||||
|
data:[...rz,...rz1]
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
symbolSize: 10,
|
||||||
|
z: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
markPoint: {
|
||||||
|
data: [{ type: 'max',x:"20%", coord: [xValue, data?.rz] }],
|
||||||
|
symbol: 'pin',
|
||||||
|
symbolSize: [30, 10],
|
||||||
|
itemStyle: {
|
||||||
|
color: '#fff', // 标注点颜色
|
||||||
|
borderColor: '#ffa500', // 标注点边框颜色
|
||||||
|
borderWidth: 0 // 标注点边框宽度
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: true, // 是否显示标签
|
||||||
|
formatter: "库水位" +data?.rz + "m", // 标签格式
|
||||||
|
color: '#5487FF', // 标签文字颜色
|
||||||
|
fontSize: 12, // 标签文字大小
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data:rz
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
symbolSize: 10,
|
||||||
|
z: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
data:rz1
|
||||||
|
},
|
||||||
|
// 管位
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
symbolSize: 10,
|
||||||
|
z: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#5487FF',
|
||||||
|
width:6
|
||||||
|
},
|
||||||
|
data: gz1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
symbolSize: 10,
|
||||||
|
z: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#5487FF',
|
||||||
|
width:6
|
||||||
|
},
|
||||||
|
data: gz2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
symbolSize: 10,
|
||||||
|
z: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#5487FF',
|
||||||
|
width:6
|
||||||
|
},
|
||||||
|
data: gz3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
symbolSize: 10,
|
||||||
|
z: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#5487FF',
|
||||||
|
width:6
|
||||||
|
},
|
||||||
|
data: gz4
|
||||||
|
},
|
||||||
|
// 管位连接线
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
symbolSize: 10,
|
||||||
|
z: 1,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#5487FF'
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: '#5487FF',
|
||||||
|
},
|
||||||
|
data: line
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
eopts,
|
||||||
|
chartData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="预警"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<u-tabs
|
||||||
|
:list="tabsOptions"
|
||||||
|
@click="tabsChange"
|
||||||
|
:scrollable=false
|
||||||
|
class="tabsClass"
|
||||||
|
:activeStyle="{color: 'rgb(37, 157, 255)',fontSize: '16px'}"
|
||||||
|
:inactiveStyle="{color: '#606266',fontSize: '16px'}"
|
||||||
|
lineColor="transparent"
|
||||||
|
itemStyle="height: 44px"
|
||||||
|
>
|
||||||
|
</u-tabs>
|
||||||
|
<uniSh v-if="tabsVal==='uniSh'"></uniSh>
|
||||||
|
<uniSk v-if="tabsVal==='uniSk'"></uniSk>
|
||||||
|
<uniHd v-if="tabsVal==='uniHd'"></uniHd>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
import uniSh from './sh.vue';
|
||||||
|
import uniSk from './sk.vue';
|
||||||
|
import uniHd from './hd.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { uniSh, uniSk, uniHd },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tabsOptions:[
|
||||||
|
{
|
||||||
|
name:'水库预警',
|
||||||
|
components:'uniSk'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'河道预警',
|
||||||
|
components:'uniHd'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'山洪预警',
|
||||||
|
components:'uniSh'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
tabsVal:'uniSk'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tabsChange(item) {
|
||||||
|
this.tabsVal = item.components
|
||||||
|
console.log(this.tabsVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle{
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.tabsClass{
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,259 @@
|
||||||
|
<template>
|
||||||
|
<view class="tabBody">
|
||||||
|
<div class="searchBox">
|
||||||
|
<div class="searchBox_left">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction=false
|
||||||
|
v-model="searchVal"
|
||||||
|
placeholder='请输入站名'
|
||||||
|
height=40
|
||||||
|
>
|
||||||
|
</u-search>
|
||||||
|
</div>
|
||||||
|
<div class="searchBox_right">
|
||||||
|
<view
|
||||||
|
hover-class="is-hover"
|
||||||
|
class="searchBox_right_btn"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="myShow"
|
||||||
|
>
|
||||||
|
<u--image :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image>
|
||||||
|
</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tableHead">
|
||||||
|
<div class="td t1">站名</div>
|
||||||
|
<div class="td t2">水位(m)</div>
|
||||||
|
<div class="td t3">类型</div>
|
||||||
|
<div class="td t4">预警类型</div>
|
||||||
|
</div>
|
||||||
|
<div class="tableBody">
|
||||||
|
<div v-for="(item,index) in getSearchVal" class="tableRow">
|
||||||
|
<div class="td t1" @click="toSh(item)">{{item.stnm}}</div>
|
||||||
|
<div class="td t2">{{Number(item.z).toFixed(2)}}({{Number(item.gstate===1?(item.z-item.grz):(item.z-item.wrz)).toFixed(2)}})</div>
|
||||||
|
<div class="td t3">{{sttp[item.sttp]}}</div>
|
||||||
|
<div class="td t4">{{item.gstate===1?'超危险水位':item.wstate===1?'超警戒水位':'-'}}</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'80px'}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<u-popup
|
||||||
|
:show="show"
|
||||||
|
mode="right"
|
||||||
|
:safeAreaInsetTop='true'
|
||||||
|
:closeOnClickOverlay='false'
|
||||||
|
@close="close"
|
||||||
|
@open="myShow">
|
||||||
|
<view :style="{padding:'10px',width:'250px'}">
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
<text class="title">按类型</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="row"
|
||||||
|
v-model="check1"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="SH" label="山洪" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="SW" label="水文" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<text class="title">按预警类型</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="row"
|
||||||
|
v-model="check2"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="1" label="超危险水位" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="2" label="超警戒水位" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px',marginRight:'10px'}"
|
||||||
|
text="重置"
|
||||||
|
@click="reSet"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px'}"
|
||||||
|
color="rgba(217, 0, 27, 1)"
|
||||||
|
type="primary"
|
||||||
|
text="确定"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
const sttp = {
|
||||||
|
RR:'水库水文站',
|
||||||
|
ZQ:'河道水文站',
|
||||||
|
ZP:'河道水文站',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sttp:sttp,
|
||||||
|
show:false,
|
||||||
|
searchVal:'',
|
||||||
|
check1:['SH','SW'],
|
||||||
|
check2:['1','2'],
|
||||||
|
list:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getSearchVal() {
|
||||||
|
if(this.searchVal){
|
||||||
|
return this.list.filter(o => o.adnm && o.adnm?.indexOf(this.searchVal)>-1)
|
||||||
|
}else{
|
||||||
|
return this.list
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
myShow() {
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
reSet() {
|
||||||
|
this.check1 = ['SH','SW']
|
||||||
|
this.check2 = ['1','2']
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
try{
|
||||||
|
const params = {
|
||||||
|
sources:this.check1,
|
||||||
|
types:this.check2
|
||||||
|
}
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/current/situation/app/rv/warn',params)
|
||||||
|
this.list = res.data.data
|
||||||
|
this.close()
|
||||||
|
}catch(e){
|
||||||
|
//TODO handle the exception
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.close()
|
||||||
|
},1000)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toSh(params) {
|
||||||
|
console.log(`/pages/hdDetail/hdDetail?stcd=${params.stcd}&stnm=${params.stnm}&source=${params.source}&wrz=${params.wrz}&grz=${params.grz}`)
|
||||||
|
uni.navigateTo({
|
||||||
|
url:`/pages/hdDetail/hdDetail?stcd=${params.stcd}&stnm=${params.stnm}&source=${params.source}&wrz=${params.wrz}&grz=${params.grz}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.submit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tabBody{
|
||||||
|
background-color: rgba(247, 247, 247, 1);
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.searchBox{
|
||||||
|
height: 62px;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.tableHead{
|
||||||
|
width: 97%;
|
||||||
|
margin-top: 5px;
|
||||||
|
height: 50px;
|
||||||
|
background-color: #e4f2fe;
|
||||||
|
display: flex;
|
||||||
|
color: #208FEE;
|
||||||
|
}
|
||||||
|
.tableBody{
|
||||||
|
width: 97%;
|
||||||
|
height: calc( 100vh - 214px );
|
||||||
|
background-color: #f7f7f7;//#ffffff;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
.tableRow{
|
||||||
|
width: 100%;
|
||||||
|
height: 46px;
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td{
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.t1{
|
||||||
|
width: 25%;
|
||||||
|
color: #208FEE;
|
||||||
|
}
|
||||||
|
.t2{
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.t3{
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.t4{
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.searchBox_left{
|
||||||
|
width: 82%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
.searchBox_right{
|
||||||
|
width: 18%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.searchBox_right_btn{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.checkItem{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.tmPicker{
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid rgba(240, 240, 240, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
// padding-left: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,328 @@
|
||||||
|
<template>
|
||||||
|
<view class="tabBody">
|
||||||
|
<div class="searchBox">
|
||||||
|
<div class="searchBox_left">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction=false
|
||||||
|
v-model="searchVal"
|
||||||
|
placeholder='请输入乡镇'
|
||||||
|
height=40
|
||||||
|
>
|
||||||
|
</u-search>
|
||||||
|
</div>
|
||||||
|
<div class="searchBox_right">
|
||||||
|
<view
|
||||||
|
hover-class="is-hover"
|
||||||
|
class="searchBox_right_btn"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="myShow"
|
||||||
|
>
|
||||||
|
<u--image :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image>
|
||||||
|
</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tableHead">
|
||||||
|
<div class="td t1">乡镇</div>
|
||||||
|
<div class="td t2">预警时间</div>
|
||||||
|
<div class="td t3">预警状态</div>
|
||||||
|
<div class="td t4">危险等级</div>
|
||||||
|
</div>
|
||||||
|
<div class="tableBody">
|
||||||
|
<div v-for="(item,index) in getSearchVal" class="tableRow">
|
||||||
|
<div class="td t1" @click="toSh(item)">{{item.adnm}}</div>
|
||||||
|
<div class="td t2">{{item.warnstm}}</div>
|
||||||
|
<div class="td t3">{{warnstatus[item.warnstatusid]}}</div>
|
||||||
|
<div class="td t4">{{warngrade[item.warngradeid]}}</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'80px'}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<u-popup
|
||||||
|
:show="show"
|
||||||
|
mode="right"
|
||||||
|
:safeAreaInsetTop='true'
|
||||||
|
:closeOnClickOverlay='false'
|
||||||
|
@close="close"
|
||||||
|
@open="myShow">
|
||||||
|
<view :style="{padding:'10px',width:'250px'}">
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
<text class="title">按预警状态</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="row"
|
||||||
|
v-model="check1"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="0" label="新产生" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="30" label="已关闭" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<text class="title">按危险等级</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="row"
|
||||||
|
v-model="check2"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="6" label="立即转移" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="5" label="准备转移" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<text class="title">按预警时间</text>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showStmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getStmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%',lineHeight:'32px',textAlign:'center'}">至</text>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showEtmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getEtmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%'}"></text>
|
||||||
|
</div>
|
||||||
|
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px',marginRight:'10px'}"
|
||||||
|
text="重置"
|
||||||
|
@click="reSet"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px'}"
|
||||||
|
color="rgba(217, 0, 27, 1)"
|
||||||
|
type="primary"
|
||||||
|
text="确定"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showStmPicker"
|
||||||
|
v-model="stm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showStmPicker = false"
|
||||||
|
@cancel="showStmPicker = false"
|
||||||
|
@close="showStmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showEtmPicker"
|
||||||
|
v-model="etm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showEtmPicker = false"
|
||||||
|
@cancel="showEtmPicker = false"
|
||||||
|
@close="showEtmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
const warnstatus = {
|
||||||
|
'0':'新产生',
|
||||||
|
'10':'已内部告警',
|
||||||
|
'20':'已外部告警',
|
||||||
|
'30':'关闭预警',
|
||||||
|
'70':'灾情上报',
|
||||||
|
}
|
||||||
|
const warngrade = {
|
||||||
|
'5':'准备转移',
|
||||||
|
'6':'立即转移'
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
warnstatus:warnstatus,
|
||||||
|
warngrade:warngrade,
|
||||||
|
show:false,
|
||||||
|
showStmPicker:false,
|
||||||
|
showEtmPicker:false,
|
||||||
|
searchVal:'',
|
||||||
|
stm:Number(moment(new Date()).add(-1,'days')),
|
||||||
|
etm:Number(new Date()),
|
||||||
|
check1:['0','30'],
|
||||||
|
check2:['6','5'],
|
||||||
|
list:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getStmStr() {
|
||||||
|
return moment(this.stm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getEtmStr() {
|
||||||
|
return moment(this.etm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getSearchVal() {
|
||||||
|
if(this.searchVal){
|
||||||
|
return this.list.filter(o => o.adnm && o.adnm?.indexOf(this.searchVal)>-1)
|
||||||
|
}else{
|
||||||
|
return this.list
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
myShow() {
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
reSet() {
|
||||||
|
this.stm = Number(moment(new Date()).add(-1,'days'))
|
||||||
|
this.etm = Number(new Date())
|
||||||
|
this.check1 = ['0','30']
|
||||||
|
this.check2 = ['6','5']
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
if(!moment(this.stm).isBefore(this.etm)){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "开始时间需小于结束时间",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
const params = {
|
||||||
|
stm:moment(this.stm).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
etm:moment(this.etm).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
warnstatusids:this.check1,
|
||||||
|
warngradeids:this.check2
|
||||||
|
}
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/current/situation/app/flood/warn',params)
|
||||||
|
this.list = res.data.data
|
||||||
|
this.close()
|
||||||
|
}catch(e){
|
||||||
|
//TODO handle the exception
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.close()
|
||||||
|
},1000)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toSh(record) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/forewarning/shInformation/shInformation?obj='+JSON.stringify(record) // 跳转到对应路径的页面
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.submit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tabBody{
|
||||||
|
background-color: rgba(247, 247, 247, 1);
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.searchBox{
|
||||||
|
height: 62px;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.tableHead{
|
||||||
|
width: 97%;
|
||||||
|
margin-top: 5px;
|
||||||
|
height: 50px;
|
||||||
|
background-color: #e4f2fe;
|
||||||
|
display: flex;
|
||||||
|
color: #208FEE;
|
||||||
|
}
|
||||||
|
.tableBody{
|
||||||
|
width: 97%;
|
||||||
|
height: calc( 100vh - 214px );
|
||||||
|
background-color: #f7f7f7;//#ffffff;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
.tableRow{
|
||||||
|
width: 100%;
|
||||||
|
height: 46px;
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td{
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.t1{
|
||||||
|
width: 25%;
|
||||||
|
color: #208FEE;
|
||||||
|
}
|
||||||
|
.t2{
|
||||||
|
width: 37%;
|
||||||
|
}
|
||||||
|
.t3{
|
||||||
|
width: 18%;
|
||||||
|
}
|
||||||
|
.t4{
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
.searchBox_left{
|
||||||
|
width: 82%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
.searchBox_right{
|
||||||
|
width: 18%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.searchBox_right_btn{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.checkItem{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.tmPicker{
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid rgba(240, 240, 240, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
// padding-left: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,119 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="山洪预警详情"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<div class="bodyBg">
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">乡镇:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="xz"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">危险等级:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="wxdj"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">预警依据:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--textarea
|
||||||
|
v-model="yjyj"
|
||||||
|
:disabled='true'
|
||||||
|
height=300
|
||||||
|
></u--textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">预警时间:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="yjsj"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
xz:'',
|
||||||
|
wxdj:'',
|
||||||
|
yjyj:'',
|
||||||
|
yjsj:'',
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
},
|
||||||
|
onLoad(props){
|
||||||
|
const record = JSON.parse(props.obj)
|
||||||
|
this.xz = record.adnm
|
||||||
|
this.wxdj = {'5':'准备转移','6':'立即转移'}[record.warngradeid]
|
||||||
|
this.yjyj = record.warndesc
|
||||||
|
this.yjsj = record.warnstm
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bodyBg{
|
||||||
|
background-color: rgba(247, 247, 247, 1);
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
margin-top: 50px;
|
||||||
|
padding-top: 10px;
|
||||||
|
width: 97%;
|
||||||
|
height: 92%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.row{
|
||||||
|
display: flex;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.lf{
|
||||||
|
width: 25%;
|
||||||
|
min-height: 40px;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 38px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
.rf{
|
||||||
|
width: 75%;
|
||||||
|
min-height: 40px;
|
||||||
|
padding-right: 20px;
|
||||||
|
padding-top: 1px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,262 @@
|
||||||
|
<template>
|
||||||
|
<view class="tabBody">
|
||||||
|
<div class="searchBox">
|
||||||
|
<div class="searchBox_left">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction=false
|
||||||
|
v-model="searchVal"
|
||||||
|
placeholder='请输入站名'
|
||||||
|
height=40
|
||||||
|
>
|
||||||
|
</u-search>
|
||||||
|
</div>
|
||||||
|
<div class="searchBox_right">
|
||||||
|
<view
|
||||||
|
hover-class="is-hover"
|
||||||
|
class="searchBox_right_btn"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="myShow"
|
||||||
|
>
|
||||||
|
<u--image :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image>
|
||||||
|
</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tableHead">
|
||||||
|
<div class="td t1">站名</div>
|
||||||
|
<div class="td t2">水位(m)</div>
|
||||||
|
<div class="td t3">类型</div>
|
||||||
|
<div class="td t4">预警类型</div>
|
||||||
|
</div>
|
||||||
|
<div class="tableBody">
|
||||||
|
<div v-for="(item,index) in getSearchVal" class="tableRow">
|
||||||
|
<div class="td t1" @click="toSh(item)">{{item.stnm}}</div>
|
||||||
|
<div class="td t2">{{Number(item.rz).toFixed(2)}}({{Number(item.calState===1?(item.rz-item.calFloodLev):item.desState===1?(item.rz-item.desFloodLev):(item.afsltdz)).toFixed(2)}})</div>
|
||||||
|
<div class="td t3">{{sttp[item.sttp]}}</div>
|
||||||
|
<div class="td t4">{{item.calState===1?'超校核水位':item.desState===1?'超设计水位':item.flState===1?'超汛限水位':'-'}}</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'80px'}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<u-popup
|
||||||
|
:show="show"
|
||||||
|
mode="right"
|
||||||
|
:safeAreaInsetTop='true'
|
||||||
|
:closeOnClickOverlay='false'
|
||||||
|
@close="close"
|
||||||
|
@open="myShow">
|
||||||
|
<view :style="{padding:'10px',width:'250px'}">
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
<text class="title">按类型</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="row"
|
||||||
|
v-model="check1"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="SK" label="水库" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="SW" label="水文" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<text class="title">按预警类型</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="col"
|
||||||
|
v-model="check2"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="1" label="超校核洪水位" :style="{marginTop:'5px'}" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="2" label="超设计洪水位" :style="{marginTop:'5px'}" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="3" label="超汛限水位" :style="{marginTop:'5px'}" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px',marginRight:'10px'}"
|
||||||
|
text="重置"
|
||||||
|
@click="reSet"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px'}"
|
||||||
|
color="rgba(217, 0, 27, 1)"
|
||||||
|
type="primary"
|
||||||
|
text="确定"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
const sttp = {
|
||||||
|
RR:'水库水文站',
|
||||||
|
ZQ:'河道水文站',
|
||||||
|
ZP:'河道水文站',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sttp:sttp,
|
||||||
|
show:false,
|
||||||
|
searchVal:'',
|
||||||
|
check1:['SK','SW'],
|
||||||
|
check2:['1','2','3'],
|
||||||
|
list:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getSearchVal() {
|
||||||
|
if(this.searchVal){
|
||||||
|
return this.list.filter(o => o.adnm && o.adnm?.indexOf(this.searchVal)>-1)
|
||||||
|
}else{
|
||||||
|
return this.list
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
myShow() {
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
reSet() {
|
||||||
|
this.check1 = ['SK','SW']
|
||||||
|
this.check2 = ['1','2','3']
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
|
||||||
|
try{
|
||||||
|
const params = {
|
||||||
|
sources:this.check1,
|
||||||
|
types:this.check2
|
||||||
|
}
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/current/situation/app/res/warn',params)
|
||||||
|
console.log(res)
|
||||||
|
this.list = res.data.data
|
||||||
|
this.close()
|
||||||
|
}catch(e){
|
||||||
|
//TODO handle the exception
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.close()
|
||||||
|
},1000)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toSh(params) {
|
||||||
|
console.log(`/pages/skDetail/skDetail?stcd=${params.stcd}&stnm=${params.stnm}&source=${params.source}&afsltdz=${params.afsltdz}&flLowLimLev=${params.flLowLimLev}&desFloodLev=${params.desFloodLev}&calFloodLev=${params.calFloodLev}&resCode=${params.resCode}`)
|
||||||
|
uni.navigateTo({
|
||||||
|
url:`/pages/skDetail/skDetail?stcd=${params.stcd}&stnm=${params.stnm}&source=${params.source}&afsltdz=${params.afsltdz}&flLowLimLev=${params.flLowLimLev}&desFloodLev=${params.desFloodLev}&calFloodLev=${params.calFloodLev}&resCode=${params.resCode}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.submit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tabBody{
|
||||||
|
background-color: rgba(247, 247, 247, 1);
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.searchBox{
|
||||||
|
height: 62px;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.tableHead{
|
||||||
|
width: 97%;
|
||||||
|
margin-top: 5px;
|
||||||
|
height: 50px;
|
||||||
|
background-color: #e4f2fe;
|
||||||
|
display: flex;
|
||||||
|
color: #208FEE;
|
||||||
|
}
|
||||||
|
.tableBody{
|
||||||
|
width: 97%;
|
||||||
|
height: calc( 100vh - 214px );
|
||||||
|
background-color: #f7f7f7;//#ffffff;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
.tableRow{
|
||||||
|
width: 100%;
|
||||||
|
height: 46px;
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.td{
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.t1{
|
||||||
|
width: 25%;
|
||||||
|
color: #208FEE;
|
||||||
|
}
|
||||||
|
.t2{
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.t3{
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.t4{
|
||||||
|
width: 25%;
|
||||||
|
}
|
||||||
|
.searchBox_left{
|
||||||
|
width: 82%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
.searchBox_right{
|
||||||
|
width: 18%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.searchBox_right_btn{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.checkItem{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.tmPicker{
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid rgba(240, 240, 240, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
// padding-left: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,306 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<view class="nav_bar">
|
||||||
|
<!-- <u-navbar title="查看" @rightClick="rightClick" :autoBack="true">
|
||||||
|
</u-navbar> -->
|
||||||
|
<u-icon
|
||||||
|
name="arrow-left"
|
||||||
|
@click="rightClick"
|
||||||
|
color="#2979ff"
|
||||||
|
size="28"
|
||||||
|
></u-icon>
|
||||||
|
<view class="nav_bar_tit"> 查看 </view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 上一条下一条 -->
|
||||||
|
<view class="tabs_h">
|
||||||
|
<div
|
||||||
|
class="leftTab"
|
||||||
|
:class="{ activetextTypeTab: showTextTypeTab == 1 }"
|
||||||
|
@click="perClick(1)"
|
||||||
|
>
|
||||||
|
上一条
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="rightTab"
|
||||||
|
:class="{ activetextTypeTab: showTextTypeTab == 2 }"
|
||||||
|
@click="nextClick(2)"
|
||||||
|
>
|
||||||
|
下一条
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- info -->
|
||||||
|
<view class="info">
|
||||||
|
<u-form
|
||||||
|
labelPosition="left"
|
||||||
|
:model="infoForm"
|
||||||
|
ref="infoForm"
|
||||||
|
labelWidth="100"
|
||||||
|
>
|
||||||
|
<u-form-item
|
||||||
|
label="工程类型"
|
||||||
|
prop="projectType"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.projectType"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 工程名称 -->
|
||||||
|
<u-form-item
|
||||||
|
label="工程名称"
|
||||||
|
prop="projectName"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.projectName"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 是否发电 -->
|
||||||
|
<u-form-item
|
||||||
|
label="是否发电"
|
||||||
|
prop="isPowerGeneration"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.isPowerGeneration"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 是否泄洪 -->
|
||||||
|
<u-form-item
|
||||||
|
label="是否泄洪"
|
||||||
|
prop="isFloodRelease"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.isFloodRelease"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 水位(m) -->
|
||||||
|
<u-form-item label="水位(m)" prop="waterLevel" borderBottom ref="item3">
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.waterLevel"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 入库流量 (m³/s): -->
|
||||||
|
<u-form-item
|
||||||
|
label="入库流量(m³/s)"
|
||||||
|
prop="inflowVolume"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.inflowVolume"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
|
||||||
|
<!-- 出库流量 (m³/s): -->
|
||||||
|
<u-form-item
|
||||||
|
label="出库流量(m³/s)"
|
||||||
|
prop="outflowVolume"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.outflowVolume"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 其他运行情况 -->
|
||||||
|
<u-form-item
|
||||||
|
label="其他运行情况"
|
||||||
|
prop="remark"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--textarea
|
||||||
|
v-model="infoForm.remark"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
disabled
|
||||||
|
></u--textarea>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 上报人 -->
|
||||||
|
<u-form-item label="上报人" prop="reporter" borderBottom ref="item3">
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.reporter"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 上报单位 -->
|
||||||
|
<u-form-item
|
||||||
|
label="上报单位"
|
||||||
|
prop="reportUnit"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.reportUnit"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 上报时间 -->
|
||||||
|
<u-form-item
|
||||||
|
label="上报时间"
|
||||||
|
prop="reportTime"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="infoForm.reportTime"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
border="surround"
|
||||||
|
disabled
|
||||||
|
></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 附件 -->
|
||||||
|
<u-form-item
|
||||||
|
label="附件"
|
||||||
|
prop="checkboxValue1"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<image
|
||||||
|
:showLoading="true"
|
||||||
|
:src="src"
|
||||||
|
width="80px"
|
||||||
|
height="80px"
|
||||||
|
mode="aspectFit"
|
||||||
|
@click="toggleZoom"
|
||||||
|
:style="{ transform: `scale(${zoomed ? 2 : 1})` }"
|
||||||
|
></image>
|
||||||
|
</u-form-item>
|
||||||
|
</u-form>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
export default {
|
||||||
|
props: ['info'],
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
showTextTypeTab: 0,
|
||||||
|
src: '../../../static/tabs/bigImg.png',
|
||||||
|
infoForm: {
|
||||||
|
checkboxValue1: '水库',
|
||||||
|
reporter: '' // 上报人
|
||||||
|
},
|
||||||
|
zoomed: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
console.log('info', this.info)
|
||||||
|
this.infoForm = this.info
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 切换图片放大状态的方法
|
||||||
|
toggleZoom () {
|
||||||
|
this.zoomed = !this.zoomed
|
||||||
|
},
|
||||||
|
perClick (val) {
|
||||||
|
this.showTextTypeTab = val
|
||||||
|
},
|
||||||
|
nextClick (val) {
|
||||||
|
this.showTextTypeTab = val
|
||||||
|
},
|
||||||
|
// 返回按钮
|
||||||
|
rightClick () {
|
||||||
|
console.log('rightClick')
|
||||||
|
this.$emit('rightClick', false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.container {
|
||||||
|
font-size: 14px;
|
||||||
|
background-color: #f3f5f8;
|
||||||
|
}
|
||||||
|
.tabs_h {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 56rpx;
|
||||||
|
line-height: 88rpx;
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.leftTab {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
.rightTab {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
.activetextTypeTab,
|
||||||
|
.activetextTypeTab:hover {
|
||||||
|
// border-bottom: 3rpx solid #2286f6;
|
||||||
|
color: #026be0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav_bar {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 30px;
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
box-shadow: 0 5px 10px -8px #dfdfdf inset;
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
}
|
||||||
|
.nav_bar_tit {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.info {
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
// text-align: right;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fl {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: left;
|
||||||
|
}
|
||||||
|
.flsb {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u-image {
|
||||||
|
width: 100%; /* 或者其他尺寸 */
|
||||||
|
transition: transform 0.3s; /* 平滑的放大效果 */
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,521 @@
|
||||||
|
<template>
|
||||||
|
<view class="container" v-if="isdetail">
|
||||||
|
<view class="nav_bar">
|
||||||
|
<!-- <u-icon name="arrow_left" color="#000" size="28"></u-icon> -->
|
||||||
|
<view class="nav_bar_tit"> 工情信息 </view>
|
||||||
|
</view>
|
||||||
|
<!-- tabs -->
|
||||||
|
<view class="table_h">
|
||||||
|
<div
|
||||||
|
class="leftTab"
|
||||||
|
:class="{ activetextTypeTab: showTextTypeTab == 1 }"
|
||||||
|
@click="tabChange(1)"
|
||||||
|
>
|
||||||
|
运行情况
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="rightTab"
|
||||||
|
:class="{ activetextTypeTab: showTextTypeTab == 2 }"
|
||||||
|
@click="tabChange(2)"
|
||||||
|
>
|
||||||
|
工程险情
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<!-- 搜索区域 -->
|
||||||
|
<view class="search">
|
||||||
|
<view class="search_sear">
|
||||||
|
<input
|
||||||
|
class="searchInput"
|
||||||
|
confirm-type="search"
|
||||||
|
placeholder-style="color:#bbb"
|
||||||
|
v-model="saerchValue"
|
||||||
|
placeholder="请输入工程名称/上报人"
|
||||||
|
@input="myinput"
|
||||||
|
@confirm="myconfirm"
|
||||||
|
/>
|
||||||
|
<icon class="icon-small" type="search" size="14"></icon>
|
||||||
|
|
||||||
|
<icon
|
||||||
|
v-if="saerchValue.length > 0"
|
||||||
|
class="clear-icon"
|
||||||
|
type="clear"
|
||||||
|
size="16"
|
||||||
|
@click="clearnClick"
|
||||||
|
></icon>
|
||||||
|
</view>
|
||||||
|
<view class="more">
|
||||||
|
<image
|
||||||
|
style="width: 20px; height: 20px; margin-right: 10px"
|
||||||
|
src="../../static/images/filter.png"
|
||||||
|
@click="openpop"
|
||||||
|
></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 列表区域 -->
|
||||||
|
<view class="table_info" v-if="list.length > 0">
|
||||||
|
<p class="p" v-if="total > 0">共{{ total }}条信息</p>
|
||||||
|
<view v-for="(item, index) in list" :key="index">
|
||||||
|
<view class="table_Page" @tap="toDetail(item)">
|
||||||
|
<view class="info">
|
||||||
|
<h4>{{ item.projectName }}</h4>
|
||||||
|
<p class="info_P">
|
||||||
|
<span class="info_n">{{ item.reporter }}</span>
|
||||||
|
<span>{{ item.reportTime }}</span>
|
||||||
|
</p>
|
||||||
|
</view>
|
||||||
|
<view v-if="item.isRead == 0" class="badge"
|
||||||
|
><u-badge :isDot="true"></u-badge
|
||||||
|
></view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 无数据 -->
|
||||||
|
<view class="table_info" v-if="list.length == 0">
|
||||||
|
<view class="table_Page" @tap="toDetail('item')">
|
||||||
|
<view class="info">
|
||||||
|
<h4>朝阳寺水库</h4>
|
||||||
|
<p class="info_P">
|
||||||
|
<span class="info_n">刘明</span>
|
||||||
|
<span>2024-03-06 13:50:47</span>
|
||||||
|
</p>
|
||||||
|
</view>
|
||||||
|
<view class="badge"><u-badge :isDot="true"></u-badge></view> </view
|
||||||
|
></view>
|
||||||
|
|
||||||
|
<!-- 筛选抽屉 -->
|
||||||
|
<view class="popup" v-if="popupOpen">
|
||||||
|
<u-popup
|
||||||
|
:show="popupOpen"
|
||||||
|
mode="bottom"
|
||||||
|
@close="() => (this.popupOpen = false)"
|
||||||
|
>
|
||||||
|
<view style="padding: 30px 20px">
|
||||||
|
<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
|
||||||
|
<u-form
|
||||||
|
labelPosition="left"
|
||||||
|
:model="model1"
|
||||||
|
ref="uForm"
|
||||||
|
labelWidth="100"
|
||||||
|
>
|
||||||
|
<u-form-item
|
||||||
|
label="工程类型"
|
||||||
|
prop="checkboxValue1"
|
||||||
|
borderBottom
|
||||||
|
labelWidth="80"
|
||||||
|
ref="item3"
|
||||||
|
>
|
||||||
|
<u-checkbox-group
|
||||||
|
v-model="model1.userInfo.checkboxValue1"
|
||||||
|
shape="square"
|
||||||
|
>
|
||||||
|
<u-checkbox
|
||||||
|
:customStyle="{ marginRight: '16px' }"
|
||||||
|
v-for="(item, index) in checkboxList1"
|
||||||
|
:key="index"
|
||||||
|
:label="item.name"
|
||||||
|
:name="item.name"
|
||||||
|
>
|
||||||
|
</u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 时间 -->
|
||||||
|
<u-form-item
|
||||||
|
label="上报开始时间"
|
||||||
|
prop="userInfo.start"
|
||||||
|
borderBottom
|
||||||
|
@click="
|
||||||
|
isTime = true
|
||||||
|
hideKeyboard()
|
||||||
|
"
|
||||||
|
ref="item1"
|
||||||
|
>
|
||||||
|
<u-input
|
||||||
|
v-model="model1.userInfo.start"
|
||||||
|
border="none"
|
||||||
|
disabled
|
||||||
|
disabledColor="#ffffff"
|
||||||
|
placeholder="请选择上报开始时间"
|
||||||
|
></u-input>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
|
||||||
|
<u-form-item
|
||||||
|
label="上报结束时间"
|
||||||
|
prop="userInfo.end"
|
||||||
|
borderBottom
|
||||||
|
@click="isTime2 = true"
|
||||||
|
ref="item1"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="model1.userInfo.end"
|
||||||
|
border="none"
|
||||||
|
disabled
|
||||||
|
disabledColor="#ffffff"
|
||||||
|
placeholder="请选择上报结束时间"
|
||||||
|
></u--input>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
</u-form>
|
||||||
|
<view class="bottom">
|
||||||
|
<u-button
|
||||||
|
text="重置"
|
||||||
|
customStyle="margin: 10px"
|
||||||
|
@click="reset"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
type="primary"
|
||||||
|
text="确认"
|
||||||
|
customStyle="margin: 10px"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="isTime"
|
||||||
|
v-model="valueTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="confirm"
|
||||||
|
@cancel="cancel"
|
||||||
|
></u-datetime-picker>
|
||||||
|
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="isTime2"
|
||||||
|
v-model="valueTime2"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="confirm2"
|
||||||
|
@cancel="cancel2"
|
||||||
|
></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="container" v-else>
|
||||||
|
<detail :info="detailInfo" @rightClick="rightClick"></detail>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
import detail from './detail/index.vue'
|
||||||
|
export default {
|
||||||
|
components: { detail },
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
isdetail: true,
|
||||||
|
detailInfo: {},
|
||||||
|
showTextTypeTab: 1,
|
||||||
|
saerchValue: '',
|
||||||
|
popupOpen: false, //抽屉打开,
|
||||||
|
// 基本案列数据
|
||||||
|
checkboxList1: [
|
||||||
|
{
|
||||||
|
name: '水库',
|
||||||
|
disabled: false,
|
||||||
|
key: 'sk'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水电站',
|
||||||
|
disabled: false,
|
||||||
|
key: 'sdz'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isTime: false,
|
||||||
|
valueTime: Number(moment()),
|
||||||
|
valueTime2: Number(moment()),
|
||||||
|
isTime2: false,
|
||||||
|
model1: {
|
||||||
|
userInfo: {
|
||||||
|
start: '',
|
||||||
|
end: '',
|
||||||
|
checkboxValue1: ['水库', '水电站']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
list: {},
|
||||||
|
total: '',
|
||||||
|
isfixed: false,
|
||||||
|
params: {
|
||||||
|
pageSo: { pageSize: 10, pageNumber: 0 },
|
||||||
|
isRead: 0,
|
||||||
|
projectName: this.saerchValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad () {
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
// 页面滚动时,固定头部
|
||||||
|
onPageScroll () {
|
||||||
|
this.isfixed = true
|
||||||
|
},
|
||||||
|
// 下拉刷新
|
||||||
|
onPullDownRefresh () {
|
||||||
|
uni.showToast({
|
||||||
|
title: '努力加载中...'
|
||||||
|
})
|
||||||
|
this.params.pageSo.pageNumber = 0
|
||||||
|
this.list = []
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
// 上拉加载
|
||||||
|
onReachBottom () {
|
||||||
|
if (this.list.length >= this.total) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '没有更多的数据了1'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
rightClick (val) {
|
||||||
|
this.isdetail = true
|
||||||
|
},
|
||||||
|
toDetail (item) {
|
||||||
|
console.log('item', item)
|
||||||
|
this.detailInfo = item
|
||||||
|
this.isdetail = false
|
||||||
|
// uni.navigateTo({
|
||||||
|
// url: './detail/index'
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
async getData () {
|
||||||
|
let obj = this.params
|
||||||
|
this.params.pageSo.pageNumber++
|
||||||
|
if (this.model1.userInfo.start != '' && this.model1.userInfo.end != '') {
|
||||||
|
obj.timeSo = {
|
||||||
|
start: this.model1.userInfo.start,
|
||||||
|
end: this.model1.userInfo.end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.list = []
|
||||||
|
try {
|
||||||
|
if (this.showTextTypeTab === 1) {
|
||||||
|
let res = await uni.$http.post(
|
||||||
|
'/gunshiApp/xfflood/xfProjectRun/queryPage',
|
||||||
|
obj
|
||||||
|
)
|
||||||
|
|
||||||
|
let res2 = await uni.$http.post(
|
||||||
|
'/gunshiApp/xfflood/xfProjectRun/queryPage',
|
||||||
|
{ ...obj, isRead: 1 }
|
||||||
|
)
|
||||||
|
this.total = res.data.data.total + res2.data.data.total
|
||||||
|
|
||||||
|
this.list = res.data.data.records.concat(res2.data.data.records)
|
||||||
|
console.log('--1-', res.data.data, res.data.data.records)
|
||||||
|
console.log('--2-', res2.data.data, this.total, this.list)
|
||||||
|
} else {
|
||||||
|
let res = await uni.$http.post(
|
||||||
|
'/gunshiApp/xfflood/xfProjectIncident/queryPage',
|
||||||
|
obj
|
||||||
|
)
|
||||||
|
let res2 = await uni.$http.post(
|
||||||
|
'/gunshiApp/xfflood/xfProjectIncident/queryPage',
|
||||||
|
{ ...obj, isRead: 1 }
|
||||||
|
)
|
||||||
|
this.total = res.data.data.total + res2.data.data.total
|
||||||
|
this.list = res.data.data.records.concat(res2.data.data.records)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
tabChange (val) {
|
||||||
|
console.log('tabChange0', val)
|
||||||
|
this.showTextTypeTab = val
|
||||||
|
this.params.pageSo.pageNumber = 0
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
submit () {
|
||||||
|
this.popupOpen = false
|
||||||
|
console.log('res', this.$refs.uForm)
|
||||||
|
// 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
|
||||||
|
// this.$refs.uForm
|
||||||
|
// .validate()
|
||||||
|
// .then(res => {
|
||||||
|
// uni.$u.toast('校验通过')
|
||||||
|
// this.popupOpen = false
|
||||||
|
// })
|
||||||
|
// .catch(errors => {
|
||||||
|
// uni.$u.toast('校验失败')
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
reset () {
|
||||||
|
const validateList = [
|
||||||
|
'userInfo.start',
|
||||||
|
'userInfo.end',
|
||||||
|
'userInfo.checkboxValue1'
|
||||||
|
]
|
||||||
|
this.$refs.uForm.resetFields()
|
||||||
|
this.$refs.uForm.clearValidate()
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.uForm.clearValidate(validateList)
|
||||||
|
// 或者使用 this.$refs.uForm.clearValidate()
|
||||||
|
}, 10)
|
||||||
|
this.model1 = {
|
||||||
|
userInfo: {
|
||||||
|
start: '',
|
||||||
|
end: '',
|
||||||
|
checkboxValue1: ['水库', '水电站']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
confirm (val) {
|
||||||
|
console.log(
|
||||||
|
'点击确定按钮时触发',
|
||||||
|
val.value,
|
||||||
|
moment(val.value).format('YYYY-MM-DD HH:mm')
|
||||||
|
)
|
||||||
|
this.valueTime = Number(val)
|
||||||
|
this.model1.userInfo.start = moment(val.value).format('YYYY-MM-DD HH:mm')
|
||||||
|
this.isTime = false
|
||||||
|
},
|
||||||
|
cancel () {
|
||||||
|
console.log('取消')
|
||||||
|
this.isTime = false
|
||||||
|
},
|
||||||
|
confirm2 (val) {
|
||||||
|
console.log(
|
||||||
|
'点击确定按钮时触发',
|
||||||
|
val.value,
|
||||||
|
moment(val.value).format('YYYY-MM-DD HH:mm')
|
||||||
|
)
|
||||||
|
this.valueTime2 = Number(val)
|
||||||
|
this.model1.userInfo.end = moment(val.value).format('YYYY-MM-DD HH:mm')
|
||||||
|
this.isTime2 = false
|
||||||
|
this.params.timeSo.end = this.model1.userInfo.end
|
||||||
|
},
|
||||||
|
cancel2 () {
|
||||||
|
console.log('取消')
|
||||||
|
this.isTime2 = false
|
||||||
|
},
|
||||||
|
|
||||||
|
openpop () {
|
||||||
|
this.popupOpen = true
|
||||||
|
},
|
||||||
|
myinput () {},
|
||||||
|
myconfirm () {},
|
||||||
|
clearnClick () {
|
||||||
|
console.log('打印了clearnClick', this.saerchValue)
|
||||||
|
this.saerchValue = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.container {
|
||||||
|
font-size: 14px;
|
||||||
|
background-color: #f3f5f8;
|
||||||
|
}
|
||||||
|
.table_info {
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
padding: 20px;
|
||||||
|
.p {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.table_Page {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
margin-top: 12rpx;
|
||||||
|
padding-bottom: 12rpx;
|
||||||
|
|
||||||
|
.info_P {
|
||||||
|
color: #a2a2a2;
|
||||||
|
font-size: 24rpx;
|
||||||
|
.info_n {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.table_h {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 56rpx;
|
||||||
|
line-height: 88rpx;
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.leftTab {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
.rightTab {
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
.activetextTypeTab,
|
||||||
|
.activetextTypeTab:hover {
|
||||||
|
// border-bottom: 3rpx solid #2286f6;
|
||||||
|
color: #026be0;
|
||||||
|
}
|
||||||
|
.nav_bar {
|
||||||
|
// display: flex;
|
||||||
|
// justify-content: space-between;
|
||||||
|
// align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 30px;
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
box-shadow: 0 5px 10px -8px #dfdfdf inset;
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
}
|
||||||
|
.nav_bar_tit {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search {
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
.fl {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: left;
|
||||||
|
}
|
||||||
|
.bottom {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.search_sear {
|
||||||
|
// background-color: #eee;
|
||||||
|
width: 100%;
|
||||||
|
padding: 30rpx 16rpx;
|
||||||
|
position: relative;
|
||||||
|
box-sizing: border-box;
|
||||||
|
z-index: 999;
|
||||||
|
|
||||||
|
.searchInput {
|
||||||
|
background-color: #eee;
|
||||||
|
height: 60rpx;
|
||||||
|
border-radius: 6rpx;
|
||||||
|
color: #bbb;
|
||||||
|
padding-left: 60rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-small {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 36rpx;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.clear-icon {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
right: 36rpx;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
icon {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="工情信息"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<u-tabs
|
||||||
|
:list="tabsOptions"
|
||||||
|
@click="tabsChange"
|
||||||
|
:scrollable=false
|
||||||
|
class="tabsClass"
|
||||||
|
:activeStyle="{color: 'rgb(37, 157, 255)',fontSize: '16px'}"
|
||||||
|
:inactiveStyle="{color: '#606266',fontSize: '16px'}"
|
||||||
|
lineColor="transparent"
|
||||||
|
itemStyle="height: 44px"
|
||||||
|
>
|
||||||
|
</u-tabs>
|
||||||
|
<uniQk v-if="tabsVal==='uniQk'" ref="childRef1"></uniQk>
|
||||||
|
<uniXq v-if="tabsVal==='uniXq'" ref="childRef2"></uniXq>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
import uniQk from './qk.vue';
|
||||||
|
import uniXq from './xq.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { uniQk, uniXq },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tabsOptions:[
|
||||||
|
{
|
||||||
|
name:'运行情况',
|
||||||
|
components:'uniQk'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'工程险情',
|
||||||
|
components:'uniXq'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
tabsVal:'uniQk'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tabsChange(item) {
|
||||||
|
this.tabsVal = item.components
|
||||||
|
console.log(this.tabsVal);
|
||||||
|
},
|
||||||
|
refresh(fun) {
|
||||||
|
console.log('执行刷新')
|
||||||
|
fun()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
if(this.tabsVal==='uniQk'){
|
||||||
|
this.$refs.childRef1.submit();
|
||||||
|
}else{
|
||||||
|
this.$refs.childRef2.submit();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle{
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.tabsClass{
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,316 @@
|
||||||
|
<template>
|
||||||
|
<view class="tabBody">
|
||||||
|
<div class="searchBox">
|
||||||
|
<div class="searchBox_left">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction=false
|
||||||
|
v-model="searchVal"
|
||||||
|
placeholder='请输入工程名称/上报人'
|
||||||
|
height=40
|
||||||
|
>
|
||||||
|
</u-search>
|
||||||
|
</div>
|
||||||
|
<div class="searchBox_right">
|
||||||
|
<view
|
||||||
|
hover-class="is-hover"
|
||||||
|
class="searchBox_right_btn"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="myShow"
|
||||||
|
>
|
||||||
|
<u--image :src="'../../../static/images/filter.png'" width="22px" height="22px"></u--image>
|
||||||
|
</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="countNum"><text>共{{getSearchVal.length}}条信息</text></div>
|
||||||
|
<div v-for="(item,index) in getSearchVal" class="listItem" @click="toForm(index)">
|
||||||
|
<div>
|
||||||
|
<div class="row1"><text>{{item.projectName}}</text></div>
|
||||||
|
<div class="row2">
|
||||||
|
<div>
|
||||||
|
<text :style="{marginRight:'5px'}">{{item.reporter}}</text>
|
||||||
|
<text>{{item.reportTime}}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="icon" v-show="item.isRead===0"></div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'100px'}"></div>
|
||||||
|
</div>
|
||||||
|
<u-popup
|
||||||
|
:show="show"
|
||||||
|
mode="right"
|
||||||
|
:safeAreaInsetTop='true'
|
||||||
|
:closeOnClickOverlay='false'
|
||||||
|
@close="close"
|
||||||
|
@open="myShow">
|
||||||
|
<view :style="{padding:'10px',width:'250px'}">
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
<text class="title">按工程类型</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="row"
|
||||||
|
v-model="check1"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="1" label="水库" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="2" label="水电站" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<div :style="{display:'flex',alignItems:'center'}">
|
||||||
|
<text class="title">按上报时间</text>
|
||||||
|
<u-switch v-model="isTime" size="20" :style="{margin:'2px 0 0 10px'}"></u-switch>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}" v-if="isTime">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showStmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getStmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%',lineHeight:'32px',textAlign:'center'}">至</text>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}" v-if="isTime">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showEtmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getEtmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%'}"></text>
|
||||||
|
</div>
|
||||||
|
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px',marginRight:'10px'}"
|
||||||
|
text="重置"
|
||||||
|
@click="reSet"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px'}"
|
||||||
|
color="rgba(217, 0, 27, 1)"
|
||||||
|
type="primary"
|
||||||
|
text="确定"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showStmPicker"
|
||||||
|
v-model="stm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showStmPicker = false"
|
||||||
|
@cancel="showStmPicker = false"
|
||||||
|
@close="showStmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showEtmPicker"
|
||||||
|
v-model="etm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showEtmPicker = false"
|
||||||
|
@cancel="showEtmPicker = false"
|
||||||
|
@close="showEtmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show:false,
|
||||||
|
showStmPicker:false,
|
||||||
|
showEtmPicker:false,
|
||||||
|
searchVal:'',
|
||||||
|
stm:Number(moment(new Date()).add(-7,'days')),
|
||||||
|
etm:Number(new Date()),
|
||||||
|
isTime:false,
|
||||||
|
check1:['1','2'],
|
||||||
|
list:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getStmStr() {
|
||||||
|
return moment(this.stm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getEtmStr() {
|
||||||
|
return moment(this.etm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getSearchVal() {
|
||||||
|
if(this.searchVal){
|
||||||
|
return this.list.filter(o => (o.projectName?.indexOf(this.searchVal)>-1 || o.reporter?.indexOf(this.searchVal)>-1))
|
||||||
|
}else{
|
||||||
|
return this.list
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
myShow() {
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
reSet() {
|
||||||
|
this.isTime = false
|
||||||
|
this.stm = Number(moment(new Date()).add(-7,'days'))
|
||||||
|
this.etm = Number(new Date())
|
||||||
|
this.check1 = ['1','2']
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
if(!moment(this.stm).isBefore(this.etm)){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "开始时间需小于结束时间",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
const params = {
|
||||||
|
projectTypes:this.check1.length===0?['999']:this.check1,
|
||||||
|
}
|
||||||
|
if(this.isTime){
|
||||||
|
params.timeSo = {
|
||||||
|
start:moment(this.stm).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
end:moment(this.etm).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('params',this.check1==[])
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/xfProjectRun/list',params)
|
||||||
|
console.log('res',res)
|
||||||
|
this.list = res.data.data
|
||||||
|
this.close()
|
||||||
|
}catch(e){
|
||||||
|
//TODO handle the exception
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.close()
|
||||||
|
},1000)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toForm(myIndex) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/gqzq/gqxx/qkForm?obj='+JSON.stringify({list:this.getSearchVal,myIndex:myIndex}) // 跳转到对应路径的页面
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.submit()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tabBody{
|
||||||
|
background-color: rgba(247, 247, 247, 1);
|
||||||
|
height: 100%;
|
||||||
|
// display: flex;
|
||||||
|
// flex-direction: column;
|
||||||
|
// align-items: center;
|
||||||
|
}
|
||||||
|
.searchBox{
|
||||||
|
height: 62px;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 5px 5px;
|
||||||
|
padding: 5px 20px;
|
||||||
|
height: calc( 100vh - 100px );
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.countNum{
|
||||||
|
width: 100%;
|
||||||
|
text-align: right;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.listItem{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
padding: 10px 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.row1{
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #333333;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
.row2{
|
||||||
|
font-size: 12px;
|
||||||
|
color: #999999;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.icon{
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
.searchBox_left{
|
||||||
|
width: 82%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
.searchBox_right{
|
||||||
|
width: 18%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.searchBox_right_btn{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.checkItem{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.tmPicker{
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid rgba(240, 240, 240, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
// padding-left: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,301 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{backgroundColor: 'rgba(247, 247, 247, 1)',height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="查看"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<div class="bodyBg">
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="myHead" v-if="list.length>1">
|
||||||
|
<div class="paging">
|
||||||
|
<view
|
||||||
|
class="paging_left"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="changePage(false)"
|
||||||
|
>{{index===0?'返回':'上一条'}}</view>
|
||||||
|
<view
|
||||||
|
class="paging_right"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="changePage(true)"
|
||||||
|
>{{index===list.length-1?'返回':'下一条'}}</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="myscroll">
|
||||||
|
<div :style="{height:'10px'}"></div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报时间:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reportTime"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">工程类型:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="{'1':'水库','2':'水电站'}[getRecord.projectType]"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>工程名称:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.projectName"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">是否发电:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="{'0':'否','1':'是'}[getRecord.isPowerGeneration]"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">是否泄洪:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="{'0':'否','1':'是'}[getRecord.isFloodRelease]"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">水位(m):</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.waterLevel"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">入库流量(m³/s):</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.inflowVolume"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">出库流量(m³/s):</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.outflowVolume"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">其他运行情况:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--textarea
|
||||||
|
v-model="getRecord.remark"
|
||||||
|
:disabled='true'
|
||||||
|
height=300
|
||||||
|
></u--textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报人:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reporter"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报单位:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reportUnit"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">附件:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<text v-if="imgList.length===0">{{getRecord.fileIds || '暂无数据'}}</text>
|
||||||
|
<u-image
|
||||||
|
:style="{marginTop:'10px'}"
|
||||||
|
v-for="item in imgList"
|
||||||
|
:src="'http://223.75.53.141:9102/test.by-lyf.tmp'+item.filePath"
|
||||||
|
width="100%"
|
||||||
|
mode="aspectFit"
|
||||||
|
@click="previewImage(0,'http://223.75.53.141:9102/test.by-lyf.tmp'+item.filePath)"
|
||||||
|
></u-image>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'20vh'}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
record:{},
|
||||||
|
list:[],
|
||||||
|
index:0,
|
||||||
|
cs:'',
|
||||||
|
imgList:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getState()
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getRecord() {
|
||||||
|
return this.list[this.index] || {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getState() {
|
||||||
|
try{
|
||||||
|
const id = this.getRecord.id
|
||||||
|
console.log('id',id)
|
||||||
|
const res = await uni.$http.get('/gunshiApp/xfflood/xfProjectRun/detail?id='+id)
|
||||||
|
this.imgList = res.data.data
|
||||||
|
console.log('res2',res.data.data)
|
||||||
|
}catch(e){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changePage(flag) {
|
||||||
|
if(flag){
|
||||||
|
if(this.index===this.list.length-1){
|
||||||
|
uni.navigateBack()
|
||||||
|
}else{
|
||||||
|
this.index = this.index+1
|
||||||
|
this.getState()
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(this.index===0){
|
||||||
|
uni.navigateBack()
|
||||||
|
}else{
|
||||||
|
this.index = this.index-1
|
||||||
|
this.getState()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
previewImage(index,url) {
|
||||||
|
// 使用uni.previewImage预览图片
|
||||||
|
uni.previewImage({
|
||||||
|
current: index,
|
||||||
|
urls: [url]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(props){
|
||||||
|
const record = JSON.parse(props.obj)
|
||||||
|
this.index = record.myIndex
|
||||||
|
this.list= record.list
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bodyBg{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
margin-top: 50px;
|
||||||
|
padding-top: 10px;
|
||||||
|
width: 97%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.row{
|
||||||
|
display: flex;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.lf{
|
||||||
|
// width: 30%;
|
||||||
|
width: 6.5rem;
|
||||||
|
min-height: 40px;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 38px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
.rf{
|
||||||
|
flex: 1;
|
||||||
|
// width: 70%;
|
||||||
|
min-height: 40px;
|
||||||
|
line-height: 36px;
|
||||||
|
padding-right: 20px;
|
||||||
|
padding-top: 1px;
|
||||||
|
}
|
||||||
|
.paging{
|
||||||
|
position: relative;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
margin: 5px 50px 15px 50px;
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.paging_left{
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid #dadbde;
|
||||||
|
border-right: 0;
|
||||||
|
background: rgb(245, 247, 250);
|
||||||
|
border-radius: 8px 0 0 8px;
|
||||||
|
}
|
||||||
|
.paging_right{
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid #dadbde;
|
||||||
|
background: rgb(245, 247, 250);
|
||||||
|
border-radius: 0 8px 8px 0;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.myHead{
|
||||||
|
margin-bottom: 0px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.myscroll{
|
||||||
|
height: 90vh;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,332 @@
|
||||||
|
<template>
|
||||||
|
<view class="tabBody">
|
||||||
|
<div class="searchBox">
|
||||||
|
<div class="searchBox_left">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction=false
|
||||||
|
v-model="searchVal"
|
||||||
|
placeholder='请输入工程名称/上报人'
|
||||||
|
height=40
|
||||||
|
>
|
||||||
|
</u-search>
|
||||||
|
</div>
|
||||||
|
<div class="searchBox_right">
|
||||||
|
<view
|
||||||
|
hover-class="is-hover"
|
||||||
|
class="searchBox_right_btn"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="myShow"
|
||||||
|
>
|
||||||
|
<u--image :src="'../../../static/images/filter.png'" width="22px" height="22px"></u--image>
|
||||||
|
</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="countNum"><text>共{{getSearchVal.length}}条信息</text></div>
|
||||||
|
<div v-for="(item,index) in getSearchVal" class="listItem" @click="toForm(index)">
|
||||||
|
<div>
|
||||||
|
<div class="row1"><text>{{item.projectName}}</text></div>
|
||||||
|
<div class="row2">
|
||||||
|
<div>
|
||||||
|
<text :style="{marginRight:'5px'}">{{item.reporter}}</text>
|
||||||
|
<text>{{item.reportTime}}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="icon" v-show="item.isRead===0"></div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'100px'}"></div>
|
||||||
|
</div>
|
||||||
|
<u-popup
|
||||||
|
:show="show"
|
||||||
|
mode="right"
|
||||||
|
:safeAreaInsetTop='true'
|
||||||
|
:closeOnClickOverlay='false'
|
||||||
|
@close="close"
|
||||||
|
@open="myShow">
|
||||||
|
<view :style="{padding:'10px',width:'250px'}">
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
<text class="title">按严重程度</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="col"
|
||||||
|
v-model="check1"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="1" label="一般险情" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="2" label="较大险情" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="3" label="重大险情" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="4" label="特别重大险情" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<text class="title">按工程类型</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="row"
|
||||||
|
v-model="check2"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="1" label="水库" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="2" label="水电站" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<div :style="{display:'flex',alignItems:'center'}">
|
||||||
|
<text class="title">按上报时间</text>
|
||||||
|
<u-switch v-model="isTime" size="20" :style="{margin:'2px 0 0 10px'}"></u-switch>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}" v-if="isTime">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showStmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getStmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%',lineHeight:'32px',textAlign:'center'}">至</text>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}" v-if="isTime">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showEtmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getEtmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%'}"></text>
|
||||||
|
</div>
|
||||||
|
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px',marginRight:'10px'}"
|
||||||
|
text="重置"
|
||||||
|
@click="reSet"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px'}"
|
||||||
|
color="rgba(217, 0, 27, 1)"
|
||||||
|
type="primary"
|
||||||
|
text="确定"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showStmPicker"
|
||||||
|
v-model="stm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showStmPicker = false"
|
||||||
|
@cancel="showStmPicker = false"
|
||||||
|
@close="showStmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showEtmPicker"
|
||||||
|
v-model="etm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showEtmPicker = false"
|
||||||
|
@cancel="showEtmPicker = false"
|
||||||
|
@close="showEtmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show:false,
|
||||||
|
showStmPicker:false,
|
||||||
|
showEtmPicker:false,
|
||||||
|
searchVal:'',
|
||||||
|
stm:Number(moment(new Date()).add(-7,'days')),
|
||||||
|
etm:Number(new Date()),
|
||||||
|
isTime:false,
|
||||||
|
check1:['1','2','3','4'],
|
||||||
|
check2:['1','2'],
|
||||||
|
list:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getStmStr() {
|
||||||
|
return moment(this.stm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getEtmStr() {
|
||||||
|
return moment(this.etm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getSearchVal() {
|
||||||
|
if(this.searchVal){
|
||||||
|
return this.list.filter(o => (o.projectName?.indexOf(this.searchVal)>-1 || o.reporter?.indexOf(this.searchVal)>-1))
|
||||||
|
}else{
|
||||||
|
return this.list
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
myShow() {
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
reSet() {
|
||||||
|
this.isTime = false
|
||||||
|
this.stm = Number(moment(new Date()).add(-7,'days'))
|
||||||
|
this.etm = Number(new Date())
|
||||||
|
this.check1 = ['1','2','3','4']
|
||||||
|
this.check2 = ['1','2']
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
if(!moment(this.stm).isBefore(this.etm)){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "开始时间需小于结束时间",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
const params = {
|
||||||
|
severitys:this.check1.length===0?['999']:this.check1,
|
||||||
|
projectTypes:this.check2.length===0?['999']:this.check2,
|
||||||
|
}
|
||||||
|
if(this.isTime){
|
||||||
|
params.timeSo = {
|
||||||
|
start:moment(this.stm).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
end:moment(this.etm).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('params',params)
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/xfProjectIncident/list',params)
|
||||||
|
console.log('res',res)
|
||||||
|
this.list = res.data.data
|
||||||
|
this.close()
|
||||||
|
}catch(e){
|
||||||
|
//TODO handle the exception
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.close()
|
||||||
|
},1000)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toForm(myIndex) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/gqzq/gqxx/xqForm?obj='+JSON.stringify({list:this.getSearchVal,myIndex:myIndex}) // 跳转到对应路径的页面
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.submit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tabBody{
|
||||||
|
background-color: rgba(247, 247, 247, 1);
|
||||||
|
height: 100%;
|
||||||
|
// display: flex;
|
||||||
|
// flex-direction: column;
|
||||||
|
// align-items: center;
|
||||||
|
}
|
||||||
|
.searchBox{
|
||||||
|
height: 62px;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 5px 5px;
|
||||||
|
padding: 5px 20px;
|
||||||
|
height: calc( 100vh - 100px );
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.countNum{
|
||||||
|
width: 100%;
|
||||||
|
text-align: right;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.listItem{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
padding: 10px 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.row1{
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #333333;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
.row2{
|
||||||
|
font-size: 12px;
|
||||||
|
color: #999999;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.icon{
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
.searchBox_left{
|
||||||
|
width: 82%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
.searchBox_right{
|
||||||
|
width: 18%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.searchBox_right_btn{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.checkItem{
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.tmPicker{
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid rgba(240, 240, 240, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
// padding-left: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,311 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{backgroundColor: 'rgba(247, 247, 247, 1)',height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="查看"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<div class="bodyBg">
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="myHead" v-if="list.length>1">
|
||||||
|
<div class="paging">
|
||||||
|
<view
|
||||||
|
class="paging_left"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="changePage(false)"
|
||||||
|
>{{index===0?'返回':'上一条'}}</view>
|
||||||
|
<view
|
||||||
|
class="paging_right"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="changePage(true)"
|
||||||
|
>{{index===list.length-1?'返回':'下一条'}}</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="myscroll">
|
||||||
|
<div :style="{height:'10px'}"></div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报时间:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reportTime"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">工程类型:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="{'1':'水库','2':'水电站'}[getRecord.projectType]"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>工程名称:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.projectName"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">严重程度:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="{'1':'一般险情','2':'较大险情','3':'重大险情','4':'特别重大险情'}[getRecord.severity]"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">是否已管控:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="{'0':'否','1':'是'}[getRecord.isControlled]"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">险情描述:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--textarea
|
||||||
|
v-model="getRecord.incidentDescription"
|
||||||
|
:disabled='true'
|
||||||
|
height=300
|
||||||
|
></u--textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">管控责任人:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.controlResponsiblePerson"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">联系电话:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.responsiblePersonPhone"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">其他运行情况:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--textarea
|
||||||
|
v-model="getRecord.remark"
|
||||||
|
:disabled='true'
|
||||||
|
height=300
|
||||||
|
></u--textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报人:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reporter"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报单位:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reportUnit"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报时间:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reportTime"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">附件:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<text v-if="imgList.length===0">{{getRecord.fileIds || '暂无数据'}}</text>
|
||||||
|
<u-image
|
||||||
|
:style="{marginTop:'10px'}"
|
||||||
|
v-for="item in imgList"
|
||||||
|
:src="'http://223.75.53.141:9102/test.by-lyf.tmp'+item.filePath"
|
||||||
|
width="100%"
|
||||||
|
mode="aspectFit"
|
||||||
|
@click="previewImage(0,'http://223.75.53.141:9102/test.by-lyf.tmp'+item.filePath)"
|
||||||
|
></u-image>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'20vh'}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
record:{},
|
||||||
|
list:[],
|
||||||
|
index:0,
|
||||||
|
cs:'',
|
||||||
|
imgList:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getState()
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getRecord() {
|
||||||
|
return this.list[this.index] || {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getState() {
|
||||||
|
try{
|
||||||
|
const id = this.getRecord.id
|
||||||
|
console.log('id',id)
|
||||||
|
const res = await uni.$http.get('/gunshiApp/xfflood/xfProjectIncident/detail?id='+id)
|
||||||
|
this.imgList = res.data.data
|
||||||
|
console.log('res',res)
|
||||||
|
}catch(e){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changePage(flag) {
|
||||||
|
if(flag){
|
||||||
|
if(this.index===this.list.length-1){
|
||||||
|
uni.navigateBack()
|
||||||
|
}else{
|
||||||
|
this.index = this.index+1
|
||||||
|
this.getState()
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(this.index===0){
|
||||||
|
uni.navigateBack()
|
||||||
|
}else{
|
||||||
|
this.index = this.index-1
|
||||||
|
this.getState()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
previewImage(index,url) {
|
||||||
|
// 使用uni.previewImage预览图片
|
||||||
|
uni.previewImage({
|
||||||
|
current: index,
|
||||||
|
urls: [url]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(props){
|
||||||
|
const record = JSON.parse(props.obj)
|
||||||
|
this.index = record.myIndex
|
||||||
|
this.list= record.list
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bodyBg{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
margin-top: 50px;
|
||||||
|
padding-top: 10px;
|
||||||
|
width: 97%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.row{
|
||||||
|
display: flex;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.lf{
|
||||||
|
// width: 30%;
|
||||||
|
width: 6rem;
|
||||||
|
min-height: 40px;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 38px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
.rf{
|
||||||
|
// width: 70%;
|
||||||
|
flex: 1;
|
||||||
|
min-height: 40px;
|
||||||
|
line-height: 36px;
|
||||||
|
padding-right: 20px;
|
||||||
|
padding-top: 1px;
|
||||||
|
}
|
||||||
|
.paging{
|
||||||
|
position: relative;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
margin: 5px 50px 15px 50px;
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.paging_left{
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid #dadbde;
|
||||||
|
border-right: 0;
|
||||||
|
background: rgb(245, 247, 250);
|
||||||
|
border-radius: 8px 0 0 8px;
|
||||||
|
}
|
||||||
|
.paging_right{
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid #dadbde;
|
||||||
|
background: rgb(245, 247, 250);
|
||||||
|
border-radius: 0 8px 8px 0;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.myHead{
|
||||||
|
margin-bottom: 0px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.myscroll{
|
||||||
|
height: 90vh;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,122 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="工情灾情"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<view class="info">
|
||||||
|
<div class="ul_list" @click="todetail(1)">
|
||||||
|
<div class="left">工情信息</div>
|
||||||
|
<div class="left" :style="{display:'flex',alignItems:'center'}">
|
||||||
|
<div class="redDot" v-show="gq"></div>
|
||||||
|
<text>></text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ul_list" @click="todetail(2)">
|
||||||
|
<div class="left">灾情信息</div>
|
||||||
|
<div class="left" :style="{display:'flex',alignItems:'center'}">
|
||||||
|
<div class="redDot" v-show="zq"></div>
|
||||||
|
<text>></text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
gq:false,
|
||||||
|
zq:false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
todetail (val) {
|
||||||
|
console.log('val', val)
|
||||||
|
if (val == 1) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/gqzq/gqxx/gqxx'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (val == 2) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/gqzq/zqxx/zqxx'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getData() {
|
||||||
|
try{
|
||||||
|
const res = await uni.$http.get("/gunshiApp/xfflood/xfProjectRun/has/read")
|
||||||
|
const data = res.data.data
|
||||||
|
if(data){
|
||||||
|
console.log(data['1'],data['2'],data['3'])
|
||||||
|
this.gq = (data['1']||data['2'])?true:false
|
||||||
|
this.zq = data['3']?true:false
|
||||||
|
}
|
||||||
|
console.log('res',res)
|
||||||
|
}catch(e){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.container {
|
||||||
|
font-size: 14px;
|
||||||
|
background-color: #f3f5f8;
|
||||||
|
}
|
||||||
|
.nav_bar {
|
||||||
|
// display: flex;
|
||||||
|
// justify-content: space-between;
|
||||||
|
// align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 30px;
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
box-shadow: 0 5px 10px -8px #dfdfdf inset;
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
}
|
||||||
|
.nav_bar_tit {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.info {
|
||||||
|
padding: 20px;
|
||||||
|
padding-top: 0;
|
||||||
|
background-color: #fff;
|
||||||
|
margin-top: 44px;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
}
|
||||||
|
.ul_list {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
height: 48px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
.redDot{
|
||||||
|
margin-right: 10px;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,392 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<view class="nav_bar">
|
||||||
|
<!-- <u-icon name="arrow_left" color="#000" size="28"></u-icon> -->
|
||||||
|
<view class="nav_bar_tit"> 灾情信息 </view>
|
||||||
|
</view>
|
||||||
|
<view class="search">
|
||||||
|
<!-- 搜索区域 -->
|
||||||
|
<view class="search_sear">
|
||||||
|
<input
|
||||||
|
class="searchInput"
|
||||||
|
confirm-type="search"
|
||||||
|
placeholder-style="color:#bbb"
|
||||||
|
v-model="saerchValue"
|
||||||
|
placeholder="请输入"
|
||||||
|
@input="myinput"
|
||||||
|
@confirm="myconfirm"
|
||||||
|
/>
|
||||||
|
<icon class="icon-small" type="search" size="14"></icon>
|
||||||
|
|
||||||
|
<icon
|
||||||
|
v-if="saerchValue.length > 0"
|
||||||
|
class="clear-icon"
|
||||||
|
type="clear"
|
||||||
|
size="16"
|
||||||
|
@click="clearnClick"
|
||||||
|
></icon>
|
||||||
|
<!-- </view> -->
|
||||||
|
</view>
|
||||||
|
<view class="more">
|
||||||
|
<image
|
||||||
|
style="width: 20px; height: 20px; margin-right: 10px"
|
||||||
|
src="../../static/images/filter.png"
|
||||||
|
@click="openpop"
|
||||||
|
></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- table_info -->
|
||||||
|
<view class="table_info">
|
||||||
|
<p class="p">共4条信息</p>
|
||||||
|
<view>
|
||||||
|
<view class="table_Page">
|
||||||
|
<view class="info">
|
||||||
|
<h4>朝阳寺水库</h4>
|
||||||
|
<p class="info_P">
|
||||||
|
<span class="info_n">刘明</span>
|
||||||
|
<span>2024-03-06 13:50:47</span>
|
||||||
|
</p>
|
||||||
|
</view>
|
||||||
|
<view class="badge"><u-badge :isDot="true"></u-badge></view>
|
||||||
|
</view>
|
||||||
|
<view class="table_Page">
|
||||||
|
<view class="info">
|
||||||
|
<h4>朝阳寺水库</h4>
|
||||||
|
<p class="info_P">
|
||||||
|
<span class="info_n">刘明</span>
|
||||||
|
<span>2024-03-06 13:50:47</span>
|
||||||
|
</p>
|
||||||
|
</view>
|
||||||
|
<view class="badge"><u-badge :isDot="true"></u-badge></view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 抽屉 -->
|
||||||
|
<view class="popup" v-if="popupOpen">
|
||||||
|
<u-popup
|
||||||
|
:show="popupOpen"
|
||||||
|
mode="bottom"
|
||||||
|
@close="() => (this.popupOpen = false)"
|
||||||
|
>
|
||||||
|
<view style="padding: 30px 20px">
|
||||||
|
<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
|
||||||
|
<u-form
|
||||||
|
labelPosition="left"
|
||||||
|
:model="model1"
|
||||||
|
ref="uForm"
|
||||||
|
labelWidth="100"
|
||||||
|
>
|
||||||
|
<u-form-item
|
||||||
|
label="工程类型"
|
||||||
|
prop="checkboxValue1"
|
||||||
|
borderBottom
|
||||||
|
ref="item3"
|
||||||
|
:customStyle="{ height: '55px' }"
|
||||||
|
>
|
||||||
|
<u-checkbox-group
|
||||||
|
v-model="model1.userInfo.checkboxValue1"
|
||||||
|
placement="row"
|
||||||
|
@change="checkboxChange"
|
||||||
|
style="flex-wrap: wrap; position: absolute"
|
||||||
|
>
|
||||||
|
<u-checkbox
|
||||||
|
:customStyle="{ marginRight: '16px', margin: '5px' }"
|
||||||
|
v-for="(item, index) in checkboxList1"
|
||||||
|
:key="index"
|
||||||
|
:label="item.name"
|
||||||
|
:name="item.name"
|
||||||
|
>
|
||||||
|
</u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 时间 -->
|
||||||
|
<u-form-item
|
||||||
|
label="上报开始时间"
|
||||||
|
prop="userInfo.start"
|
||||||
|
borderBottom
|
||||||
|
@click="
|
||||||
|
isTime = true
|
||||||
|
hideKeyboard()
|
||||||
|
"
|
||||||
|
ref="item1"
|
||||||
|
>
|
||||||
|
<u-input
|
||||||
|
v-model="model1.userInfo.start"
|
||||||
|
border="none"
|
||||||
|
disabled
|
||||||
|
disabledColor="#ffffff"
|
||||||
|
placeholder="请选择上报开始时间"
|
||||||
|
></u-input>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
|
||||||
|
<u-form-item
|
||||||
|
label="上报结束时间"
|
||||||
|
prop="userInfo.end"
|
||||||
|
borderBottom
|
||||||
|
@click="isTime2 = true"
|
||||||
|
ref="item1"
|
||||||
|
>
|
||||||
|
<u--input
|
||||||
|
v-model="model1.userInfo.end"
|
||||||
|
border="none"
|
||||||
|
disabled
|
||||||
|
disabledColor="#ffffff"
|
||||||
|
placeholder="请选择上报结束时间"
|
||||||
|
></u--input>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
</u-form>
|
||||||
|
<view class="bottom">
|
||||||
|
<u-button
|
||||||
|
text="重置"
|
||||||
|
customStyle="margin: 10px"
|
||||||
|
@click="reset"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
type="primary"
|
||||||
|
text="确认"
|
||||||
|
customStyle="margin: 10px"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="isTime"
|
||||||
|
v-model="valueTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="confirm"
|
||||||
|
@cancel="cancel"
|
||||||
|
></u-datetime-picker>
|
||||||
|
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="isTime2"
|
||||||
|
v-model="valueTime2"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="confirm2"
|
||||||
|
@cancel="cancel2"
|
||||||
|
></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
saerchValue: '',
|
||||||
|
popupOpen: false, //抽屉打开,
|
||||||
|
// 基本案列数据
|
||||||
|
checkboxList1: [
|
||||||
|
{
|
||||||
|
name: '一般险情',
|
||||||
|
disabled: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '较大险情',
|
||||||
|
disabled: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '重大险情',
|
||||||
|
disabled: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '特别重大险情',
|
||||||
|
disabled: false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isTime: false,
|
||||||
|
valueTime: Number(moment()),
|
||||||
|
valueTime2: Number(moment()),
|
||||||
|
isTime2: false,
|
||||||
|
model1: {
|
||||||
|
userInfo: {
|
||||||
|
start: '',
|
||||||
|
end: '',
|
||||||
|
checkboxValue1: ['一般险情', '较大险情', '重大险情', '特别重大险情']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
params: {
|
||||||
|
pageSo: { pageSize: 10, pageNumber: 0 },
|
||||||
|
isRead: 0,
|
||||||
|
projectName: this.saerchValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submit () {
|
||||||
|
this.popupOpen = false
|
||||||
|
// 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
|
||||||
|
// this.$refs.uForm
|
||||||
|
// .validate()
|
||||||
|
// .then(res => {
|
||||||
|
// // uni.$u.toast('校验通过')
|
||||||
|
// })
|
||||||
|
// .catch(errors => {
|
||||||
|
// // uni.$u.toast('校验失败')
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
reset () {
|
||||||
|
const validateList = [
|
||||||
|
'userInfo.start',
|
||||||
|
'userInfo.end',
|
||||||
|
'userInfo.checkboxValue1'
|
||||||
|
]
|
||||||
|
this.$refs.uForm.resetFields()
|
||||||
|
this.$refs.uForm.clearValidate()
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.uForm.clearValidate(validateList)
|
||||||
|
// 或者使用 this.$refs.uForm.clearValidate()
|
||||||
|
}, 10)
|
||||||
|
|
||||||
|
this.model1 = {
|
||||||
|
userInfo: {
|
||||||
|
start: '',
|
||||||
|
end: '',
|
||||||
|
checkboxValue1: ['一般险情', '较大险情', '重大险情', '特别重大险情']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
confirm (val) {
|
||||||
|
console.log(
|
||||||
|
'点击确定按钮时触发',
|
||||||
|
val.value,
|
||||||
|
moment(val.value).format('YYYY-MM-DD HH:mm')
|
||||||
|
)
|
||||||
|
this.valueTime = Number(val)
|
||||||
|
this.model1.userInfo.start = moment(val.value).format('YYYY-MM-DD HH:mm')
|
||||||
|
this.isTime = false
|
||||||
|
},
|
||||||
|
cancel () {
|
||||||
|
console.log('取消')
|
||||||
|
this.isTime = false
|
||||||
|
},
|
||||||
|
confirm2 (val) {
|
||||||
|
console.log(
|
||||||
|
'点击确定按钮时触发',
|
||||||
|
val.value,
|
||||||
|
moment(val.value).format('YYYY-MM-DD HH:mm')
|
||||||
|
)
|
||||||
|
this.valueTime2 = Number(val)
|
||||||
|
this.model1.userInfo.end = moment(val.value).format('YYYY-MM-DD HH:mm')
|
||||||
|
this.isTime2 = false
|
||||||
|
},
|
||||||
|
cancel2 () {
|
||||||
|
console.log('取消')
|
||||||
|
this.isTime2 = false
|
||||||
|
},
|
||||||
|
checkboxChange (n) {
|
||||||
|
console.log('change', n)
|
||||||
|
// this.model1.userInfo.checkboxValue1 = e.name
|
||||||
|
},
|
||||||
|
openpop () {
|
||||||
|
this.popupOpen = true
|
||||||
|
},
|
||||||
|
myinput () {},
|
||||||
|
myconfirm () {},
|
||||||
|
clearnClick () {
|
||||||
|
console.log('打印了clearnClick', this.saerchValue)
|
||||||
|
this.saerchValue = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.container {
|
||||||
|
font-size: 14px;
|
||||||
|
background-color: #f3f5f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_info {
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
padding: 20px;
|
||||||
|
.p {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.table_Page {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
margin-top: 12rpx;
|
||||||
|
padding-bottom: 12rpx;
|
||||||
|
|
||||||
|
.info_P {
|
||||||
|
color: #a2a2a2;
|
||||||
|
font-size: 24rpx;
|
||||||
|
.info_n {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.nav_bar {
|
||||||
|
// display: flex;
|
||||||
|
// justify-content: space-between;
|
||||||
|
// align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 30px;
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
box-shadow: 0 5px 10px -8px #dfdfdf inset;
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
}
|
||||||
|
.nav_bar_tit {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search {
|
||||||
|
background-color: #fff;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
.fl {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: left;
|
||||||
|
}
|
||||||
|
.bottom {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.search_sear {
|
||||||
|
// background-color: #eee;
|
||||||
|
width: 100%;
|
||||||
|
padding: 30rpx 16rpx;
|
||||||
|
position: relative;
|
||||||
|
box-sizing: border-box;
|
||||||
|
z-index: 999;
|
||||||
|
|
||||||
|
.searchInput {
|
||||||
|
background-color: #eee;
|
||||||
|
height: 60rpx;
|
||||||
|
border-radius: 6rpx;
|
||||||
|
color: #bbb;
|
||||||
|
padding-left: 60rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-small {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 36rpx;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
}
|
||||||
|
.clear-icon {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
right: 36rpx;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
icon {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,352 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{backgroundColor: 'rgba(247, 247, 247, 1)',height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="查看"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<div class="bodyBg">
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="myHead" v-if="list.length>1">
|
||||||
|
<div class="paging">
|
||||||
|
<view
|
||||||
|
class="paging_left"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="changePage(false)"
|
||||||
|
>{{index===0?'返回':'上一条'}}</view>
|
||||||
|
<view
|
||||||
|
class="paging_right"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="changePage(true)"
|
||||||
|
>{{index===list.length-1?'返回':'下一条'}}</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="myscroll">
|
||||||
|
<div :style="{height:'10px'}"></div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>灾害发生时间:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.otime"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>严重程度:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="{'1':'一般险情','2':'较大险情','3':'重大险情','4':'特别重大险情'}[getRecord.severity]"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>灾害发生地点:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.address"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">经度:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.lgtd"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">纬度:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.lttd"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>灾情描述:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--textarea
|
||||||
|
v-model="getRecord.ddscrib"
|
||||||
|
:disabled='true'
|
||||||
|
height=300
|
||||||
|
></u--textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">伤亡人数:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.dpcount"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">失踪人数:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.mpcount"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">转移人数:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.spcount"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">损毁房屋(间):</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.chcount"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">直接经济损失(万元):</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.elose"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">过程降雨量(mm):</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.pfrain"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">其他运行情况:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--textarea
|
||||||
|
v-model="getRecord.remark"
|
||||||
|
:disabled='true'
|
||||||
|
height=300
|
||||||
|
></u--textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报人:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reporter"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报单位:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reportUnit"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">上报时间:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="getRecord.reportTime"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">附件:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<text v-if="imgList.length===0">{{getRecord.fileIds || '暂无数据'}}</text>
|
||||||
|
<u-image
|
||||||
|
:style="{marginTop:'10px'}"
|
||||||
|
v-for="item in imgList"
|
||||||
|
:src="'http://223.75.53.141:9102/test.by-lyf.tmp'+item.filePath"
|
||||||
|
width="100%"
|
||||||
|
mode="aspectFit"
|
||||||
|
@click="previewImage(0,'http://223.75.53.141:9102/test.by-lyf.tmp'+item.filePath)"
|
||||||
|
></u-image>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'20vh'}"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
record:{},
|
||||||
|
list:[],
|
||||||
|
index:0,
|
||||||
|
cs:'',
|
||||||
|
imgList:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getState()
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getRecord() {
|
||||||
|
return this.list[this.index] || {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getState() {
|
||||||
|
try{
|
||||||
|
const mtcd = this.getRecord.mtcd
|
||||||
|
console.log('mtcd',mtcd)
|
||||||
|
const res = await uni.$http.get('/gunshiApp/xfflood/iaCHsfwater/detail?mtcd='+mtcd)
|
||||||
|
this.imgList = res.data.data
|
||||||
|
console.log('res',res)
|
||||||
|
}catch(e){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changePage(flag) {
|
||||||
|
if(flag){
|
||||||
|
if(this.index===this.list.length-1){
|
||||||
|
uni.navigateBack()
|
||||||
|
}else{
|
||||||
|
this.index = this.index+1
|
||||||
|
this.getState()
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(this.index===0){
|
||||||
|
uni.navigateBack()
|
||||||
|
}else{
|
||||||
|
this.index = this.index-1
|
||||||
|
this.getState()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
previewImage(index,url) {
|
||||||
|
// 使用uni.previewImage预览图片
|
||||||
|
uni.previewImage({
|
||||||
|
current: index,
|
||||||
|
urls: [url]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(props){
|
||||||
|
const record = JSON.parse(props.obj)
|
||||||
|
this.index = record.myIndex
|
||||||
|
this.list= record.list
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bodyBg{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
margin-top: 50px;
|
||||||
|
padding-top: 10px;
|
||||||
|
width: 97%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.row{
|
||||||
|
display: flex;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.lf{
|
||||||
|
// width: 30%;
|
||||||
|
width: 8rem;
|
||||||
|
min-height: 40px;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 38px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
.rf{
|
||||||
|
// width: 70%;
|
||||||
|
flex: 1;
|
||||||
|
min-height: 40px;
|
||||||
|
line-height: 36px;
|
||||||
|
padding-right: 20px;
|
||||||
|
padding-top: 1px;
|
||||||
|
}
|
||||||
|
.paging{
|
||||||
|
position: relative;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
margin: 5px 50px 15px 50px;
|
||||||
|
display: flex;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.paging_left{
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid #dadbde;
|
||||||
|
border-right: 0;
|
||||||
|
background: rgb(245, 247, 250);
|
||||||
|
border-radius: 8px 0 0 8px;
|
||||||
|
}
|
||||||
|
.paging_right{
|
||||||
|
width: 50%;
|
||||||
|
height: 100%;
|
||||||
|
border: 1px solid #dadbde;
|
||||||
|
background: rgb(245, 247, 250);
|
||||||
|
border-radius: 0 8px 8px 0;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.myHead{
|
||||||
|
margin-bottom: 0px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.myscroll{
|
||||||
|
height: 90vh;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,320 @@
|
||||||
|
<template>
|
||||||
|
<view class="tabBody">
|
||||||
|
<div class="searchBox">
|
||||||
|
<div class="searchBox_left">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction=false
|
||||||
|
v-model="searchVal"
|
||||||
|
placeholder='请输入灾害发生地点/上报人'
|
||||||
|
height=40
|
||||||
|
>
|
||||||
|
</u-search>
|
||||||
|
</div>
|
||||||
|
<div class="searchBox_right">
|
||||||
|
<view
|
||||||
|
hover-class="is-hover"
|
||||||
|
class="searchBox_right_btn"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="myShow"
|
||||||
|
>
|
||||||
|
<u--image :src="'../../../static/images/filter.png'" width="22px" height="22px"></u--image>
|
||||||
|
</view>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="countNum"><text>共{{getSearchVal.length}}条信息</text></div>
|
||||||
|
<div v-for="(item,index) in getSearchVal" class="listItem" @click="toForm(index)">
|
||||||
|
<div>
|
||||||
|
<div class="row1"><text>{{item.address+'('+{'1':'一般险情','2':'较大险情','3':'重大险情','4':'特别重大险情'}[item.severity]+')'}}</text></div>
|
||||||
|
<div class="row2">
|
||||||
|
<div>
|
||||||
|
<text :style="{marginRight:'5px'}">{{item.reporter}}</text>
|
||||||
|
<text>{{item.reportTime}}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="icon" v-show="item.isRead===0"></div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'100px'}"></div>
|
||||||
|
</div>
|
||||||
|
<u-popup
|
||||||
|
:show="show"
|
||||||
|
mode="right"
|
||||||
|
:safeAreaInsetTop='true'
|
||||||
|
:closeOnClickOverlay='false'
|
||||||
|
@close="close"
|
||||||
|
@open="myShow">
|
||||||
|
<view :style="{padding:'10px',width:'250px'}">
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
<text class="title">按严重程度</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="col"
|
||||||
|
v-model="check1"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="1" label="一般险情" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="2" label="较大险情" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="3" label="重大险情" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="4" label="特别重大险情" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<div :style="{display:'flex',alignItems:'center'}">
|
||||||
|
<text class="title">按上报时间</text>
|
||||||
|
<u-switch v-model="isTime" size="20" :style="{margin:'2px 0 0 10px'}"></u-switch>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}" v-if="isTime">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showStmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getStmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%',lineHeight:'32px',textAlign:'center'}">至</text>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}" v-if="isTime">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showEtmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getEtmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%'}"></text>
|
||||||
|
</div>
|
||||||
|
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px',marginRight:'10px'}"
|
||||||
|
text="重置"
|
||||||
|
@click="reSet"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px'}"
|
||||||
|
color="rgba(217, 0, 27, 1)"
|
||||||
|
type="primary"
|
||||||
|
text="确定"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showStmPicker"
|
||||||
|
v-model="stm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showStmPicker = false"
|
||||||
|
@cancel="showStmPicker = false"
|
||||||
|
@close="showStmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showEtmPicker"
|
||||||
|
v-model="etm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showEtmPicker = false"
|
||||||
|
@cancel="showEtmPicker = false"
|
||||||
|
@close="showEtmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show:false,
|
||||||
|
showStmPicker:false,
|
||||||
|
showEtmPicker:false,
|
||||||
|
searchVal:'',
|
||||||
|
stm:Number(moment(new Date()).add(-7,'days')),
|
||||||
|
etm:Number(new Date()),
|
||||||
|
isTime:false,
|
||||||
|
check1:['1','2','3','4'],
|
||||||
|
list:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getStmStr() {
|
||||||
|
return moment(this.stm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getEtmStr() {
|
||||||
|
return moment(this.etm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getSearchVal() {
|
||||||
|
if(this.searchVal){
|
||||||
|
return this.list.filter(o => (o.reporter?.indexOf(this.searchVal)>-1 || o.address?.indexOf(this.searchVal)>-1))
|
||||||
|
}else{
|
||||||
|
return this.list
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
myShow() {
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
reSet() {
|
||||||
|
this.isTime = false
|
||||||
|
this.stm = Number(moment(new Date()).add(-7,'days'))
|
||||||
|
this.etm = Number(new Date())
|
||||||
|
this.check1 = ['1','2','3','4']
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
if(!moment(this.stm).isBefore(this.etm)){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "开始时间需小于结束时间",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
const params = {
|
||||||
|
severitys:this.check1.length===0?['999']:this.check1,
|
||||||
|
}
|
||||||
|
if(this.isTime){
|
||||||
|
params.timeSo = {
|
||||||
|
start:moment(this.stm).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
end:moment(this.etm).format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('params',params)
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/iaCHsfwater/queryList',params)
|
||||||
|
console.log('res',res)
|
||||||
|
this.list = res.data.data
|
||||||
|
this.close()
|
||||||
|
}catch(e){
|
||||||
|
//TODO handle the exception
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.close()
|
||||||
|
},1000)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toForm(myIndex) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/gqzq/zqxx/form?obj='+JSON.stringify({list:this.getSearchVal,myIndex:myIndex}) // 跳转到对应路径的页面
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.submit()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tabBody{
|
||||||
|
margin-top: 44px;
|
||||||
|
background-color: rgba(247, 247, 247, 1);
|
||||||
|
height: 100%;
|
||||||
|
// display: flex;
|
||||||
|
// flex-direction: column;
|
||||||
|
// align-items: center;
|
||||||
|
}
|
||||||
|
.searchBox{
|
||||||
|
height: 62px;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 5px 5px;
|
||||||
|
padding: 5px 20px;
|
||||||
|
height: calc( 100vh - 100px );
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.countNum{
|
||||||
|
width: 100%;
|
||||||
|
text-align: right;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.listItem{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
padding: 10px 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.row1{
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #333333;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
.row2{
|
||||||
|
font-size: 12px;
|
||||||
|
color: #999999;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.icon{
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
.searchBox_left{
|
||||||
|
width: 82%;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
.searchBox_right{
|
||||||
|
width: 18%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.searchBox_right_btn{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.checkItem{
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.tmPicker{
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid rgba(240, 240, 240, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
// padding-left: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="灾情信息"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<uniTable ref="childRef"></uniTable>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
import uniTable from './table.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { uniTable },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.$refs.childRef.submit();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle{
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.tabsClass{
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,113 @@
|
||||||
|
<template>
|
||||||
|
<view class="rain-detail-box">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<view class="nav-bar">
|
||||||
|
<u-icon name="arrow-left" color="#000" size="20" @click="backTo" style="margin-left:10px"></u-icon>
|
||||||
|
<view class="title">
|
||||||
|
{{stnm}}
|
||||||
|
<text style="font-size:12px;margin-left:5px">{{sta}}({{rain}})</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="tab-bar" >
|
||||||
|
<view class="jcsj" @click="activeOne = 0" :class="{'active':activeOne == 0}">
|
||||||
|
监测数据
|
||||||
|
</view>
|
||||||
|
<view class="tjsj" @click="activeOne = 1" :class="{'active':activeOne == 1}">
|
||||||
|
统计数据
|
||||||
|
</view>
|
||||||
|
<view class="spjk" @click="activeOne = 3" :class="{'active':activeOne == 3}">
|
||||||
|
视频监控
|
||||||
|
</view>
|
||||||
|
<view class="zbyq" @click="activeOne = 2" :class="{'active':activeOne == 2}">
|
||||||
|
周边雨情
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="rain-detail-content">
|
||||||
|
<Jcsj :stcd="stcd" :source="source" :grz="grz" :wrz="wrz" v-if="activeOne == 0"/>
|
||||||
|
<Tjsj :stcd="stcd" :source="source" v-else-if="activeOne == 1"/>
|
||||||
|
<Spjk :stcd="stcd" :source="source" v-else-if="activeOne == 3"/>
|
||||||
|
<Zbyq :stcd="stcd" v-else-if="activeOne == 2"/>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Jcsj from "./jcsj/jcsj.vue"
|
||||||
|
import Tjsj from "./tjsj/tjsj.vue"
|
||||||
|
import Zbyq from "./zbyq/zbyq.vue"
|
||||||
|
import Spjk from "./spjk/spjk.vue"
|
||||||
|
const staType = {
|
||||||
|
MM: '气象站',PP: '雨量站',RR: '水库水文站',ZZ: '河道水位站',ZQ:"河道水文站"
|
||||||
|
}
|
||||||
|
const rainType = {'SH':'山洪','SW':'水文','QX':'气象','SK':'水库'}
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
activeOne:0,
|
||||||
|
stcd:'',
|
||||||
|
stnm:'',
|
||||||
|
source:'',
|
||||||
|
wrz:'',
|
||||||
|
grz:''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
Jcsj,
|
||||||
|
Tjsj,
|
||||||
|
Zbyq,
|
||||||
|
Spjk,
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
backTo(){
|
||||||
|
uni.navigateBack({delta:1})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.stcd = option.stcd;
|
||||||
|
this.stnm = option.stnm;
|
||||||
|
this.source = option.source;
|
||||||
|
this.grz = option.grz;
|
||||||
|
this.wrz = option.wrz;
|
||||||
|
this.sta = staType[option.sttp];
|
||||||
|
this.rain = rainType[option.source];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.rain-detail-box{
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
.nav-bar{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 44px;
|
||||||
|
// margin-top: 30px;
|
||||||
|
// padding-top: 20px;
|
||||||
|
// padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
// box-shadow: 0 5px 10px -8px #dfdfdf inset;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
flex:1;
|
||||||
|
text-align: center;
|
||||||
|
margin-right: 18px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.tab-bar{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 10px 30px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
color: #39a6ff;
|
||||||
|
}
|
||||||
|
.rain-detail-content{
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,242 @@
|
||||||
|
|
||||||
|
import echarts from 'echarts/lib/echarts';
|
||||||
|
|
||||||
|
export default function DrpOption(data=[],wrz,grz) {
|
||||||
|
const maxVal = Math.max(...data.map(obj => obj.drp))
|
||||||
|
const maxSw = Math.max(...data.map(obj => obj.z))
|
||||||
|
const minSw = Math.min(...data.map(obj => obj.z))
|
||||||
|
const maxLl = Math.max(...data.map(obj => obj.tq))
|
||||||
|
const minLl = Math.min(...data.map(obj => obj.tq))
|
||||||
|
console.log("maxLl",wrz,grz);
|
||||||
|
let eopts = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
},
|
||||||
|
grid: [
|
||||||
|
{
|
||||||
|
top: "13%",
|
||||||
|
left: "10%",
|
||||||
|
right: "8%",
|
||||||
|
width: '80%',
|
||||||
|
height: '35%'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
bottom: "5%",
|
||||||
|
left: "10%",
|
||||||
|
right: "8%",
|
||||||
|
width: '80%',
|
||||||
|
height: '35%'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
legend: {
|
||||||
|
// 显示图例
|
||||||
|
show: true,
|
||||||
|
// 图例的位置
|
||||||
|
data: ['警戒水位', '危险水位', "降雨量", "水位", "转换流量"],
|
||||||
|
left:3,
|
||||||
|
right:0,
|
||||||
|
itemWidth:16,
|
||||||
|
},
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
gridIndex: 0,
|
||||||
|
type: 'category',
|
||||||
|
data: data.map(o => o.tm).reverse(),
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
show:false,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.5,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
gridIndex: 1,
|
||||||
|
type: 'category',
|
||||||
|
data: data.map(o => o.tm.substr("2020-".length,11)),
|
||||||
|
inverse: true,
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
formatter: val => val.substr('2020-'.length, 11)
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.5,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
inverse: true,
|
||||||
|
gridIndex: 0,
|
||||||
|
type: 'value',
|
||||||
|
position: 'left',
|
||||||
|
name: "降雨量(mm)",
|
||||||
|
nameLocation: "start",
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dotted'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
min: 0,
|
||||||
|
max: maxVal
|
||||||
|
},
|
||||||
|
{
|
||||||
|
gridIndex: 1,
|
||||||
|
type: 'value',
|
||||||
|
position: 'left',
|
||||||
|
name: "水位(m)",
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dotted'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
min: minSw,
|
||||||
|
max: maxSw
|
||||||
|
},
|
||||||
|
{
|
||||||
|
gridIndex: 1,
|
||||||
|
type: 'value',
|
||||||
|
position: 'right',
|
||||||
|
name: "流量(m³/s)",
|
||||||
|
splitLine: {
|
||||||
|
show: false,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dotted'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
min: minLl,
|
||||||
|
max: maxLl
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
let chartData = {
|
||||||
|
series: [
|
||||||
|
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 1,
|
||||||
|
name: '危险水位',
|
||||||
|
type: 'line',
|
||||||
|
color: "#D9001B",
|
||||||
|
lineStyle: {
|
||||||
|
type: "dashed"
|
||||||
|
},
|
||||||
|
data: data.map(o => grz),
|
||||||
|
symbol: 'none' // 设置标记点为'none',即去掉圆点
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 1,
|
||||||
|
name: '警戒水位',
|
||||||
|
type: 'line',
|
||||||
|
color: "#F59A23",
|
||||||
|
barWidth: '60%',
|
||||||
|
data: data.map(o => wrz),
|
||||||
|
lineStyle: {
|
||||||
|
type: "dashed"
|
||||||
|
},
|
||||||
|
symbol: 'none' // 设置标记点为'none',即去掉圆点
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '降雨量',
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: '60%',
|
||||||
|
data: data.map(o => o.drp).reverse(),
|
||||||
|
itemStyle: {
|
||||||
|
color: "#007AFD",
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 1,
|
||||||
|
name: '水位',
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
color: "#0AE0B5",
|
||||||
|
label: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
data: data.map(o => o.z ? o.z.toFixed(2) : null),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 2,
|
||||||
|
name: '转换流量',
|
||||||
|
type: 'line',
|
||||||
|
color: "#007AFD",
|
||||||
|
symbol: 'none',
|
||||||
|
showSymbol: false,
|
||||||
|
label: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
data: data.map(o => o.tq),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
eopts,
|
||||||
|
chartData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,151 @@
|
||||||
|
<template>
|
||||||
|
<view class="jcsj-box">
|
||||||
|
<view class="time-ranger">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{stm}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{etm}}</text>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <uni-datetime-picker type="datetimerange" v-model="tm" @change="handleRanger"></uni-datetime-picker>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view> -->
|
||||||
|
</view>
|
||||||
|
<!-- <view class="" style="width: 100%; height: 3px; background-color: #dfdfdf; margin-bottom: 2px;">
|
||||||
|
|
||||||
|
" </view> -->
|
||||||
|
<view style="text-align: right; margin-bottom: -15px;">
|
||||||
|
<text :class="{'active':selactOne == 0}" @click="selactOne = 0" style="display: inline-block; padding: 2px 20px; text-align: center; border: 1px solid #dfdfdf;">图</text>
|
||||||
|
<text :class="{'active':selactOne == 1}" @click="selactOne = 1" style="display: inline-block; padding: 2px 20px; text-align: center; border: 1px solid #dfdfdf;">表</text>
|
||||||
|
</view>
|
||||||
|
<view class="jcsj-content">
|
||||||
|
<view class="jcsj-charts" v-if="selactOne == 0">
|
||||||
|
<qiun-data-charts :chartData="chartData.chartData" :echartsApp="true" :eopts="chartData.eopts" />
|
||||||
|
</view>
|
||||||
|
<view style="margin-top: 20px;" v-if="selactOne == 1">
|
||||||
|
<JcsjTable :tableData="tableData" />
|
||||||
|
</view>
|
||||||
|
<view style="height:300px" v-if="selactOne == 0"></view>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showTime"
|
||||||
|
v-model="startTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="handleStartTime"
|
||||||
|
@cancel="showTime=false"
|
||||||
|
></u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showTime1"
|
||||||
|
v-model="endTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="handleEndTime"
|
||||||
|
@cancel="showTime1=false"
|
||||||
|
></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
import JcsjTable from "./jcsjTable"
|
||||||
|
import drpOption from "./chartOption.js"
|
||||||
|
const stm = moment().subtract(7, 'days').add(1, 'hour').set({minute: 0, second: 0}).format("YYYY-MM-DD HH:mm");
|
||||||
|
const etm = moment().add(1, 'hour').set({minute: 0, second: 0}).format("YYYY-MM-DD HH:mm");
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
source:String,
|
||||||
|
wrz:String,
|
||||||
|
grz:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
startTime:stm,
|
||||||
|
endTime:etm,
|
||||||
|
stm,
|
||||||
|
etm,
|
||||||
|
showTime:false,
|
||||||
|
showTime1:false,
|
||||||
|
tableData:[],
|
||||||
|
chartData: {},
|
||||||
|
rainChartData:[],
|
||||||
|
selactOne:0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
JcsjTable
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
rainChartData(newV, oldV){
|
||||||
|
this.chartData = {...drpOption(newV,this.wrz,this.grz)}
|
||||||
|
this.tableData = [...newV]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleStartTime(e){
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.stm = time
|
||||||
|
this.showTime = false
|
||||||
|
},
|
||||||
|
handleEndTime(e){
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.etm = time;
|
||||||
|
this.showTime1 = false
|
||||||
|
},
|
||||||
|
handleRanger(e){
|
||||||
|
console.log(e);
|
||||||
|
this.tm = [...e]
|
||||||
|
},
|
||||||
|
// 搜索
|
||||||
|
async getJcsjData(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/river/water/monitor/data",
|
||||||
|
{
|
||||||
|
stcd:this.stcd,
|
||||||
|
stm:moment(this.stm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
etm:moment(this.etm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
source:this.source
|
||||||
|
})
|
||||||
|
if(data.code == 200){
|
||||||
|
this.rainChartData = [...data.data];
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 搜索
|
||||||
|
searchHandle(){
|
||||||
|
this.getJcsjData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getJcsjData();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.jcsj-box{
|
||||||
|
.jcsj-content{
|
||||||
|
max-height:100vh;
|
||||||
|
overflow-y:auto
|
||||||
|
}
|
||||||
|
.jcsj-charts{
|
||||||
|
width:100%;
|
||||||
|
height: 500px;
|
||||||
|
margin-top: 20px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
border-color: #68bbff !important;
|
||||||
|
color: #68bbff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,110 @@
|
||||||
|
<template>
|
||||||
|
<div class="table_div">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 40px;">
|
||||||
|
序号
|
||||||
|
</th>
|
||||||
|
<th style="width: 80px">时间</th>
|
||||||
|
<th style="width: 80px;">
|
||||||
|
雨量(mm)
|
||||||
|
</th>
|
||||||
|
<th style="width: 90px;">
|
||||||
|
水位(m)
|
||||||
|
</th>
|
||||||
|
<th style="width: 80px; position: relative;">
|
||||||
|
<view>
|
||||||
|
转换流量<br>
|
||||||
|
<text style="position: absolute; bottom:-10px; left: 20px;">(m³/s)</text>
|
||||||
|
</view>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 480px; overflow-y: auto" -->
|
||||||
|
<div class="scroll-table">
|
||||||
|
<tr v-for="(item, index) in newList" :key="index">
|
||||||
|
<td style="width: 30px">{{ index + 1 }}</td>
|
||||||
|
<td style="width: 80px;">{{ item.tm }}</td>
|
||||||
|
<td style="width: 80px">{{ item.drp }}</td>
|
||||||
|
<td style="width: 100px">{{ item.z ? item.z.toFixed(2) : "-" }}</td>
|
||||||
|
<td style="width: 80px">{{ item.tq ? item.tq : "-" }}</td>
|
||||||
|
</tr>
|
||||||
|
<div style="height:180px"></div>
|
||||||
|
</div>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
tableData:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
newList(){
|
||||||
|
if(this.tableData.length){
|
||||||
|
return this.tableData.map(item => ({...item,tm:moment(item.tm).format("MM-DD HH:mm")}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
max-height: calc(100vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(100vh - 180px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
line-height: 75rpx;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
height: 85rpx;
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
// font-weight: bold;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 65rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,127 @@
|
||||||
|
<template>
|
||||||
|
<view class="spjk-box">
|
||||||
|
<view class="select-bar">
|
||||||
|
<uni-data-select
|
||||||
|
v-model="value"
|
||||||
|
:localdata="list"
|
||||||
|
@change="change"
|
||||||
|
:clear="false"
|
||||||
|
>
|
||||||
|
</uni-data-select>
|
||||||
|
</view>
|
||||||
|
<view class="video-box" v-if="this.list.length">
|
||||||
|
<!-- <web-view :src="webURL" style="height: 400px;"></web-view> -->
|
||||||
|
<iframe :src="webURL" :class="{'normal': show == 0,'active': show == 1}" frameborder="0" ref="videoFrame" :allowfullscreen="true"></iframe>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default{
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
source:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: "",
|
||||||
|
list:[],
|
||||||
|
webURL:'',
|
||||||
|
show:0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
receiveRenderData(e){
|
||||||
|
this.show = e.data
|
||||||
|
},
|
||||||
|
async getList(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.get(
|
||||||
|
`/gunshiApp/xfflood/stbprp/cctv/listByStcd/${this.stcd}`)
|
||||||
|
if(data.code == 200){
|
||||||
|
let newData;
|
||||||
|
console.log("23",data.data);
|
||||||
|
if(data.data.length > 0){
|
||||||
|
newData = data.data.map(item => ({...item,value:item.camId,text:item.name}))
|
||||||
|
this.list = [...newData];
|
||||||
|
this.value = newData[0].value
|
||||||
|
this.getVideoSrc(newData[0].camId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getVideoSrc(id){
|
||||||
|
console.log(id);
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.get(
|
||||||
|
`/gunshiApp/xfflood/xfCctvB/preview/${id}`)
|
||||||
|
if(data.code == 200){
|
||||||
|
this.webURL="./static/h5Player/webplayer.html?cameraIndexCode="+id+"&cameraUrl="+data.data
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
change(e) {
|
||||||
|
console.log("e:", e);
|
||||||
|
this.getVideoSrc(e)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
// this.creatFlvElement()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script module="renderModal" lang="renderjs">
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dom: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.dom = document.getElementById('iframe')
|
||||||
|
// 接收iframe传过来的值
|
||||||
|
window.addEventListener('message', (e)=> {
|
||||||
|
var data = e.data;
|
||||||
|
this.emitData(data)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
emitData(e) {
|
||||||
|
this.$ownerInstance.callMethod('receiveRenderData',e)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.spjk-box{
|
||||||
|
.select-bar{
|
||||||
|
margin: 10px 15px;
|
||||||
|
}
|
||||||
|
.video-box{
|
||||||
|
|
||||||
|
.normal{
|
||||||
|
position: absolute;
|
||||||
|
// width: 370px;
|
||||||
|
// height: 300px;
|
||||||
|
top: 170px;
|
||||||
|
left: 0;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
position: absolute;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
top: -30px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,161 @@
|
||||||
|
<template>
|
||||||
|
<view class="tjsj-box">
|
||||||
|
<uni-row class="tjsj-row" :width="700">
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近1h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h1||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近3h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h3||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近6h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h6||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近12h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h12||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近24h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h24||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近48h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h48||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">今日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.today||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">昨日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yesterdayDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本月雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.monthDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本年雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yearDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本年降雨天数</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yearDrpDay||0}}/{{days}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row" >本年最大日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row" style="display: flex; justify-content: center;">
|
||||||
|
<text>{{tableData.maxDrp||0}}</text>
|
||||||
|
<text style="color: #E69224;">({{maxDrpTime}})</text>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">24h水位变幅(m)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.rzDiff > 0 ? "+" :"" }}{{tableData.rzDiff?tableData.rzDiff.toFixed(2) : 0}}</view>
|
||||||
|
</uni-col> <uni-col :span="12">
|
||||||
|
<view class="first-row" style="border-bottom: 1px solid #dfdfdf;">本年最高水位(m)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row" style="border-bottom: 1px solid #dfdfdf;">{{tableData.maxRz ? tableData.maxRz.toFixed(2) :0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
<view style="height:150px"></view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
source:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData:{},
|
||||||
|
days:moment().diff(moment().startOf('year'),'days')+1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
maxDrpTime(){
|
||||||
|
if(this.tableData.maxDrpTime){
|
||||||
|
return moment(this.tableData.maxDrpTime).format("YYYY-MM-DD")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getTableData(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
`/gunshiApp/xfflood/river/water/detail`,{
|
||||||
|
source:this.source,
|
||||||
|
stcd:this.stcd,
|
||||||
|
type:1
|
||||||
|
}
|
||||||
|
)
|
||||||
|
if(data.code == 200){
|
||||||
|
this.tableData = {...data.data};
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getTableData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tjsj-box{
|
||||||
|
max-height: 100vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
.tjsj-row{
|
||||||
|
.first-row{
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid #dfdfdf;
|
||||||
|
border-left: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
.second-row{
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid #dfdfdf;
|
||||||
|
border-left: 1px solid #dfdfdf;
|
||||||
|
border-right: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
<template>
|
||||||
|
<view class="list-box">
|
||||||
|
<uni-row class="list-row" >
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row" style="margin-left: 10px;">
|
||||||
|
<text style="display: inline-block; margin-bottom: 10px; font-weight: bold;">{{info.stnm}}</text>
|
||||||
|
<view>
|
||||||
|
<text style="margin-right: 60px; color: #aaaaaa;">{{sttype[info.source]}}</text>
|
||||||
|
<text style="color: #aaaaaa;">{{info.distance ? info.distance.toFixed(2) : 0}}km</text>
|
||||||
|
</view>
|
||||||
|
<text style="color: #aaaaaa;">{{info.tm}}</text>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12" >
|
||||||
|
<view class="second-row" style="border: 1px solid #dfdfdf; font-size: 12px;border-bottom: 1px solid #dfdfdf;">
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex:0.5; background-color: #e1f3ff; border-right: 1px solid #dfdfdf; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
1h(mm)
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; background-color: #e1f3ff;text-align: center; border-bottom:1px solid #dfdfdf" >
|
||||||
|
3h(mm)
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex: 0.5; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
{{info.h1}}
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
{{info.h3}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex:0.5; background-color: #e1f3ff; border-right: 1px solid #dfdfdf; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
6h(mm)
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; background-color: #e1f3ff;text-align: center; border-bottom:1px solid #dfdfdf" >
|
||||||
|
24h(mm)
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex: 0.5; text-align: center; border-right: 1px solid #dfdfdf;">
|
||||||
|
{{info.h6}}
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; text-align: center; ">
|
||||||
|
{{info.h24}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
info:Object,
|
||||||
|
default:{}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sttype: {
|
||||||
|
"SH": '山洪',
|
||||||
|
"SW": '水文',
|
||||||
|
"QX": '气象',
|
||||||
|
"SK": '水库',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.list-box{
|
||||||
|
.list-row{
|
||||||
|
padding-bottom: 3px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
.second-row{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,166 @@
|
||||||
|
<template>
|
||||||
|
<view class="zbyq-box">
|
||||||
|
<view class="search-bar">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction="false"
|
||||||
|
placeholder="请输入站点"
|
||||||
|
height="40px"
|
||||||
|
@change="inputChange"
|
||||||
|
v-model="formData.value"
|
||||||
|
></u-search>
|
||||||
|
<image
|
||||||
|
src="../../../static/images/filter.png"
|
||||||
|
style="width: 20px; height: 20px; margin-right: 10px; margin-left: 10px;"
|
||||||
|
@click="popupOpen = true"
|
||||||
|
>
|
||||||
|
</image>
|
||||||
|
</view>
|
||||||
|
<view class="content">
|
||||||
|
<view v-for="(item,index) in list" :key="index" style="margin-bottom: 5px;">
|
||||||
|
<ResList :info="item" />
|
||||||
|
</view>
|
||||||
|
<view style="height:300px"></view>
|
||||||
|
</view>
|
||||||
|
<u-popup :show="popupOpen" mode="right" @close="popupOpen=false" >
|
||||||
|
<view style="padding: 30px 20px;">
|
||||||
|
<text style="font-weight: bold;">按类型</text>
|
||||||
|
<view style="margin-bottom: 10px; margin-left: -5px;">
|
||||||
|
<u-checkbox-group
|
||||||
|
v-model="formData.sources"
|
||||||
|
@change="checkboxChange"
|
||||||
|
>
|
||||||
|
<u-checkbox
|
||||||
|
:customStyle="{margin: '7px'}"
|
||||||
|
v-for="(item, index) in checkboxList1"
|
||||||
|
:key="index"
|
||||||
|
:label="item.name"
|
||||||
|
:name="item.value"
|
||||||
|
>
|
||||||
|
</u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
</view>
|
||||||
|
<text style="font-weight: bold; margin-bottom: 5px;">按距离</text>
|
||||||
|
<view style="display: flex; align-items: center;">
|
||||||
|
<u--input
|
||||||
|
placeholder="请输入"
|
||||||
|
border="surround"
|
||||||
|
type="number"
|
||||||
|
v-model="formData.distance"
|
||||||
|
style="width: 50%; margin-top: 5px; margin-right: 10px;"
|
||||||
|
></u--input>
|
||||||
|
<text>(km)</text>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex; position:absolute;bottom:20px;right:20px">
|
||||||
|
<u-button text="重置" class="bottom-btn1"
|
||||||
|
@click="formData = {...formData,sources,distance:1}"></u-button>
|
||||||
|
<u-button text="确认" color="#d9001b" class="bottom-btn2" @click="popConfirm"></u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ResList from "./resList.vue"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
popupOpen:false,
|
||||||
|
sources:["SH","SW","QX","SK"],
|
||||||
|
checkboxList1: [{
|
||||||
|
name: '山洪',
|
||||||
|
value: "SH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水文',
|
||||||
|
value: "SW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '气象',
|
||||||
|
value: "QX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水库',
|
||||||
|
value: "SK"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
formData:{
|
||||||
|
value:'',
|
||||||
|
sources:["SH","SW","QX","SK"],
|
||||||
|
distance:1,
|
||||||
|
stcd:this.stcd
|
||||||
|
},
|
||||||
|
list:[], //搜索结果
|
||||||
|
saveList:[] //保存搜索结果
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
ResList
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
inputChange(e){
|
||||||
|
console.log("e",e);
|
||||||
|
if(!e) this.list = this.saveList;
|
||||||
|
this.formData={...this.formData,value:e}
|
||||||
|
let filterData = this.list.filter(item => item.stnm.indexOf(e) > -1);
|
||||||
|
this.list = filterData;
|
||||||
|
},
|
||||||
|
checkboxChange(n) {
|
||||||
|
console.log('change', n);
|
||||||
|
this.formData = {...this.formData,sources:n};
|
||||||
|
},
|
||||||
|
popConfirm(){
|
||||||
|
this.popupOpen = false
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
async getList(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/attResBase/rainBasinDivision/queryNearbyRainStations",{...this.formData}
|
||||||
|
)
|
||||||
|
console.log("data",data);
|
||||||
|
if(data.code == 200){
|
||||||
|
this.list = [...data.data]
|
||||||
|
this.saveList = [...data.data]
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.zbyq-box{
|
||||||
|
.search-bar{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.content{
|
||||||
|
margin-top: 10px;
|
||||||
|
max-height: 100vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-btn1{
|
||||||
|
width: 100px;
|
||||||
|
margin-left: 70px;
|
||||||
|
}
|
||||||
|
.bottom-btn2{
|
||||||
|
width: 100px;
|
||||||
|
margin-right: -12px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,100 @@
|
||||||
|
|
||||||
|
import echarts from 'echarts/lib/echarts';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
|
export default function DrpOption(data=[]) {
|
||||||
|
const maxY = Math.max(...data.map(item => item.sumDrp))
|
||||||
|
let eopts = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
x: 18,
|
||||||
|
y: 24,
|
||||||
|
x2: 28,
|
||||||
|
y2: 36,
|
||||||
|
borderWidth: 0,
|
||||||
|
bottom: '10%',
|
||||||
|
left: '8%',
|
||||||
|
width: '90%',
|
||||||
|
},
|
||||||
|
calculable: true,
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
data: data.map(o => moment(o.time).format("HH:mm")),
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#bbb',
|
||||||
|
fontSize: 14,
|
||||||
|
overflow: 'truncate',
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#dfdfdf',
|
||||||
|
width: 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
position: 'left',
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dashed'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#bbb',
|
||||||
|
fontSize: 10,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
min: 0,
|
||||||
|
max:maxY
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// dataZoom: [
|
||||||
|
// {
|
||||||
|
// type: 'slider', // 设置为滑动条类型
|
||||||
|
// xAxisIndex: 0, // 指定控制第一个 x 轴
|
||||||
|
// start: 0, // 初始窗口的起始位置(百分比)
|
||||||
|
// end: 100, // 初始窗口的结束位置(百分比)
|
||||||
|
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
}
|
||||||
|
let chartData = {
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '面雨量(mm)',
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: '60%',
|
||||||
|
data: data.map(o => o.sumDrp),
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#6395f9"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
eopts,
|
||||||
|
chartData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,424 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<!-- 个人信息 -->
|
||||||
|
<view class="info">
|
||||||
|
<div class="left">
|
||||||
|
<div class="icon">
|
||||||
|
<image style="width: 100%; height: 100%; border-radius: 50%" :src="default_src" mode="aspectFill">
|
||||||
|
</image>
|
||||||
|
</div>
|
||||||
|
<div class="info_name">
|
||||||
|
<div v-if="userList.userName">{{ userList.nickName }}</div>
|
||||||
|
<div v-if="userList.dept">
|
||||||
|
{{ userList.dept.deptName || '' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<u-icon name="bell-fill" size="30" color="#fff" @click="todetailmessgae()">
|
||||||
|
|
||||||
|
</u-icon>
|
||||||
|
<u-badge bgColor=" #de2433" :offset='[25,20]' :value="messagelist.length" :absolute='true'></u-badge>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<!-- nav -->
|
||||||
|
<view class="navBar" style="display: flex;flex-wrap: wrap;">
|
||||||
|
<div class="navList" v-for="(item, index) in getNavList" :key="index">
|
||||||
|
<div @click="myNavigateTo(item.url,item.value)"
|
||||||
|
style="display:flex;flex-direction: column;align-items: center;">
|
||||||
|
<div class="navIcon">
|
||||||
|
<image style="width: 100%; height: 100%" :src="item.icon" mode="aspectFit"></image>
|
||||||
|
<div class="readStatus" v-show="
|
||||||
|
(warnStatus && item.key == 2)
|
||||||
|
"></div>
|
||||||
|
</div>
|
||||||
|
<div class="navTxt">{{ item.value }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<view class="warn">
|
||||||
|
<sk-info />
|
||||||
|
</view>
|
||||||
|
<view class="warn1" v-for="item in Ylzlist" :key="item.stnm">
|
||||||
|
<ylz-list :item='item' />
|
||||||
|
</view>
|
||||||
|
<view class="warn1" v-for="item in swzList" :key="item.stcd">
|
||||||
|
<SwzList :item='item'/>
|
||||||
|
</view>
|
||||||
|
<view class="info_24"
|
||||||
|
:style="{display:'flex',justifyContent:'center',alignItems:'center',padding:'5px 0',margin:'0'}">
|
||||||
|
<image :style="{width:'20px',height:'20px',marginRight:'10px'}" src="../../static/logoc.png"></image>
|
||||||
|
<div>技术支持: 湖北鲧石物联科技有限公司</div>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
const warnStm = moment().subtract(1, "days").format("YYYY-MM-DD HH:mm:ss")
|
||||||
|
const warnetm = moment().format("YYYY-MM-DD HH:mm:ss")
|
||||||
|
import SkInfo from '../skInfo/index.vue'
|
||||||
|
import YlzList from '../ylzList/index.vue'
|
||||||
|
import SwzList from "../sws/index.vue"
|
||||||
|
let timer = null;
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
SkInfo,
|
||||||
|
YlzList,
|
||||||
|
SwzList
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
Ylzlist: [],
|
||||||
|
userList: uni.getStorageSync('value'),
|
||||||
|
default_src: uni.getStorageSync('avatar'),
|
||||||
|
messagelist: [],
|
||||||
|
ylzList: [],
|
||||||
|
swzList:[],
|
||||||
|
warnStatus: false, //预警
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onPullDownRefresh() {
|
||||||
|
this.getYjData();
|
||||||
|
uni.$showMsg("刷新成功");
|
||||||
|
setTimeout(function () {
|
||||||
|
uni.stopPullDownRefresh();
|
||||||
|
}, 1000);
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getNavList() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
value: '综合监视',
|
||||||
|
key: 1,
|
||||||
|
icon: '../../static/tabs/zhjs.png',
|
||||||
|
url: '/pages/zhjs/index'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '预警',
|
||||||
|
key: 2,
|
||||||
|
icon: '../../static/tabs/yujing_icon@2x2.png',
|
||||||
|
url: '/pages/yj/index'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '视频监控',
|
||||||
|
key: 3,
|
||||||
|
icon: '../../static/tabs/spjk.png',
|
||||||
|
url: '/pages/spjk/index'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '安全监测',
|
||||||
|
key: 4,
|
||||||
|
icon: '../../static/tabs/aqjc.png',
|
||||||
|
url: '/pages/aqjc/index'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getYlzList() {
|
||||||
|
uni.$http.post('/gunshiApp/tsg/stPptnRReal/list').then(res => {
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
this.Ylzlist = res.data.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
uni.$http.post('/gunshiApp/tsg/messageCenter/list', {
|
||||||
|
start: '',
|
||||||
|
end: ''
|
||||||
|
}).then(res => {
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
this.messagelist = res.data.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getSwList(){
|
||||||
|
uni.$http.post('/gunshiApp/tsg/reservoir/water/list').then(res=>{
|
||||||
|
this.swzList=res.data.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
todetailmessgae() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/messageList/index'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
async setInsert(menu2) {
|
||||||
|
try {
|
||||||
|
const params = {
|
||||||
|
createId: uni.getStorageSync('value').userId,
|
||||||
|
loginType: 1,
|
||||||
|
menu1: '首页',
|
||||||
|
menu2: menu2 || '首页',
|
||||||
|
}
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post('/gunshiApp/tsg/visitMenuLog/insert', params)
|
||||||
|
} catch (error) {}
|
||||||
|
},
|
||||||
|
myNavigateTo(url, menu2) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: url // 跳转到对应路径的页面
|
||||||
|
})
|
||||||
|
this.setInsert(menu2)
|
||||||
|
},
|
||||||
|
// 预警
|
||||||
|
async getYjData() {
|
||||||
|
const params = {
|
||||||
|
start: warnStm,
|
||||||
|
end: warnetm
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.post("/gunshiApp/tsg/stQxWarnR/home/warn", params)
|
||||||
|
const {
|
||||||
|
flowWarn,
|
||||||
|
pressWarn,
|
||||||
|
qxWarn,
|
||||||
|
shiftWarn
|
||||||
|
} = res.data.data
|
||||||
|
const arr = [...flowWarn, ...pressWarn, ...qxWarn, ...shiftWarn]
|
||||||
|
if (arr.length > 0) {
|
||||||
|
this.warnStatus = true
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
onLoad() {
|
||||||
|
this.getYlzList();
|
||||||
|
},
|
||||||
|
|
||||||
|
onShow() {
|
||||||
|
var that = this;
|
||||||
|
that.getList();
|
||||||
|
timer = setInterval(function () {
|
||||||
|
that.getList();
|
||||||
|
}, 10000);
|
||||||
|
|
||||||
|
this.setInsert()
|
||||||
|
this.getYjData();
|
||||||
|
this.getSwList()
|
||||||
|
},
|
||||||
|
onHide() {
|
||||||
|
clearInterval(timer)
|
||||||
|
timer = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.container {
|
||||||
|
position: relative;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 24px;
|
||||||
|
background-color: #f3f5f8;
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
height: 100rpx;
|
||||||
|
background-color: #007afd;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 20px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
color: #007afd;
|
||||||
|
line-height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info_name {
|
||||||
|
margin-left: 16rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navBar {
|
||||||
|
padding: 13px;
|
||||||
|
padding-bottom: 0;
|
||||||
|
/* text-align: center; */
|
||||||
|
display: flex;
|
||||||
|
background-color: #fff;
|
||||||
|
// justify-content: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navList {
|
||||||
|
text-align: center;
|
||||||
|
margin-right: 0px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navIcon {
|
||||||
|
position: relative;
|
||||||
|
width: 82px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.readStatus {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 17px;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #de2433;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warn {
|
||||||
|
padding: 18rpx 20rpx;
|
||||||
|
text-align: left;
|
||||||
|
margin-bottom: 12rpx;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warn1 {
|
||||||
|
padding: 18rpx 20rpx;
|
||||||
|
text-align: left;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info_24 {
|
||||||
|
width: 100%;
|
||||||
|
// position: fixed;
|
||||||
|
// padding: 15px;
|
||||||
|
background-color: #fff;
|
||||||
|
// margin-bottom: 12rpx;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title .line {
|
||||||
|
border: 2px solid #3380ff;
|
||||||
|
border-radius: 3rpx;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title .h4 {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #121b3d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #a2a2a2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.g1 {
|
||||||
|
color: #545556;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ye {
|
||||||
|
color: #ff1717;
|
||||||
|
/* font-weight: 600; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.b1 {
|
||||||
|
color: #3380ff;
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-group {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格 */
|
||||||
|
.tableBox {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftTab {
|
||||||
|
width: 80px;
|
||||||
|
/* border-bottom: 1px solid #ccc; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.rightTab {
|
||||||
|
width: 80px;
|
||||||
|
/* border: 1px solid #ccc;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
border-left: 0; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.activetextTypeTab,
|
||||||
|
.activetextTypeTab:hover {
|
||||||
|
border-bottom: 3rpx solid #2286f6;
|
||||||
|
color: #026be0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_div {
|
||||||
|
widows: 100%;
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
max-height: calc(100vh - 24px);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 30px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
line-height: 56rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur th {
|
||||||
|
height: 56rpx;
|
||||||
|
color: #2f4056;
|
||||||
|
background: #f5f6f8;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 56rpx;
|
||||||
|
border-bottom: 1px solid #e5e9f2;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*table样式 end*/
|
||||||
|
.noData {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,231 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<div class="img">
|
||||||
|
<image style="width: 100%; height: 100%" src="../../static/images/bg_img.png" mode="scaleToFill"></image>
|
||||||
|
</div>
|
||||||
|
<view class="user-title">
|
||||||
|
<text class="sub">用户登录</text>
|
||||||
|
<text class="line"></text>
|
||||||
|
</view>
|
||||||
|
<uni-forms :modelValue="formData" class="form">
|
||||||
|
<uni-forms-item>
|
||||||
|
<uni-easyinput type="text" v-model="formData.username" placeholder="请输入用户名" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item>
|
||||||
|
<uni-easyinput type="password" v-model="formData.password" placeholder="请输入密码" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item>
|
||||||
|
<checkbox :checked="formData.checked" @click="handleChange(formData)" /><text>记住用户名和密码</text>
|
||||||
|
</uni-forms-item>
|
||||||
|
<button type="primary" class="button" @click="login(formData)">
|
||||||
|
登录
|
||||||
|
</button>
|
||||||
|
</uni-forms>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import CryptoJS from 'crypto-js'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {
|
||||||
|
username: '',
|
||||||
|
password: '',
|
||||||
|
checked: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
if (uni.getStorageSync('loginChecked') === true) {
|
||||||
|
this.formData = {
|
||||||
|
username: uni.getStorageSync('username'),
|
||||||
|
password: uni.getStorageSync('password'),
|
||||||
|
checked: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 更新版本
|
||||||
|
init() {
|
||||||
|
this.checkVersion();
|
||||||
|
},
|
||||||
|
// 检查版本更新情况
|
||||||
|
async checkVersion() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.get("/gunshiApp/tsg/appVersionRecord/latest");
|
||||||
|
if (data.code == 200) {
|
||||||
|
const selfVersionCode = uni.getSystemInfoSync().appWgtVersion //当前App版本号
|
||||||
|
const newVersionCode = data.data.version; //线上最新版本号
|
||||||
|
if (selfVersionCode != newVersionCode) {
|
||||||
|
let platform = uni.getSystemInfoSync().platform //手机平台
|
||||||
|
//安卓手机弹窗升级
|
||||||
|
if (platform === 'android') {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/upgrade/index?info=${encodeURIComponent(JSON.stringify(data.data))}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//IOS无法在线升级提示到商店下载
|
||||||
|
else {
|
||||||
|
uni.showModal({
|
||||||
|
title: '发现新版本 ' + 'V' + newVersionCode,
|
||||||
|
content: '请到App store进行升级',
|
||||||
|
showCancel: false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
handleChange(formData) {
|
||||||
|
formData.checked = !formData.checked
|
||||||
|
},
|
||||||
|
login(formData) {
|
||||||
|
//loading
|
||||||
|
uni.showLoading({
|
||||||
|
title: '努力登录中...',
|
||||||
|
mask: true
|
||||||
|
});
|
||||||
|
|
||||||
|
//MD5加密
|
||||||
|
const encryptData = data => {
|
||||||
|
const encryptedData = CryptoJS.MD5(data).toString()
|
||||||
|
return encryptedData
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建提交表单
|
||||||
|
let postForm = {
|
||||||
|
username: formData.username,
|
||||||
|
password: formData.password
|
||||||
|
}
|
||||||
|
|
||||||
|
//记住密码功能
|
||||||
|
if (formData.checked === true) {
|
||||||
|
uni.setStorageSync('loginChecked', true)
|
||||||
|
uni.setStorageSync('username', postForm.username)
|
||||||
|
uni.setStorageSync('password', formData.password)
|
||||||
|
uni.setStorageSync('secretKey', postForm.secretKey)
|
||||||
|
} else {
|
||||||
|
uni.setStorageSync('loginChecked', false)
|
||||||
|
uni.removeStorageSync('username')
|
||||||
|
uni.removeStorageSync('secretKey')
|
||||||
|
uni.removeStorageSync('password')
|
||||||
|
this.formData.username = ''
|
||||||
|
this.formData.password = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
//提交表单
|
||||||
|
uni.$http.post('/gunshiApp/tsg/login', postForm).then(res => {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '努力登录中...',
|
||||||
|
mask: true
|
||||||
|
})
|
||||||
|
if (res.data.code === 200) {
|
||||||
|
//localStorage保存token
|
||||||
|
|
||||||
|
if (res.data.token) {
|
||||||
|
uni.setStorageSync('Gs-Token', res.data.token)
|
||||||
|
uni.$http.get('/gunshiApp/tsg/getInfo').then(res => {
|
||||||
|
this.getImgFlow(res.data.user.avatar)
|
||||||
|
uni.setStorageSync('value', res.data.user)
|
||||||
|
setTimeout(function () {
|
||||||
|
uni.hideLoading()
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/homeIndex/index'
|
||||||
|
})
|
||||||
|
}, 1000)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setTimeout(function () {
|
||||||
|
uni.hideLoading()
|
||||||
|
uni.showToast({
|
||||||
|
title: res.data.description,
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
})
|
||||||
|
}, 1000)
|
||||||
|
clearTimeout()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getImgFlow(imgUrl) {
|
||||||
|
if (imgUrl) {
|
||||||
|
uni.request({
|
||||||
|
url: 'http://local.gunshiiot.com:18083' +
|
||||||
|
`/gunshiApp/tsg/common/download/resource?resource=${imgUrl}`,
|
||||||
|
responseType: 'arraybuffer',
|
||||||
|
success: (res) => {
|
||||||
|
// 将arraybuffer转换为Base64编码
|
||||||
|
let base64 = uni.arrayBufferToBase64(res.data);
|
||||||
|
const p = 'data:image/png;base64,' + base64;
|
||||||
|
uni.setStorageSync("avatar", p)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.setStorageSync('avatar', "../../static/tabs/touxiang.png")
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #f3f5f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img {
|
||||||
|
|
||||||
|
width: 100vw;
|
||||||
|
height: 40vh;
|
||||||
|
margin-top: 0vh;
|
||||||
|
/* background-color: red; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.form {
|
||||||
|
margin-top: 10vh;
|
||||||
|
width: 80%;
|
||||||
|
height: 8vh;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-title {
|
||||||
|
position: relative;
|
||||||
|
padding: 4px;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.sub {
|
||||||
|
font-size: 28px;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
position: absolute;
|
||||||
|
width: 80px;
|
||||||
|
height: 5px;
|
||||||
|
left: 20px;
|
||||||
|
bottom: -10px;
|
||||||
|
background-color: #00a8ff;
|
||||||
|
border-radius: 15%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,146 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden',backgroundColor: '#f0f0f0',}">
|
||||||
|
<u-navbar title="消息中心" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<view class="" style="margin-top: 44px;background-color: #f0f0f0;border-top: 1px solid #f0f0f0;">
|
||||||
|
<view class="" v-for="item in list" style="margin: 10px;background-color: #fff;padding: 10px;">
|
||||||
|
|
||||||
|
<view class="contentItem">
|
||||||
|
|
||||||
|
<view class="itemC">
|
||||||
|
<text>标题</text>
|
||||||
|
<text>{{item.title}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>发布时间</text>
|
||||||
|
<text>{{item.publishTime}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>发布人</text>
|
||||||
|
<text>{{item.publishUserName}}</text>
|
||||||
|
</view>
|
||||||
|
<!-- <view class="itemC">
|
||||||
|
<text>优先级</text>
|
||||||
|
<text>{{item.xjx}}</text>
|
||||||
|
</view> -->
|
||||||
|
|
||||||
|
<view class="itemNo" style="flex-direction: column;">
|
||||||
|
<text>消息内容</text>
|
||||||
|
<u--textarea v-model="item.content" placeholder="请输入内容" disabled ></u--textarea>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<u-calendar :show="show" mode="range" @confirm="confirm" @cancel='cancel'></u-calendar>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
model: {
|
||||||
|
stm: '',
|
||||||
|
etm: ''
|
||||||
|
},
|
||||||
|
list: [
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad(options){
|
||||||
|
this.list.push(JSON.parse(options.item))
|
||||||
|
this.yd(JSON.parse(options.item))
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
yd(item){
|
||||||
|
uni.$http.post('/gunshiApp/tsg/messageCenter/update',{...item,status:1})
|
||||||
|
},
|
||||||
|
confirm(e) {
|
||||||
|
console.log(e);
|
||||||
|
this.model.stm = e[0]
|
||||||
|
this.model.etm = e[1]
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.show = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle {
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabsClass {
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
|
||||||
|
padding-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
// justify-content: space-between;
|
||||||
|
.blueTiao{
|
||||||
|
background-color: #007aff;
|
||||||
|
width: 5px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
border-width: 0px;
|
||||||
|
font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #666666
|
||||||
|
}
|
||||||
|
|
||||||
|
.titleRight {
|
||||||
|
display: flex;
|
||||||
|
.border {
|
||||||
|
border-width: 0px;
|
||||||
|
background-color: rgba(236, 245, 255, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(187, 220, 255, 1);
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: none;
|
||||||
|
width: 58px;
|
||||||
|
height: 25px;
|
||||||
|
color: #689FFF;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.contentItem{
|
||||||
|
.itemC{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
}
|
||||||
|
.itemNo{
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,219 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden',backgroundColor: '#f0f0f0'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar title="消息中心" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
|
||||||
|
}" rightText="一键已读" @rightClick='rightClick' :height='44' :safeAreaInsetTop=true leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<view class="" style="margin-top: 44px;;background-color: #f0f0f0;border-top: 1px solid #f0f0f0;">
|
||||||
|
<view style="padding:0 10px,backgroundColor:#fff">
|
||||||
|
<view class="time-ranger" style="padding:10px;background-color: #fff;">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{startTime}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{endTime}}</text>
|
||||||
|
<view class="search-btn" @click="searchTm">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="height:calc(100vh - 180px); overflow-y:auto;" v-if="list.length !== 0">
|
||||||
|
<view class="" v-for="(item,index) in list" :key="index" style="margin: 10px;background-color: #fff;padding: 10px;" @click="toDetail(item)">
|
||||||
|
<view class="item">
|
||||||
|
<view class="align-center">
|
||||||
|
<view class="blueTiao">
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="title">
|
||||||
|
{{item.title}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="titleRight" >
|
||||||
|
{{item.publishTime}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="contentItem">
|
||||||
|
<view class="itemC">
|
||||||
|
{{item.content}}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
style="height:calc(100vh - 150px);display: flex;align-items: center;justify-content: center;background-color: #fff;"
|
||||||
|
v-else>
|
||||||
|
<image src="../../static/empty.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker :show="showTime" v-model="stm" mode="datetime" @confirm="showTime=false"
|
||||||
|
:minDate="minDate"
|
||||||
|
:maxDate="maxDate"
|
||||||
|
@cancel="showTime=false"></u-datetime-picker>
|
||||||
|
<u-datetime-picker :show="showTime1" v-model="etm" mode="datetime" @confirm="showTime1=false"
|
||||||
|
:minDate="minDate"
|
||||||
|
:maxDate="maxDate"
|
||||||
|
@cancel="showTime1=false"></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
minDate:moment().startOf('year').valueOf(),
|
||||||
|
maxDate:moment().valueOf(),
|
||||||
|
show: false,
|
||||||
|
showTime:false,
|
||||||
|
showTime1:false,
|
||||||
|
start: '请选择开始时间',
|
||||||
|
end: '请选择结束时间',
|
||||||
|
stm:'',
|
||||||
|
etm:'',
|
||||||
|
userList: uni.getStorageSync('value').data,
|
||||||
|
list: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onShow(options) {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
|
||||||
|
computed:{
|
||||||
|
startTime:function (){
|
||||||
|
return this.stm?moment(this.stm).format('YYYY-MM-DD HH:mm:ss'):this.start
|
||||||
|
},
|
||||||
|
endTime:function (){
|
||||||
|
return this.etm?moment(this.etm).format('YYYY-MM-DD HH:mm:ss'):this.end
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
rightClick() {
|
||||||
|
uni.$http.get('/gunshiApp/tsg/messageCenter/all/read', {
|
||||||
|
receiveUserId: uni.getStorageSync('value').userId
|
||||||
|
}).then(res => {
|
||||||
|
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
this.getList()
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
searchTm() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
console.log(111);
|
||||||
|
uni.$http.post('/gunshiApp/tsg/messageCenter/list', {
|
||||||
|
start:this.stm?moment(this.stm).format('YYYY-MM-DD HH:mm:ss'):'',
|
||||||
|
end:this.etm?moment(this.etm).format('YYYY-MM-DD HH:mm:ss'):''
|
||||||
|
}).then(res => {
|
||||||
|
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
this.list = res.data.data
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
confirm(e) {
|
||||||
|
console.log(e);
|
||||||
|
this.model.start = e[0]
|
||||||
|
this.model.end = e[1]
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
toDetail(item) {
|
||||||
|
console.log(item);
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/messageList/detail/index?item=' + JSON.stringify(item),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
.uni-input-placeholder {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.myTitleStyle {
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabsClass {
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
// border-bottom: 1px solid #f0f0f0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.blueTiao {
|
||||||
|
background-color: #2a7efa;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
border-width: 0px;
|
||||||
|
font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #666666
|
||||||
|
}
|
||||||
|
|
||||||
|
.titleRight {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.border {
|
||||||
|
border-width: 0px;
|
||||||
|
background-color: rgba(236, 245, 255, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(187, 220, 255, 1);
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: none;
|
||||||
|
width: 58px;
|
||||||
|
height: 25px;
|
||||||
|
color: #689FFF;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentItem {
|
||||||
|
.itemC {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,148 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<div class="userinfo">
|
||||||
|
<div class="icon" @click="goBack">
|
||||||
|
<uni-icons type="back" size="25" color="white"></uni-icons>
|
||||||
|
</div>
|
||||||
|
<div class="Header">
|
||||||
|
<span>修改密码</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="info">
|
||||||
|
<uni-forms :modelValue="formData" >
|
||||||
|
<uni-forms-item label="原密码" :required="true" class="form">
|
||||||
|
<uni-easyinput type="password" v-model="formData.oldPassword" placeholder="请输入原密码" class="password"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="新密码" :required="true" class="form">
|
||||||
|
<uni-easyinput type="password" v-model="formData.newPassword" placeholder="请输入新密码" class="password"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
<!-- <uni-forms-item label="再次输入新密码" label-width="120px" :required="true" class="form">
|
||||||
|
<uni-easyinput type="password" v-model="formData.newPassword" placeholder="请再次输入新密码" class="password"/>
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<button type="primary" class="button" @click="save(formData)">保存</button>
|
||||||
|
</uni-forms>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import CryptoJS from 'crypto-js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// formData: {
|
||||||
|
// oldSecretKey: '',
|
||||||
|
// newSecretKey: '',
|
||||||
|
// secondSecretKey: '',
|
||||||
|
// },
|
||||||
|
formData: {
|
||||||
|
oldPassword: '',
|
||||||
|
newPassword: '',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
goBack(){
|
||||||
|
uni.navigateBack()
|
||||||
|
},
|
||||||
|
save(formData){
|
||||||
|
|
||||||
|
// let new_params = {
|
||||||
|
// userId: '' ,
|
||||||
|
// oldSecretKey: '',
|
||||||
|
// newSecretKey: '',
|
||||||
|
// secondSecretKey: '',
|
||||||
|
// }
|
||||||
|
|
||||||
|
// new_params.oldSecretKey = CryptoJS.MD5(formData.oldSecretKey).toString()
|
||||||
|
// new_params.newSecretKey = CryptoJS.MD5(formData.newSecretKey).toString()
|
||||||
|
// new_params.secondSecretKey = CryptoJS.MD5(formData.secondSecretKey).toString()
|
||||||
|
// new_params.userId = uni.getStorageSync('value').userId
|
||||||
|
// console.log(formData)
|
||||||
|
|
||||||
|
uni.$http.put(`/gunshiApp/tsg/system/user/profile/updatePwd?oldPassword=${formData.oldPassword}&newPassword=${formData.newPassword}`).then(res=>{
|
||||||
|
console.log(res);
|
||||||
|
if (res.data.code === 200) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "修改成功,即将重新登录",
|
||||||
|
icon:'none',
|
||||||
|
duration: 2000
|
||||||
|
})
|
||||||
|
setTimeout(() => {
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/login/login'
|
||||||
|
// url:'/pages/homeIndex/index'
|
||||||
|
})
|
||||||
|
},2500)
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: res.data.description,
|
||||||
|
icon:'none',
|
||||||
|
duration: 2000
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// uni.navigateBack()
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.userinfo{
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
margin-top: 5vh;
|
||||||
|
margin-left: 2vw;
|
||||||
|
margin-bottom: 2vh;
|
||||||
|
align-items: center;
|
||||||
|
width: 95%;
|
||||||
|
height: 6vh;
|
||||||
|
background-color: #007afd;
|
||||||
|
|
||||||
|
}
|
||||||
|
.icon{
|
||||||
|
width: 6vw;
|
||||||
|
height: 6vh;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 6vh;
|
||||||
|
}
|
||||||
|
.Header{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex: 0.95;
|
||||||
|
justify-content: center;
|
||||||
|
color: white;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
.form{
|
||||||
|
height: 50px;
|
||||||
|
width: 95%;
|
||||||
|
/* background-color: red; */
|
||||||
|
margin-left: 1vw;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.password{
|
||||||
|
font-size: 20px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.button{
|
||||||
|
border-radius: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
margin-top: 50vh;
|
||||||
|
width: 92%;
|
||||||
|
height: 6vh;
|
||||||
|
font-size: 20px;
|
||||||
|
color: white;
|
||||||
|
background-color: #007afd;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,231 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'auto'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar title="问题处理" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<view class="" style="margin-top: 44px;;background-color: #f0f0f0;border-top: 1px solid #f0f0f0;">
|
||||||
|
<view style="margin: 10px;background-color: #fff;padding: 10px;">
|
||||||
|
<view class="item">
|
||||||
|
<view class="blueTiao">
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="title">
|
||||||
|
巡检问题信息
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="contentItem">
|
||||||
|
|
||||||
|
<view class="itemC">
|
||||||
|
<text>巡查人</text>
|
||||||
|
<text>{{queItem.inspectUserName}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>巡查时间</text>
|
||||||
|
<text>{{queItem.finishTime}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>任务标题</text>
|
||||||
|
<text>{{queItem.taskTitle}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>巡检点</text>
|
||||||
|
<text>{{queItem.name}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>巡检项</text>
|
||||||
|
<text>{{queItem.itemDesc}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemNo" style="flex-direction: column;">
|
||||||
|
<text>巡检问题描述</text>
|
||||||
|
<u--textarea v-model="queItem.problemDesc" placeholder="请输入内容" disabled ></u--textarea>
|
||||||
|
</view>
|
||||||
|
<view class="itemNo" style="flex-direction: column;">
|
||||||
|
<text>巡检图片</text>
|
||||||
|
<view class="" v-for="item in queItem.inspectPics">
|
||||||
|
<image :src="item.url" style="width: 80px;height: 80px;margin: 5px;" @click="previewImage(item)"></image>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="itemNo" style="flex-direction: column;">
|
||||||
|
<text>巡检视频</text>
|
||||||
|
<view class="" v-for="item in queItem.inspectVideos">
|
||||||
|
<video :src="item.url" style="width: 80px;height: 80px;margin: 5px;" show-fullscreen-btn></video>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="margin: 10px;background-color: #fff;padding: 10px;" class="">
|
||||||
|
<u--form labelPosition="left" :model="o" ref="uForm" label-width='80px'>
|
||||||
|
<view class="itemCc">
|
||||||
|
<u-form-item label="处理人" prop="handleUserName" borderBottom required >
|
||||||
|
<u--input v-model="queItem.handleUserName" disabled disabledColor="#ffffff"
|
||||||
|
placeholder="" border="none"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="处理时间" prop="handleTime" borderBottom required>
|
||||||
|
<u--input v-model="queItem.handleTime" disabled disabledColor="#ffffff"
|
||||||
|
placeholder="" border="none"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="处理内容" prop="handleDesc" borderBottom required labelPosition='top'>
|
||||||
|
<u--textarea v-model="queItem.handleDesc" disabled placeholder="请输入内容" ></u--textarea>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="处理图片" prop="handlePics" borderBottom required labelPosition='top'>
|
||||||
|
<u-upload accept="image" :fileList="queItem.handlePics || []" disabled
|
||||||
|
name="handlePics" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="处理视频" prop="handleVideos" borderBottom labelPosition='top'>
|
||||||
|
<u-upload accept="video" :fileList="queItem.handleVideos" disabled
|
||||||
|
name="handleVideos" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
</u-form-item>
|
||||||
|
</view>
|
||||||
|
</u--form>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
model: {
|
||||||
|
stm: '',
|
||||||
|
etm: ''
|
||||||
|
},
|
||||||
|
customStyle: {
|
||||||
|
background: '#000'
|
||||||
|
},
|
||||||
|
queItem:{},
|
||||||
|
list: [
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad(options) {
|
||||||
|
this.queItem = JSON.parse(options.item)
|
||||||
|
|
||||||
|
this.queItem.handleVideos?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
this.queItem.handlePics?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
this.queItem.inspectVideos?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
this.queItem.inspectPics?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
console.log(this.queItem);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
previewImage(item){
|
||||||
|
uni.previewImage({
|
||||||
|
urls: [item.url],
|
||||||
|
longPressActions: {
|
||||||
|
itemList: ['发送给朋友', '保存图片', '收藏'],
|
||||||
|
success: function(data) {
|
||||||
|
console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
|
||||||
|
},
|
||||||
|
fail: function(err) {
|
||||||
|
console.log(err.errMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle {
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabsClass {
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
|
||||||
|
padding-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
// justify-content: space-between;
|
||||||
|
.blueTiao{
|
||||||
|
background-color: #007aff;
|
||||||
|
width: 5px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
border-width: 0px;
|
||||||
|
font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #666666
|
||||||
|
}
|
||||||
|
|
||||||
|
.titleRight {
|
||||||
|
display: flex;
|
||||||
|
.border {
|
||||||
|
border-width: 0px;
|
||||||
|
background-color: rgba(236, 245, 255, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(187, 220, 255, 1);
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: none;
|
||||||
|
width: 58px;
|
||||||
|
height: 25px;
|
||||||
|
color: #689FFF;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.itemCc{
|
||||||
|
// display: flex;
|
||||||
|
// justify-content: space-between;
|
||||||
|
// display: flex;
|
||||||
|
|
||||||
|
padding: 10px;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.contentItem{
|
||||||
|
.itemC{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
color: #303133;;
|
||||||
|
padding: 10px;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
}
|
||||||
|
.itemNo{
|
||||||
|
color: #303133;;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,201 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar title="问题处理" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<view class=""
|
||||||
|
style="margin-top: 50px;;background-color: #f0f0f0;border-top: 1px solid #f0f0f0;overflow: auto;">
|
||||||
|
<view style="padding:0 10px;backgroundColor:#fff">
|
||||||
|
<view class="time-ranger">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{startTime}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{endTime}}</text>
|
||||||
|
<view class="search-btn" @click="searchTm">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="height:calc(100vh - 150px);overflow: auto;" v-if='list.length !== 0'>
|
||||||
|
<view class="" v-for="(item,index) in list" :key="index" @click="toDetail(item)"
|
||||||
|
style="margin:10px;background-color: #fff;padding: 10px;">
|
||||||
|
<view class="item">
|
||||||
|
<!-- {{item.title}} -->
|
||||||
|
<view class="title">
|
||||||
|
{{item.taskTitle}}
|
||||||
|
</view>
|
||||||
|
<view class="titleRight" >
|
||||||
|
<view class="border">
|
||||||
|
{{item.isHandle==1?'已处理':'待处理'}}
|
||||||
|
</view>
|
||||||
|
<u-icon name="arrow-right" size="20"></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="contentItem">
|
||||||
|
<view class="itemC">
|
||||||
|
<text>巡检项</text>
|
||||||
|
<text>{{item.itemDesc}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>巡查人</text>
|
||||||
|
<text>{{item.inspectUserName}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>巡查时间</text>
|
||||||
|
<text>{{item.finishTime}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="height:calc(100vh - 150px);display: flex;align-items: center;justify-content: center;background-color: #fff;" v-else>
|
||||||
|
<image src="../../../../static/empty.png" mode="" ></image>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker :show="showTime" v-model="stm" mode="datetime" @confirm="showTime=false"
|
||||||
|
@cancel="showTime=false"></u-datetime-picker>
|
||||||
|
<u-datetime-picker :show="showTime1" v-model="etm" mode="datetime" @confirm="showTime1=false"
|
||||||
|
@cancel="showTime1=false"></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
showTime: false,
|
||||||
|
showTime1: false,
|
||||||
|
minDate:moment().startOf('year').valueOf(),
|
||||||
|
maxDate:moment().valueOf(),
|
||||||
|
start: '请选择开始时间',
|
||||||
|
end: '请选择结束时间',
|
||||||
|
stm:moment().startOf('year').format('YYYY-MM-DD'),
|
||||||
|
etm:moment().format('YYYY-MM-DD'),
|
||||||
|
customStyle: {
|
||||||
|
background: '#000'
|
||||||
|
},
|
||||||
|
list: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
startTime: function () {
|
||||||
|
|
||||||
|
return this.stm ? moment(this.stm).format('YYYY-MM-DD') : this.start
|
||||||
|
},
|
||||||
|
endTime: function () {
|
||||||
|
return this.etm ? moment(this.etm).format('YYYY-MM-DD') : this.end
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
searchTm() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
console.log(uni.getStorageSync('value'));
|
||||||
|
let params = {
|
||||||
|
"pageSo": {
|
||||||
|
"pageSize": 999,
|
||||||
|
"pageNumber": 1
|
||||||
|
},
|
||||||
|
"dateTimeRangeSo": {
|
||||||
|
start:this.stm?moment(this.stm).format('YYYY-MM-DD 00:00:00'):'',
|
||||||
|
end:this.etm?moment(this.etm).format('YYYY-MM-DD 23:59:59'):''
|
||||||
|
},
|
||||||
|
"isHandle": 1,
|
||||||
|
"handleUserId": uni.getStorageSync('value').userId
|
||||||
|
}
|
||||||
|
uni.$http.post('/gunshiApp/tsg/inspect/detail/page', params).then(res => {
|
||||||
|
this.list = res.data.data.records
|
||||||
|
})
|
||||||
|
},
|
||||||
|
confirm(e) {
|
||||||
|
console.log(e);
|
||||||
|
this.model.start = e[0]
|
||||||
|
this.model.end = e[1]
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
toDetail(item) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/mypage/compents/wtcl/detail/index?item=' + JSON.stringify(item)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle {
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabsClass {
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
border-width: 0px;
|
||||||
|
font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #666666
|
||||||
|
}
|
||||||
|
|
||||||
|
.titleRight {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.border {
|
||||||
|
border-width: 0px;
|
||||||
|
background-color: rgba(236, 245, 255, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(187, 220, 255, 1);
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: none;
|
||||||
|
width: 58px;
|
||||||
|
height: 25px;
|
||||||
|
color: #689FFF;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentItem {
|
||||||
|
.itemC {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
|
||||||
|
<u--form labelPosition="left" :model="model1" ref="uForm" >
|
||||||
|
<u-form-item label="管护类型" prop="maintainType" borderBottom ref="item1"
|
||||||
|
required
|
||||||
|
labelPosition='top'
|
||||||
|
labelWidth="100px">
|
||||||
|
<u--input v-model="model1.maintainName" disabled disabledColor="#ffffff" placeholder="请选择管护类型"
|
||||||
|
border="none" ></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="内容说明" prop="maintainContent" borderBottom labelPosition='top' required labelWidth="100px">
|
||||||
|
<u--textarea v-model="model1.maintainContent" placeholder="请输入内容" disabled></u--textarea>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="现场图片" prop="pics" borderBottom labelPosition='top' labelWidth="100px">
|
||||||
|
<u-upload :fileList="model1.pics" name="pics" multiple disabled
|
||||||
|
multiple accept='image' :maxCount="10"></u-upload>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="现场视频" prop="videos" borderBottom labelPosition='top' labelWidth="100px">
|
||||||
|
<u-upload :fileList="model1.videos" name="videos" multiple disabled
|
||||||
|
multiple accept='video' :maxCount="10"></u-upload>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
</u--form>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
formData:Object
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showSex: false,
|
||||||
|
fileListpics: [],
|
||||||
|
fileListvideos: [],
|
||||||
|
model1: {
|
||||||
|
maintainContent: "",
|
||||||
|
maintainType: '',
|
||||||
|
pics: [],
|
||||||
|
videos: []
|
||||||
|
},
|
||||||
|
actions: [{
|
||||||
|
value: 1,
|
||||||
|
name: "溢洪道清障"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 2,
|
||||||
|
name: "除草除杂"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 3,
|
||||||
|
name: "设备养护"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 4,
|
||||||
|
name: "环境清洁"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 5,
|
||||||
|
name: "危险提示"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 6,
|
||||||
|
name: "其他"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
radio: '',
|
||||||
|
switchVal: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.model1 = this.formData
|
||||||
|
this.model1.maintainName = this.actions.find(item=>item.value == this.formData.maintainType).name
|
||||||
|
this.model1.pics?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
this.model1.videos?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
console.log(this.model1,'83498943r80432',this.formData);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
},
|
||||||
|
onReady() {
|
||||||
|
//如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
|
||||||
|
this.$refs.uForm.setRules(this.rules)
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
|
||||||
|
<u--form labelPosition="left" :model="formData" label-width='80px'>
|
||||||
|
<u-form-item label="上报人" prop="reportUserName" borderBottom ref="item1">
|
||||||
|
<u--input v-model="formData.reportUserName" border="none" disabled></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="上报时间" prop="reportTime" borderBottom ref="item1">
|
||||||
|
<u--input v-model="formData.reportTime" border="none" disabled></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
</u--form>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment';
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
formData:Object
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// formData: {
|
||||||
|
// reportUserName:uni.getStorageSync('value').userName,
|
||||||
|
// reportTime:moment().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
// userId:uni.getStorageSync('value').userId
|
||||||
|
// },
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
// debugger;
|
||||||
|
// const userList=uni.getStorageSync('value')
|
||||||
|
// console.log(userList,'3456789045678945678');
|
||||||
|
// this.formData.reportUserName = uni.getStorageSync('value').userName
|
||||||
|
// this.formData.userId = uni.getStorageSync('value').userId
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<u-navbar
|
||||||
|
title="维修养护"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<view
|
||||||
|
style="background-color: #f0f0f0;padding: 10px;overflow: auto;margin-top: 44px;">
|
||||||
|
<view class="content">
|
||||||
|
<formTop labelWidth="150rpx" :formData="formData"/>
|
||||||
|
</view>
|
||||||
|
<view class="content" style="margin-top: 10px;">
|
||||||
|
<formBottom labelWidth="150rpx" @submitForm='submitForm' :formData="formData"/>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <button @click="submitForm">Submit</button> -->
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import formTop from './formTop.vue'
|
||||||
|
import formBottom from './formBottom.vue'
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { formTop,formBottom },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {
|
||||||
|
reportUserName:'',
|
||||||
|
reportTime:moment().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
userId:''
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(options) {
|
||||||
|
this.formData=JSON.parse(options.item)
|
||||||
|
console.log(this.formData,JSON.parse(options.item));
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submitForm(params) {
|
||||||
|
//
|
||||||
|
console.log({...params,...this.formData});
|
||||||
|
uni.$http.post('/gunshiApp/tsg/maintain/service/insert',{...params,...this.formData}).then(res=>{
|
||||||
|
if(res.data.code == 200){
|
||||||
|
uni.$u.toast('新增成功')
|
||||||
|
uni.navigateBack()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goBack() {
|
||||||
|
console.log(12121);
|
||||||
|
|
||||||
|
uni.navigateBack()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.content {
|
||||||
|
/* margin: 10px; */
|
||||||
|
padding: 10px;
|
||||||
|
/* width: 95%; */
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,178 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<u-navbar title="维修养护" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<view style="background-color: #f0f0f0;padding: 10px;margin-top: 60px;">
|
||||||
|
<!-- <view style="padding:0 10px;backgroundColor:#fff"> -->
|
||||||
|
<view class="time-ranger">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{startTime}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{endTime}}</text>
|
||||||
|
<view class="search-btn" @click="searchTm">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- </view> -->
|
||||||
|
<view class="" style="height:calc(100vh - 150px);overflow: auto;" v-if="dataList.length !== 0">
|
||||||
|
<view class="" v-for="item in dataList" class="contentItemWx" @click="toDetail(item)">
|
||||||
|
<view class="contentItem">
|
||||||
|
<view class="itemWxyhT">
|
||||||
|
<text>{{type[item.maintainType]}}</text>
|
||||||
|
<uni-icons type="right"></uni-icons>
|
||||||
|
</view>
|
||||||
|
<view class="itemWxyhB">
|
||||||
|
<text>{{item.reportTime}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="height:calc(100vh - 150px);display: flex;align-items: center;justify-content: center;background-color: #fff;" v-else>
|
||||||
|
<image src="../../../../static/empty.png" mode="" ></image>
|
||||||
|
</view>
|
||||||
|
<!-- <view class="content">
|
||||||
|
<formTop labelWidth="150rpx" />
|
||||||
|
</view> -->
|
||||||
|
<!-- <view class="content" style="margin-top: 10px;">
|
||||||
|
<formBottom labelWidth="150rpx" @submitForm='submitForm'/>
|
||||||
|
</view> -->
|
||||||
|
</view>
|
||||||
|
<!-- <button @click="submitForm">Submit</button> -->
|
||||||
|
<u-datetime-picker :show="showTime" v-model="stm" mode="date" @confirm="showTime=false"
|
||||||
|
@cancel="showTime=false"></u-datetime-picker>
|
||||||
|
<u-datetime-picker :show="showTime1" v-model="etm" mode="date" @confirm="showTime1=false"
|
||||||
|
@cancel="showTime1=false"></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import formTop from './formZdy/formTop.vue'
|
||||||
|
import formBottom from './formZdy/formBottom.vue'
|
||||||
|
import moment from 'moment'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
formTop,
|
||||||
|
formBottom
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {
|
||||||
|
reportUserName: '',
|
||||||
|
reportTime: moment().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
userId: ''
|
||||||
|
},
|
||||||
|
showTime: false,
|
||||||
|
showTime1: false,
|
||||||
|
start: '请选择开始时间',
|
||||||
|
end: '请选择结束时间',
|
||||||
|
stm:moment().startOf('year').format('YYYY-MM-DD'),
|
||||||
|
etm:moment().format('YYYY-MM-DD'),
|
||||||
|
dataList: [],
|
||||||
|
type: {
|
||||||
|
1: "溢洪道清障",
|
||||||
|
2: "除草除杂",
|
||||||
|
3: "设备养护",
|
||||||
|
4: "环境清洁",
|
||||||
|
5: "危险提示",
|
||||||
|
6: "其他",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
startTime: function () {
|
||||||
|
|
||||||
|
return this.stm ? moment(this.stm).format('YYYY-MM-DD') : this.start
|
||||||
|
},
|
||||||
|
endTime: function () {
|
||||||
|
return this.etm ? moment(this.etm).format('YYYY-MM-DD') : this.end
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
searchTm(){
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
toDetail(item){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/pages/mypage/compents/wxyh/formZdy/index?item='+JSON.stringify(item)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
let params = {
|
||||||
|
"pageSo": {
|
||||||
|
"pageSize": 999,
|
||||||
|
"pageNumber": 1
|
||||||
|
},
|
||||||
|
"dateTimeSo": {
|
||||||
|
start:this.stm?moment(this.stm).format('YYYY-MM-DD 00:00:00'):'',
|
||||||
|
end:this.etm?moment(this.etm).format('YYYY-MM-DD 23:59:59'):''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
uni.$http.post('/gunshiApp/tsg/maintain/service/page', params).then(res => {
|
||||||
|
this.dataList = res.data.data.records
|
||||||
|
})
|
||||||
|
},
|
||||||
|
submitForm(params) {
|
||||||
|
//
|
||||||
|
console.log({
|
||||||
|
...params,
|
||||||
|
...this.formData
|
||||||
|
});
|
||||||
|
uni.$http.post('/gunshiApp/tsg/maintain/service/insert', {
|
||||||
|
...params,
|
||||||
|
...this.formData
|
||||||
|
}).then(res => {
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
uni.$u.toast('新增成功')
|
||||||
|
uni.navigateBack()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goBack() {
|
||||||
|
console.log(12121);
|
||||||
|
|
||||||
|
uni.navigateBack()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.content {
|
||||||
|
/* margin: 10px; */
|
||||||
|
padding: 10px;
|
||||||
|
/* width: 95%; */
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemWxyhT {
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-family: "微软雅黑 Bold", "微软雅黑 Regular", 微软雅黑, sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 15px;
|
||||||
|
color: rgb(102, 102, 102);
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
}
|
||||||
|
.itemWxyhB{
|
||||||
|
color: rgba(127, 127, 127, 0.8);
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
.contentItemWx{
|
||||||
|
background-color: rgba(255, 255, 255, 1);
|
||||||
|
padding: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,305 @@
|
||||||
|
<template>
|
||||||
|
<view class="contentItem">
|
||||||
|
<uni-collapse>
|
||||||
|
|
||||||
|
<uni-collapse-item title-border="none" v-for="(item,index) in listData" :key="index" :border="false"
|
||||||
|
:show-animation="true">
|
||||||
|
<template v-slot:title>
|
||||||
|
<view style="display: flex;align-items: center;">
|
||||||
|
<text class="yuandian"></text>
|
||||||
|
<text>{{item.name}}</text>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<view class="xj-content">
|
||||||
|
<view class="xj-text" v-for="(o,i) in item.children" :key="i">
|
||||||
|
<view style="display: flex;align-items: center;">
|
||||||
|
<text>{{o.itemDesc}}</text>
|
||||||
|
<text>({{o.isNormal == 0?'异常':'正常'}}{{o.isNormal == 0?o.isHandle?'已处理':'未处理':''}})</text>
|
||||||
|
<!-- <text></text> -->
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="" v-if="o.isNormal == 0">
|
||||||
|
<view class="itemEve">
|
||||||
|
<text>现场图片:</text>
|
||||||
|
<view class="" v-for="item in o.inspectPics">
|
||||||
|
<image :src="item.url" style="width: 80px;height: 80px;margin: 5px;" @click="previewImage(item)"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view v-if="o.inspectVideos.length" class="itemEve">
|
||||||
|
<text>现场视频:</text>
|
||||||
|
<view class="" v-for="item in o.inspectVideos">
|
||||||
|
<video :src="item.url" style="width: 80px;height: 80px;margin: 5px;" show-fullscreen-btn :show-progress='false'></video>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;" class="itemEve">
|
||||||
|
<text>问题描述:</text>
|
||||||
|
<text>{{o.problemDesc}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="" v-if="o.isHandle == 1">
|
||||||
|
<view style="" class="itemEve" v-if="o.handlePics.length">
|
||||||
|
<text>处理图片:</text>
|
||||||
|
<view class="" v-for="item in o.handlePics">
|
||||||
|
<image :src="item.url" style="width: 80px;height: 80px;margin: 5px;" @click="previewImage(item)"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="" v-if="o.handleVideos.length" class="itemEve">
|
||||||
|
<text>处理视频:</text>
|
||||||
|
<view class="" v-for="item in o.handleVideos">
|
||||||
|
|
||||||
|
<video :src="item.url" style="width: 80px;height: 80px;margin: 5px;" show-fullscreen-btn></video>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;" class="itemEve">
|
||||||
|
<text>处理描述:</text <text>{{o.handleDesc}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="display: flex;" v-if="o.isHandle == 0" class="itemEve">
|
||||||
|
<text>责任人</text>
|
||||||
|
<text>{{o.handleUserName}}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="subsectioin">
|
||||||
|
<!-- <u--form labelPosition="left" :model="o" ref="uForm">
|
||||||
|
<u-form-item label="状态" prop="isNormal" borderBottom required>
|
||||||
|
<u-subsection :list="list" :current="getNormal(o.isNormal)" mode="subsection" disabled
|
||||||
|
@change="(e)=>change(e,o,index,i,'isNormal')"
|
||||||
|
style="width:200px;margin-left: 10px"></u-subsection>
|
||||||
|
</u-form-item>
|
||||||
|
<view class="" v-if="o.isNormal">
|
||||||
|
<u-form-item label="现场图片" prop="inspectPics" borderBottom required>
|
||||||
|
<u-upload accept="image" :fileList="o.inspectPics" disabled
|
||||||
|
@afterRead="(e)=>afterRead(e,o,index,i)"
|
||||||
|
@delete="(e)=>deletePic(e,o,index,i)" name="inspectPics" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="现场视频" prop="inspectVideos" borderBottom>
|
||||||
|
<u-upload accept="video" :fileList="o.inspectVideos" disabled
|
||||||
|
@afterRead="(e)=>afterRead(e,o,index,i)"
|
||||||
|
@delete="(e)=>deletePic(e,o,index,i)" name="inspectVideos" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="问题描述" prop="itemProblemDesc" borderBottom required>
|
||||||
|
<u--textarea v-model="o.itemProblemDesc" placeholder="请输入内容" disabled></u--textarea>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="处理状态" prop="isHandle" borderBottom required>
|
||||||
|
<u-subsection :list="listStatus" :current="getHandle(o.isHandle)" disabled
|
||||||
|
mode="subsection" @change="(e)=>change(e,o,index,i,'isHandle')"
|
||||||
|
style="width:200px;margin-left: 10px"></u-subsection>
|
||||||
|
</u-form-item>
|
||||||
|
<view class="" v-if="o.isHandle !== 0">
|
||||||
|
<u-form-item label="处理图片" prop="handlePics" borderBottom required>
|
||||||
|
<u-upload accept="image" :fileList="o.handlePics" disabled
|
||||||
|
@afterRead="(e)=>afterRead(e,o,index,i)"
|
||||||
|
@delete="(e)=>deletePic(e,o,index,i)" name="handlePics" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="处理视频" prop="handleVideos" borderBottom>
|
||||||
|
<u-upload accept="video" :fileList="o.handleVideos" disabled
|
||||||
|
@afterRead="(e)=>afterRead(e,o,index,i)"
|
||||||
|
@delete="(e)=>deletePic(e,o,index,i)" name="handleVideos" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="问题描述" prop="handleDesc" borderBottom required>
|
||||||
|
<u--textarea v-model="o.handleDesc" placeholder="请输入内容" disabled></u--textarea>
|
||||||
|
</u-form-item>
|
||||||
|
</view>
|
||||||
|
<view class="" v-if="o.isHandle == 0">
|
||||||
|
<u-form-item label="责任人" prop="handleUserId" borderBottom
|
||||||
|
@click="showSex = true; hideKeyboard()" required>
|
||||||
|
<u--input v-model="o.handleUserId" disabled disabledColor="#ffffff"
|
||||||
|
placeholder="请选择性别" border="none"></u--input>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u--form>
|
||||||
|
<u-action-sheet :show="showSex" :actions="actions" title="请选择性别" description="如果选择保密会报错"
|
||||||
|
@close="showSex = false" @select="sexSelect">
|
||||||
|
</u-action-sheet> -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-collapse-item>
|
||||||
|
|
||||||
|
</uni-collapse>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
xjItem: Array
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: ["正常", "异常"],
|
||||||
|
listStatus: ["已处理", "未处理"],
|
||||||
|
current: 0,
|
||||||
|
listData: [],
|
||||||
|
showSex: false,
|
||||||
|
actions: [{
|
||||||
|
name: '男',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '女',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '保密',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// this.listData = this.xjItem
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
xjItem: function(n, o) {
|
||||||
|
|
||||||
|
this.listData = n.map(item => {
|
||||||
|
item.childen = item.children.map(i => {
|
||||||
|
i.handlePics?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
i.handleVideos?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
i.inspectPics?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
i.inspectVideos?.map(item1=>{
|
||||||
|
item1.url ='http://223.75.53.141:9102/test.by-lyf.tmp' + item1.filePath
|
||||||
|
return item1
|
||||||
|
})
|
||||||
|
if (!i.handlePics) {
|
||||||
|
i.handlePics = []
|
||||||
|
}
|
||||||
|
if (!i.handleVideos) {
|
||||||
|
i.handleVideos = []
|
||||||
|
}
|
||||||
|
if (!i.inspectPics) {
|
||||||
|
i.inspectPics = []
|
||||||
|
}
|
||||||
|
if (!i.inspectVideos) {
|
||||||
|
i.inspectVideos = []
|
||||||
|
}
|
||||||
|
return i
|
||||||
|
})
|
||||||
|
return item
|
||||||
|
})
|
||||||
|
console.log(n, this.listData, 'this.listData ');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
previewImage(item){
|
||||||
|
uni.previewImage({
|
||||||
|
urls: [item.url],
|
||||||
|
longPressActions: {
|
||||||
|
itemList: ['发送给朋友', '保存图片', '收藏'],
|
||||||
|
success: function(data) {
|
||||||
|
console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
|
||||||
|
},
|
||||||
|
fail: function(err) {
|
||||||
|
console.log(err.errMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getIsItem(arr) {
|
||||||
|
return arr.filter(item1 => item1.isNormal !== 1 && item1.isNormal !== 0).length
|
||||||
|
},
|
||||||
|
getNormal(isNormal) {
|
||||||
|
if (isNormal == 0) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if (isNormal == 1) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (isNormal == null) {
|
||||||
|
return 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getHandle(isHandle) {
|
||||||
|
if (isHandle == 0) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if (isHandle == 1) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (isHandle == null) {
|
||||||
|
return 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.contentItem {
|
||||||
|
height: 100%;
|
||||||
|
// overflow: auto;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
.itemC {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemNo {
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.circle-btn {
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
background-color: #007aff;
|
||||||
|
border-radius: 50%;
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.yuandian {
|
||||||
|
display: inline-block;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background-color: #409eff;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xj-content {
|
||||||
|
// height: 300px;
|
||||||
|
// overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xj-text {
|
||||||
|
margin-left: 10%;
|
||||||
|
margin-top: 2%;
|
||||||
|
font-size: 16px;
|
||||||
|
border-bottom:1px solid #f0f0f0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subsectioin {
|
||||||
|
display: flex;
|
||||||
|
column-gap: 10px;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
.itemEve{
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,147 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
|
||||||
|
<u--form labelPosition="left" :model="model1" :rules="rules" ref="uForm">
|
||||||
|
<u-form-item label="姓名" prop="userInfo.name" borderBottom ref="item1">
|
||||||
|
<u--input v-model="model1.userInfo.name" border="none"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="性别" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"
|
||||||
|
ref="item1">
|
||||||
|
<u--input v-model="model1.userInfo.sex" disabled disabledColor="#ffffff" placeholder="请选择性别"
|
||||||
|
border="none"></u--input>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="内容" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"
|
||||||
|
ref="item1">
|
||||||
|
<u--textarea v-model="model1.userInfo.namevalue1" placeholder="请输入内容"></u--textarea>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="内容" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"
|
||||||
|
ref="item1">
|
||||||
|
<u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="1" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="内容" prop="userInfo.sex" borderBottom @click="showSex = true; hideKeyboard()"
|
||||||
|
ref="item1">
|
||||||
|
<u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="1" multiple
|
||||||
|
:maxCount="10"></u-upload>
|
||||||
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
</u--form>
|
||||||
|
<u-action-sheet :show="showSex" :actions="actions" title="请选择性别" description="如果选择保密会报错"
|
||||||
|
@close="showSex = false" @select="sexSelect">
|
||||||
|
</u-action-sheet>
|
||||||
|
<button @click="submit">11</button>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showSex: false,
|
||||||
|
model1: {
|
||||||
|
userInfo: {
|
||||||
|
name: 'uView UI',
|
||||||
|
sex: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions: [{
|
||||||
|
name: '男',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '女',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '保密',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
'userInfo.name': {
|
||||||
|
type: 'string',
|
||||||
|
required: true,
|
||||||
|
message: '请填写姓名',
|
||||||
|
trigger: ['blur', 'change']
|
||||||
|
},
|
||||||
|
'userInfo.sex': {
|
||||||
|
type: 'string',
|
||||||
|
max: 1,
|
||||||
|
required: true,
|
||||||
|
message: '请选择男或女',
|
||||||
|
trigger: ['blur', 'change']
|
||||||
|
},
|
||||||
|
},
|
||||||
|
radio: '',
|
||||||
|
switchVal: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 删除图片
|
||||||
|
deletePic(event) {
|
||||||
|
this[`fileList${event.name}`].splice(event.index, 1)
|
||||||
|
},
|
||||||
|
// 新增图片
|
||||||
|
async afterRead(event) {
|
||||||
|
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
|
||||||
|
let lists = [].concat(event.file)
|
||||||
|
let fileListLen = this[`fileList${event.name}`].length
|
||||||
|
lists.map((item) => {
|
||||||
|
this[`fileList${event.name}`].push({
|
||||||
|
...item,
|
||||||
|
status: 'uploading',
|
||||||
|
message: '上传中'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
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,name) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let a = uni.uploadFile({
|
||||||
|
url: 'http://local.gunshiiot.com:18083/gunshiApp/tsg/maintain/service/file/upload/singleSimple', // 仅为示例,非真实的接口地址
|
||||||
|
filePath: url,
|
||||||
|
name: 'file',
|
||||||
|
formData: {
|
||||||
|
user: 'test'
|
||||||
|
},
|
||||||
|
success: (res) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
// const obj = this.model1[name].find(item=>item.fileId==res.data.data.fileId)
|
||||||
|
// if(obj){
|
||||||
|
|
||||||
|
// }
|
||||||
|
console.log(JSON.parse(res.data),this.model1,name);
|
||||||
|
this.model1[name].push({fileId:JSON.parse(res.data).data.fileId})
|
||||||
|
resolve(res.data.data)
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
},
|
||||||
|
sexSelect(e) {
|
||||||
|
this.model1.userInfo.sex = e.name
|
||||||
|
this.$refs.uForm.validateField('userInfo.sex')
|
||||||
|
},
|
||||||
|
submit() {
|
||||||
|
this.$refs.uForm.validate().then(res => {
|
||||||
|
uni.$u.toast('校验通过')
|
||||||
|
}).catch(errors => {
|
||||||
|
uni.$u.toast('校验失败')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onReady() {
|
||||||
|
//如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
|
||||||
|
this.$refs.uForm.setRules(this.rules)
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,231 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar :title="taskTitle" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<!-- <view class=""
|
||||||
|
style="margin-top: 44px;;background-color: #f0f0f0;border-top: 1px solid #f0f0f0; height:calc(100vh - 44px)">
|
||||||
|
<view style="margin: 10px;background-color: #fff;padding: 10px;">
|
||||||
|
<!-- <view class="item">
|
||||||
|
<view class="blueTiao"></view>
|
||||||
|
<view class="title">
|
||||||
|
基本信息
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="contentItem">
|
||||||
|
<view class="itemC">
|
||||||
|
<text>任务标题1</text>
|
||||||
|
<text>{{taskTitle}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>任务类型11</text>
|
||||||
|
<text>{{taskType == 1 ? "日常巡查" : taskType == 2 ? "特别检查" : taskType == 3 ? "汛前巡检" : '' }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>任务内容</text>
|
||||||
|
<text>{{taskContent ? taskContent : ''}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>开始日期</text>
|
||||||
|
<text>{{startDate}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>结束日期</text>
|
||||||
|
<text>{{endDate}}</text>
|
||||||
|
</view>
|
||||||
|
</view> -->
|
||||||
|
|
||||||
|
<!-- </view> -->
|
||||||
|
|
||||||
|
<view style="margin: 10px;background-color: #fff;padding: 10px; height:calc(100vh - 50px);margin-top: 50px;">
|
||||||
|
<view class="item">
|
||||||
|
<view class="blueTiao"></view>
|
||||||
|
<view class="title">
|
||||||
|
巡检项
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="contentItem" style="height: calc(100% - 50px);">
|
||||||
|
<db-form :xjItem="xjItem"></db-form>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
import DbForm from './dbForm.vue'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
DbForm
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
taskTitle: '',
|
||||||
|
taskType: '',
|
||||||
|
taskContent: '',
|
||||||
|
startDate: '',
|
||||||
|
endDate: '',
|
||||||
|
status: '',
|
||||||
|
id: '',
|
||||||
|
btnStatus: 0,
|
||||||
|
xjItem: [],
|
||||||
|
list: ["正常", "异常"],
|
||||||
|
current: 3
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.startXc()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 开始巡查
|
||||||
|
async startXc() {
|
||||||
|
try {
|
||||||
|
this.btnStatus = 1;
|
||||||
|
this.getXjItem(this.id)
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取巡查项
|
||||||
|
async getXjItem(id) {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.get(`/gunshiApp/tsg/inspect/detail/info?taskId=${this.id}`)
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.xjItem = data.data
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
change(e) {
|
||||||
|
this.current = e;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.taskTitle = option.taskTitle
|
||||||
|
this.taskType = option.taskType
|
||||||
|
this.taskContent = option.taskContent == "null" ? null : option.taskContent
|
||||||
|
this.startDate = (option.startDate)
|
||||||
|
this.endDate = option.endDate == "null" ? "" : option.endDate
|
||||||
|
this.status = option.status
|
||||||
|
this.id = option.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle {
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabsClass {
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
|
||||||
|
padding-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
// justify-content: space-between;
|
||||||
|
.blueTiao {
|
||||||
|
background-color: #007aff;
|
||||||
|
width: 5px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
border-width: 0px;
|
||||||
|
font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #666666
|
||||||
|
}
|
||||||
|
|
||||||
|
.titleRight {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.border {
|
||||||
|
border-width: 0px;
|
||||||
|
background-color: rgba(236, 245, 255, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(187, 220, 255, 1);
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: none;
|
||||||
|
width: 58px;
|
||||||
|
height: 25px;
|
||||||
|
color: #689FFF;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentItem {
|
||||||
|
.itemC {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemNo {
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.circle-btn {
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
background-color: #007aff;
|
||||||
|
border-radius: 50%;
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.yuandian {
|
||||||
|
display: inline-block;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background-color: #409eff;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xj-content {
|
||||||
|
height: 300px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xj-text {
|
||||||
|
margin-left: 10%;
|
||||||
|
margin-top: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subsectioin {
|
||||||
|
display: flex;
|
||||||
|
column-gap: 10px;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,199 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar title="巡查任务" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<view style="padding:0 10px; margin-top:50px">
|
||||||
|
<view class="time-ranger" >
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{stm}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{etm}}</text>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="" style='overflow: auto;max-height:calc(100vh - 180px)' v-if="list.length !== 0">
|
||||||
|
<view class="" v-for="(item,i) in list" :key="i" @click="toDetail(item)" style="background-color: #fff;margin-top:10px;padding: 10px;">
|
||||||
|
<view class="item">
|
||||||
|
<!-- {{item.title}} -->
|
||||||
|
<view class="title">
|
||||||
|
{{item.taskTitle}}
|
||||||
|
</view>
|
||||||
|
<view class="titleRight" >
|
||||||
|
<view class="border">
|
||||||
|
{{status[item.status]}}
|
||||||
|
</view>
|
||||||
|
<u-icon name="arrow-right" size="20"></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="contentItem">
|
||||||
|
<view class="itemC">
|
||||||
|
<text>接收时间</text>
|
||||||
|
<text>{{item.receiveTime}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemC">
|
||||||
|
<text>完成时间</text>
|
||||||
|
<text>{{item.finishTime}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="height:calc(100vh - 150px);display: flex;align-items: center;justify-content: center;background-color: #fff;" v-else>
|
||||||
|
<image src="../../../../static/empty.png" mode="" ></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showTime"
|
||||||
|
v-model="startTime"
|
||||||
|
mode="date"
|
||||||
|
@confirm="handleStartTime"
|
||||||
|
@cancel="showTime=false"
|
||||||
|
:minDate="minDate"
|
||||||
|
:maxDate="maxDate"
|
||||||
|
></u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showTime1"
|
||||||
|
v-model="endTime"
|
||||||
|
mode="date"
|
||||||
|
@confirm="handleEndTime"
|
||||||
|
@cancel="showTime1=false"
|
||||||
|
:minDate="minDate"
|
||||||
|
:maxDate="maxDate"
|
||||||
|
></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
const stm = moment().startOf('year').set({minute: 0, second: 0}).format("YYYY-MM-DD");
|
||||||
|
const etm = moment().set({minute: 0, second: 0}).format("YYYY-MM-DD");
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
status:{
|
||||||
|
0:'开始任务',
|
||||||
|
1:'继续任务',
|
||||||
|
2:'已完成'
|
||||||
|
},
|
||||||
|
minDate:moment().startOf('year').valueOf(),
|
||||||
|
maxDate:moment().valueOf(),
|
||||||
|
startTime:stm,
|
||||||
|
endTime:etm,
|
||||||
|
stm,
|
||||||
|
etm,
|
||||||
|
showTime:false,
|
||||||
|
showTime1:false,
|
||||||
|
list: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
searchHandle(){
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
handleStartTime(e){
|
||||||
|
let time = moment(e.value).format("YYYY-MM-D")
|
||||||
|
this.stm = time;
|
||||||
|
this.showTime = false
|
||||||
|
},
|
||||||
|
handleEndTime(e){
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD")
|
||||||
|
this.etm = time;
|
||||||
|
this.showTime1 = false
|
||||||
|
},
|
||||||
|
|
||||||
|
async getData(){
|
||||||
|
const userId = uni.getStorageSync('value')?.userId
|
||||||
|
const params = {
|
||||||
|
dateRangeSo:{
|
||||||
|
start:moment(this.stm).format("YYYY-MM-DD 00:00:00"),
|
||||||
|
end:moment(this.etm).format("YYYY-MM-DD 23:59:59"),
|
||||||
|
},
|
||||||
|
inspectUserId:userId,
|
||||||
|
statusList:[2]
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const res = await uni.$http.post("/gunshiApp/tsg/inspect/task/list",params)
|
||||||
|
this.list = [...res.data.data];
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toDetail(record){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:`/pages/mypage/compents/xcrw/detail/index?taskTitle=${record.taskTitle}&taskType=${record.taskType}&taskContent=${record.taskContent}&startDate=${record.startDate}&endDate=${record.endDate}&status=${record.status}&id=${record.id}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle {
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tabsClass {
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item {
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
border-width: 0px;
|
||||||
|
font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #666666
|
||||||
|
}
|
||||||
|
|
||||||
|
.titleRight {
|
||||||
|
display: flex;
|
||||||
|
.border {
|
||||||
|
border-width: 0px;
|
||||||
|
background-color: rgba(236, 245, 255, 1);
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: rgba(187, 220, 255, 1);
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: none;
|
||||||
|
width: 75px;
|
||||||
|
height: 25px;
|
||||||
|
color: #689FFF;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.contentItem{
|
||||||
|
.itemC{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
display: flex;
|
||||||
|
color: #666666;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,230 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<view class="userInfo">
|
||||||
|
<div class="icon">
|
||||||
|
<image class="image-left" style="width: 100%; height: 100%" :src="default_src" mode="aspectFill">
|
||||||
|
</image>
|
||||||
|
</div>
|
||||||
|
<div class="user">
|
||||||
|
<div class="username">{{this.userList.nickName}}</div>
|
||||||
|
<div class="userresponse">{{this.userList.dept.deptName}}</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<view class="funcBar">
|
||||||
|
<div class="funcList" v-for="(item, index) in func" :key="index">
|
||||||
|
<div @click="navigateToSubPage(func,index)">
|
||||||
|
<div class="funcIcon" style="width:30px:;height:30px">
|
||||||
|
<image class="icon-left" style="width: 100%; height: 100%" :src="item.img" mode="aspectFit">
|
||||||
|
</image>
|
||||||
|
</div>
|
||||||
|
<div class="funcTxt">{{ item.name }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<view class="version">
|
||||||
|
<div class="content">
|
||||||
|
<div class="left" style="display:flex">
|
||||||
|
<uni-icons type="info" size="25" class="icon-left"></uni-icons>
|
||||||
|
版本号
|
||||||
|
</div>
|
||||||
|
<div class="mid"></div>
|
||||||
|
<div class="right">{{version}}</div>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<view class="null"></view>
|
||||||
|
<button type="primary" class="button" @click="logout">退出账号</button>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const func = [{
|
||||||
|
img: '../../static/images/info.png',
|
||||||
|
name: '个人信息',
|
||||||
|
url: '/pages/personInfo/personInfo'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: '../../static/images/password.png',
|
||||||
|
name: '修改密码',
|
||||||
|
url: '/pages/modifyPassword/modifyPassword'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
userList: uni.getStorageSync('value'),
|
||||||
|
username: '',
|
||||||
|
userresponse: '防汛办',
|
||||||
|
version: uni.getSystemInfoSync().appWgtVersion,
|
||||||
|
func: func,
|
||||||
|
default_src: uni.getStorageSync('avatar'),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
navigateToSubPage(item,index) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: item[index].url,
|
||||||
|
animationType:'pop-in',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
logout() {
|
||||||
|
if (uni.getStorageSync('loginChecked') === true) {
|
||||||
|
uni.redirectTo({
|
||||||
|
url: '/pages/login/login'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.removeStorageSync('loginName')
|
||||||
|
uni.removeStorageSync('secretKey')
|
||||||
|
uni.removeStorageSync('Gs-Token')
|
||||||
|
uni.removeStorageSync('value')
|
||||||
|
uni.removeStorageSync('password')
|
||||||
|
uni.removeStorageSync('avatar')
|
||||||
|
uni.redirectTo({
|
||||||
|
url: '/pages/login/login'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
background-color: #f3f5f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.userInfo {
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 5vh;
|
||||||
|
margin-left: 2vw;
|
||||||
|
margin-bottom: 2vh;
|
||||||
|
width: 95%;
|
||||||
|
height: 15vh;
|
||||||
|
/* background-color: #fff; */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-left: 2vw;
|
||||||
|
background-color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
color: #007afd;
|
||||||
|
line-height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-left {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-left: 6vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.username {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 1vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.funcIcon {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
margin-left: 4px;
|
||||||
|
margin-bottom: 1vh;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.funcBar {
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-bottom: 2vh;
|
||||||
|
margin-left: 2vw;
|
||||||
|
display: flex;
|
||||||
|
justify-content: row;
|
||||||
|
align-items: center;
|
||||||
|
width: 95%;
|
||||||
|
height: 15vh;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.funcList {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 2vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.version {
|
||||||
|
margin-left: 2vw;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 95%;
|
||||||
|
height: 8vh;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left {
|
||||||
|
width: 100px;
|
||||||
|
text-align: start;
|
||||||
|
margin-left: 1vw;
|
||||||
|
line-height: 8vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-left {
|
||||||
|
align-items: center;
|
||||||
|
width: 30px;
|
||||||
|
/* background-color: red; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.mid {
|
||||||
|
flex: 1;
|
||||||
|
line-height: 8vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
width: 100px;
|
||||||
|
text-align: end;
|
||||||
|
line-height: 8vh;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.null {
|
||||||
|
height: 45vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
border-radius: 10px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
width: 92%;
|
||||||
|
height: 8vh;
|
||||||
|
font-size: 20px;
|
||||||
|
color: white;
|
||||||
|
background-color: #007afd;
|
||||||
|
margin-bottom: 55px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,175 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'99%',position:'relative'}">
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
<div class="row" v-if="!record.isDisabled">
|
||||||
|
<text class="lf">指令内容:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--textarea
|
||||||
|
v-model="value"
|
||||||
|
height=100
|
||||||
|
></u--textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{margin:'0 10px'}"><u-divider></u-divider></div>
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="row2" v-for="(item,index) in list">
|
||||||
|
<text>{{item.tm+' '+item.content}}</text>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{width:'100%',position:'absolute',bottom:'40px'}" v-if="!record.isDisabled">
|
||||||
|
<u-button
|
||||||
|
type="primary"
|
||||||
|
text="反馈"
|
||||||
|
customStyle="margin-top: 20px"
|
||||||
|
@click="show1 = true"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
type="primary"
|
||||||
|
text="反馈并结束"
|
||||||
|
customStyle="margin-top: 10px"
|
||||||
|
@click="show2 = true"
|
||||||
|
></u-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<u-modal
|
||||||
|
width="250"
|
||||||
|
:show="show1"
|
||||||
|
showCancelButton
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="submit1"
|
||||||
|
@cancel="() => show1 = false"
|
||||||
|
@close="() => show1 = false"
|
||||||
|
>
|
||||||
|
<view class="slot-content">
|
||||||
|
<rich-text :nodes="'确认反馈?'" :style="{fontSize:'16px'}"></rich-text>
|
||||||
|
</view>
|
||||||
|
</u-modal>
|
||||||
|
<u-modal
|
||||||
|
width="250"
|
||||||
|
:show="show2"
|
||||||
|
showCancelButton
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="submit2"
|
||||||
|
@cancel="() => show2 = false"
|
||||||
|
@close="() => show2 = false"
|
||||||
|
>
|
||||||
|
<view class="slot-content">
|
||||||
|
<rich-text :nodes="'确认反馈并结束?'" :style="{fontSize:'16px'}"></rich-text>
|
||||||
|
</view>
|
||||||
|
</u-modal>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
record:{
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value:'',
|
||||||
|
list:[],
|
||||||
|
show1:false,
|
||||||
|
show2:false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tabsChange(item) {
|
||||||
|
},
|
||||||
|
async getData() {
|
||||||
|
try{
|
||||||
|
const res = await uni.$http.get('/gunshiApp/xfflood/xfEmerDispatchR/getFeedbackById/'+this.record.id)
|
||||||
|
console.log('res',res)
|
||||||
|
this.list = res.data.data
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async submit1() {
|
||||||
|
this.show1 = false
|
||||||
|
try{
|
||||||
|
if(!this.value){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请输入指令内容",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const params = {
|
||||||
|
dispatchId:this.record.id,
|
||||||
|
content:this.value,
|
||||||
|
}
|
||||||
|
console.log('params',params)
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/xfEmerDispatchR/feedback',params)
|
||||||
|
console.log('res',res)
|
||||||
|
this.value = ''
|
||||||
|
this.getData()
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async submit2() {
|
||||||
|
this.show2 = false
|
||||||
|
try{
|
||||||
|
if(!this.value){
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请输入指令内容",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const params = {
|
||||||
|
dispatchId:this.record.id,
|
||||||
|
content:this.value,
|
||||||
|
}
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/xfEmerDispatchR/feedbackAndEnd',params)
|
||||||
|
uni.navigateBack()
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.row{
|
||||||
|
display: flex;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.lf{
|
||||||
|
width: 25%;
|
||||||
|
min-height: 40px;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 38px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
.rf{
|
||||||
|
width: 75%;
|
||||||
|
min-height: 40px;
|
||||||
|
padding-right: 20px;
|
||||||
|
padding-top: 1px;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 5px 5px;
|
||||||
|
padding: 5px 10px;
|
||||||
|
height: calc( 100vh - 410px );
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.row2{
|
||||||
|
background-color: rgba(217, 217, 217, 1);
|
||||||
|
margin: 10px 0;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,314 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden',background:'#f7f7f7'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
title="调令反馈"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
slot="right"
|
||||||
|
hover-class="is-hover"
|
||||||
|
class="searchBox_right_btn"
|
||||||
|
hover-stay-time=100
|
||||||
|
@click="myShow"
|
||||||
|
>
|
||||||
|
<u--image :src="'../../static/images/filter.png'" width="20px" height="20px"></u--image>
|
||||||
|
</view>
|
||||||
|
</u-navbar>
|
||||||
|
<u-tabs
|
||||||
|
:list="tabsOptions"
|
||||||
|
@click="tabsChange"
|
||||||
|
:scrollable=false
|
||||||
|
class="tabsClass"
|
||||||
|
:activeStyle="{color: 'rgb(37, 157, 255)',fontSize: '16px'}"
|
||||||
|
:inactiveStyle="{color: '#606266',fontSize: '16px'}"
|
||||||
|
lineColor="transparent"
|
||||||
|
itemStyle="height: 44px"
|
||||||
|
>
|
||||||
|
</u-tabs>
|
||||||
|
<div class="mybody">
|
||||||
|
<div class="countNum"><text>共{{list.length}}条信息</text></div>
|
||||||
|
<div v-for="(item,index) in list" class="listItem" @click="myNavigateTo(item)">
|
||||||
|
<div class="row1"><text>{{item.year+'年度调令第'+item.serial+'号'}}</text></div>
|
||||||
|
<div class="row2">
|
||||||
|
<div>
|
||||||
|
<text :style="{marginRight:'5px'}">{{item.createUserName}}</text>
|
||||||
|
<text>{{item.createTm}}</text>
|
||||||
|
</div>
|
||||||
|
<div><text>{{myType[item.dispatchType]}}</text></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'100px'}"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<u-popup
|
||||||
|
:show="show"
|
||||||
|
mode="right"
|
||||||
|
:safeAreaInsetTop='true'
|
||||||
|
:closeOnClickOverlay='false'
|
||||||
|
@close="close"
|
||||||
|
@open="myShow">
|
||||||
|
<view :style="{padding:'10px',width:'250px'}">
|
||||||
|
<u-toast ref="uToast"></u-toast>
|
||||||
|
<text class="title">按类型</text>
|
||||||
|
<u-checkbox-group
|
||||||
|
placement="row"
|
||||||
|
v-model="check"
|
||||||
|
:style="{padding:'10px 0px 20px 0px'}"
|
||||||
|
>
|
||||||
|
<u-checkbox name="0" label="水库调洪" class="checkItem"></u-checkbox>
|
||||||
|
<u-checkbox name="1" label="人员转移" class="checkItem"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<div :style="{display:'flex',alignItems:'center'}">
|
||||||
|
<text class="title">按时间</text>
|
||||||
|
<u-switch v-model="isTime" size="20" :style="{margin:'2px 0 0 10px'}"></u-switch>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}" v-if="isTime">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showStmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getStmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%',lineHeight:'32px',textAlign:'center'}">至</text>
|
||||||
|
</div>
|
||||||
|
<div :style="{display:'flex',marginTop:'10px'}" v-if="isTime">
|
||||||
|
<view
|
||||||
|
class="tmPicker"
|
||||||
|
@click="showEtmPicker = true"
|
||||||
|
hover-class="is-hover"
|
||||||
|
hover-stay-time=100
|
||||||
|
>{{getEtmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||||||
|
</view>
|
||||||
|
<text :style="{width:'20%'}"></text>
|
||||||
|
</div>
|
||||||
|
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px',marginRight:'10px'}"
|
||||||
|
text="重置"
|
||||||
|
@click="reSet"
|
||||||
|
></u-button>
|
||||||
|
<u-button
|
||||||
|
:style="{width:'80px'}"
|
||||||
|
color="rgba(217, 0, 27, 1)"
|
||||||
|
type="primary"
|
||||||
|
text="确定"
|
||||||
|
@click="submit"
|
||||||
|
></u-button>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showStmPicker"
|
||||||
|
v-model="stm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showStmPicker = false"
|
||||||
|
@cancel="showStmPicker = false"
|
||||||
|
@close="showStmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showEtmPicker"
|
||||||
|
v-model="etm"
|
||||||
|
mode="datetime"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="showEtmPicker = false"
|
||||||
|
@cancel="showEtmPicker = false"
|
||||||
|
@close="showEtmPicker = false"
|
||||||
|
>
|
||||||
|
</u-datetime-picker>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
const tabsOptions = [
|
||||||
|
{
|
||||||
|
name:'执行中',
|
||||||
|
value:1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'完成',
|
||||||
|
value:2
|
||||||
|
},
|
||||||
|
]
|
||||||
|
const myType = {
|
||||||
|
0:'水库调洪',
|
||||||
|
1:'人员转移'
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tabsOptions:tabsOptions,
|
||||||
|
myType:myType,
|
||||||
|
show:false,
|
||||||
|
tabVal:1,
|
||||||
|
check:['0','1'],
|
||||||
|
showStmPicker:false,
|
||||||
|
showEtmPicker:false,
|
||||||
|
stm:Number(moment(new Date()).add(-7,'days')),
|
||||||
|
etm:Number(new Date()),
|
||||||
|
isTime:false,
|
||||||
|
list:[],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getStmStr() {
|
||||||
|
return moment(this.stm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
getEtmStr() {
|
||||||
|
return moment(this.etm).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tabsChange(item) {
|
||||||
|
this.tabVal = item.value
|
||||||
|
this.submit()
|
||||||
|
},
|
||||||
|
myShow() {
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
reSet() {
|
||||||
|
this.isTime = false
|
||||||
|
this.stm = Number(moment(new Date()).add(-7,'days'))
|
||||||
|
this.etm = Number(new Date())
|
||||||
|
this.check = ['0','1']
|
||||||
|
},
|
||||||
|
async submit() {
|
||||||
|
try{
|
||||||
|
const params = {
|
||||||
|
status:this.tabVal,
|
||||||
|
dispatchTypeList:this.check,
|
||||||
|
}
|
||||||
|
if(this.check.length===0){
|
||||||
|
params.dispatchTypeList = ['不可能存在的值']
|
||||||
|
}
|
||||||
|
if(this.isTime){
|
||||||
|
params.dateTimeRangeSo = {
|
||||||
|
start:moment(this.stm).format('YYYY-MM-DD HH:mm:sss'),
|
||||||
|
end:moment(this.etm).format('YYYY-MM-DD HH:mm:sss')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('params',params)
|
||||||
|
const res = await uni.$http.post('/gunshiApp/xfflood/xfEmerDispatchR/app/list',params)
|
||||||
|
console.log('res',res)
|
||||||
|
this.list = res.data.data
|
||||||
|
this.close()
|
||||||
|
}catch(e){
|
||||||
|
//TODO handle the exception
|
||||||
|
this.$refs.uToast.show({
|
||||||
|
type: 'error',
|
||||||
|
title: '失败主题',
|
||||||
|
message: "请求失败",
|
||||||
|
})
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.close()
|
||||||
|
},1000)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
myNavigateTo (record) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/orderFeedback/orderInformation?obj='+JSON.stringify({...record,isDisabled:this.tabVal===1?false:true}) // 跳转到对应路径的页面
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.submit()
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.submit()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle{
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.tabsClass{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.searchBox_right_btn{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.checkItem{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.tmPicker{
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid rgba(240, 240, 240, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
// padding-left: 10px;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 5px 5px;
|
||||||
|
padding: 5px 20px;
|
||||||
|
height: calc( 100vh - 100px );
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.countNum{
|
||||||
|
width: 100%;
|
||||||
|
text-align: right;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.listItem{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
padding: 10px 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.row1{
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #333333;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
.row2{
|
||||||
|
font-size: 12px;
|
||||||
|
color: #999999;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,146 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'hidden',background:'#f7f7f7'}">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<u-navbar
|
||||||
|
:title="record.year+'年度调令第'+record.serial+'号'"
|
||||||
|
:autoBack="true"
|
||||||
|
:titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}"
|
||||||
|
:height='44'
|
||||||
|
:safeAreaInsetTop=true
|
||||||
|
leftIconSize='20'
|
||||||
|
leftIconColor='rgb(153, 153, 153)'
|
||||||
|
>
|
||||||
|
</u-navbar>
|
||||||
|
<u-tabs
|
||||||
|
:list="tabsOptions"
|
||||||
|
@click="tabsChange"
|
||||||
|
:scrollable=false
|
||||||
|
class="tabsClass"
|
||||||
|
:activeStyle="{color: 'rgb(37, 157, 255)',fontSize: '16px'}"
|
||||||
|
:inactiveStyle="{color: '#606266',fontSize: '16px'}"
|
||||||
|
lineColor="transparent"
|
||||||
|
itemStyle="height: 44px"
|
||||||
|
>
|
||||||
|
</u-tabs>
|
||||||
|
<div class="mybody">
|
||||||
|
<uniZl v-if="tabsVal==='uniZl'" :record="record"></uniZl>
|
||||||
|
<uniFk v-if="tabsVal==='uniFk'" :record="record"></uniFk>
|
||||||
|
</div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
import uniZl from './zl.vue';
|
||||||
|
import uniFk from './fk.vue'
|
||||||
|
const tabsOptions = [
|
||||||
|
{
|
||||||
|
name:'调度指令',
|
||||||
|
components:'uniZl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'执行反馈',
|
||||||
|
components:'uniFk'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { uniZl, uniFk },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tabsOptions:tabsOptions,
|
||||||
|
tabsVal:'uniZl',
|
||||||
|
record:{}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad(props){
|
||||||
|
const myRecord = JSON.parse(props.obj)
|
||||||
|
this.record = myRecord
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tabsChange(item) {
|
||||||
|
this.tabsVal = item.components
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.myTitleStyle{
|
||||||
|
font-size: 30px;
|
||||||
|
background-color: red;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
.tabsClass{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin-top: 44px;
|
||||||
|
height: 44px;
|
||||||
|
padding: 0 40px;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.searchBox_right_btn{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.is-hover{
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.checkItem{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.tmPicker{
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid rgba(240, 240, 240, 1);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
// padding-left: 10px;
|
||||||
|
}
|
||||||
|
.mybody{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin: 5px 5px;
|
||||||
|
// padding: 5px 20px;
|
||||||
|
height: calc( 100vh - 100px );
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
.countNum{
|
||||||
|
width: 100%;
|
||||||
|
text-align: right;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.listItem{
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
padding: 10px 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.row1{
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #333333;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
.row2{
|
||||||
|
font-size: 12px;
|
||||||
|
color: #999999;
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,151 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>调度令编号:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="record.serial"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>调度令年度:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="record.year"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>执行单位:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="record.executeOrgName"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>调度类型:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="myType[record.dispatchType]"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">抄送单位:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="record.forwardOrgName"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf"><text :style="{color:'red'}">*</text>计划执行时间:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="record.startTm"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">计划结束时间:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="record.endTm"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">指令内容:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--textarea
|
||||||
|
v-model="record.content"
|
||||||
|
:disabled='true'
|
||||||
|
height=200
|
||||||
|
></u--textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">指令日期:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="record.createTm"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<text class="lf">指令发起人:</text>
|
||||||
|
<div class="rf">
|
||||||
|
<u--input
|
||||||
|
border="surround"
|
||||||
|
v-model="record.createUserName"
|
||||||
|
:disabled='true'
|
||||||
|
></u--input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :style="{height:'100px'}"></div>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
const myType = {
|
||||||
|
0:'水库调洪',
|
||||||
|
1:'人员转移'
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
record:{
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
myType:myType
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tabsChange(item) {
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.row{
|
||||||
|
display: flex;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.lf{
|
||||||
|
width: 35%;
|
||||||
|
min-height: 40px;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 38px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
.rf{
|
||||||
|
width: 65%;
|
||||||
|
min-height: 40px;
|
||||||
|
padding-right: 20px;
|
||||||
|
padding-top: 1px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,235 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<div class="userinfo">
|
||||||
|
<div class="icon" @click="goBack">
|
||||||
|
<uni-icons type="back" size="25" color="white"></uni-icons>
|
||||||
|
</div>
|
||||||
|
<div class="Header">
|
||||||
|
<span>个人信息</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<uni-list class="info">
|
||||||
|
<uni-list-item title="头像" show-arrow="true" clickable class="listContainer" @click="showActionSheet(default_src)">
|
||||||
|
<template v-slot:footer>
|
||||||
|
<image class="slot-image" :src="default_src" mode="aspectFill"></image>
|
||||||
|
</template>
|
||||||
|
</uni-list-item>
|
||||||
|
<uni-list-item v-for="(item, index) in userListShow" :key="index" clickable :title="item.name"
|
||||||
|
class="listContainer" @click="modifyValue(item)">
|
||||||
|
<template v-slot:footer>
|
||||||
|
<div class="item" @click.stop="changeItemInfo(item,index)">
|
||||||
|
<text>{{item.info}}</text>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</uni-list-item>
|
||||||
|
</uni-list>
|
||||||
|
<button type="primary" class="button" @click="save">保存</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let modify = false
|
||||||
|
//访问数据
|
||||||
|
const userList = uni.getStorageSync('value')
|
||||||
|
let userListShow = [{
|
||||||
|
name: '手机号码',
|
||||||
|
info: userList.phonenumber
|
||||||
|
}, ]
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
userList: userList,
|
||||||
|
userListShow: userListShow,
|
||||||
|
modify: modify,
|
||||||
|
default_src: uni.getStorageSync('avatar'),
|
||||||
|
phone: userList.phonenumber,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() { //挂载时重新获取一次Storage数据
|
||||||
|
this.userList = uni.getStorageSync('value')
|
||||||
|
this.userListShow[0].info = this.userList.phonenumber
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
goBack() {
|
||||||
|
uni.navigateBack()
|
||||||
|
},
|
||||||
|
showActionSheet(default_src) { //修改头像
|
||||||
|
uni.showActionSheet({
|
||||||
|
itemList: ['拍照/上传照片'],
|
||||||
|
success: (res) => {
|
||||||
|
console.log('选择了第' + (res.tapIndex + 1) + '个选项');
|
||||||
|
if (res.tapIndex === 0) { //拍照上传照片
|
||||||
|
uni.chooseImage({
|
||||||
|
count: 1,
|
||||||
|
sizeType: ['origin', 'compressed'],
|
||||||
|
sourceType: ['camera', 'album'],
|
||||||
|
success: (res) => {
|
||||||
|
const tempFilePaths = res.tempFilePaths;
|
||||||
|
console.log('--------拍照上传照片--------', res);
|
||||||
|
this.default_src = tempFilePaths[0]
|
||||||
|
uni.uploadFile({
|
||||||
|
url: uni.$http.baseUrl + '/gunshiApp/tsg/system/user/profile/avatar',
|
||||||
|
fileType: 'image',
|
||||||
|
filePath: tempFilePaths[0],
|
||||||
|
name: 'avatarfile',
|
||||||
|
header: {
|
||||||
|
'Authorization': 'Bearer ' + uni.getStorageSync('Gs-Token')
|
||||||
|
},
|
||||||
|
success: (res) => {
|
||||||
|
const imgUrl = JSON.parse(res.data).imgUrl;
|
||||||
|
this.getImgFlow(imgUrl)
|
||||||
|
// uni.setStorageSync("imgUrl",imgUrl)
|
||||||
|
uni.$showMsg("上传成功")
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
console.log('弹窗取消');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
getImgFlow(imgUrl) {
|
||||||
|
uni.request({
|
||||||
|
url: 'http://local.gunshiiot.com:18083' +
|
||||||
|
`/gunshiApp/tsg/common/download/resource?resource=${imgUrl}`,
|
||||||
|
responseType: 'arraybuffer',
|
||||||
|
success: (res) => {
|
||||||
|
// 将arraybuffer转换为Base64编码
|
||||||
|
let base64 = uni.arrayBufferToBase64(res.data);
|
||||||
|
const p = 'data:image/png;base64,' + base64;
|
||||||
|
uni.setStorageSync("avatar",p)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
modifyValue(item) {
|
||||||
|
console.log(item);
|
||||||
|
|
||||||
|
},
|
||||||
|
changeItemInfo(item, index) { //修改电话
|
||||||
|
uni.showModal({
|
||||||
|
title: "修改" + item.name,
|
||||||
|
editable: true,
|
||||||
|
placeholderText: item.info,
|
||||||
|
confirmText: "确认",
|
||||||
|
cancelText: "取消",
|
||||||
|
success: (res) => {
|
||||||
|
const phoneReg = /^[1][3-9]\d{9}$/;
|
||||||
|
if (res.confirm) {
|
||||||
|
if (phoneReg.test(res.content)) {
|
||||||
|
this.userListShow[index].info = res.content
|
||||||
|
this.phone = res.content
|
||||||
|
uni.showToast({
|
||||||
|
title: "修改成功,请保存",
|
||||||
|
icon: "none",
|
||||||
|
duration: 1000,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: "请输入正确手机号码",
|
||||||
|
icon: "none",
|
||||||
|
duration: 1000,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
console.log('取消');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
async save() {
|
||||||
|
try {
|
||||||
|
let new_userList = uni.getStorageSync('value')
|
||||||
|
new_userList.phonenumber = this.phone;
|
||||||
|
const
|
||||||
|
{data}
|
||||||
|
=await uni.$http.put('/gunshiApp/tsg/system/user/profile', new_userList);
|
||||||
|
if (data.code == 200) {
|
||||||
|
uni.setStorageSync('value', new_userList)
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/mypage/mypage'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
uni.$showMsg("保存成功")
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.userinfo {
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
margin-top: 5vh;
|
||||||
|
margin-left: 2vw;
|
||||||
|
margin-bottom: 2vh;
|
||||||
|
align-items: center;
|
||||||
|
width: 95%;
|
||||||
|
height: 6vh;
|
||||||
|
background-color: #007afd;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 6vw;
|
||||||
|
height: 6vh;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 6vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex: 0.95;
|
||||||
|
justify-content: center;
|
||||||
|
color: white;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
margin: 1vh;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.listContainer {
|
||||||
|
height: 6vh;
|
||||||
|
line-height: 8vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
margin-top: 60vh;
|
||||||
|
border-radius: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
width: 92%;
|
||||||
|
height: 6vh;
|
||||||
|
font-size: 20px;
|
||||||
|
color: white;
|
||||||
|
background-color: #007afd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slot-image {
|
||||||
|
margin-top: 12px;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
<template>
|
||||||
|
<div class="table_div">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 11%;">
|
||||||
|
<div style="margin-top: 6px;">序号</div>
|
||||||
|
</th>
|
||||||
|
<th style="width: 27%">
|
||||||
|
<div style="margin-top: 6px;">站名</div></th>
|
||||||
|
<th style="width: 20%;">
|
||||||
|
<div>时段雨量</div>
|
||||||
|
<div style="margin-top: -12px;">(mm)</div>
|
||||||
|
</th>
|
||||||
|
<th style="width: 20%;" >
|
||||||
|
<div>昨日降雨</div>
|
||||||
|
<div style="margin-top: -12px;">(mm)</div>
|
||||||
|
</th>
|
||||||
|
<th style="width: 22%">
|
||||||
|
<div style="margin-top: 6px;">所属政区</div></th>
|
||||||
|
</tr>
|
||||||
|
<!-- :style="{'max-height':height + 'px', 'overflow-y': 'auto',width:'100%'}" -->
|
||||||
|
<div class="scroll-table">
|
||||||
|
<tr v-for="(item, index) in list" :key="index" style="width:100%">
|
||||||
|
<td style="width: 11%;">{{ index + 1 }}</td>
|
||||||
|
<td style="width: 27%; color: #3399ef; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;" @click="jumpDetail(item)">
|
||||||
|
{{ item.stnm }}</td>
|
||||||
|
<td style="width: 20%">{{ item.drp ? item.drp : item.drp == 0 ? 0 : '-' }}</td>
|
||||||
|
<td style="width: 20%">{{ item.yesDrp ? item.yesDrp : item.yesDrp == 0 ? 0 : '-' }}</td>
|
||||||
|
<td style="width:23%;">{{ item.adnm }}</td>
|
||||||
|
</tr>
|
||||||
|
<div style="height:160px"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
list:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
},
|
||||||
|
height:{
|
||||||
|
type:Number,
|
||||||
|
default:0,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods:{
|
||||||
|
jumpDetail(params){
|
||||||
|
console.log(123)
|
||||||
|
uni.navigateTo({
|
||||||
|
url:`/pages/rainDetail/rainDetail?stcd=${params.stcd}&stnm=${params.stnm}&sttp=${params.sttp}&source=${params.source}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
max-height: calc(100vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
line-height: 56rpx;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
height: 80rpx;
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
// font-weight: bold;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(100vh - 160px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
.table_cur td {
|
||||||
|
height: 65rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,550 @@
|
||||||
|
<template>
|
||||||
|
<view class="rain-box" style="overflow:hidden;height:100vh">
|
||||||
|
<u-status-bar ></u-status-bar>
|
||||||
|
<!-- <view style="height: var(--status-bar-height); width: 100%;"></view> -->
|
||||||
|
<view class="nav-bar">
|
||||||
|
<u-icon name="arrow-left" color="#000" size="20" @click="backTo" style="margin-left:10px"></u-icon>
|
||||||
|
<view style="font-size:18px">
|
||||||
|
雨情
|
||||||
|
</view>
|
||||||
|
<!-- <u-icon name="arrow-right" color="#000" size="28"></u-icon> -->
|
||||||
|
<view @click="popupOpen = true" style="margin-right:10px">
|
||||||
|
<image
|
||||||
|
src="../../static/images/filter.png"
|
||||||
|
style="width: 20px; height: 20px; "
|
||||||
|
|
||||||
|
>
|
||||||
|
</image>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 搜索以及多级下拉 -->
|
||||||
|
<view class="search-box">
|
||||||
|
<view class="search-item">
|
||||||
|
<view style="display:flex" v-show="limit == 1">
|
||||||
|
<view class="" @click="handleClick" >
|
||||||
|
{{selecetItem.adnm == "全部" ? "咸丰县" : selecetItem.adnm || columns[0][0].adnm}}
|
||||||
|
</view>
|
||||||
|
<u-icon name="arrow-down-fill" color="#000" size="20" v-show="switchIcon"></u-icon>
|
||||||
|
<u-icon name="arrow-up-fill" color="#000" size="20" v-show="!switchIcon"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view class="rain-input" style="width: 50%;">
|
||||||
|
<u-input
|
||||||
|
placeholder="请输入站点"
|
||||||
|
prefixIcon="search"
|
||||||
|
prefixIconStyle="font-size: 22px;color: #909399"
|
||||||
|
@change="changeForm"
|
||||||
|
:value="formData.stArg"
|
||||||
|
></u-input>
|
||||||
|
</view>
|
||||||
|
<view style="display:flex" v-show="limit == 1">
|
||||||
|
<view class="" @click="handleClick1" >
|
||||||
|
{{selecetItem1.basName == "全部" ? "流域" : selecetItem1.basName || "流域"}}
|
||||||
|
</view>
|
||||||
|
<u-icon name="arrow-down-fill" color="#000" size="20" v-show="switchIcon1"></u-icon>
|
||||||
|
<u-icon name="arrow-up-fill" color="#000" size="20" v-show="!switchIcon1"></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 单纯下拉 -->
|
||||||
|
<view class="time-select">
|
||||||
|
<view :class="{'jiangyu':true,'noClick':rainTime}" @click="handleJiangyu" >
|
||||||
|
<text>{{formData.orderType ? "按昨日降雨降序" :"按时段降雨降序"}}</text>
|
||||||
|
<u-icon name="arrow-down-fill" color="#000" size="20" v-show="!jiangyu"></u-icon>
|
||||||
|
<u-icon name="arrow-up-fill" color="#000" size="20" v-show="jiangyu"></u-icon>
|
||||||
|
<view class="jiangyu-dropdown" v-show="this.jiangyu">
|
||||||
|
<view :class="{'active': formData.orderType == 0,'no_f':true}" @click="rainsort(0)" style="border-top: 1px solid #dfdfdf;">
|
||||||
|
<text >按时段降雨降序</text>
|
||||||
|
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="formData.orderType == 0"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view :class="{'active':formData.orderType == 1,'no_f':true}" @click="rainsort(1)" >
|
||||||
|
<text>按昨日降雨降序</text>
|
||||||
|
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="formData.orderType == 1"></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="rain-time" @click="handleTime">
|
||||||
|
<text>{{formData.timeType == 1 ? "1h" :
|
||||||
|
formData.timeType == 3 ? "3h" :
|
||||||
|
formData.timeType == 6 ? "6h" :
|
||||||
|
formData.timeType == 12 ? "12h" :
|
||||||
|
formData.timeType == 24 ? "24h" : ''
|
||||||
|
|
||||||
|
}}</text>
|
||||||
|
<u-icon name="arrow-down-fill" color="#000" size="20" v-show="!rainTime"></u-icon>
|
||||||
|
<u-icon name="arrow-up-fill" color="#000" size="20" v-show="rainTime"></u-icon>
|
||||||
|
<view class="rain-time-dropdown" v-show="rainTime">
|
||||||
|
<view :class="{'active': formData.timeType == 1,'no_f':true}" @click="timesort(1)" style="border-top: 1px solid #dfdfdf;">
|
||||||
|
<text >1h</text>
|
||||||
|
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="formData.timeType == 1"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view :class="{'active': formData.timeType == 3,'no_f':true}" @click="timesort(3)" >
|
||||||
|
<text >3h</text>
|
||||||
|
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="formData.timeType == 3"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view :class="{'active': formData.timeType == 6,'no_f':true}" @click="timesort(6)" >
|
||||||
|
<text >6h</text>
|
||||||
|
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="formData.timeType == 6"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view :class="{'active': formData.timeType == 12,'no_f':true}" @click="timesort(12)" >
|
||||||
|
<text >12h</text>
|
||||||
|
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="formData.timeType == 12"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view :class="{'active': formData.timeType == 24,'no_f':true}" @click="timesort(24)" >
|
||||||
|
<text>24h</text>
|
||||||
|
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="formData.timeType == 24"></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<!-- 内容部分 -->
|
||||||
|
<view style="width: 100%; height: 10px; background-color: #f7f7f7;">
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<!-- 时间段 -->
|
||||||
|
<view style="padding: 1% 0%;width:100vw; text-align: center; color: #f7b156;">
|
||||||
|
统计时段:{{tm.stm}}至{{tm.etm}}
|
||||||
|
</view>
|
||||||
|
<view style="width:100%">
|
||||||
|
<Table :list="rainList" :height='tableHeight'/>
|
||||||
|
</view>
|
||||||
|
<u-picker
|
||||||
|
:show="show"
|
||||||
|
ref="uPicker"
|
||||||
|
:columns="columns"
|
||||||
|
@confirm="confirm"
|
||||||
|
@change="changeHandler"
|
||||||
|
@cancel="cancel"
|
||||||
|
keyName="adnm"
|
||||||
|
>
|
||||||
|
</u-picker>
|
||||||
|
<u-picker
|
||||||
|
:show="show1"
|
||||||
|
ref="uPicker1"
|
||||||
|
:columns="columns1"
|
||||||
|
@confirm="confirm1"
|
||||||
|
@cancel="cancel1"
|
||||||
|
keyName="basName"
|
||||||
|
>
|
||||||
|
</u-picker>
|
||||||
|
<u-popup :show="popupOpen" mode="right" @close="popupOpen=false" >
|
||||||
|
<view style="padding: 30px 20px; ">
|
||||||
|
<text style="font-weight: bold;">按类型</text>
|
||||||
|
<view style="margin-bottom: 10px; margin-left: -5px;">
|
||||||
|
<u-checkbox-group
|
||||||
|
v-model="formData.source"
|
||||||
|
@change="checkboxChange"
|
||||||
|
>
|
||||||
|
<u-checkbox
|
||||||
|
:customStyle="{margin: '7px'}"
|
||||||
|
v-for="(item, index) in checkboxList1"
|
||||||
|
:key="index"
|
||||||
|
:label="item.name"
|
||||||
|
:name="item.value"
|
||||||
|
>
|
||||||
|
</u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <text style="font-weight: bold;">按时间</text>
|
||||||
|
<view class="example-body" style="display: flex; align-items: center; margin-bottom: 10px; margin-top: 10px;">
|
||||||
|
<uni-datetime-picker type="datetime" v-model="stm" @change="(e) => this.stm = e" />
|
||||||
|
<text style="margin-left: 10px;">至</text>
|
||||||
|
</view>
|
||||||
|
<view class="example-body" style="width: 92%;">
|
||||||
|
<uni-datetime-picker type="datetime" v-model="etm" @change="(e) => this.etm = e" />
|
||||||
|
</view>
|
||||||
|
<view style="display: flex; margin-top: 10px;">
|
||||||
|
<u-button class="first-btn" text="昨日08:00~当前时间"></u-button>
|
||||||
|
<u-button class="second-btn" text="今天08:00~当前时间"></u-button>
|
||||||
|
</view> -->
|
||||||
|
<view style="display: flex; position:absolute;bottom:20px;right:20px">
|
||||||
|
<u-button text="重置" class="bottom-btn1"
|
||||||
|
@click="formData = {...formData,source}"></u-button>
|
||||||
|
<u-button text="确认" color="#d9001b" class="bottom-btn2" @click="popupOpen = false"></u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Table from "./Table"
|
||||||
|
import filter from "../../static/images/filter.png"
|
||||||
|
import moment from "moment"
|
||||||
|
import {disType} from "../utils/dicType.js"
|
||||||
|
const adcd = uni.getStorageSync('value').adcd
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
show1:false,
|
||||||
|
switchIcon:true,
|
||||||
|
switchIcon1:true,
|
||||||
|
rainList:[],//雨情数据
|
||||||
|
selecetItem:{},
|
||||||
|
selecetItem1:{},
|
||||||
|
jiangyu:false, //显示下拉
|
||||||
|
rainTime:false, //显示下拉,
|
||||||
|
selectJyOne:1,//选中降雨最后一个元素,
|
||||||
|
selectTimeOne:4, //选中时间的最有一个元素
|
||||||
|
popupOpen:false, //抽屉打开
|
||||||
|
source:["SH","SW","QX","SK"],
|
||||||
|
// checkboxValue1:["SH","SW","QX","SK"],
|
||||||
|
// 基本案列数据
|
||||||
|
checkboxList1: [{
|
||||||
|
name: '山洪',
|
||||||
|
value: "SH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水文',
|
||||||
|
value: "SW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '气象',
|
||||||
|
value: "QX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水库',
|
||||||
|
value: "SK"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
stm: '', //开始时间,
|
||||||
|
etm:"",//结束时间
|
||||||
|
columns: //政区下拉
|
||||||
|
[
|
||||||
|
[{"adnm": "咸丰县", "adcd":adcd }],[]
|
||||||
|
],
|
||||||
|
columnData: [[]],
|
||||||
|
columns1:[[]], //流域选择,
|
||||||
|
formData:{ //表单数据
|
||||||
|
timeType:24,
|
||||||
|
orderType:1,
|
||||||
|
basCode:'',
|
||||||
|
source:["SH","SW","QX","SK"],
|
||||||
|
stArg:'',
|
||||||
|
adcd:disType(uni.getStorageSync('value').adcd) == 1 ? undefined :uni.getStorageSync('value').adcd,
|
||||||
|
etm:moment().format("YYYY-MM-DD HH:mm"),
|
||||||
|
stm:moment().subtract(1, 'day').format("YYYY-MM-DD HH:mm")
|
||||||
|
// etm:moment().set({ hour: 8, minute: 0, second: 0, millisecond: 0 }).format("YYYY-MM-DD HH:mm"),
|
||||||
|
// stm:moment().subtract(1, 'day').set({ hour: 8, minute: 0, second: 0, millisecond: 0 }).format("YYYY-MM-DD HH:mm")
|
||||||
|
},
|
||||||
|
tableHeight:0,
|
||||||
|
limit:disType(uni.getStorageSync('value').adcd)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
Table
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
tm(){
|
||||||
|
return {
|
||||||
|
stm:moment().subtract(this.formData.timeType, 'hours').format("YYYY-MM-DD HH:mm"),
|
||||||
|
etm:moment().format("YYYY-MM-DD HH:mm")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
formData(newV, oldV){
|
||||||
|
console.log("www",newV)
|
||||||
|
this.getRainList()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeForm(e){
|
||||||
|
this.formData = {...this.formData,stArg:e}
|
||||||
|
},
|
||||||
|
handleJiangyu(e){
|
||||||
|
if(this.rainTime){
|
||||||
|
e.stopPropagation();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.jiangyu = !this.jiangyu
|
||||||
|
},
|
||||||
|
handleTime(e){
|
||||||
|
if(this.jiangyu){
|
||||||
|
e.stopPropagation();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.rainTime = !this.rainTime
|
||||||
|
},
|
||||||
|
//按昨日降雨排序
|
||||||
|
rainsort(e){
|
||||||
|
this.formData = {...this.formData,orderType: e ? 1 : 0}
|
||||||
|
},
|
||||||
|
// 按小时排序
|
||||||
|
timesort(e){
|
||||||
|
this.formData = {
|
||||||
|
...this.formData,
|
||||||
|
stm:moment().subtract(e, 'hours').format("YYYY-MM-DD HH:mm"),
|
||||||
|
etm:moment().format("YYYY-MM-DD HH:mm"),
|
||||||
|
timeType:e
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeHandler(e) {
|
||||||
|
const {
|
||||||
|
columnIndex,
|
||||||
|
value,
|
||||||
|
values, // values为当前变化列的数组内容
|
||||||
|
index,
|
||||||
|
// 微信小程序无法将picker实例传出来,只能通过ref操作
|
||||||
|
picker = this.$refs.uPicker
|
||||||
|
} = e
|
||||||
|
// 当第一列值发生变化时,变化第二列(后一列)对应的选项
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
// picker为选择器this实例,变化第二列对应的选项
|
||||||
|
picker.setColumnValues(1, this.columnData[index])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 回调参数为包含columnIndex、value、values
|
||||||
|
confirm(e) {
|
||||||
|
console.log('confirm', e)
|
||||||
|
this.show = false
|
||||||
|
this.switchIcon=true;
|
||||||
|
this.selecetItem = e.value[1];
|
||||||
|
// this.formData.adcd = e.value[1].adcd;
|
||||||
|
this.formData = {...this.formData,adcd:e.value[1].adcd}
|
||||||
|
},
|
||||||
|
cancel(e) {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
changeHandler1(e) {
|
||||||
|
const {
|
||||||
|
columnIndex,
|
||||||
|
value,
|
||||||
|
values, // values为当前变化列的数组内容
|
||||||
|
index,
|
||||||
|
// 微信小程序无法将picker实例传出来,只能通过ref操作
|
||||||
|
picker = this.$refs.uPicker1
|
||||||
|
} = e
|
||||||
|
// 当第一列值发生变化时,变化第二列(后一列)对应的选项
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
// picker为选择器this实例,变化第二列对应的选项
|
||||||
|
picker.setColumnValues(1, this.columnData[index])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 回调参数为包含columnIndex、value、values
|
||||||
|
confirm1(e) {
|
||||||
|
console.log('confirm', e)
|
||||||
|
this.show1 = false
|
||||||
|
this.switchIcon1=true;
|
||||||
|
this.selecetItem1 = e.value[0];
|
||||||
|
this.formData = {...this.formData,basCode:e.value[0].basCode};
|
||||||
|
},
|
||||||
|
cancel1(e) {
|
||||||
|
this.show1 = false
|
||||||
|
},
|
||||||
|
handleClick(e){
|
||||||
|
if(this.selecetItem1.basName && this.selecetItem1.basName != "全部"){
|
||||||
|
e.stopPropagation();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.show = true;
|
||||||
|
this.switchIcon = !this.switchIcon
|
||||||
|
},
|
||||||
|
handleClick1(e){
|
||||||
|
if(this.selecetItem.adnm&&this.selecetItem.adnm != "全部"){
|
||||||
|
e.stopPropagation();
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.show1 = true;
|
||||||
|
this.switchIcon1 = !this.switchIcon1
|
||||||
|
},
|
||||||
|
checkboxChange(n) {
|
||||||
|
console.log('change', n);
|
||||||
|
this.formData = {...this.formData,source:n};
|
||||||
|
},
|
||||||
|
changeLog(e) {
|
||||||
|
console.log('change事件:', e);
|
||||||
|
},
|
||||||
|
// 获取行政区域选择
|
||||||
|
async adnmList(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.get(
|
||||||
|
"/gunshiApp/xfflood/real/rain/adnmList"
|
||||||
|
)
|
||||||
|
if(data.code == 200){
|
||||||
|
|
||||||
|
const all = {
|
||||||
|
adnm:'全部',
|
||||||
|
adcd:''
|
||||||
|
}
|
||||||
|
this.columns = [[...this.columns[0]],[all,...data.data]];
|
||||||
|
this.columnData = [[all,...data.data]];
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取流域
|
||||||
|
async basNameList(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.get(
|
||||||
|
"/gunshiApp/xfflood/real/rain/basNameList"
|
||||||
|
)
|
||||||
|
if(data.code == 200){
|
||||||
|
const all = {
|
||||||
|
basName:'全部',
|
||||||
|
basCode:''
|
||||||
|
}
|
||||||
|
this.columns1 = [[all,...data.data]];
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取雨情列表
|
||||||
|
async getRainList(){
|
||||||
|
let obj = {
|
||||||
|
...this.formData,
|
||||||
|
timeType:undefined
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/real/rain/app/list",obj
|
||||||
|
)
|
||||||
|
if(data.code == 200){
|
||||||
|
this.rainList = [...data.data];
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
backTo(){
|
||||||
|
uni.navigateBack({delta:1})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.adnmList();
|
||||||
|
this.basNameList()
|
||||||
|
this.getRainList()
|
||||||
|
},
|
||||||
|
onReady(){
|
||||||
|
let that = this
|
||||||
|
uni.getSystemInfo({
|
||||||
|
success: (res) => {
|
||||||
|
that.tableHeight = res.windowHeight - 280;
|
||||||
|
console.log("this.tableHeight", that.tableHeight);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.nav-bar{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 44px;
|
||||||
|
// margin-top: 30px;
|
||||||
|
// padding-top: 40px;
|
||||||
|
// padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
// box-shadow: 0 5px 10px -8px #dfdfdf inset;
|
||||||
|
}
|
||||||
|
.search-box{
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
.search-item{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 90%;
|
||||||
|
padding: 5px;
|
||||||
|
height: 30px;
|
||||||
|
background-color: #dddddd;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.time-select{
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
.noClick{
|
||||||
|
pointer-events: initial;
|
||||||
|
}
|
||||||
|
.jiangyu,.rain-time{
|
||||||
|
display: flex;
|
||||||
|
column-gap: 5px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
.jiangyu{
|
||||||
|
// position: relative;
|
||||||
|
.jiangyu-dropdown{
|
||||||
|
position: absolute;
|
||||||
|
background-color: #fff;
|
||||||
|
width: 100vw;
|
||||||
|
left: 0;
|
||||||
|
top: 35px;
|
||||||
|
.active{
|
||||||
|
color:#02a7f0
|
||||||
|
}
|
||||||
|
text{
|
||||||
|
margin-right: 58%;
|
||||||
|
}
|
||||||
|
.no_f{
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
// border-top: 1px solid #dfdfdf;
|
||||||
|
padding: 10px 15px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
// justify-content: space-around;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.rain-time{
|
||||||
|
// position: relative;
|
||||||
|
.rain-time-dropdown{
|
||||||
|
position: absolute;
|
||||||
|
background-color: #fff;
|
||||||
|
width: 100vw;
|
||||||
|
// left: -10%;
|
||||||
|
left: 0;
|
||||||
|
top: 35px;
|
||||||
|
.active{
|
||||||
|
color:#02a7f0;
|
||||||
|
text{
|
||||||
|
margin-right: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.no_f{
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
// border-top: 1px solid #dfdfdf;
|
||||||
|
padding: 10px 15px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
// justify-content: space-around;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.first-btn{
|
||||||
|
margin-right: 5px;
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
.second-btn{
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
}
|
||||||
|
.bottom-btn1,.bottom-btn2{
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.bottom-btn1{
|
||||||
|
margin-left: 70px;
|
||||||
|
}
|
||||||
|
.bottom-btn2{
|
||||||
|
margin-right: -12px;
|
||||||
|
margin-left: 10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,181 @@
|
||||||
|
|
||||||
|
import echarts from 'echarts/lib/echarts';
|
||||||
|
|
||||||
|
export default function DrpOption(echartData) {
|
||||||
|
let totalDrp = 0;
|
||||||
|
const DRPLEVEL = [10, 20, 50, 100, 250];
|
||||||
|
const maxVal = DRPLEVEL.find(o => o > totalDrp);
|
||||||
|
const xMaxVal = echartData?.actual ? DRPLEVEL.find(o => {
|
||||||
|
let max = Math.max(...echartData?.actual || [])
|
||||||
|
return o > max
|
||||||
|
}):maxVal
|
||||||
|
// const xMaxVal = Math.ceil(Math.max(...echartData.actual)) + 2
|
||||||
|
const yMaxVal = echartData?.actual ? DRPLEVEL.find(o => {
|
||||||
|
let max = Math.max(...echartData?.total)
|
||||||
|
return o > max
|
||||||
|
}): maxVal
|
||||||
|
let eopts = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis'
|
||||||
|
},
|
||||||
|
grid:{
|
||||||
|
x: 40,
|
||||||
|
y: 30,
|
||||||
|
x2: 30,
|
||||||
|
y2: 28,
|
||||||
|
borderWidth: 0
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
// 显示图例
|
||||||
|
show: true,
|
||||||
|
// 图例的位置
|
||||||
|
data: ['实测', '累计']
|
||||||
|
},
|
||||||
|
calculable: true,
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
// data: echartData?.time.map(item => item.substr('2020--'.length)),
|
||||||
|
data: echartData?.time,
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
format: 'xAxisFormat'
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.5,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
position: 'left',
|
||||||
|
name:"雨量mm",
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dashed'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
min: 0,
|
||||||
|
max: xMaxVal
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
position: 'right',
|
||||||
|
name:"累计mm",
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dashed'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
min: 0,
|
||||||
|
max: yMaxVal
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
let chartData = {
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '实测',
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: '60%',
|
||||||
|
data: echartData?.actual,
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
barBorderRadius: [3, 3, 0, 0],
|
||||||
|
color: new echarts.graphic.LinearGradient(
|
||||||
|
0, 0, 0, 1,
|
||||||
|
[
|
||||||
|
{ offset: 0, color: '#3876cd' },
|
||||||
|
{ offset: 0.5, color: '#45b4e7' },
|
||||||
|
{ offset: 1, color: '#54ffff' }
|
||||||
|
]
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
markPoint: {
|
||||||
|
data: [
|
||||||
|
{ type: 'max', name: '最大值', symbol: 'circle', symbolSize: 1, symbolOffset: [0, -12] },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
yAxisIndex: 1,
|
||||||
|
name: '累计',
|
||||||
|
type: 'line',
|
||||||
|
showSymbol: false,
|
||||||
|
label: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
data: echartData?.total,
|
||||||
|
lineStyle: {
|
||||||
|
normal: {
|
||||||
|
width: 1,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
areaStyle: {
|
||||||
|
normal: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||||
|
offset: 0,
|
||||||
|
color: 'rgba(3, 194, 236, 0.3)'
|
||||||
|
}, {
|
||||||
|
offset: 0.8,
|
||||||
|
color: 'rgba(3, 194, 236, 0)'
|
||||||
|
}
|
||||||
|
], false),
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.1)',
|
||||||
|
shadowBlur: 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: '#03C2EC'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
eopts,
|
||||||
|
chartData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,156 @@
|
||||||
|
<template>
|
||||||
|
<view class="jcsj-box">
|
||||||
|
<view class="time-ranger">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{stm}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{etm}}</text>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <uni-datetime-picker type="datetimerange" v-model="tm" @change="handleRanger"></uni-datetime-picker>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view> -->
|
||||||
|
</view>
|
||||||
|
<!-- <view class="" style="width: 100%; height: 3px; background-color: #dfdfdf; margin-bottom: 2px;">
|
||||||
|
|
||||||
|
</view> -->
|
||||||
|
<view class="jcsj-content">
|
||||||
|
<view class="jcsj-charts">
|
||||||
|
<qiun-data-charts :chartData="chartData.chartData" :echartsApp="true" :eopts="chartData.eopts" />
|
||||||
|
</view>
|
||||||
|
<view class="jcsj-table">
|
||||||
|
<JcsjTable :tableData="tableData" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showTime"
|
||||||
|
v-model="startTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="handleStartTime"
|
||||||
|
@cancel="showTime=false"
|
||||||
|
></u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showTime1"
|
||||||
|
v-model="endTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="handleEndTime"
|
||||||
|
@cancel="showTime1=false"
|
||||||
|
></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
import JcsjTable from "./jcsjTable"
|
||||||
|
import drpOption from "./chartOption.js"
|
||||||
|
const stm = moment().subtract(7, 'days').add(1, 'hour').set({minute: 0, second: 0}).format("YYYY-MM-DD HH:mm");
|
||||||
|
const etm = moment().add(1, 'hour').set({minute: 0, second: 0}).format("YYYY-MM-DD HH:mm");
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
startTime:stm,
|
||||||
|
endTime:etm,
|
||||||
|
stm,
|
||||||
|
etm,
|
||||||
|
tableData:[],
|
||||||
|
chartData: {chartData:{},eopts:{}},
|
||||||
|
rainChartData:{},
|
||||||
|
showTime:false,
|
||||||
|
showTime1:false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
JcsjTable
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
rainChartData:{
|
||||||
|
handler(newV){
|
||||||
|
this.chartData = {...drpOption(newV)}
|
||||||
|
},
|
||||||
|
deep:true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleStartTime(e){
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.stm = time
|
||||||
|
this.showTime = false
|
||||||
|
},
|
||||||
|
handleEndTime(e){
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.etm = time;
|
||||||
|
this.showTime1 = false
|
||||||
|
},
|
||||||
|
handleRanger(e){
|
||||||
|
console.log(e);
|
||||||
|
this.tm = [...e]
|
||||||
|
},
|
||||||
|
// 搜索
|
||||||
|
async getJcsjData(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/attResBase/rainBasinDivision/queryStStbprpPerHour/StcdAndStartTimeAndEndTime",
|
||||||
|
{
|
||||||
|
stcd:this.stcd,
|
||||||
|
startTime:moment(this.stm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
endTime:moment(this.etm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
})
|
||||||
|
if(data.code == 200){
|
||||||
|
this.tableData = [...data.data]
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取图表数据
|
||||||
|
async getRainChartData(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/attResBase/rainBasinDivision/queryStStbprpPerHourChart/StcdAndStartTimeAndEndTime",
|
||||||
|
{
|
||||||
|
stcd:this.stcd,
|
||||||
|
startTime:moment(this.stm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
endTime:moment(this.etm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
})
|
||||||
|
if(data.code == 200){
|
||||||
|
this.rainChartData = {...data.data}
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 搜索
|
||||||
|
searchHandle(){
|
||||||
|
this.getJcsjData();
|
||||||
|
this.getRainChartData()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getJcsjData()
|
||||||
|
this.getRainChartData()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.jcsj-box{
|
||||||
|
.jcsj-content{
|
||||||
|
max-height:calc(100vh - 89px - 43px - 45px);
|
||||||
|
overflow-y:auto
|
||||||
|
}
|
||||||
|
.jcsj-charts{
|
||||||
|
width:100%;
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
<template>
|
||||||
|
<div class="table_div">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 50px;">
|
||||||
|
序号
|
||||||
|
</th>
|
||||||
|
<th style="width: 200px">时间</th>
|
||||||
|
<th style="width: 150px;">
|
||||||
|
小时雨量(mm)
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 320px; overflow-y: auto" -->
|
||||||
|
<div style="max-height: 250px; overflow-y: auto">
|
||||||
|
<tr v-for="(item, index) in tableData" :key="index">
|
||||||
|
<td style="width: 50px">{{ index + 1 }}</td>
|
||||||
|
<td style="width: 200px;">{{ item.time }}</td>
|
||||||
|
<td style="width: 150px">{{ item.sumDrp }}</td>
|
||||||
|
</tr>
|
||||||
|
<div style="height:155px"></div>
|
||||||
|
</div>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
tableData:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
max-height: calc(100vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
line-height: 65rpx;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
height: 65rpx;
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
// font-weight: bold;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(100vh - 145px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 65rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
<template>
|
||||||
|
<view class="rain-detail-box">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<view class="nav-bar">
|
||||||
|
<u-icon name="arrow-left" color="#000" size="20" @click="backTo" style="margin-left:10px"></u-icon>
|
||||||
|
<view class="title">
|
||||||
|
{{stnm}}
|
||||||
|
<text style="font-size:12px;margin-left:5px">{{sta}}({{rain}})</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="tab-bar" >
|
||||||
|
<view class="jcsj" @click="activeOne = 0" :class="{'active':activeOne == 0}">
|
||||||
|
监测数据
|
||||||
|
</view>
|
||||||
|
<view class="tjsj" @click="activeOne = 1" :class="{'active':activeOne == 1}">
|
||||||
|
统计数据
|
||||||
|
</view>
|
||||||
|
<view class="zbyq" @click="activeOne = 2" :class="{'active':activeOne == 2}">
|
||||||
|
周边雨情
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="rain-detail-content">
|
||||||
|
<Jcsj :stcd="stcd" v-if="activeOne == 0"/>
|
||||||
|
<Tjsj :stcd="stcd" v-else-if="activeOne == 1"/>
|
||||||
|
<Zbyq :stcd="stcd" v-else-if="activeOne == 2"/>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Jcsj from "./jcsj/jcsj.vue"
|
||||||
|
import Tjsj from "./tjsj/tjsj.vue"
|
||||||
|
import Zbyq from "./zbyq/zbyq.vue"
|
||||||
|
const staType = {
|
||||||
|
MM: '气象站',PP: '雨量站',RR: '水库水文站',ZZ: '河道水位站',ZQ:"河道水文站"
|
||||||
|
}
|
||||||
|
const rainType = {'SH':'山洪','SW':'水文','QX':'气象','SK':'水库'}
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
activeOne:0,
|
||||||
|
stcd:'',
|
||||||
|
stnm:'',
|
||||||
|
rainType:rainType,
|
||||||
|
staType:staType,
|
||||||
|
// sta:staType[sttp]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
Jcsj,
|
||||||
|
Tjsj,
|
||||||
|
Zbyq
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
backTo(){
|
||||||
|
uni.navigateBack({delta:1})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.stcd = option.stcd;
|
||||||
|
this.stnm = option.stnm;
|
||||||
|
this.sta = staType[option.sttp];
|
||||||
|
this.rain = rainType[option.source];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.rain-detail-box{
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
.nav-bar{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 44px;
|
||||||
|
// margin-top: 30px;
|
||||||
|
// padding-top: 20px;
|
||||||
|
// padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
// box-shadow: 0 5px 10px -8px #dfdfdf inset;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
flex:1;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.tab-bar{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 10px 30px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
color: #39a6ff;
|
||||||
|
}
|
||||||
|
.rain-detail-content{
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,144 @@
|
||||||
|
<template>
|
||||||
|
<view class="tjsj-box">
|
||||||
|
<uni-row class="tjsj-row" :width="700">
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近1h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h1||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近3h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h3||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近6h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h6||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近12h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h12||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近24h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h24||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近48h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h48||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">今日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.today||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">昨日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yesterdayDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本月雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.monthDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本年雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yearDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本年降雨天数</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yearDrpDay||0}}/{{days}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row" style="border-bottom: 1px solid #dfdfdf;">本年最大日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row" style="display: flex; justify-content: center; border-bottom: 1px solid #dfdfdf;">
|
||||||
|
<text>{{tableData.maxDrp||0}}</text>
|
||||||
|
<text style="color: #E69224;">({{maxDrpTime}})</text>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
|
||||||
|
</uni-row>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData:{},
|
||||||
|
days:moment().diff(moment().startOf('year'),'days')+1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
maxDrpTime(){
|
||||||
|
if(this.tableData.maxDrpTime){
|
||||||
|
return moment(this.tableData.maxDrpTime).format("YYYY-MM-DD")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getTableData(){
|
||||||
|
console.log(this.stcd);
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.get(
|
||||||
|
`/gunshiApp/xfflood/attResBase/rainBasinDivision/queryStPptnDetails/stcd?stcd=${this.stcd}`
|
||||||
|
)
|
||||||
|
if(data.code == 200){
|
||||||
|
this.tableData = {...data.data};
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getTableData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tjsj-box{
|
||||||
|
.tjsj-row{
|
||||||
|
.first-row{
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid #dfdfdf;
|
||||||
|
border-left: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
.second-row{
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid #dfdfdf;
|
||||||
|
border-left: 1px solid #dfdfdf;
|
||||||
|
border-right: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
<template>
|
||||||
|
<view class="list-box">
|
||||||
|
<uni-row class="list-row" >
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row" style="margin-left: 10px;">
|
||||||
|
<text style="display: inline-block; margin-bottom: 10px; font-weight: bold;">{{info.stnm}}</text>
|
||||||
|
<view>
|
||||||
|
<text style="margin-right: 60px; color: #aaaaaa;">{{sttype[info.source]}}</text>
|
||||||
|
<text style="color: #aaaaaa;">{{info.distance ? info.distance.toFixed(2) : 0}}km</text>
|
||||||
|
</view>
|
||||||
|
<text style="color: #aaaaaa;">{{info.tm}}</text>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12" >
|
||||||
|
<view class="second-row" style="border: 1px solid #dfdfdf; font-size: 12px;border-bottom: 1px solid #dfdfdf;">
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex:0.5; background-color: #e1f3ff; border-right: 1px solid #dfdfdf; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
1h(mm)
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; background-color: #e1f3ff;text-align: center; border-bottom:1px solid #dfdfdf" >
|
||||||
|
3h(mm)
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex: 0.5; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
{{info.h1}}
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
{{info.h3}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex:0.5; background-color: #e1f3ff; border-right: 1px solid #dfdfdf; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
6h(mm)
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; background-color: #e1f3ff;text-align: center; border-bottom:1px solid #dfdfdf" >
|
||||||
|
24h(mm)
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex: 0.5; text-align: center; border-right: 1px solid #dfdfdf;">
|
||||||
|
{{info.h6}}
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; text-align: center; ">
|
||||||
|
{{info.h24}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
info:Object,
|
||||||
|
default:{}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sttype: {
|
||||||
|
"SH": '山洪',
|
||||||
|
"SW": '水文',
|
||||||
|
"QX": '气象',
|
||||||
|
"SK": '水库',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.list-box{
|
||||||
|
.list-row{
|
||||||
|
padding-bottom: 3px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
.second-row{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,166 @@
|
||||||
|
<template>
|
||||||
|
<view class="zbyq-box">
|
||||||
|
<view class="search-bar">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction="false"
|
||||||
|
placeholder="请输入站点"
|
||||||
|
height="40px"
|
||||||
|
@change="inputChange"
|
||||||
|
v-model="formData.value"
|
||||||
|
></u-search>
|
||||||
|
<image
|
||||||
|
src="../../../static/images/filter.png"
|
||||||
|
style="width: 20px; height: 20px; margin-right: 10px; margin-left: 10px;"
|
||||||
|
@click="popupOpen = true"
|
||||||
|
>
|
||||||
|
</image>
|
||||||
|
</view>
|
||||||
|
<view class="content">
|
||||||
|
<view v-for="(item,index) in list" :key="index" style="margin-bottom: 5px;">
|
||||||
|
<ResList :info="item" />
|
||||||
|
</view>
|
||||||
|
<view style="height:300px"></view>
|
||||||
|
</view>
|
||||||
|
<u-popup :show="popupOpen" mode="right" @close="popupOpen=false" >
|
||||||
|
<view style="padding: 30px 20px;">
|
||||||
|
<text style="font-weight: bold;">按类型</text>
|
||||||
|
<view style="margin-bottom: 10px; margin-left: -5px;">
|
||||||
|
<u-checkbox-group
|
||||||
|
v-model="formData.sources"
|
||||||
|
@change="checkboxChange"
|
||||||
|
>
|
||||||
|
<u-checkbox
|
||||||
|
:customStyle="{margin: '7px'}"
|
||||||
|
v-for="(item, index) in checkboxList1"
|
||||||
|
:key="index"
|
||||||
|
:label="item.name"
|
||||||
|
:name="item.value"
|
||||||
|
>
|
||||||
|
</u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
</view>
|
||||||
|
<text style="font-weight: bold; margin-bottom: 5px;">按距离</text>
|
||||||
|
<view style="display: flex; align-items: center;">
|
||||||
|
<u--input
|
||||||
|
placeholder="请输入"
|
||||||
|
border="surround"
|
||||||
|
type="number"
|
||||||
|
v-model="formData.distance"
|
||||||
|
style="width: 50%; margin-top: 5px; margin-right: 10px;"
|
||||||
|
></u--input>
|
||||||
|
<text>(km)</text>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex; position:absolute;bottom:20px;right:20px">
|
||||||
|
<u-button text="重置" class="bottom-btn1"
|
||||||
|
@click="formData = {...formData,sources,distance:1}"></u-button>
|
||||||
|
<u-button text="确认" color="#d9001b" class="bottom-btn2" @click="popConfirm"></u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ResList from "./resList.vue"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
popupOpen:false,
|
||||||
|
sources:["SH","SW","QX","SK"],
|
||||||
|
checkboxList1: [{
|
||||||
|
name: '山洪',
|
||||||
|
value: "SH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水文',
|
||||||
|
value: "SW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '气象',
|
||||||
|
value: "QX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水库',
|
||||||
|
value: "SK"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
formData:{
|
||||||
|
value:'',
|
||||||
|
sources:["SH","SW","QX","SK"],
|
||||||
|
distance:1,
|
||||||
|
stcd:this.stcd
|
||||||
|
},
|
||||||
|
list:[], //搜索结果
|
||||||
|
saveList:[] //保存搜索结果
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
ResList
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
inputChange(e){
|
||||||
|
console.log("e",e);
|
||||||
|
if(!e) this.list = this.saveList;
|
||||||
|
this.formData={...this.formData,value:e}
|
||||||
|
let filterData = this.list.filter(item => item.stnm.indexOf(e) > -1);
|
||||||
|
this.list = filterData;
|
||||||
|
},
|
||||||
|
checkboxChange(n) {
|
||||||
|
console.log('change', n);
|
||||||
|
this.formData = {...this.formData,sources:n};
|
||||||
|
},
|
||||||
|
popConfirm(){
|
||||||
|
this.popupOpen = false
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
async getList(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/attResBase/rainBasinDivision/queryNearbyRainStations",{...this.formData}
|
||||||
|
)
|
||||||
|
console.log("data",data);
|
||||||
|
if(data.code == 200){
|
||||||
|
this.list = [...data.data]
|
||||||
|
this.saveList = [...data.data]
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.zbyq-box{
|
||||||
|
.search-bar{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.content{
|
||||||
|
margin-top: 10px;
|
||||||
|
max-height: 100vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-btn1{
|
||||||
|
width: 100px;
|
||||||
|
margin-left: 70px;
|
||||||
|
}
|
||||||
|
.bottom-btn2{
|
||||||
|
width: 100px;
|
||||||
|
margin-right: -12px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<u-navbar :title="name" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<view style="margin-top: 70px; padding: 10px;">
|
||||||
|
<SlTable :tableData="slData" v-if="name == '渗流监测'"></SlTable>
|
||||||
|
<ZwyTable :tableData="zwyData" v-else-if="name == '主坝位移监测'"></ZwyTable>
|
||||||
|
<ZwyTable :tableData="zwyData" v-else-if="name == '溢洪道位移监测'"></ZwyTable>
|
||||||
|
<ZwyTable :tableData="zwyData" v-else-if="name == '副坝位移监测'"></ZwyTable>
|
||||||
|
<ZsyTable :tableData="zsyData" v-else-if="name == '主坝渗压监测'"></ZsyTable>
|
||||||
|
<ZsyTable :tableData="zsyData" v-else-if="name == '灌溉发电洞渗压监测'"></ZsyTable>
|
||||||
|
<ZwyTable :tableData="zwyData" v-else-if="name == '灌溉发电洞变型监测'"></ZwyTable>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import SlTable from "./slTable.vue"
|
||||||
|
import ZwyTable from "./zwyTable.vue"
|
||||||
|
import ZsyTable from "./zsyTable.vue"
|
||||||
|
export default {
|
||||||
|
components:{
|
||||||
|
SlTable,
|
||||||
|
ZwyTable,
|
||||||
|
ZsyTable
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
slData:[], //渗流监测
|
||||||
|
zwyData:[],//主坝位移监测
|
||||||
|
zsyData:[],//主坝渗压监测
|
||||||
|
name:'',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getSlData(){
|
||||||
|
try {
|
||||||
|
const {data} = await uni.$http.get('/gunshiApp/tsg/osmoticPressR/list/value?type=2')
|
||||||
|
if(data.code == 200){
|
||||||
|
this.slData = data.data;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getZwyData(){
|
||||||
|
try {
|
||||||
|
const {data} = await uni.$http.get('/gunshiApp/tsg/osmoticShiftR/list/value')
|
||||||
|
if(data.code == 200){
|
||||||
|
this.zwyData = data.data;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getzsyData(){
|
||||||
|
try {
|
||||||
|
const {data} = await uni.$http.get('/gunshiApp/tsg/osmoticPressR/list/value?type=1')
|
||||||
|
if(data.code == 200){
|
||||||
|
this.zsyData = data.data;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getSlData();
|
||||||
|
this.getZwyData();
|
||||||
|
this.getzsyData();
|
||||||
|
},
|
||||||
|
onLoad(options) {
|
||||||
|
this.name=options.name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
<template>
|
||||||
|
<div class="table_div">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 30%;">
|
||||||
|
监测点
|
||||||
|
</th>
|
||||||
|
<th style="width: 40%;">
|
||||||
|
监测时间
|
||||||
|
</th>
|
||||||
|
<th style="width: 30%;">渗流量(L/s)</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 480px; overflow-y: auto" -->
|
||||||
|
<div class="scroll-table">
|
||||||
|
<tr v-for="(item, index) in tableData" :key="index">
|
||||||
|
<td style="width: 30%;">{{item.stationCode}}</td>
|
||||||
|
<td style="width: 40%;">{{simpleData(item.tm)}}</td>
|
||||||
|
<td style="width:30%;">{{ item.value }}</td>
|
||||||
|
</tr>
|
||||||
|
<div style="height:180px"></div>
|
||||||
|
</div>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
tableData:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
simpleData(tm){
|
||||||
|
return moment(tm).format("MM-DD HH:mm")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
// max-height: calc(80vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
// overflow-x: scroll;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(55vh - 180px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
line-height: 75rpx;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
height: 85rpx;
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
// font-weight: bold;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 65rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
<template>
|
||||||
|
<div class="table_div">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 19%;">
|
||||||
|
监测点
|
||||||
|
</th>
|
||||||
|
<th style="width: 30%;">所属断面</th>
|
||||||
|
<th style="width: 26%;">
|
||||||
|
监测时间
|
||||||
|
</th>
|
||||||
|
<th style="width: 25%;">管水位(m)</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 480px; overflow-y: auto" -->
|
||||||
|
<div class="scroll-table">
|
||||||
|
<tr v-for="(item, index) in tableData" :key="index">
|
||||||
|
<td style="width: 19%;">{{item.stationCode}}</td>
|
||||||
|
<td style="width:30%;">{{ item.profileName }}</td>
|
||||||
|
<td style="width: 26%;text-align: center;">{{simpleData(item.tm)}}</td>
|
||||||
|
<td style="width:25%;">{{ item.value }}</td>
|
||||||
|
</tr>
|
||||||
|
<div style="height:180px"></div>
|
||||||
|
</div>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
tableData:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
simpleData(tm){
|
||||||
|
if(!tm) return ''
|
||||||
|
return moment(tm).format("MM-DD HH:mm")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
// max-height: calc(80vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
// overflow-x: scroll;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(100vh - 180px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
height: 50px;
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: wrap;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
// text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 75rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: wrap;
|
||||||
|
// text-align: center !important;
|
||||||
|
}
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
<template>
|
||||||
|
<div class="table_div">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 20%;">
|
||||||
|
监测点
|
||||||
|
</th>
|
||||||
|
<th style="width: 20%;">
|
||||||
|
监测时间
|
||||||
|
</th>
|
||||||
|
<th style="width: 20%;">X方向(mm)</th>
|
||||||
|
<th style="width: 20%;">Y方向(mm)</th>
|
||||||
|
<th style="width: 20%;">H方向(mm)</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 480px; overflow-y: auto" -->
|
||||||
|
<div class="scroll-table">
|
||||||
|
<tr v-for="(item, index) in tableData" :key="index">
|
||||||
|
<td style="width: 20%;">{{item.stationCode}}</td>
|
||||||
|
<td style="width: 20%;">{{simpleData(item.tm)}}</td>
|
||||||
|
<td style="width:20%;">{{ item.x }}</td>
|
||||||
|
<td style="width:20%;">{{ item.y }}</td>
|
||||||
|
<td style="width:20%;">{{ item.h }}</td>
|
||||||
|
</tr>
|
||||||
|
<div style="height:180px"></div>
|
||||||
|
</div>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
tableData:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
simpleData(tm){
|
||||||
|
if(!tm) return ''
|
||||||
|
return moment(tm).format("MM-DD HH:mm")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
// max-height: calc(80vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
// overflow-x: scroll;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(100vh - 180px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: wrap;
|
||||||
|
text-align: center !important;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 75rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: wrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,261 @@
|
||||||
|
|
||||||
|
import echarts from 'echarts/lib/echarts';
|
||||||
|
|
||||||
|
export default function DrpOption(
|
||||||
|
data,
|
||||||
|
afsltdz,
|
||||||
|
flLowLimLev,
|
||||||
|
desFloodLev,
|
||||||
|
calFloodLev) {
|
||||||
|
const maxVal = Math.max(...data.map(obj => obj.drp))
|
||||||
|
const maxSw = Math.ceil(Math.max(...data.map(obj => obj.rz)))
|
||||||
|
const minSw = Math.floor(Math.min(...data.map(obj => obj.rz)))
|
||||||
|
const maxKr = Math.max(...data.map(obj => obj.w))
|
||||||
|
const minKr = Math.min(...data.map(obj => obj.w))
|
||||||
|
console.log('desFloodLev',desFloodLev);
|
||||||
|
let eopts = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
},
|
||||||
|
grid: [
|
||||||
|
{
|
||||||
|
top: "13%",
|
||||||
|
left: "10%",
|
||||||
|
right: "8%",
|
||||||
|
width: '80%',
|
||||||
|
height: '35%'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
bottom: "5%",
|
||||||
|
left: "10%",
|
||||||
|
right: "8%",
|
||||||
|
width: '80%',
|
||||||
|
height: '35%'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
legend: {
|
||||||
|
// 显示图例
|
||||||
|
show: true,
|
||||||
|
// 图例的位置
|
||||||
|
data: ["校核水位", '设计水位', '汛限水位', '降雨量', '水位', '库容'],
|
||||||
|
left:0,
|
||||||
|
right:0,
|
||||||
|
itemWidth:10,
|
||||||
|
padding:0
|
||||||
|
},
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
gridIndex: 0,
|
||||||
|
type: 'category',
|
||||||
|
data: data.map(o => o.tm).reverse(),
|
||||||
|
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
gridIndex: 1,
|
||||||
|
type: 'category',
|
||||||
|
data: data.map(o => o.tm.substr("2020-".length,11)),
|
||||||
|
inverse: true,
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
formatter: val => val.substr('2020-'.length, 11)
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
inverse: true,
|
||||||
|
gridIndex: 0,
|
||||||
|
type: 'value',
|
||||||
|
position: 'left',
|
||||||
|
name: '降雨量(mm)',
|
||||||
|
nameLocation: 'start',
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dotted'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
min: 0,
|
||||||
|
max: maxVal
|
||||||
|
},
|
||||||
|
{
|
||||||
|
gridIndex: 1,
|
||||||
|
type: 'value',
|
||||||
|
position: 'left',
|
||||||
|
name: '水位(m)',
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dotted'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
min: minSw,
|
||||||
|
max: maxSw
|
||||||
|
},
|
||||||
|
{
|
||||||
|
gridIndex: 1,
|
||||||
|
type: 'value',
|
||||||
|
position: 'right',
|
||||||
|
name: '库容(万m³)',
|
||||||
|
splitLine: {
|
||||||
|
show: false,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dotted'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
min: minKr,
|
||||||
|
max: maxKr
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
let chartData = {
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 1,
|
||||||
|
name: '校核水位',
|
||||||
|
type: 'line',
|
||||||
|
color: '#D9001B',
|
||||||
|
lineStyle: {
|
||||||
|
type: 'dashed'
|
||||||
|
},
|
||||||
|
data: data.map(o => calFloodLev),
|
||||||
|
symbol: 'none' // 设置标记点为'none',即去掉圆点
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 1,
|
||||||
|
name: '设计水位',
|
||||||
|
type: 'line',
|
||||||
|
color: '#F59A23',
|
||||||
|
data: data.map(o => desFloodLev),
|
||||||
|
lineStyle: {
|
||||||
|
type: 'dashed'
|
||||||
|
},
|
||||||
|
symbol: 'none' // 设置标记点为'none',即去掉圆点
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 1,
|
||||||
|
name: '汛限水位',
|
||||||
|
type: 'line',
|
||||||
|
color: '#FDDC9F',
|
||||||
|
data: data.map(o => {
|
||||||
|
return flLowLimLev
|
||||||
|
}),
|
||||||
|
lineStyle: {
|
||||||
|
type: 'dashed'
|
||||||
|
},
|
||||||
|
symbol: 'none' // 设置标记点为'none',即去掉圆点
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '降雨量',
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: '60%',
|
||||||
|
data: data.map(o => o.drp).reverse(),
|
||||||
|
itemStyle: {
|
||||||
|
color: '#007AFD'
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 1,
|
||||||
|
name: '水位',
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'none',
|
||||||
|
color: '#0AE0B5',
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
data: data.map(o => o.rz ? o.rz.toFixed(2):null )
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xAxisIndex: 1,
|
||||||
|
yAxisIndex: 2,
|
||||||
|
name: '库容',
|
||||||
|
type: 'line',
|
||||||
|
color: '#007AFD',
|
||||||
|
symbol: 'none',
|
||||||
|
showSymbol: false,
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
data: data.map(o => o.w)
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
eopts,
|
||||||
|
chartData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,157 @@
|
||||||
|
<template>
|
||||||
|
<view class="jcsj-box">
|
||||||
|
<view class="time-ranger">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{stm}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{etm}}</text>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <uni-datetime-picker type="datetimerange" v-model="tm" @change="handleRanger"></uni-datetime-picker>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view> -->
|
||||||
|
</view>
|
||||||
|
<!-- <view class="" style="width: 100%; height: 3px; background-color: #dfdfdf; margin-bottom: 2px;">
|
||||||
|
|
||||||
|
" </view> -->
|
||||||
|
<view style="text-align: right; margin-bottom: -15px;">
|
||||||
|
<text :class="{'active':selactOne == 0}" @click="selactOne = 0" style="display: inline-block; padding: 2px 20px; text-align: center; border: 1px solid #dfdfdf;">图</text>
|
||||||
|
<text :class="{'active':selactOne == 1}" @click="selactOne = 1" style="display: inline-block; padding: 2px 20px; text-align: center; border: 1px solid #dfdfdf;">表</text>
|
||||||
|
</view>
|
||||||
|
<view class="jcsj-content">
|
||||||
|
<view class="jcsj-charts" v-if="selactOne == 0">
|
||||||
|
<qiun-data-charts :chartData="chartData.chartData" :echartsApp="true" :eopts="chartData.eopts" />
|
||||||
|
</view>
|
||||||
|
<view style="margin-top: 20px;" v-if="selactOne == 1">
|
||||||
|
<JcsjTable :tableData="tableData" />
|
||||||
|
</view>
|
||||||
|
<view style="height:300px" v-if="selactOne == 0"></view>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showTime"
|
||||||
|
v-model="startTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="handleStartTime"
|
||||||
|
@cancel="showTime=false"
|
||||||
|
></u-datetime-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="showTime1"
|
||||||
|
v-model="endTime"
|
||||||
|
mode="datetime"
|
||||||
|
@confirm="handleEndTime"
|
||||||
|
@cancel="showTime1=false"
|
||||||
|
></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
import JcsjTable from "./jcsjTable"
|
||||||
|
import drpOption from "./chartOption.js"
|
||||||
|
const stm = moment().subtract(7, 'days').add(1, 'hour').set({minute: 0, second: 0}).format("YYYY-MM-DD HH:mm");
|
||||||
|
const etm = moment().add(1, 'hour').set({minute: 0, second: 0}).format("YYYY-MM-DD HH:mm");
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
source:String,
|
||||||
|
wrz:String,
|
||||||
|
grz:String,
|
||||||
|
afsltdz:String,
|
||||||
|
flLowLimLev:String,
|
||||||
|
desFloodLev:String,
|
||||||
|
calFloodLev:String,
|
||||||
|
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
startTime:stm,
|
||||||
|
endTime:etm,
|
||||||
|
stm,
|
||||||
|
etm,
|
||||||
|
showTime:false,
|
||||||
|
showTime1:false,
|
||||||
|
tableData:[],
|
||||||
|
chartData: {},
|
||||||
|
rainChartData:[],
|
||||||
|
selactOne:0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
JcsjTable
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
rainChartData(newV, oldV){
|
||||||
|
this.chartData = {...drpOption(newV,this.afsltdz,this.flLowLimLev,this.desFloodLev,this.calFloodLev)}
|
||||||
|
this.tableData = [...newV]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleStartTime(e){
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.stm = time
|
||||||
|
this.showTime = false
|
||||||
|
},
|
||||||
|
handleEndTime(e){
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.etm = time;
|
||||||
|
this.showTime1 = false
|
||||||
|
},
|
||||||
|
handleRanger(e){
|
||||||
|
console.log(e);
|
||||||
|
this.tm = [...e]
|
||||||
|
},
|
||||||
|
// 搜索
|
||||||
|
async getJcsjData(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/reservoir/water/monitor/data",
|
||||||
|
{
|
||||||
|
stcd:this.stcd,
|
||||||
|
stm:moment(this.stm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
etm:moment(this.etm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
source:this.source
|
||||||
|
})
|
||||||
|
if(data.code == 200){
|
||||||
|
this.rainChartData = [...data.data];
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 搜索
|
||||||
|
searchHandle(){
|
||||||
|
this.getJcsjData();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getJcsjData();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.jcsj-box{
|
||||||
|
.jcsj-content{
|
||||||
|
max-height:100vh;
|
||||||
|
width: 100%;
|
||||||
|
overflow-y:auto
|
||||||
|
}
|
||||||
|
.jcsj-charts{
|
||||||
|
// width:103vw;
|
||||||
|
height: 500px;
|
||||||
|
overflow-y: auto;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
border-color: #68bbff !important;
|
||||||
|
color: #68bbff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,126 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
|
||||||
|
<div class="table_div" v-if="tableData.length !=0">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 40px;">
|
||||||
|
序号
|
||||||
|
</th>
|
||||||
|
<th style="width: 80px">时间</th>
|
||||||
|
<th style="width: 80px;">
|
||||||
|
雨量(mm)
|
||||||
|
</th>
|
||||||
|
<th style="width: 90px;">
|
||||||
|
水位(m)
|
||||||
|
</th>
|
||||||
|
<th style="width: 90px; position: relative;">
|
||||||
|
<view>
|
||||||
|
库容(万m³)
|
||||||
|
<!-- <text style="position: absolute; bottom:-10px; left: 20px;">(m³/s)</text> -->
|
||||||
|
</view>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 480px; overflow-y: auto" -->
|
||||||
|
<div class="scroll-table">
|
||||||
|
<tr v-for="(item, index) in newList" :key="index">
|
||||||
|
<td style="width: 30px">{{ index + 1 }}</td>
|
||||||
|
<td style="width: 80px;">{{ item.tm }}</td>
|
||||||
|
<td style="width: 80px">{{ item.drp }}</td>
|
||||||
|
<td style="width: 100px">{{ item.rz ? item.rz.toFixed(2) : "-" }}</td>
|
||||||
|
<td style="width: 80px">{{ item.w ? item.w : "-" }}</td>
|
||||||
|
</tr>
|
||||||
|
<div style="height:180px"></div>
|
||||||
|
</div>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<view
|
||||||
|
style="display: flex;align-items: center;justify-content: center;background-color: #fff;"
|
||||||
|
v-else>
|
||||||
|
<image src="../../../static/empty.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
tableData: {
|
||||||
|
type: Array,
|
||||||
|
default: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
newList() {
|
||||||
|
if (this.tableData.length) {
|
||||||
|
return this.tableData.map(item => ({
|
||||||
|
...item,
|
||||||
|
tm: moment(item.tm).format("MM-DD HH:mm")
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
max-height: calc(100vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroll-table {
|
||||||
|
height: calc(100vh - 180px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width: '100%'
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
line-height: 75rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur th {
|
||||||
|
height: 85rpx;
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
// font-weight: bold;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 65rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,161 @@
|
||||||
|
<template>
|
||||||
|
<view class="rain-detail-box">
|
||||||
|
<u-status-bar></u-status-bar>
|
||||||
|
<view class="nav-bar">
|
||||||
|
<u-icon name="arrow-left" color="#000" size="20" @click="backTo" style="margin-left:10px"></u-icon>
|
||||||
|
<view class="title">
|
||||||
|
{{stnm}}
|
||||||
|
<text style="font-size:12px;margin-left:5px">{{sta}}({{rain}})</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="tab-bar">
|
||||||
|
<uni-swiper-dot :info="Array(2).fill(0)" :current="current" field="content" :dotsStyles="dotsStyles">
|
||||||
|
<swiper class="swiper-box" style="height: 30px;" @change="change">
|
||||||
|
<swiper-item >
|
||||||
|
<view style="display: flex;justify-content: space-between;">
|
||||||
|
<view class="jcsj" @click="activeOne = 0" :class="{'active':activeOne == 0}">
|
||||||
|
监测数据
|
||||||
|
</view>
|
||||||
|
<!-- style="margin: 0 25px;" -->
|
||||||
|
<view class="tjsj" @click="activeOne = 1" :class="{'active':activeOne == 1}" style="margin: 0 4%">
|
||||||
|
统计数据
|
||||||
|
</view>
|
||||||
|
<!-- style="margin: 0 25px 0 0;" -->
|
||||||
|
<view class="zrtx" @click="activeOne = 2" :class="{'active':activeOne == 2}" >
|
||||||
|
责任体系
|
||||||
|
</view>
|
||||||
|
<view class="txjc" @click="activeOne = 3" :class="{'active':activeOne == 3}" style="margin-left:4%">
|
||||||
|
图像监测
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</swiper-item>
|
||||||
|
<swiper-item >
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view class="spjk" @click="activeOne = 4" :class="{'active':activeOne == 4}" style="margin:0 4%">
|
||||||
|
视频监控
|
||||||
|
</view>
|
||||||
|
<view class="zbyq" @click="activeOne = 5" :class="{'active':activeOne == 5}" >
|
||||||
|
周边雨情
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</swiper-item>
|
||||||
|
</swiper>
|
||||||
|
</uni-swiper-dot>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="rain-detail-content">
|
||||||
|
<Jcsj :stcd="stcd" :source="source" :afsltdz="afsltdz" :flLowLimLev="flLowLimLev" :desFloodLev="desFloodLev" :calFloodLev="calFloodLev" v-if="activeOne == 0"/>
|
||||||
|
<Tjsj :stcd="stcd" :source="source" v-else-if="activeOne == 1"/>
|
||||||
|
<Zrtx :stcd="stcd" :source="source" :resCode="resCode" v-else-if="activeOne == 2"/>
|
||||||
|
<Txjc :resCode="resCode" :source="source" v-else-if="activeOne == 3"/>
|
||||||
|
<Spjk :stcd="stcd" :source="source" v-else-if="activeOne == 4"/>
|
||||||
|
<Zbyq :stcd="stcd" v-else-if="activeOne == 5"/>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Jcsj from "./jcsj/jcsj.vue"
|
||||||
|
import Tjsj from "./tjsj/tjsj.vue"
|
||||||
|
import Zbyq from "./zbyq/zbyq.vue"
|
||||||
|
import Spjk from "./spjk/spjk.vue"
|
||||||
|
import Zrtx from "./zrtx/zrtx.vue"
|
||||||
|
import Txjc from "./txjc/txjc.vue"
|
||||||
|
const staType = {
|
||||||
|
MM: '气象站',PP: '雨量站',RR: '水库水文站',ZZ: '河道水位站',ZQ:"河道水文站"
|
||||||
|
}
|
||||||
|
const rainType = {'SH':'山洪','SW':'水文','QX':'气象','SK':'水库'}
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
activeOne:0,
|
||||||
|
stcd:'',
|
||||||
|
stnm:'',
|
||||||
|
source:'',
|
||||||
|
wrz:'',
|
||||||
|
grz:'',
|
||||||
|
calFloodLev:'',
|
||||||
|
desFloodLev:'',
|
||||||
|
flLowLimLev:'',
|
||||||
|
afsltdz:'',
|
||||||
|
resCode:'',
|
||||||
|
current:0,
|
||||||
|
dotsStyles:{
|
||||||
|
bottom:0,
|
||||||
|
selectedBackgroundColor:"#d9001b"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
Jcsj,
|
||||||
|
Tjsj,
|
||||||
|
Zbyq,
|
||||||
|
Spjk,
|
||||||
|
Zrtx,
|
||||||
|
Txjc
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
backTo(){
|
||||||
|
uni.navigateBack({delta:1})
|
||||||
|
},
|
||||||
|
change(e) {
|
||||||
|
console.log(e.detail.current);
|
||||||
|
this.current = e.detail.current;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.stcd = option.stcd;
|
||||||
|
this.stnm = option.stnm;
|
||||||
|
this.source = option.source;
|
||||||
|
this.grz = option.grz;
|
||||||
|
this.wrz = option.wrz;
|
||||||
|
this.afsltdz = option.afsltdz;
|
||||||
|
this.calFloodLev = option.calFloodLev;
|
||||||
|
this.flLowLimLev = option.flLowLimLev;
|
||||||
|
this.desFloodLev = option.desFloodLev;
|
||||||
|
this.resCode = option.resCode;
|
||||||
|
this.sta = staType[option.sttp];
|
||||||
|
this.rain = rainType[option.source];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.rain-detail-box{
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
.nav-bar{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 44px;
|
||||||
|
// margin-top: 30px;
|
||||||
|
// padding-top: 20px;
|
||||||
|
// padding-bottom: 10px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
// box-shadow: 0 5px 10px -8px #dfdfdf inset;
|
||||||
|
}
|
||||||
|
.title{
|
||||||
|
flex:1;
|
||||||
|
text-align: center;
|
||||||
|
margin-right: 18px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.tab-bar{
|
||||||
|
// width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 5px 30px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
// overflow-x: auto;
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
color: #39a6ff;
|
||||||
|
}
|
||||||
|
.rain-detail-content{
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,131 @@
|
||||||
|
<template>
|
||||||
|
<view class="spjk-box">
|
||||||
|
<view class="select-bar">
|
||||||
|
<uni-data-select
|
||||||
|
v-model="value"
|
||||||
|
:localdata="list"
|
||||||
|
@change="change"
|
||||||
|
:clear="false"
|
||||||
|
>
|
||||||
|
</uni-data-select>
|
||||||
|
</view>
|
||||||
|
<view class="video-box" >
|
||||||
|
<iframe :src="webURL" :class="{'normal': show == 0,'active': show == 1}" frameborder="0" ref="videoFrame" :allowfullscreen="true"></iframe>
|
||||||
|
</view>
|
||||||
|
<!-- <u-overlay :show="show" @click="show = false">
|
||||||
|
<view class="warp" style="position:relative;">
|
||||||
|
<view class="rect" >
|
||||||
|
<iframe :src="webURL" style="height: 100vh;width:100vw" frameborder="0" ref="videoFrame"></iframe>
|
||||||
|
<image src="/static/images/m1.png" style="position:absolute; bottom:0,right:0"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-overlay> -->
|
||||||
|
<!-- <button @click="handler">全屏</button> -->
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
source:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: "",
|
||||||
|
list:[],
|
||||||
|
webURL:'',
|
||||||
|
show:0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
receiveRenderData(e){
|
||||||
|
//接收的值
|
||||||
|
console.log("3333",e.data)
|
||||||
|
this.show = e.data
|
||||||
|
},
|
||||||
|
async getList(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.get(
|
||||||
|
`/gunshiApp/xfflood/stbprp/cctv/listByStcd/${this.stcd}`)
|
||||||
|
if(data.code == 200){
|
||||||
|
let newData = data.data.map(item => ({...item,value:item.camId,text:item.name}))
|
||||||
|
this.list = [...newData];
|
||||||
|
this.value = newData[0].value
|
||||||
|
this.getVideoSrc(newData[0].camId)
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getVideoSrc(id){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.get(
|
||||||
|
`/gunshiApp/xfflood/xfCctvB/preview/${id}`)
|
||||||
|
if(data.code == 200){
|
||||||
|
this.webURL="./static/h5Player/webplayer.html?cameraIndexCode="+id+"&cameraUrl="+data.data
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
change(e) {
|
||||||
|
console.log("e:", e);
|
||||||
|
this.getVideoSrc(e)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script module="renderModal" lang="renderjs">
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dom: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.dom = document.getElementById('iframe')
|
||||||
|
// 接收iframe传过来的值
|
||||||
|
window.addEventListener('message', (e)=> {
|
||||||
|
var data = e.data;
|
||||||
|
this.emitData(data)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
emitData(e) {
|
||||||
|
this.$ownerInstance.callMethod('receiveRenderData',e)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.spjk-box{
|
||||||
|
.select-bar{
|
||||||
|
margin: 10px 15px;
|
||||||
|
}
|
||||||
|
.video-box{
|
||||||
|
.normal{
|
||||||
|
position: absolute;
|
||||||
|
// width: 370px;
|
||||||
|
// height: 300px;
|
||||||
|
top: 170px;
|
||||||
|
left: 0;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
position: absolute;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
top: -30px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,149 @@
|
||||||
|
<template>
|
||||||
|
<view class="tjsj-box">
|
||||||
|
<uni-row class="tjsj-row" :width="700">
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近1h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h1||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近3h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h3||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近6h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h6||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近12h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h12||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近24h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h24||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">近48h雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.h48||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">今日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.today||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">昨日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yesterdayDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本月雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.monthDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本年雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yearDrp||0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">本年降雨天数</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.yearDrpDay||0}}/{{days}}</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row" >本年最大日雨量(mm)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row" style="display: flex; justify-content: center;">
|
||||||
|
<text>{{tableData.maxDrp||0}}</text>
|
||||||
|
<text style="color: #E69224;">({{maxDrpTime}})</text>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row">24h水位变幅(m)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row">{{tableData.rzDiff > 0 ? "+" :"" }}{{tableData.rzDiff?tableData.rzDiff.toFixed(2) : 0}}</view>
|
||||||
|
</uni-col> <uni-col :span="12">
|
||||||
|
<view class="first-row" style="border-bottom: 1px solid #dfdfdf;">本年最高水位(m)</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="second-row" style="border-bottom: 1px solid #dfdfdf;">{{tableData.maxRz ? tableData.maxRz.toFixed(2) :0}}</view>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
<view style="height:150px"></view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData:{},
|
||||||
|
days:moment().diff(moment().startOf('year'),'days')+1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
maxDrpTime(){
|
||||||
|
if(this.tableData.maxDrpTime){
|
||||||
|
return moment(this.tableData.maxDrpTime).format("YYYY-MM-DD")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getTableData(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.get(
|
||||||
|
"/gunshiApp/tsg/reservoir/water/detail?stcd=716164061")
|
||||||
|
if(data.code == 200){
|
||||||
|
this.tableData = {...data.data};
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getTableData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.tjsj-box{
|
||||||
|
max-height: 100vh;
|
||||||
|
.tjsj-row{
|
||||||
|
.first-row{
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid #dfdfdf;
|
||||||
|
border-left: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
.second-row{
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid #dfdfdf;
|
||||||
|
border-left: 1px solid #dfdfdf;
|
||||||
|
border-right: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,120 @@
|
||||||
|
<template>
|
||||||
|
<view class="txjc-box">
|
||||||
|
<view class="time-ranger">
|
||||||
|
<uni-datetime-picker type="datetimerange" v-model="tm" @change="handleRanger"></uni-datetime-picker>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="pic-box" style="margin-top: 20px; position: relative; height: 800px;">
|
||||||
|
<!-- <u-album :urls="list" singleSize="360" rowCount="1"></u-album> -->
|
||||||
|
<u-image :src="list[current]" width="380" height="400" mode="scaleToFill" :lazy-load="true" @click="previewImage"></u-image>
|
||||||
|
<image src="../../../static/images/icon.png" @click="handleLeft" class="icon-left"></image>
|
||||||
|
<image src="../../../static/images/icon.png" @click="handleRight" class="icon-right"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
const stm = moment().subtract(7, 'days').add(1, 'hour').set({minute: 0, second: 0}).format("YYYY-MM-DD HH:mm:ss");
|
||||||
|
const etm = moment().add(1, 'hour').set({minute: 0, second: 0}).format("YYYY-MM-DD HH:mm:ss");
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
source:String,
|
||||||
|
resCode:String,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tm:[stm,etm],
|
||||||
|
list:[],
|
||||||
|
current:0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleLeft(){
|
||||||
|
if(this.current > 0){
|
||||||
|
this.current -= 1;
|
||||||
|
}else{
|
||||||
|
uni.$showMsg("已经是第一张图片了")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleRight(){
|
||||||
|
if(this.list.length > this.current){
|
||||||
|
this.current += 1;
|
||||||
|
}else{
|
||||||
|
uni.$showMsg("已经是最后一张图片了")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 预览图片
|
||||||
|
previewImage(){
|
||||||
|
uni.previewImage({
|
||||||
|
urls:this.list
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleRanger(e){
|
||||||
|
this.tm = [...e]
|
||||||
|
},
|
||||||
|
// 搜索
|
||||||
|
searchHandle(){
|
||||||
|
this.getData()
|
||||||
|
|
||||||
|
},
|
||||||
|
async getData(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/river/water/image/info",
|
||||||
|
{
|
||||||
|
source:this.source,
|
||||||
|
resCode:this.resCode,
|
||||||
|
stm:this.tm[0],
|
||||||
|
etm:this.tm[1],
|
||||||
|
"pageSo": {
|
||||||
|
"pageSize": 10,
|
||||||
|
"pageNumber": 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if(data.code == 200){
|
||||||
|
let newList = data.data.records.map(item =>item.imgPath)
|
||||||
|
this.list = [...newList]
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.txjc-box{
|
||||||
|
.time-ranger{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
.search-btn{
|
||||||
|
margin: 3px 0 0 5px;
|
||||||
|
color: #3399ef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.icon-left{
|
||||||
|
position: absolute;
|
||||||
|
top: 23%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
left: 0;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
.icon-right{
|
||||||
|
position: absolute;
|
||||||
|
top: 23%;
|
||||||
|
transform: translateY(-50%) rotate(-180deg);
|
||||||
|
right: 0;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
<template>
|
||||||
|
<view class="list-box">
|
||||||
|
<uni-row class="list-row" >
|
||||||
|
<uni-col :span="12">
|
||||||
|
<view class="first-row" style="margin-left: 10px;">
|
||||||
|
<text style="display: inline-block; margin-bottom: 10px; font-weight: bold;">{{info.stnm}}</text>
|
||||||
|
<view>
|
||||||
|
<text style="margin-right: 60px; color: #aaaaaa;">{{sttype[info.source]}}</text>
|
||||||
|
<text style="color: #aaaaaa;">{{info.distance ? info.distance.toFixed(2) : 0}}km</text>
|
||||||
|
</view>
|
||||||
|
<text style="color: #aaaaaa;">{{info.tm}}</text>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="12" >
|
||||||
|
<view class="second-row" style="border: 1px solid #dfdfdf; font-size: 12px;border-bottom: 1px solid #dfdfdf;">
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex:0.5; background-color: #e1f3ff; border-right: 1px solid #dfdfdf; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
1h(mm)
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; background-color: #e1f3ff;text-align: center; border-bottom:1px solid #dfdfdf" >
|
||||||
|
3h(mm)
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex: 0.5; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
{{info.h1}}
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
{{info.h3}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex:0.5; background-color: #e1f3ff; border-right: 1px solid #dfdfdf; text-align: center; border-bottom:1px solid #dfdfdf">
|
||||||
|
6h(mm)
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; background-color: #e1f3ff;text-align: center; border-bottom:1px solid #dfdfdf" >
|
||||||
|
24h(mm)
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;">
|
||||||
|
<view style="flex: 0.5; text-align: center; border-right: 1px solid #dfdfdf;">
|
||||||
|
{{info.h6}}
|
||||||
|
</view>
|
||||||
|
<view style="flex: 0.5; text-align: center; ">
|
||||||
|
{{info.h24}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
info:Object,
|
||||||
|
default:{}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sttype: {
|
||||||
|
"SH": '山洪',
|
||||||
|
"SW": '水文',
|
||||||
|
"QX": '气象',
|
||||||
|
"SK": '水库',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.list-box{
|
||||||
|
.list-row{
|
||||||
|
padding-bottom: 3px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
.second-row{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,166 @@
|
||||||
|
<template>
|
||||||
|
<view class="zbyq-box">
|
||||||
|
<view class="search-bar">
|
||||||
|
<u-search
|
||||||
|
shape="square"
|
||||||
|
:clearabled="true"
|
||||||
|
:showAction="false"
|
||||||
|
placeholder="请输入站点"
|
||||||
|
height="40px"
|
||||||
|
@change="inputChange"
|
||||||
|
v-model="formData.value"
|
||||||
|
></u-search>
|
||||||
|
<image
|
||||||
|
src="../../../static/images/filter.png"
|
||||||
|
style="width: 20px; height: 20px; margin-right: 10px; margin-left: 10px;"
|
||||||
|
@click="popupOpen = true"
|
||||||
|
>
|
||||||
|
</image>
|
||||||
|
</view>
|
||||||
|
<view class="content">
|
||||||
|
<view v-for="(item,index) in list" :key="index" style="margin-bottom: 5px;">
|
||||||
|
<ResList :info="item" />
|
||||||
|
</view>
|
||||||
|
<view style="height:300px"></view>
|
||||||
|
</view>
|
||||||
|
<u-popup :show="popupOpen" mode="right" @close="popupOpen=false" >
|
||||||
|
<view style="padding: 30px 20px;">
|
||||||
|
<text style="font-weight: bold;">按类型</text>
|
||||||
|
<view style="margin-bottom: 10px; margin-left: -5px;">
|
||||||
|
<u-checkbox-group
|
||||||
|
v-model="formData.sources"
|
||||||
|
@change="checkboxChange"
|
||||||
|
>
|
||||||
|
<u-checkbox
|
||||||
|
:customStyle="{margin: '7px'}"
|
||||||
|
v-for="(item, index) in checkboxList1"
|
||||||
|
:key="index"
|
||||||
|
:label="item.name"
|
||||||
|
:name="item.value"
|
||||||
|
>
|
||||||
|
</u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
</view>
|
||||||
|
<text style="font-weight: bold; margin-bottom: 5px;">按距离</text>
|
||||||
|
<view style="display: flex; align-items: center;">
|
||||||
|
<u--input
|
||||||
|
placeholder="请输入"
|
||||||
|
border="surround"
|
||||||
|
type="number"
|
||||||
|
v-model="formData.distance"
|
||||||
|
style="width: 50%; margin-top: 5px; margin-right: 10px;"
|
||||||
|
></u--input>
|
||||||
|
<text>(km)</text>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex; position:absolute;bottom:20px;right:20px">
|
||||||
|
<u-button text="重置" class="bottom-btn1"
|
||||||
|
@click="formData = {...formData,sources,distance:1}"></u-button>
|
||||||
|
<u-button text="确认" color="#d9001b" class="bottom-btn2" @click="popConfirm"></u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ResList from "./resList.vue"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
stcd:String,
|
||||||
|
default:''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
popupOpen:false,
|
||||||
|
sources:["SH","SW","QX","SK"],
|
||||||
|
checkboxList1: [{
|
||||||
|
name: '山洪',
|
||||||
|
value: "SH"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水文',
|
||||||
|
value: "SW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '气象',
|
||||||
|
value: "QX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水库',
|
||||||
|
value: "SK"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
formData:{
|
||||||
|
value:'',
|
||||||
|
sources:["SH","SW","QX","SK"],
|
||||||
|
distance:1,
|
||||||
|
stcd:this.stcd
|
||||||
|
},
|
||||||
|
list:[], //搜索结果
|
||||||
|
saveList:[] //保存搜索结果
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
ResList
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
inputChange(e){
|
||||||
|
console.log("e",e);
|
||||||
|
if(!e) this.list = this.saveList;
|
||||||
|
this.formData={...this.formData,value:e}
|
||||||
|
let filterData = this.list.filter(item => item.stnm.indexOf(e) > -1);
|
||||||
|
this.list = filterData;
|
||||||
|
},
|
||||||
|
checkboxChange(n) {
|
||||||
|
console.log('change', n);
|
||||||
|
this.formData = {...this.formData,sources:n};
|
||||||
|
},
|
||||||
|
popConfirm(){
|
||||||
|
this.popupOpen = false
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
async getList(){
|
||||||
|
try{
|
||||||
|
const {data} = await uni.$http.post(
|
||||||
|
"/gunshiApp/xfflood/attResBase/rainBasinDivision/queryNearbyRainStations",{...this.formData}
|
||||||
|
)
|
||||||
|
console.log("data",data);
|
||||||
|
if(data.code == 200){
|
||||||
|
this.list = [...data.data]
|
||||||
|
this.saveList = [...data.data]
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
uni.$showMsg()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.zbyq-box{
|
||||||
|
.search-bar{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.content{
|
||||||
|
margin-top: 10px;
|
||||||
|
max-height: 100vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-btn1{
|
||||||
|
width: 100px;
|
||||||
|
margin-left: 70px;
|
||||||
|
}
|
||||||
|
.bottom-btn2{
|
||||||
|
width: 100px;
|
||||||
|
margin-right: -12px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,156 @@
|
||||||
|
<template>
|
||||||
|
<view class="zrtx-box">
|
||||||
|
<view class="title" style="text-align: center; font-size: 20px; font-weight: bold;">
|
||||||
|
{{dic}}
|
||||||
|
</view>
|
||||||
|
<view class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 50px;">
|
||||||
|
姓名
|
||||||
|
</th>
|
||||||
|
<th style="width: 130px">单位</th>
|
||||||
|
<th style="width: 80px;">
|
||||||
|
职务
|
||||||
|
</th>
|
||||||
|
<th style="width: 100px;">
|
||||||
|
联系方式
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 500px; overflow-y: auto" -->
|
||||||
|
<view >
|
||||||
|
<tr>
|
||||||
|
<td style="width: 50px">{{info.personName}}</td>
|
||||||
|
<td style="width: 130px;">{{info.orgName}}</td>
|
||||||
|
<td style="width: 80px">{{info.position}}</td>
|
||||||
|
<td style="width: 100px;color: #62bafa;" @click="show = true">{{info.tel}}</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<u-action-sheet :actions="list" :title="title" :show="show" :description="info.tel" @select="selectClick" :closeOnClickOverlay="true" :closeOnClickAction="true"></u-action-sheet>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {repDict} from "../../utils/dicType.js"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
info:Object,
|
||||||
|
default:{}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show:false,
|
||||||
|
title:"",
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
name:'呼叫'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'复制'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'取消'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
dic(){
|
||||||
|
return repDict(this.info.repType)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
selectClick(obj){
|
||||||
|
if(obj.name == "呼叫"){
|
||||||
|
uni.makePhoneCall({
|
||||||
|
phoneNumber: this.info.tel,
|
||||||
|
});
|
||||||
|
this.show = false
|
||||||
|
}else if(obj.name == "复制"){
|
||||||
|
uni.setClipboardData({
|
||||||
|
data:this.info.tel,
|
||||||
|
showToast:true
|
||||||
|
})
|
||||||
|
this.show = false
|
||||||
|
}
|
||||||
|
// else if(obj.name == "保存至手机通讯录"){
|
||||||
|
// uni.addPhoneContact({
|
||||||
|
// lastName: this.info.personName.substr(0,1),
|
||||||
|
// firstName: this.info.personName.substr(1),
|
||||||
|
// mobilePhoneNumber: this.info.tel,
|
||||||
|
// success: function () {
|
||||||
|
// uni.$showMsg("保存成功")
|
||||||
|
// },
|
||||||
|
// fail: function () {
|
||||||
|
// console.log('fail');
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
else{
|
||||||
|
this.show = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.zrtx-box{
|
||||||
|
border: 1px solid #c1f2ce;
|
||||||
|
border-radius: 2px;
|
||||||
|
padding:10px 5px 12px 5px;
|
||||||
|
background-color: #ebfbef;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
max-height: calc(100vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(100vh - 125px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
// line-height: 65rpx;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
height: 65rpx;
|
||||||
|
font-size: 14px;
|
||||||
|
// font-weight: bold;
|
||||||
|
|
||||||
|
font-weight: 100;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 65rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view class="scroll-table" v-if="list.length != 0">
|
||||||
|
<view v-for="(item,index) in list" :key="index" style="margin:5px 20px 5px 10px">
|
||||||
|
<Card :info="item" />
|
||||||
|
</view>
|
||||||
|
<view style="height:50px"></view>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
style="height:calc(100vh - 160px);display: flex;align-items: center;justify-content: center;background-color: #fff;margin-top:10px"
|
||||||
|
v-else>
|
||||||
|
<image src="../../../static/empty.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Card from "./card.vue"
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Card
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async getData() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post(
|
||||||
|
"/gunshiApp/tsg/resSafePersonB/list", {
|
||||||
|
resCode: "42120250085"
|
||||||
|
})
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.list = [...data.data];
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.scroll-table {
|
||||||
|
height: calc(100vh - 100px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
<template>
|
||||||
|
<view class="project-cotent">
|
||||||
|
<view class="total-des">
|
||||||
|
<view style="opacity:0.5">工程概况:</view>
|
||||||
|
<view>{{skInfo.projOverview}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="project-basic">
|
||||||
|
<view class="project-loc">
|
||||||
|
<text style="opacity:0.5">水库水位定位信息</text>
|
||||||
|
<view class="sk-location">
|
||||||
|
<image src='../../../static/images/loc.png' style="width:20px;height:20px"></image>
|
||||||
|
<text style="margin-left:10px">{{skInfo.resLoc}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view >
|
||||||
|
|
||||||
|
<map style="width: 100%;" id="container" :latitude="lnglat[1]" :longitude="lnglat[0]"
|
||||||
|
:markers="markers" scale="13"></map>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
skInfo: {
|
||||||
|
type: Object,
|
||||||
|
default: {}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
lnglat: [114.76, 31.52],
|
||||||
|
markers: [{
|
||||||
|
latitude: 31.52,
|
||||||
|
longitude: 114.76,
|
||||||
|
iconPath: '../../../static/tabs/add.png',
|
||||||
|
width: 25,
|
||||||
|
height: 25
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.project-cotent {
|
||||||
|
position: absolute;
|
||||||
|
padding: 0px 3px;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
overflow: hidden;
|
||||||
|
// max-height: calc(100vh - 40px);
|
||||||
|
// overflow-y: auto;
|
||||||
|
.project-basic {
|
||||||
|
// position: relative;
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 5px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-des {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
border: 1px solid #f2f2f2;
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 0 10px;
|
||||||
|
|
||||||
|
.circle-dot {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: #409eff;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-name {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
flex: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.total-des {
|
||||||
|
margin-top: 10px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk-location {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk-map12 {
|
||||||
|
// height: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amap-logo {
|
||||||
|
opacity: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amap-copyright {
|
||||||
|
opacity: 0 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,106 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'auto',backgroundColor:'#fff'}">
|
||||||
|
<u-navbar :title="skInfo.resName" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='44' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<u-tabs :list="list1" @click="click" :current="tabs" style="background-color: #fff;margin-top: 60px;"></u-tabs>
|
||||||
|
<Skjj v-if="tabs == 0" :skInfo="skInfo"></Skjj>
|
||||||
|
<Jcxx v-if="tabs == 1"></Jcxx>
|
||||||
|
<!-- 基础信息 -->
|
||||||
|
<Tzcs v-if="tabs == 2" :skInfo="skInfo" :value="jumpParams"></Tzcs>
|
||||||
|
<Krqx v-if="tabs == 3"></Krqx>
|
||||||
|
<Zrtx v-if="tabs == 4"></Zrtx>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
import Jcxx from "./jcxx.vue"
|
||||||
|
import Zrtx from "../../skDetail/zrtx/zrtx.vue"
|
||||||
|
import Krqx from "./krqx/index.vue"
|
||||||
|
import Skjj from "./basicInfo.vue"
|
||||||
|
import Tzcs from "./tzcs.vue"
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tabs:0,
|
||||||
|
jumpParams:'',
|
||||||
|
model: {
|
||||||
|
stm: '',
|
||||||
|
etm: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
list1: [ {
|
||||||
|
name: '水库简介',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '监测信息',
|
||||||
|
}, {
|
||||||
|
name: '基础信息',
|
||||||
|
}, {
|
||||||
|
name: '库容曲线'
|
||||||
|
}, {
|
||||||
|
name: '责任人'
|
||||||
|
}],
|
||||||
|
skInfo:{},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components:{
|
||||||
|
Jcxx,
|
||||||
|
Zrtx,
|
||||||
|
Krqx,
|
||||||
|
Skjj,
|
||||||
|
Tzcs
|
||||||
|
},
|
||||||
|
onLoad(options) {
|
||||||
|
this.getList();
|
||||||
|
this.tabs = options.value || 0;
|
||||||
|
this.jumpParams = options.key || '';
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
click(item) {
|
||||||
|
this.tabs = item.index;
|
||||||
|
},
|
||||||
|
getList(){
|
||||||
|
uni.$http.post('/gunshiApp/tsg/attResBase/list',this.model).then(res=>{
|
||||||
|
console.log(res,'res');
|
||||||
|
this.skInfo = res.data.data[0];
|
||||||
|
})
|
||||||
|
},
|
||||||
|
toDetail() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/wtcl/detail/index'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.swiper-content{
|
||||||
|
position: relative;
|
||||||
|
.num{
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
left: 4px;
|
||||||
|
z-index: 1;
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
padding: 0 4px;
|
||||||
|
border-radius: 6px;
|
||||||
|
opacity: .4;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.time{
|
||||||
|
position: absolute;
|
||||||
|
background-color: #000;
|
||||||
|
opacity: .4;
|
||||||
|
color: #fff;
|
||||||
|
bottom: 0;
|
||||||
|
width:100%;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,373 @@
|
||||||
|
<template>
|
||||||
|
<view class="" style="padding: 5px;">
|
||||||
|
<view class="swiper-content" v-if="imgList.length != 0">
|
||||||
|
<text class="num">{{nowNum}}/{{totalNum}}</text>
|
||||||
|
<u-swiper :list="imgList" height='230px' @change="change" imgMode="scaleToFill" keyName="imgPath"></u-swiper>
|
||||||
|
<text class="time">{{imgTime}}</text>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
style="display: flex;align-items: center;justify-content: center;background-color: #fff;"
|
||||||
|
v-else>
|
||||||
|
<image src="../../../static/empty.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
<view class="update-time">
|
||||||
|
<text>更新时间</text>
|
||||||
|
<text>{{info.tm}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="sk-info">
|
||||||
|
<view class="sk-first-row">
|
||||||
|
<view class="first-item">
|
||||||
|
<text>{{info.rz}}米</text>
|
||||||
|
<text>水位</text>
|
||||||
|
</view>
|
||||||
|
<view class="first-item">
|
||||||
|
<text>{{info.nowCap}}万m³</text>
|
||||||
|
<text>蓄水量</text>
|
||||||
|
</view>
|
||||||
|
<view class="first-line"></view>
|
||||||
|
<image style="width: 20px; height: 20px;" src="../../../static/images/first.jpg"></image>
|
||||||
|
</view>
|
||||||
|
<view class="sk-first-row">
|
||||||
|
<view class="first-item">
|
||||||
|
<text>{{info.crestElev}}米</text>
|
||||||
|
<text>坝顶高程</text>
|
||||||
|
</view>
|
||||||
|
<view class="first-item">
|
||||||
|
<text>{{info.flLowLimLev}}万m³</text>
|
||||||
|
<text>汛限水位</text>
|
||||||
|
</view>
|
||||||
|
<view class="first-item">
|
||||||
|
<text>{{info.totCap}}万m³</text>
|
||||||
|
<text>总库容</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <view class="first-extra-row">
|
||||||
|
<text>坝顶高程{{info.crestElev}}米</text>
|
||||||
|
<text>汛限水位{{info.flLowLimLev}}米</text>
|
||||||
|
<text>总库容{{info.totCap}}万m³</text>
|
||||||
|
|
||||||
|
</view> -->
|
||||||
|
<view class="sk-second-row">
|
||||||
|
<view class="first-item">
|
||||||
|
<text>{{rainInfo.today || '-'}}毫米</text>
|
||||||
|
<text>今日降雨</text>
|
||||||
|
</view>
|
||||||
|
<view class="first-item">
|
||||||
|
<text>{{rainInfo.yesterdayDrp}}毫米</text>
|
||||||
|
<text>昨日降雨</text>
|
||||||
|
</view>
|
||||||
|
<view class="first-line" style="margin-right:17px"></view>
|
||||||
|
<image style="width: 20px; height: 20px;" src="../../../static/images/second.jpg"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="rain-box">
|
||||||
|
<view class="rain-title">
|
||||||
|
<view class="line-icon"></view>
|
||||||
|
<view>水雨情过程线</view>
|
||||||
|
</view>
|
||||||
|
<view class="time-select">
|
||||||
|
<view class="time-ranger">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{stm}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{etm}}</text>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="switch-btn">
|
||||||
|
<u-subsection :list="subsectionList" :current="curNow" mode="subsection" @change="subsectionChange">
|
||||||
|
</u-subsection>
|
||||||
|
</view>
|
||||||
|
<view class="show-content">
|
||||||
|
<view style=" height: 500px; overflow-y: auto; padding:0" v-if="curNow == 0 && jcTableData.length !=0">
|
||||||
|
<qiun-data-charts :chartData="chartData.chartData" :echartsApp="true" :eopts="chartData.eopts" />
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;align-items: center;justify-content: center;background-color: #fff;" v-if="curNow == 0 &&jcTableData.length ==0">
|
||||||
|
<image src="../../../static/empty.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
<JcTable v-if="curNow == 1" :tableData='jcTableData' />
|
||||||
|
<Tjsj v-if="curNow == 2" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<u-datetime-picker :show="showTime" v-model="startTime" mode="datetime" @confirm="handleStartTime"
|
||||||
|
@cancel="showTime=false"></u-datetime-picker>
|
||||||
|
<u-datetime-picker :show="showTime1" v-model="endTime" mode="datetime" @confirm="handleEndTime"
|
||||||
|
@cancel="showTime1=false"></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
import Tjsj from "../../skDetail/tjsj/tjsj.vue"
|
||||||
|
import JcTable from "../../skDetail/jcsj/jcsjTable.vue"
|
||||||
|
import drpOption from "../../skDetail/jcsj/chartOption.js"
|
||||||
|
const stm = moment().subtract(7, 'days').set({
|
||||||
|
minute: 0,
|
||||||
|
second: 0
|
||||||
|
}).format("YYYY-MM-DD HH:mm");
|
||||||
|
const etm = moment().set({
|
||||||
|
minute: 0,
|
||||||
|
second: 0
|
||||||
|
}).format("YYYY-MM-DD HH:mm");
|
||||||
|
const url = "http://223.75.53.141:9102/test.by-lyf.tmp"
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Tjsj,
|
||||||
|
JcTable
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
startTime: stm,
|
||||||
|
endTime: etm,
|
||||||
|
imgList: [],
|
||||||
|
nowNum: 1,
|
||||||
|
totalNum: 0,
|
||||||
|
imgTime: '2024-08-12 11:00',
|
||||||
|
info: '',
|
||||||
|
rainInfo: {},
|
||||||
|
stm,
|
||||||
|
etm,
|
||||||
|
showTime: false,
|
||||||
|
showTime1: false,
|
||||||
|
subsectionList: ['图', '表', '统计值'],
|
||||||
|
curNow: 0,
|
||||||
|
jcTableData: [],
|
||||||
|
chartData: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
// 获取监测图像
|
||||||
|
async getImgList() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post(
|
||||||
|
"/gunshiApp/tsg/reservoir/water/real/img", {
|
||||||
|
resCode: "42120250085"
|
||||||
|
})
|
||||||
|
if (data.code == 200) {
|
||||||
|
const newArr = data.data.map(item => ({
|
||||||
|
...item,
|
||||||
|
imgPath: url + item.imgPath
|
||||||
|
}))
|
||||||
|
this.totalNum = newArr.length;
|
||||||
|
this.imgList = [...newArr];
|
||||||
|
this.imgTime = this.imgList[0] ?.tm || "2024-08-12 11:00";
|
||||||
|
this.nowNum = !newArr.length ? 0 : 1;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取水库水情基本信息
|
||||||
|
async getSkinfo() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post(
|
||||||
|
"/gunshiApp/tsg/reservoir/water/list")
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.info = data.data[0]
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取雨量信息
|
||||||
|
async getrainInfo() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.get(
|
||||||
|
"/gunshiApp/tsg/reservoir/water/detail?stcd=716164061")
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.rainInfo = data.data;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
async getJcsjData() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post(
|
||||||
|
"/gunshiApp/tsg/reservoir/water/monitor/data", {
|
||||||
|
stcd: "716164061",
|
||||||
|
stm: moment(this.stm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
etm: moment(this.etm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
})
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.jcTableData = [...data.data];
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
searchHandle() {
|
||||||
|
this.getJcsjData()
|
||||||
|
},
|
||||||
|
change(e) {
|
||||||
|
this.nowNum = e.current + 1;
|
||||||
|
this.imgTime = this.imgList[e.current].tm
|
||||||
|
},
|
||||||
|
handleStartTime(e) {
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.stm = time
|
||||||
|
this.showTime = false
|
||||||
|
},
|
||||||
|
handleEndTime(e) {
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.etm = time;
|
||||||
|
this.showTime1 = false
|
||||||
|
},
|
||||||
|
subsectionChange(e) {
|
||||||
|
this.curNow = e
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
jcTableData(newV, oldV) {
|
||||||
|
if (this.info) {
|
||||||
|
this.chartData = {
|
||||||
|
...drpOption(newV, this.info.afsltdz, this.info.flLowLimLev, this.info.desFloodLev, this.info.calFloodLev)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getImgList();
|
||||||
|
this.getSkinfo();
|
||||||
|
this.getrainInfo();
|
||||||
|
this.getJcsjData();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.swiper-content {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.num {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
left: 10px;
|
||||||
|
z-index: 1;
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
padding: 0 4px;
|
||||||
|
border-radius: 6px;
|
||||||
|
opacity: .4;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
position: absolute;
|
||||||
|
background-color: #000;
|
||||||
|
opacity: .4;
|
||||||
|
color: #fff;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.update-time {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 10px 5px;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk-info {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 2px 5px;
|
||||||
|
margin: 5px 0;
|
||||||
|
|
||||||
|
.sk-first-row,
|
||||||
|
.sk-second-row {
|
||||||
|
display: flex;
|
||||||
|
padding: 5px 10px;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
background-color: #f2fafc;
|
||||||
|
|
||||||
|
.first-line {
|
||||||
|
width: 3px;
|
||||||
|
height: 20px;
|
||||||
|
background-color: #c6eae6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first-item {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk-second-row {
|
||||||
|
margin: 5px 0;
|
||||||
|
background-color: #f2f8ff;
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.first-extra-row {
|
||||||
|
display: flex;
|
||||||
|
padding: 5px;
|
||||||
|
justify-content: space-between;
|
||||||
|
background-color: #f2fafc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rain-box {
|
||||||
|
padding: 5px 0px;
|
||||||
|
|
||||||
|
.rain-title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.line-icon {
|
||||||
|
width: 3px;
|
||||||
|
height: 15px;
|
||||||
|
background-color: #0079fe;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.time-ranger {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
.start-time,
|
||||||
|
.end-time {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 10px 0;
|
||||||
|
border-bottom: 1px solid #dfdfdf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.switch-btn {
|
||||||
|
width: 50%;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.show-content {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
import {GetInterval} from "../../../../utils/tools"
|
||||||
|
export default function DrpOption(data) {
|
||||||
|
const maxVal = Math.ceil(Math.max(...data.map(obj => obj.rz)))
|
||||||
|
const minVal = Math.floor(Math.min(...data.map(obj => obj.rz)))
|
||||||
|
const maxValX = Math.max(...data.map(obj => obj.w))
|
||||||
|
const minValX = Math.min(...data.map(obj => obj.w))
|
||||||
|
let arr = []
|
||||||
|
|
||||||
|
data.forEach(item=>{
|
||||||
|
arr.push([item.w,item.rz])
|
||||||
|
})
|
||||||
|
let eopts = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
},
|
||||||
|
grid: [
|
||||||
|
{
|
||||||
|
top: "12%",
|
||||||
|
left: "12%",
|
||||||
|
right: "18%",
|
||||||
|
bottom: "8%"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
name: "库容(万m³)",
|
||||||
|
nameGap: 5,
|
||||||
|
type: 'value',
|
||||||
|
min:Math.floor(minValX / 5) *5,
|
||||||
|
max:Math.ceil(maxValX / 5) *5,
|
||||||
|
interval:GetInterval(minValX,maxValX),
|
||||||
|
data: data.map(o => o.w),
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
name: "库水位(m)",
|
||||||
|
minInterval:1,
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dotted'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: true
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: true,
|
||||||
|
},
|
||||||
|
min: minVal,
|
||||||
|
max: maxVal
|
||||||
|
}
|
||||||
|
],
|
||||||
|
};
|
||||||
|
let chartData = {
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'line',
|
||||||
|
color: "#007AFD",
|
||||||
|
data: arr,
|
||||||
|
smooth: true
|
||||||
|
},
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
eopts,
|
||||||
|
chartData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view v-if="tableData.length != 0">
|
||||||
|
<view style="height: 250px; ">
|
||||||
|
<qiun-data-charts :chartData="chartData.chartData" :echartsApp="true" :eopts="chartData.eopts" />
|
||||||
|
</view>
|
||||||
|
<view style="margin-top: 20px;">
|
||||||
|
<Table :tableData="tableData" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
style="height:calc(100vh - 160px);display: flex;align-items: center;justify-content: center;background-color: #fff;margin-top:10px"
|
||||||
|
v-else>
|
||||||
|
<image src="../../../../static/empty.png" mode=""></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import drpOptions from "./chartOptions.js"
|
||||||
|
import Table from "./jcsjTable.vue"
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Table
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
chartData: {},
|
||||||
|
tableData: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getKrData() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post(
|
||||||
|
"/gunshiApp/tsg/stZvarlB/list", {
|
||||||
|
stcd: "716164061"
|
||||||
|
})
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.tableData = [...data.data];
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
tableData(n, o) {
|
||||||
|
if (n.length > 0) {
|
||||||
|
this.chartData = {
|
||||||
|
...drpOptions(n)
|
||||||
|
}
|
||||||
|
this.show = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getKrData()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
<template>
|
||||||
|
<div class="table_div">
|
||||||
|
<div class="table_cur">
|
||||||
|
<table style="width:100%;display:block">
|
||||||
|
<tr>
|
||||||
|
<th style="width: 50%;">
|
||||||
|
水位(m)
|
||||||
|
</th>
|
||||||
|
<th style="width: 50%;">库容(万m³)</th>
|
||||||
|
</tr>
|
||||||
|
<!-- style="max-height: 480px; overflow-y: auto" -->
|
||||||
|
<div class="scroll-table">
|
||||||
|
<tr v-for="(item, index) in tableData" :key="index">
|
||||||
|
<td style="width: 50%;">{{ item.rz}}</td>
|
||||||
|
<td style="width:50%;">{{ item.w }}</td>
|
||||||
|
</tr>
|
||||||
|
<div style="height:180px"></div>
|
||||||
|
</div>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from "moment"
|
||||||
|
export default {
|
||||||
|
props:{
|
||||||
|
tableData:{
|
||||||
|
type:Array,
|
||||||
|
default:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.table_div {
|
||||||
|
height: 100%;
|
||||||
|
max-width: calc(100% - 0px);
|
||||||
|
max-height: calc(100vh);
|
||||||
|
flex: 1;
|
||||||
|
padding-top: 0px;
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
/*table样式*/
|
||||||
|
.table_cur {
|
||||||
|
width: 100%;
|
||||||
|
empty-cells: show;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.scroll-table{
|
||||||
|
height: calc(100vh - 180px);
|
||||||
|
overflow-y: auto;
|
||||||
|
width:'100%'
|
||||||
|
}
|
||||||
|
.table_cur tr {
|
||||||
|
display: flex;
|
||||||
|
line-height: 75rpx;
|
||||||
|
}
|
||||||
|
.table_cur th {
|
||||||
|
height: 85rpx;
|
||||||
|
color: #3399ef;
|
||||||
|
background: #e1f3ff;
|
||||||
|
font-size: 14px;
|
||||||
|
// font-weight: bold;
|
||||||
|
padding: 0px 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table_cur td {
|
||||||
|
height: 65rpx;
|
||||||
|
// border-bottom: 1px solid #d8ddeb;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2f4056;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
/*table样式 end*/
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
//MyVideo组件
|
||||||
|
//自行封装一个组件,利用iframe实现
|
||||||
|
<template>
|
||||||
|
<iframe :onload="onloadCode" style="width:100%;height:100%;border:1px solid #fff;background: #000;"></iframe>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
src: {}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
onloadCode: '',
|
||||||
|
lnglat: [114.76, 31.52],
|
||||||
|
markers: [{
|
||||||
|
latitude: 31.52,
|
||||||
|
longitude: 114.76,
|
||||||
|
iconPath: '../../../static/tabs/add.png',
|
||||||
|
width: 25,
|
||||||
|
height: 25
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.onloadCode =
|
||||||
|
`this.contentWindow.document.body.innerHTML = '<map style="width: 100%;" id="container" latitude="${this.lnglat[1]}" longitude="${this.lnglat[0]}" markers="${this.markers}" ></map>';`
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,232 @@
|
||||||
|
<template>
|
||||||
|
<view class="basic-box">
|
||||||
|
<view class="basic-data-select">
|
||||||
|
<uni-data-select v-model="selectValue" :localdata="range" @change="selectChage" :clear="false">
|
||||||
|
</uni-data-select>
|
||||||
|
</view>
|
||||||
|
<view class="project-des">
|
||||||
|
<view v-for="(item,index) in tableData" :key="index" :style="index % 2 == 0 ? 'width:50%;':'width:50%;'">
|
||||||
|
<view style="display:flex;align-items:center;margin:15px 0px;">
|
||||||
|
<view class="circle-dot"></view>
|
||||||
|
<view class="label-name">
|
||||||
|
<text style="opacity:0.5;text-align: center;">{{item.name}}</text>
|
||||||
|
<text>{{item.value||"-"}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import selectData from "../../staticData"
|
||||||
|
const gmObj = {
|
||||||
|
"1": "大 (1)型",
|
||||||
|
"2": "大 (2)型",
|
||||||
|
"3": "中型",
|
||||||
|
"4": "小 (1)型",
|
||||||
|
"5": "小 (2)型",
|
||||||
|
"9": "其他",
|
||||||
|
}
|
||||||
|
|
||||||
|
const qdObj = {
|
||||||
|
1: "Ⅰ",
|
||||||
|
2: "Ⅱ",
|
||||||
|
3: "Ⅲ",
|
||||||
|
4: "Ⅳ",
|
||||||
|
5: "VI ",
|
||||||
|
}
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
skInfo: {
|
||||||
|
type: Object,
|
||||||
|
default: {}
|
||||||
|
},
|
||||||
|
value:{
|
||||||
|
type: String,
|
||||||
|
default:''
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: selectData[0],
|
||||||
|
range: [{
|
||||||
|
value: 0,
|
||||||
|
text: "水库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
text: "主坝"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 2,
|
||||||
|
text: "副坝"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 3,
|
||||||
|
text: "溢洪道"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 4,
|
||||||
|
text: "灌溉发电洞"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 5,
|
||||||
|
text: "放空洞"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 6,
|
||||||
|
text: "拦洪坝"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 7,
|
||||||
|
text: "防汛道路"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
selectValue: 0,
|
||||||
|
keyObj: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
selectChage(e) {
|
||||||
|
console.log("e",e);
|
||||||
|
this.selectValue = e
|
||||||
|
this.list = selectData[e]
|
||||||
|
if (e == 0) {
|
||||||
|
this.keyObj = this.skInfo;
|
||||||
|
} else if (e == 1 || e == 2 || e == 6) {
|
||||||
|
this.getDbData(e)
|
||||||
|
} else if (e == 3) {
|
||||||
|
this.getyhdData()
|
||||||
|
} else if (e == 4 || e == 5) {
|
||||||
|
this.getfdData(e)
|
||||||
|
} else {
|
||||||
|
this.getfxdData(e)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 主坝,副坝,拦洪坝
|
||||||
|
async getDbData(e) {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post('/gunshiApp/tsg/attDamBase/list')
|
||||||
|
if (data.code == 200) {
|
||||||
|
if (e == 1) {
|
||||||
|
this.keyObj = data.data.find(item => item.isMain == 1)
|
||||||
|
} else if (e == 2) {
|
||||||
|
this.keyObj = data.data.find(item => item.isMain == 0)
|
||||||
|
} else {
|
||||||
|
this.keyObj = data.data.find(item => item.isMain == 2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 溢洪道
|
||||||
|
async getyhdData(e) {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post('/gunshiApp/tsg/attSpillwayBase/list')
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.keyObj = data.data[0]
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 灌溉发电洞 放空洞
|
||||||
|
async getfdData(e) {
|
||||||
|
try {
|
||||||
|
const params = e == 5 ? 1 : 2;
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.get('/gunshiApp/tsg/resTunnel/list',{type:params})
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.keyObj = data.data[0]
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 防汛道路
|
||||||
|
async getfxdData(e) {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post('/gunshiApp/tsg/resFloodRoad/list')
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.keyObj = data.data[0]
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tableData() {
|
||||||
|
return this.list.map(item => {
|
||||||
|
if (item.key == "engScal") {
|
||||||
|
this.keyObj[item.key] = gmObj[this.skInfo[item.key]]
|
||||||
|
}
|
||||||
|
if (item.key == "seismicIntensity") {
|
||||||
|
this.keyObj[item.key] = qdObj[this.skInfo[item.key]]
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
name: item.name,
|
||||||
|
value: this.keyObj[item.key]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.keyObj = this.skInfo;
|
||||||
|
if(this.value){
|
||||||
|
this.selectChage(this.value - 0)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.basic-box {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.basic-data-select {
|
||||||
|
width: 40%;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-des {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
border: 1px solid #f2f2f2;
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 0 10px;
|
||||||
|
max-height: calc(100vh - 190px);
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
.circle-dot {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: #409eff;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-name {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
flex: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,188 @@
|
||||||
|
<template>
|
||||||
|
<view class="skinfo">
|
||||||
|
<view class="title">
|
||||||
|
<view class="left">
|
||||||
|
<u-icon name="file-text" color="#f59d29" size="20"></u-icon>
|
||||||
|
<text style="margin-left:5px">{{dataform.resName}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="right">
|
||||||
|
{{tm}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="content">
|
||||||
|
<view class="" style="display: flex;">
|
||||||
|
<!-- <image src="../../static/c1.png" mode="" style="width:30%;height: 120px;"></image> -->
|
||||||
|
<image :src="showImg" style="width: 30%;height: 120px;margin: 5px;" @click="previewImage(showImg)"></image>
|
||||||
|
<view class="listItem" @click="toDetail()">
|
||||||
|
<view class="item-text" v-for="(v,k) of list" :key="k">
|
||||||
|
<text>{{v}}</text>:
|
||||||
|
<text>{{dataform[k]}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="bottom">
|
||||||
|
<view class="bottomItem">
|
||||||
|
<view class="withd-2" @click="toWaterDetail('生活供水',shStcd)">
|
||||||
|
<text>生活供水m³/s</text>:
|
||||||
|
<text>{{shgs}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="withd-2" @click="toWaterDetail('生态供水',stStcd)">
|
||||||
|
<text>生态供水m³/s</text>:
|
||||||
|
<text>{{stgs}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import moment from 'moment'
|
||||||
|
export default{
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
list:{
|
||||||
|
"rz":'当前水位m',
|
||||||
|
"today":'今日雨量mm',
|
||||||
|
'flLowLimLev':'汛限水位m',
|
||||||
|
"afsltdz":'比汛期m',
|
||||||
|
'wcrstel':'堰顶高程m',
|
||||||
|
'crestElev':'坝顶高程m',
|
||||||
|
"h24":'24h预报mm',
|
||||||
|
"yesterdayDrp":'昨日雨量mm',
|
||||||
|
'totCap':'总库容m³',
|
||||||
|
"nowCap":'蓄水量万m³'
|
||||||
|
},
|
||||||
|
tm: '',
|
||||||
|
dataform:{},
|
||||||
|
stgs:'',
|
||||||
|
shgs:'',
|
||||||
|
stStcd:'',
|
||||||
|
shStcd:'',
|
||||||
|
imageList:[],
|
||||||
|
baseUrl:'http://223.75.53.141:9102/test.by-lyf.tmp',
|
||||||
|
showImg:'../../static/empty.png'
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
this.getDrp()
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
previewImage(item){
|
||||||
|
uni.previewImage({
|
||||||
|
urls: [this.showImg],
|
||||||
|
longPressActions: {
|
||||||
|
itemList: ['发送给朋友', '保存图片', '收藏'],
|
||||||
|
success: function(data) {
|
||||||
|
console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
|
||||||
|
},
|
||||||
|
fail: function(err) {
|
||||||
|
console.log(err.errMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getDrp(){
|
||||||
|
uni.$http.get('/gunshiApp/tsg/reservoir/water/detail?stcd=716164061&_=1731028927554').then(res=>{
|
||||||
|
|
||||||
|
this.dataform={...this.dataform,...res.data.data}
|
||||||
|
|
||||||
|
})
|
||||||
|
uni.$http.post('/gunshiApp/tsg/reservoir/water/list').then(res=>{
|
||||||
|
this.dataform={...this.dataform,...res.data.data[0]}
|
||||||
|
this.tm = res.data.data[0].tm
|
||||||
|
})
|
||||||
|
uni.$http.post('/gunshiApp/tsg/stWaterRReal/list').then(res=>{
|
||||||
|
res.data.data.forEach(item=>{
|
||||||
|
if(item.sttp == 'QQ'){
|
||||||
|
this.stgs=item.q
|
||||||
|
this.stStcd=item.stcd
|
||||||
|
}
|
||||||
|
if(item.sttp == 'PQ'){
|
||||||
|
this.shgs=item.q
|
||||||
|
this.shStcd=item.stcd
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
uni.$http.post('/gunshiApp/tsg/resProjectImg/list',{resCode:42120250085}).then(res=>{
|
||||||
|
res.data.data.forEach(item=>{
|
||||||
|
if(item.projType == 1){
|
||||||
|
this.imageList = item.files.map((item,index)=>
|
||||||
|
{
|
||||||
|
item.url = this.baseUrl + item.filePath
|
||||||
|
if(index == 0){
|
||||||
|
|
||||||
|
this.showImg = item.url
|
||||||
|
}
|
||||||
|
return item})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
toDetail(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/pages/skInfo/detail/index'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
toWaterDetail(name,stcd){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:`/pages/skInfo/waterDatail/index?name=${name}&stcd=${stcd}`,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getList(){
|
||||||
|
uni.$http.post('/gunshiApp/tsg/attResBase/list').then(res=>{
|
||||||
|
this.dataform=res.data.data[0]
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.skinfo {
|
||||||
|
.title {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
.left{
|
||||||
|
font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑', sans-serif;
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 16px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.content{
|
||||||
|
.listItem{
|
||||||
|
font-size: 13px;
|
||||||
|
color: #333333;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
width: 70%;
|
||||||
|
height: 22px;
|
||||||
|
.item-text{
|
||||||
|
width: 50%;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bottomItem{
|
||||||
|
display: flex;
|
||||||
|
border-top: 1px solid #f0f0f0;
|
||||||
|
padding: 10px 0 0 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.withd-2{
|
||||||
|
width: 50%;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #caf982;
|
||||||
|
margin-right: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,138 @@
|
||||||
|
<template>
|
||||||
|
<view :style="{height:'100vh',overflow:'auto',backgroundColor:'#fff'}">
|
||||||
|
<u-navbar :title="name" :autoBack="true" :titleStyle="{
|
||||||
|
fontSize:'18px'
|
||||||
|
}" :height='40' :safeAreaInsetTop=true leftIconSize='20' leftIconColor='rgb(153, 153, 153)'>
|
||||||
|
</u-navbar>
|
||||||
|
<view style="padding:10px">
|
||||||
|
<view class="time-ranger" style="margin-top:70px">
|
||||||
|
<view class="start-time">
|
||||||
|
<text>开始时间</text>
|
||||||
|
<text @click="showTime=true" style="margin-left:10%;color:#3399ef">{{stm}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="end-time">
|
||||||
|
<text>结束时间</text>
|
||||||
|
<text @click="showTime1=true" style="margin:0 10%;color:#3399ef">{{etm}}</text>
|
||||||
|
<view class="search-btn" @click="searchHandle">
|
||||||
|
搜索
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view v-if="tableData.length != 0">
|
||||||
|
<view class="water-chart-area">
|
||||||
|
<qiun-data-charts :chartData="chartData.chartData" :echartsApp="true" :eopts="chartData.eopts" />
|
||||||
|
</view>
|
||||||
|
<view class="water-table-area">
|
||||||
|
<Table :tableData="tableData"></Table>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="height:calc(100vh - 150px);display: flex;align-items: center;justify-content: center;background-color: #fff;" v-else>
|
||||||
|
<image src="../../../static/empty.png" mode="" ></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker :show="showTime" v-model="startTime" mode="datetime" @confirm="handleStartTime"
|
||||||
|
@cancel="showTime=false"></u-datetime-picker>
|
||||||
|
<u-datetime-picker :show="showTime1" v-model="endTime" mode="datetime" @confirm="handleEndTime"
|
||||||
|
@cancel="showTime1=false"></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import moment from 'moment';
|
||||||
|
import Table from "./jcTable.vue"
|
||||||
|
import {
|
||||||
|
numberFormat
|
||||||
|
} from '../../utils/tool'
|
||||||
|
import drpOptions from './jcOptions'
|
||||||
|
const stm = moment().subtract(7, 'days').set({
|
||||||
|
minute: 0,
|
||||||
|
second: 0
|
||||||
|
}).format("YYYY-MM-DD HH:mm");
|
||||||
|
const etm = moment().set({
|
||||||
|
minute: 0,
|
||||||
|
second: 0
|
||||||
|
}).format("YYYY-MM-DD HH:mm");
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Table
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
name: '',
|
||||||
|
stcd: '',
|
||||||
|
startTime: stm,
|
||||||
|
endTime: etm,
|
||||||
|
stm,
|
||||||
|
etm,
|
||||||
|
showTime: false,
|
||||||
|
showTime1: false,
|
||||||
|
tableData: [],
|
||||||
|
chartData: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleStartTime(e) {
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.stm = time
|
||||||
|
this.showTime = false
|
||||||
|
},
|
||||||
|
handleEndTime(e) {
|
||||||
|
let time = moment(e.value).format("YYYY-MM-DD HH:mm")
|
||||||
|
this.etm = time;
|
||||||
|
this.showTime1 = false
|
||||||
|
},
|
||||||
|
async geTableData() {
|
||||||
|
try {
|
||||||
|
const {
|
||||||
|
data
|
||||||
|
} = await uni.$http.post(
|
||||||
|
"/gunshiApp/tsg/stWaterR/list", {
|
||||||
|
stcd: this.stcd,
|
||||||
|
startTime: moment(this.stm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
endTime: moment(this.etm).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
isAsc: false,
|
||||||
|
orderField: "tm"
|
||||||
|
})
|
||||||
|
|
||||||
|
if (data.code == 200) {
|
||||||
|
this.tableData = [...data.data]
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.$showMsg();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
searchHandle() {
|
||||||
|
this.geTableData()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
tableData(n, o) {
|
||||||
|
let num = 0;
|
||||||
|
if (n.length > 0) {
|
||||||
|
n.forEach(s => {
|
||||||
|
num += Number(s.v)
|
||||||
|
})
|
||||||
|
this.chartData = {
|
||||||
|
...drpOptions(n, numberFormat(num))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.geTableData()
|
||||||
|
},
|
||||||
|
onLoad(options) {
|
||||||
|
this.stcd = options.stcd;
|
||||||
|
this.name = options.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.water-chart-area {
|
||||||
|
width: 100%;
|
||||||
|
height: 250px;
|
||||||
|
}
|
||||||
|
.water-table-area{
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,166 @@
|
||||||
|
|
||||||
|
import echarts from 'echarts/lib/echarts';
|
||||||
|
import { format } from 'echarts/lib/export';
|
||||||
|
export default function DrpOption(data,num) {
|
||||||
|
const minL = Math.floor(Math.min(...data?.map(s => s.q)));
|
||||||
|
const maxL = Math.ceil(Math.max(...data?.map(s => s.q)));
|
||||||
|
const minS = Math.floor(Math.min(...data?.map(s => s.v)));
|
||||||
|
const maxS = Math.ceil(Math.max(...data?.map(s => s.v)));
|
||||||
|
let eopts = {
|
||||||
|
title: {
|
||||||
|
text: `时段总水量:${num.value}${num.unit}m³`,
|
||||||
|
top: "0%",
|
||||||
|
right: "12%",
|
||||||
|
textStyle: {
|
||||||
|
fontWeight: "normal",
|
||||||
|
fontSize:14
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
top: '20%',
|
||||||
|
left: '7%',
|
||||||
|
right: '11%',
|
||||||
|
bottom: '10%',
|
||||||
|
borderWidth: 0
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
show: true,
|
||||||
|
top: "8%",
|
||||||
|
},
|
||||||
|
calculable: true,
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
data: data?.map(item => item.tm),
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 14,
|
||||||
|
// formatter: val => val.substr(0,'2020-11-11 11:11'.length)
|
||||||
|
format:"waterXaxis"
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.5,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
position: 'left',
|
||||||
|
name: "流量(m³/s)",
|
||||||
|
nameTextStyle: {
|
||||||
|
padding: [0, 0, 0, 30]
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dashed'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
min: minL,
|
||||||
|
max: maxL
|
||||||
|
// max: xMaxVal
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
position: 'right',
|
||||||
|
name:"水量(m³)",
|
||||||
|
splitLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: {
|
||||||
|
color: '#07a6ff',
|
||||||
|
width: 0.25,
|
||||||
|
type: 'dashed'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
color: '#333',
|
||||||
|
fontSize: 12,
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisTick: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
min: minS - 1,
|
||||||
|
max: maxS
|
||||||
|
}
|
||||||
|
],
|
||||||
|
};
|
||||||
|
let chartData = {
|
||||||
|
series: [
|
||||||
|
|
||||||
|
{
|
||||||
|
name:'流量',
|
||||||
|
type:'line',
|
||||||
|
smooth: true,
|
||||||
|
showSymbol: false,
|
||||||
|
symbol: false,
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#FAC858",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
normal: {
|
||||||
|
width: 3,
|
||||||
|
shadowColor: 'rgba(0,0,0,0.4)',
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetY: 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
markPoint: {
|
||||||
|
data: [{
|
||||||
|
name: '最大值',
|
||||||
|
type: 'max',
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
data: data?.map(s => s.q),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '水量',
|
||||||
|
type: 'bar',
|
||||||
|
yAxisIndex:1,
|
||||||
|
barWidth: '10%',
|
||||||
|
data: data?.map(s => s.v),
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color:"#5773c7"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
eopts,
|
||||||
|
chartData
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue