Merge branch 'master' into lws-gitee

# Conflicts:
#	subPackWork/electronicPatrol/taskDetails.vue
#	subPackWork/myReport/reportDetail.vue
master
Tuzki 2 years ago
commit 0b01a5abdb
  1. 2
      components/uni-list/navTab.vue
  2. BIN
      static/font/DIN Alternate Bold.ttf
  3. 31
      static/images/icons/icon-bar.svg
  4. 19
      static/images/icons/icon-patrol01.svg
  5. 19
      static/images/icons/icon-patrol02.svg
  6. 69
      static/scss/custom.scss
  7. 232
      subPackMine/info/edit.vue
  8. 22
      subPackWork/attendant/attendant.vue
  9. 2
      subPackWork/classifiedManagement/classifiedManagementEdit.vue
  10. 353
      subPackWork/commandDispatch/caseFiling/caseFiling.vue
  11. 11
      subPackWork/commandDispatch/commandDispatch.vue
  12. 26
      subPackWork/commandDispatch/commandDispatchDetail.vue
  13. 401
      subPackWork/electronicPatrol/electronicPatrol.vue
  14. 93
      subPackWork/electronicPatrol/taskDetails.vue
  15. 13
      subPackWork/emergencyPlan/emergencyPlanDetail.vue
  16. 10
      subPackWork/emergencyResources/emergencyResourcesList.vue
  17. 12
      subPackWork/equipmentManagement/equipmentEdit.vue
  18. 2
      subPackWork/equipmentManagement/equipmentManagement.vue
  19. 62
      subPackWork/myReport/reportDetail.vue
  20. 8
      subPackWork/scenicAreaManagement/scenicAreaManagement.vue
  21. 4
      subPackWork/scenicSpot/attractionsEditor.vue

@ -1,7 +1,7 @@
<template>
<view class="nav-tab">
<view class="nav-tab-box">
<scroll-view scroll-x="true" style="white-space: nowrap; display: flex" scroll-with-animation :scroll-left="tabLeft">
<scroll-view :scroll-x="true" style="white-space: nowrap; display: flex" scroll-with-animation :scroll-left="tabLeft">
<view
class="nav-tab-item"
:style="'width:' + isWidth + 'px'"

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
<style type="text/css">
.st0{fill:#367FFF;}
.st1{opacity:0.57;clip-path:url(#SVGID_00000162318215967538180370000005965298063168940192_);}
.st2{opacity:8.000000e-02;fill:#FFFFFF;}
.st3{opacity:0.13;fill:#FFFFFF;}
.st4{opacity:0.15;fill:#FFFFFF;}
</style>
<g>
<path class="st0" d="M50,5C28.4,5,11,22.5,11,44c0,25.6,39,51,39,51s39-25.6,39-51C89,22.5,71.6,5,50,5z"/>
<g>
<defs>
<path id="SVGID_1_" d="M50,5C28.4,5,11,22.5,11,44c0,25.6,39,51,39,51s39-25.6,39-51C89,22.5,71.6,5,50,5z"/>
</defs>
<clipPath id="SVGID_00000023259531816326731260000017744463046207627430_">
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
</clipPath>
<g style="opacity:0.57;clip-path:url(#SVGID_00000023259531816326731260000017744463046207627430_);">
<ellipse transform="matrix(6.315619e-03 -1 1 6.315619e-03 -4.8358 69.6079)" class="st2" cx="32.6" cy="37.2" rx="29.8" ry="29.9"/>
<ellipse transform="matrix(6.315618e-03 -1 1 6.315618e-03 3.4771 54.0464)" class="st3" cx="28.9" cy="25.3" rx="29.8" ry="29.9"/>
<ellipse transform="matrix(6.315619e-03 -1 1 6.315619e-03 -1.5064 52.1929)" class="st4" cx="25.5" cy="26.9" rx="21.9" ry="22"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g id="巡更人员-icon_00000055700926091191214340000016333243466455151245_">
<path class="st0" d="M50.8,4.8C62.5,4.8,72,14.3,72,26s-9.5,21.2-21.2,21.2c-11.7,0-21.2-9.5-21.2-21.2c0,0,0,0,0,0
C29.6,14.3,39.1,4.8,50.8,4.8z"/>
<path class="st0" d="M48.7,57.4c-3.3,5.5-5,11.7-5,18.1c0,3.7,0.6,7.3,1.7,10.8c0.5,1.3-0.2,2.7-1.6,3.2c-0.3,0.1-0.5,0.1-0.8,0.1
H11c-1.4,0-2.5-1.1-2.5-2.5c0,0,0,0,0-0.1C9.1,67.3,17.6,53.8,29,46.5c0.1-0.1,0.1-0.1,0.2-0.1c0.7-0.4,1.7-0.3,2.3,0.2
c0,0,0.1,0.1,0.1,0.1c0.1,0.1,0.1,0.1,0.2,0.2l0.2,0.2l0.4,0.3c0.3,0.2,0.5,0.4,0.8,0.6c0.5,0.4,1.1,0.8,1.6,1.2
c0.6,0.4,1.1,0.7,1.7,1.1s1.2,0.7,1.8,1c0.6,0.3,1.2,0.6,1.8,0.8c0.6,0.2,1.2,0.5,1.9,0.7c0.6,0.2,1.3,0.4,1.9,0.6s1.3,0.3,2,0.4
c0.2,0,0.5,0.1,0.7,0.1c0.4,0,0.8,0.1,1.1,0.2c0.3,0.1,0.6,0.3,0.8,0.5c0.4,0.4,0.6,0.9,0.6,1.5C49.1,56.6,48.9,57,48.7,57.4z"/>
<path class="st0" d="M69.7,46.7c-11.5,0-20.9,9.3-20.9,20.9c0,13.7,20.9,27.3,20.9,27.3s20.9-13.7,20.9-27.3
C90.6,56,81.2,46.7,69.7,46.7z M69.7,74.7c-4.8,0-8.7-3.9-8.7-8.7s3.9-8.7,8.7-8.7c4.8,0,8.7,3.9,8.7,8.7S74.5,74.7,69.7,74.7z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{fill:#FFFFFF;stroke:#FFFFFF;stroke-miterlimit:10;}
</style>
<g id="巡更轨迹-icon_00000161620261446492019310000012283681061786336440_">
<path class="st0" d="M81.3,61.9c8.1,0,14.7,6.6,14.7,14.7s-6.6,14.7-14.7,14.7l-26.7,0c-2,3.5-6.5,4.7-10,2.7
c-3.5-2-4.7-6.5-2.7-10s6.5-4.7,10-2.7c1.1,0.6,2,1.6,2.7,2.7h26.7c4.1,0,7.3-3.3,7.3-7.3s-3.3-7.3-7.3-7.3H60.6
c2.4-2.5,4.6-4.9,6.6-7.3H81.3z"/>
<path class="st0" d="M18.1,40.1L18.1,40.1C18.1,40.1,18.2,40.1,18.1,40.1c1,2.4,3.6,7.3,3.6,7.3s0,0,0,0h-3.6
c-4.1,0-7.5,3.2-7.6,7.2c-0.1,4.1,3.2,7.5,7.3,7.5h14.2c0,0,0,0,0,0c2,2.4,4.2,4.8,6.5,7.3c0,0,0,0,0,0H17.9
C9.2,69.5,2.3,61.9,3.3,53C4.2,45.6,10.7,40.1,18.1,40.1z"/>
<path class="st1" d="M50.9,4.9c-14.8,0-26.8,12-26.8,26.8c0,17.5,26.8,35,26.8,35s26.8-17.6,26.8-35C77.7,16.9,65.7,4.9,50.9,4.9z
M50.9,40.9c-6.2,0-11.2-5-11.2-11.2s5-11.2,11.2-11.2S62,23.5,62,29.7S57.1,40.9,50.9,40.9z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -1,14 +1,29 @@
/* 数字字体引入 */
@font-face {
font-family: DINAlternate;
src: url('~@/static/font/DIN Alternate Bold.ttf');
}
.v-p-b8{
padding-bottom: 16rpx!important;
}
.v-m-t8{
margin-top: 16rpx!important;
}
.v-m-t2{
margin-top: 4rpx!important;
}
.v-m-t10{
margin-top: 20rpx!important;
}
.v-m-p10{
padding-top: 20rpx!important;
}
.v-m-b8{
margin-bottom: 16rpx!important;
}
.v-m-b4{
margin-bottom: 8rpx!important;
}
.v-m-b10{
margin-bottom: 20rpx!important;
@ -16,8 +31,11 @@
.v-m-b20{
margin-bottom: 40rpx!important;
}
.v-m-l8{
margin-left: 16rpx!important;
.v-m-l4{
margin-left: 8rpx!important;
}
.v-m-r4{
margin-right: 8rpx!important;
}
.contain{
padding: 0 20rpx;
@ -30,6 +48,7 @@
display: flex;
flex-wrap: wrap;
}
.flex-nowrap{flex-wrap: nowrap!important;}
.col-6{width: 50%;flex:0 0 50%;position: relative;}
.col-4{width: 33.333%;position: relative;}
.col-3{width: 25%;position: relative;}
@ -53,6 +72,8 @@
background-color:rgba(54,127,255, .25) ;
}
.z-index99{z-index: 99;}
.text-center{text-align: center;}
.v-card-right{width: 160rpx;}
.v-unit{font-size: 26rpx; margin-left: 10rpx;}
.flex-auto{
flex:1;
@ -101,7 +122,7 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
.v-card-item{padding: 10rpx 0;}
.v-card-content{overflow: hidden;}
.v-card-mid{
display: flex;
}
@ -115,8 +136,12 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
font-size: 32rpx;
font-weight: 600;
margin-bottom: 10rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.v-card-tip{
font-family: DINAlternate;
font-size: 24rpx;
color: rgba(0, 0, 0, .65);
}
@ -216,6 +241,11 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
-webkit-box-orient: vertical;
//盒子中内容竖直排列
}
.v-bar{position: relative;height: 10rpx; background-color: #E6EEFF;}
.v-bar-inner{position: absolute; height: 100%; left:0; top:0; border-radius: 10rpx;background: linear-gradient(to right,rgba(54,127,255,.35),rgba(54,127,255,1));}
.v-bar-dot{position: absolute;width: 100rpx; text-align: center; margin-left: -50rpx; height: 50rpx; left: 0; bottom:0;
.v-bar-image{width: 40rpx; height: 40rpx;}}
.v-bar-text{font-family: DINAlternate;}
.v-box-white{background-color: #fff;}
.items-center{
align-items: center;
@ -225,17 +255,21 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
font-size: 28rpx!important;
height: 48rpx!important;
line-height: 48rpx!important;
padding: 0 20rpx;
padding: 0 20rpx!important;
border-radius: 48rpx!important;
}
.v-btn + .v-btn {
margin-left: 16rpx;
}
.block{display: block!important;}
.v-btn-primary{
box-sizing: border-box;
font-weight: 400;
background: linear-gradient(to right,rgba(54,127,255,.85),rgba(54,127,255,1));
color: #fff;
color: #fff;
}
button.v-btn-primary[disabled]{color: rgba(255,255,255,1)!important; opacity: .5;}
.v-btn-primary-b{
color: rgba(54,127,255,1) !important;
border: 1px solid rgba(54,127,255,1);
@ -244,6 +278,10 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
.v-btn-danger{
background-color: #F56C6C;
color: #fff;
}
.v-btn-warning{
background-color: #f29653;
color: #fff;
}
.v-btn-info{
background-color:rgba(0, 0, 0, .05);
@ -280,7 +318,7 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
padding: 20rpx;
}
.v-btn-large {
button.v-btn-large {
height: 80rpx!important;
line-height: 80rpx!important;
border-radius: 80rpx!important;
@ -288,8 +326,17 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
background-color:#367FFF;
}
.v-form{
.v-form-item{height: 80rpx!important;
.tree-pick{width: 100%!important;}
.selected-area{display: inline-block!important;color: rgba(0, 0, 0, 0.3)!important; }
.selected-list{display: inline-block!important;}
.uni-date-x--border{border: none!important;}
.uni-numbox{justify-content: flex-end;}
.checklist-group{justify-content: flex-end!important;}
.uni-date__x-input{height: 90rpx!important;line-height: 90rpx!important;color: rgba(0, 0, 0, 0.3)!important;}
.v-form-label{width: 150rpx!important; }
.v-form-item{
line-height: 80rpx!important;}
.v-form-item-con{line-height: 40rpx;}
.evan-form-item:not(:last-child){border-bottom: 1rpx solid rgba(0, 0, 0,.03);}
.v-form-item:not(:last-child){border-bottom: 1rpx solid rgba(0, 0, 0,.03);}
.evan-form-item-container__label{
@ -343,7 +390,7 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
.v-state-text.type2{color: rgba(71,203,160,1);background-color: rgba(71,203,160,.1);}
.v-state-text.type3{color: rgba(250,142,55,1);background-color: rgba(250,142,55,.1);}
.v-state-text.type4{color: rgba(250,78,77,1);background-color: rgba(250,78,77,.1);}
.v-state-text.type5{color: rgba(0,0,0,.65);background-color: rgba(0,0,0,.05);}
.v-state-text.type5{color: rgba(0,0,0,.35);background-color: rgba(0,0,0,.05);}
.v-user-info {
display: flex;
@ -437,12 +484,11 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
.classification-item {
display: inline-flex;
flex-direction: row;
width: 14%;
flex-direction: row;
height: 130rpx;
text-align: center;
font-size: 36rpx;
margin: 0 30rpx;
margin: 0 10rpx;
.content-box {
display: flex;
@ -452,6 +498,7 @@ top:0;left: 0; width: 100%;background: linear-gradient(to right,rgba(54,127,255,
background: linear-gradient(180deg, rgba(115, 169, 246, 0.8491990546218487) 0%, rgba(55, 127, 255, 1) 50%, rgba(115, 169, 246, 0.852000175070028) 100%);
border-radius: 10rpx;
padding: 0 10rpx;
width: 140rpx;
.normal-font-color:last-child:before {
content: '';

@ -1,127 +1,131 @@
<template>
<view class="container">
<view class="example">
<uni-forms ref="form" :model="user" labelWidth="80px">
<uni-forms-item label="用户昵称" name="nickName">
<uni-easyinput v-model="user.nickName" placeholder="请输入昵称" />
</uni-forms-item>
<uni-forms-item label="手机号码" name="phonenumber">
<uni-easyinput v-model="user.phonenumber" placeholder="请输入手机号码" />
</uni-forms-item>
<uni-forms-item label="邮箱" name="email">
<uni-easyinput v-model="user.email" placeholder="请输入邮箱" />
</uni-forms-item>
<uni-forms-item label="性别" name="sex" required>
<uni-data-checkbox v-model="user.sex" :localdata="sexs" />
</uni-forms-item>
</uni-forms>
<button type="primary" @click="submit">提交</button>
</view>
</view>
<view class="v-page">
<uni-forms ref="form" :model="user" labelWidth="80px" class="v-form">
<uni-forms-item label="用户昵称" name="nickName">
<uni-easyinput v-model="user.nickName" placeholder="请输入昵称" />
</uni-forms-item>
<uni-forms-item label="手机号码" name="phonenumber">
<uni-easyinput v-model="user.phonenumber" placeholder="请输入手机号码" />
</uni-forms-item>
<uni-forms-item label="邮箱" name="email">
<uni-easyinput v-model="user.email" placeholder="请输入邮箱" />
</uni-forms-item>
<uni-forms-item label="性别" name="sex" required>
<uni-data-checkbox v-model="user.sex" :localdata="sexs" />
</uni-forms-item>
</uni-forms>
<view class="v-page-button contain">
<button class="v-btn-large" type="primary" @click="submit">提交</button>
</view>
</view>
</template>
<script>
import { getUserProfile } from "@/api/system/user"
import { updateUserProfile } from "@/api/system/user"
import {
getUserProfile
} from "@/api/system/user"
import {
updateUserProfile
} from "@/api/system/user"
export default {
data() {
return {
user: {
nickName: "",
phonenumber: "",
email: "",
sex: ""
},
sexs: [{
text: '男',
value: "0"
}, {
text: '女',
value: "1"
}],
rules: {
nickName: {
rules: [{
required: true,
errorMessage: '用户昵称不能为空'
}]
},
phonenumber: {
rules: [{
required: true,
errorMessage: '手机号码不能为空'
}, {
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
errorMessage: '请输入正确的手机号码'
}]
},
email: {
rules: [{
required: true,
errorMessage: '邮箱地址不能为空'
}, {
format: 'email',
errorMessage: '请输入正确的邮箱地址'
}]
}
}
}
},
onLoad() {
this.getUser()
},
onReady() {
this.$refs.form.setRules(this.rules)
},
methods: {
getUser() {
getUserProfile().then(response => {
this.user = response.data
})
},
submit(ref) {
this.$refs.form.validate().then(res => {
updateUserProfile(this.user).then(response => {
this.$modal.msgSuccess("修改成功")
})
})
}
}
}
export default {
data() {
return {
user: {
nickName: "",
phonenumber: "",
email: "",
sex: ""
},
sexs: [{
text: '男',
value: "0"
}, {
text: '女',
value: "1"
}],
rules: {
nickName: {
rules: [{
required: true,
errorMessage: '用户昵称不能为空'
}]
},
phonenumber: {
rules: [{
required: true,
errorMessage: '手机号码不能为空'
}, {
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
errorMessage: '请输入正确的手机号码'
}]
},
email: {
rules: [{
required: true,
errorMessage: '邮箱地址不能为空'
}, {
format: 'email',
errorMessage: '请输入正确的邮箱地址'
}]
}
}
}
},
onLoad() {
this.getUser()
},
onReady() {
this.$refs.form.setRules(this.rules)
},
methods: {
getUser() {
getUserProfile().then(response => {
this.user = response.data
})
},
submit(ref) {
this.$refs.form.validate().then(res => {
updateUserProfile(this.user).then(response => {
this.$modal.msgSuccess("修改成功")
})
})
}
}
}
</script>
<style lang="scss">
page {
background-color: #ffffff;
}
page {
background-color: #ffffff;
}
.example {
padding: 15px;
background-color: #fff;
}
.example {
padding: 15px;
background-color: #fff;
}
.segmented-control {
margin-bottom: 15px;
}
.segmented-control {
margin-bottom: 15px;
}
.button-group {
margin-top: 15px;
display: flex;
justify-content: space-around;
}
.button-group {
margin-top: 15px;
display: flex;
justify-content: space-around;
}
.form-item {
display: flex;
align-items: center;
flex: 1;
}
.form-item {
display: flex;
align-items: center;
flex: 1;
}
.button {
display: flex;
align-items: center;
height: 35px;
line-height: 35px;
margin-left: 10px;
}
</style>
.button {
display: flex;
align-items: center;
height: 35px;
line-height: 35px;
margin-left: 10px;
}
</style>

@ -17,18 +17,18 @@
<view class="v-card-item" v-for="(item, index) in listItem" v-if="listItem.length > 0"
:key="index" @click.stop="goDetail(item)">
<view class="v-card-box row">
<view class="v-card-icon">
<view class="images" v-if="item.imageUrl">
<image style="width: 200px; height: 200px; background-color: #eeeeee"
:mode="'center'" :src="baseUrls + item.imageUrl.split(',')[0]"></image>
<view class="v-card-icon">
<view class="images" v-if="item.imageUrl">
<image :mode="'widthFix'" :src="baseUrls + item.imageUrl.split(',')[0]"></image>
</view>
<view class="images" v-else>暂无图片</view>
</view>
<view class="v-card-content">
<view class="v-card-title">{{ item.name || '/' }}</view>
<view class="v-card-tip">电话{{ item.phone || '/' }}</view>
</view>
<view class="images" v-else>暂无图片</view>
</view>
<view class="v-card-content">
<view class="v-card-title">{{ item.name || '/' }}</view>
<view class="v-card-tip">电话{{ item.phone || '/' }}</view>
</view>
</view></view>
</view>
</view>
<view class="noCard" v-if="!listItem || listItem.length === 0">暂无信息</view>
</scroll-view>
@ -339,4 +339,4 @@
color: #999;
width: 80%;
}
</style>
</style>

@ -14,7 +14,7 @@
placeholder-class="form-input-placeholder" />
</evan-form-item>
<evan-form-item label="显示排序:" prop="sort">
<uni-number-box v-model="info.sort" />
<uni-number-box class="v-m-t10" v-model="info.sort" />
</evan-form-item>
<evan-form-item label="状态:" prop="status">
<uni-data-checkbox v-model="info.status" :localdata="range"></uni-data-checkbox>

@ -1,203 +1,194 @@
<template>
<view class="detail-container">
<view class="g-body">
<view class="evan-form-show">
<evan-form ref="form" :hide-required-asterisk="hideRequiredAsterisk" :model="info">
<view class="body-item">
<evan-form-item label="回访人:" prop="userId">
<uni-data-picker
class="tree-pick"
v-model="info.userId"
:localdata="classDataTree"
placeholder="请选择回访人"
popup-title="请选择"
@change="onchange"
@inputclick="inputclick"
@nodeclick="onnodeclick"
@popupclosed="onpopupclosed"
@popupopened="onpopupopened"
></uni-data-picker>
</evan-form-item>
<evan-form-item label="满意度:" prop="satisfactionType">
<picker @change="bindPickerChange" :value="index" :range="array" >
<view class="uni-input">{{ array[index] }}</view>
</picker>
</evan-form-item>
</view>
<view class="body-item">
<evan-form-item label="回访反馈:" prop="returnCallFeedback">
<textarea class="area-text" v-model="info.returnCallFeedback" auto-height />
</evan-form-item>
</view>
<view class="body-item">
<evan-form-item label="归档总结:" prop="filingSummary">
<textarea class="area-text" v-model="info.filingSummary" auto-height />
</evan-form-item>
</view>
<view class="v-page">
<view class="v-card contain">
<view class="v-card-box">
<evan-form ref="form" class="v-form" :hide-required-asterisk="hideRequiredAsterisk" :model="info">
<evan-form-item label="回访人:" prop="userId">
<uni-data-picker class="tree-pick" v-model="info.userId" :localdata="classDataTree"
placeholder="请选择回访人" popup-title="请选择" @change="onchange" @inputclick="inputclick"
@nodeclick="onnodeclick" @popupclosed="onpopupclosed"
@popupopened="onpopupopened"></uni-data-picker>
</evan-form-item>
<evan-form-item label="满意度:" prop="satisfactionType">
<picker @change="bindPickerChange" :value="index" :range="array">
<view class="uni-input">{{ array[index] }}</view>
</picker>
</evan-form-item>
<evan-form-item label="回访反馈:" prop="returnCallFeedback">
<textarea class="area-text" v-model="info.returnCallFeedback" auto-height />
</evan-form-item>
<evan-form-item label="归档总结:" prop="filingSummary">
<textarea class="area-text" v-model="info.filingSummary" auto-height />
</evan-form-item>
</evan-form>
<button class="evan-form-show__button" @click="save">归档</button>
<view class="v-page-button contain">
<button class="v-btn-large" @click="save">归档</button>
</view>
</view>
</view>
</view>
</template>
<script>
import {getAddressBookData} from '@/api/addressbook/index.js'
import {industryArchive} from '@/api/word/commandDispatch.js'
export default {
data() {
return {
hideRequiredAsterisk: false,
classDataTree: [],
array: ['非常满意', '满意', '一般', '不满意'],
index: 0,
info: {
userId: '',
satisfactionType: '1',
returnCallFeedback: '',
filingSummary: '',
status:5
},
rules: {
userId: {
required: true,
message: '请选择回访人'
},
satisfactionType: {
required: true,
message: '请选择满意度'
import {
getAddressBookData
} from '@/api/addressbook/index.js'
import {
industryArchive
} from '@/api/word/commandDispatch.js'
export default {
data() {
return {
hideRequiredAsterisk: false,
classDataTree: [],
array: ['非常满意', '满意', '一般', '不满意'],
index: 0,
info: {
userId: '',
satisfactionType: '1',
returnCallFeedback: '',
filingSummary: '',
status: 5
},
returnCallFeedback: {
required: true,
message: '请输入回访反馈'
},
filingSummary: {
required: true,
message: '请输入归档总结'
rules: {
userId: {
required: true,
message: '请选择回访人'
},
satisfactionType: {
required: true,
message: '请选择满意度'
},
returnCallFeedback: {
required: true,
message: '请输入回访反馈'
},
filingSummary: {
required: true,
message: '请输入归档总结'
}
}
}
};
},
onShow() {},
onLoad(option) {
this.id =option.id
},
mounted() {
this.$refs.form.setRules(this.rules);
this.getAddressBookData();
},
methods: {
bindPickerChange: function (e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.index = e.detail.value
this.info.satisfactionType = e.detail.value
};
},
onnodeclick(e) {
console.log('nodeclick', e);
},
onpopupopened(e) {
console.log('onpopupopened');
},
onpopupclosed(e) {
console.log('onpopupclosed');
onShow() {},
onLoad(option) {
this.id = option.id
},
onchange(e) {
console.log('onchange', e.detail.value);
mounted() {
this.$refs.form.setRules(this.rules);
this.getAddressBookData();
},
inputclick(e) {
console.log('inputclick');
},
save() {
let this_ = this;
this.info.id = this.id
console.log(this.info)
this.$refs.form.validate((res) => {
if (res) {
//
industryArchive(this.info).then((resp) => {
if (resp.code == 200) {
uni.showToast({
title: '归档成功'
});
uni.navigateBack({
delta: 1,
complete: () => {
uni.startPullDownRefresh()
}
});
}
});
} else {
uni.showToast({
title: '请填写完整',
icon: 'none'
});
}
});
},
//
getAddressBookData(){
getAddressBookData().then(res =>{
const convert = (data) => {
return data.map(item => {
if (item.type === 'department') {
return {
text: item.name,
value: item.id,
children: convert(item.children)
}
} else {
return {
text: item.name,
value: item.id
}
}
})
}
const result = convert(res.data);
this.classDataTree = result
})
},
}
};
methods: {
bindPickerChange: function(e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.index = e.detail.value
this.info.satisfactionType = e.detail.value
},
onnodeclick(e) {
console.log('nodeclick', e);
},
onpopupopened(e) {
console.log('onpopupopened');
},
onpopupclosed(e) {
console.log('onpopupclosed');
},
onchange(e) {
console.log('onchange', e.detail.value);
},
inputclick(e) {
console.log('inputclick');
},
save() {
let this_ = this;
this.info.id = this.id
console.log(this.info)
this.$refs.form.validate((res) => {
if (res) {
//
industryArchive(this.info).then((resp) => {
if (resp.code == 200) {
uni.showToast({
title: '归档成功'
});
uni.navigateBack({
delta: 1,
complete: () => {
uni.startPullDownRefresh()
}
});
}
});
} else {
uni.showToast({
title: '请填写完整',
icon: 'none'
});
}
});
},
//
getAddressBookData() {
getAddressBookData().then(res => {
const convert = (data) => {
return data.map(item => {
if (item.type === 'department') {
return {
text: item.name,
value: item.id,
children: convert(item.children)
}
} else {
return {
text: item.name,
value: item.id
}
}
})
}
const result = convert(res.data);
this.classDataTree = result
})
},
}
};
</script>
<style lang="scss" scoped>
.evan-form-show__button {
position: fixed;
bottom: 20rpx;
width: 94%;
transform: translateX(3%);
background-color: rgb(54, 127, 255);
color: #eee;
}
.evan-form-show__button {
position: fixed;
bottom: 20rpx;
width: 94%;
transform: translateX(3%);
background-color: rgb(54, 127, 255);
color: #eee;
}
.uni-input-placeholder {
font-size: 24rpx;
}
.uni-input-placeholder {
font-size: 24rpx;
}
.set-position {
position: absolute;
right: 20rpx;
}
.set-position {
position: absolute;
right: 20rpx;
}
.form-input {
width: 95%;
}
.form-input {
width: 95%;
}
.tree-pick {
width: 95%;
}
.tree-pick {
width: 95%;
}
.title-pic {
padding: 10px 21px;
color: #4d4d4d;
}
</style>
.title-pic {
padding: 10px 21px;
color: #4d4d4d;
}
</style>

@ -14,13 +14,14 @@
<image class="v-card-icon-img" src="@/static/images/icons/icon-advice.svg">
</image>
</view>
<view class="v-card-content">
<view class="v-card-title">{{ item.title }}<text
class="v-state-text type1">{{ item.statusName }}</text> </view>
<view class="v-card-content flex-auto">
<view class="v-card-title">{{ item.title }} </view>
<view class="v-card-tip">上报时间{{ item.reportTime }}</view>
</view>
<button v-if="item.status == 4 ||item.status == 3" class="over-btn" size="mini"
@click.stop="saveDetail(item)">警情归档</button>
<view class="v-card-right text-center"><view
class="v-state-text type1 v-m-b4">{{ item.statusName }}</view>
<view v-if="item.status == 4 ||item.status == 3" class="v-btn v-btn-primary" size="mini"
@click.stop="saveDetail(item)">警情归档</view></view>
</view>
</view>
</scroll-view>

@ -1,10 +1,10 @@
<template>
<view class="v-page">
<view class="v-card contain" style="padding-bottom: 40rpx;">
<view class="v-card contain" style="padding-bottom: 130rpx;">
<view class="v-step-box">
<view class="align-right v-m-t8 v-m-b8">
<view @click="goList" class="v-btn v-btn-primary-b ">处理记录</view>
<view @click="goList" class="v-btn v-btn-primary-b ">处理记录</view>
</view>
<view class="status-bottom">
<evan-steps :active="datas.status-1" direction="horizontal">
@ -44,8 +44,8 @@
</uni-list>
</view>
</view>
<view class="v-card-box v-m-t10">
<view v-if="datas.status<3" class="v-card-grid-group">
<view v-if="datas.status<3">
<view class="v-card-box v-m-t10 v-card-grid-group">
<view class="v-card-grid-item" @click.stop="goMonitor">
<view class="v-card-grid-icon">
<image src="@/static/images/icons/icon-index-video.svg" mode="widthFix"></image>
@ -71,10 +71,12 @@
<view class="v-card-grid-text">人员调度</view>
</view>
</view>
<view v-else class="big-btn">
<button @click="finishEvent" class="prime-btn">警情归档</button>
</view>
</view>
<view v-else class="v-page-button contain">
<button @click="finishEvent" class="v-btn-large">警情归档</button>
</view>
</view>
</view>
</template>
@ -210,11 +212,11 @@
//
getReportType() {
getDicts("alarm_status").then(res => {
if(res.code === 200){
if (res.code === 200) {
let arr = []
res.data.forEach(item =>{
res.data.forEach(item => {
arr.push(item)
})
})
this.processState = arr
console.log(this.processState)
}
@ -301,8 +303,8 @@
.big-btn {
margin: 20rpx;
}
.step-items:first-child{
.step-items:first-child {
margin-left: 300rpx;
}
</style>

@ -1,20 +1,32 @@
<template>
<view class="detail-container">
<view class="v-page">
<view class="g-body">
<view class="body-item">
<calendar :signeddates="signeddates" @on-click="showData" :open="true"></calendar>
</view>
<view class="body-item">
<view class="job-list" v-for="item in jobList">
<view class="job-title-box">
<text class="job-title big-font">{{ item.patrolTaskName }}</text>
<text class="job-status small-font">{{ item.taskState }}</text>
</view>
<view class="job-detail">
<view class="j-d-item">开始时间{{ item.startDate }}</view>
<view class="j-d-item">完成度{{ item.completeness }}</view>
<view class="v-card contain">
<view class="v-card-item" v-for="item in jobList">
<view class="v-card-box" style="padding-bottom: 40rpx;">
<view class="row">
<view class="v-card-content flex-auto">
<view class="v-card-title">{{ item.patrolTaskName }}</view>
<view class="v-card-tip">开始时间{{ item.startDate }}</view>
</view>
<view class="v-card-right text-center">
<view class="v-state-text v-m-b4" :class="item.taskState == '已完成' ? 'type1' : 'type5'">{{ item.taskState }}</view>
<button @click="signIn(item)" size="mini" class="v-btn "
:class="item.statusDesign == '即将开始' ? 'v-btn-info' : 'v-btn-primary'">{{ item.statusDesign }}</button>
</view>
</view>
<view class="v-bar" style="margin-top: 30rpx;">
<view class="v-bar-dot" :style="{'left':item.completeness}">
<image class="v-bar-image" src="@/static/images/icons/icon-bar.svg">
</image>
<view class="v-bar-text font-primary v-m-t2">{{item.completeness}}</view>
</view>
<view class="v-bar-inner" :style="{'width':item.completeness}"></view>
</view>
</view>
<button @click="signIn(item)" size="mini" :class="item.statusDesign == '即将开始' ? 'job-btn-off' : 'job-btn-on'">{{ item.statusDesign }}</button>
</view>
</view>
</view>
@ -22,195 +34,204 @@
</template>
<script>
import calendar from '@/components/dark-calendar/dark-calendar.vue';
import {getPatrollingTaskData,getDateWithData} from '@/api/word/electronicPatrol.js';
import {formatDate} from '@/pages/work/util/date.js'
export default {
components: { calendar },
data() {
return {
//
signeddates: [],
jobList: [],
nowTime: '',
patrolDate: ''
};
},
onShow() {
},
created() {
},
mounted() {
this.getDateWithData();
//this.getList();
let now = new Date();
this.nowTime = now.getHours() + ':' + now.getMinutes();
this.patrolDate = formatDate(now);
this.getPatrollingTaskData();
},
methods: {
//
signIn(val){
if(val.statusDesign == '巡更打卡'){
uni.navigateTo({
url:'taskDetails?id='+val.id+'&patrolDate='+this.patrolDate
})
}
import calendar from '@/components/dark-calendar/dark-calendar.vue';
import {
getPatrollingTaskData,
getDateWithData
} from '@/api/word/electronicPatrol.js';
import {
formatDate
} from '@/pages/work/util/date.js'
export default {
components: {
calendar
},
showData(e) {
this.patrolDate = formatDate(e)
this.getPatrollingTaskData()
data() {
return {
//
signeddates: [],
jobList: [],
nowTime: '',
patrolDate: ''
};
},
getList() {
setTimeout(() => {
let data = [
{
id: '12',
patrolTaskName: '任务点1',
startDate: '08:20',
completeness: '100.0%',
taskState: '未开始'
},
{
id: '12',
patrolTaskName: '任务点2',
startDate: '08:20',
completeness: '100.0%',
taskState: '未开始'
},
{
id: '12',
patrolTaskName: '任务点3',
startDate: '08:20',
completeness: '100.0%',
taskState: '未开始'
},
{
id: '12',
patrolTaskName: '任务点4',
startDate: '18:20',
completeness: '100.0%',
taskState: '未开始'
}
];
this.jobList = data;
if (this.jobList.length > 0) {
this.jobList.forEach((item) => {
let now = new Date();
let nowStr = now.getHours() + ':' + now.getMinutes();
let timeStr = item.startDate;
let obj = {
statusDesign: '即将开始'
};
if (timeStr >= nowStr) {
item = Object.assign(item, obj);
} else {
obj.statusDesign = '巡更打卡';
item = Object.assign(item, obj);
}
});
}
}, 1000);
onShow() {
},
getPatrollingTaskData(){
let data ={
"patrolDate": this.patrolDate,
}
created() {
},
mounted() {
this.getDateWithData();
//this.getList();
let now = new Date();
getPatrollingTaskData(data).then(res =>{
if(res.code == 200){
this.jobList =res.rows
if (this.jobList.length > 0) {
this.jobList.forEach((item) => {
let nowStr = (formatDate(now) +" "+now);
let timeStr = (this.patrolDate+ " "+ item.startDate);
let obj = {
statusDesign: '即将开始'
};
if (timeStr > nowStr) {
item = Object.assign(item, obj);
} else {
obj.statusDesign = '巡更打卡';
item = Object.assign(item, obj);
}
});
}
}
})
this.nowTime = now.getHours() + ':' + now.getMinutes();
this.patrolDate = formatDate(now);
this.getPatrollingTaskData();
},
getDateWithData(){
let this_ = this
var date=new Date;
var year=date.getFullYear();
var month=date.getMonth()+1;
month =(month<10 ? "0"+month:month);
var mydate = (year.toString()+'-'+month.toString());
getDateWithData(mydate).then(res =>{
if(res.code == 200){
// this.signeddates = res.data
let dateData = [];
res.data.forEach(item =>{
let year = item.substring(0,4)
let month = item.substring(6,7)
let day = item.substring(8,item.length)
let time = year+'-'+month+'-'+day
dateData.push(time)
})
this.$nextTick(()=>{
this_.signeddates = dateData
})
this.$forceUpdate()
}
})
methods: {
//
signIn(val) {
if (val.statusDesign == '巡更打卡') {
uni.navigateTo({
url: 'taskDetails?id=' + val.id + '&patrolDate=' + this.patrolDate
})
}
},
showData(e) {
this.patrolDate = formatDate(e)
this.getPatrollingTaskData()
},
getList() {
setTimeout(() => {
let data = [{
id: '12',
patrolTaskName: '任务点1',
startDate: '08:20',
completeness: '100.0%',
taskState: '未开始'
},
{
id: '12',
patrolTaskName: '任务点2',
startDate: '08:20',
completeness: '100.0%',
taskState: '未开始'
},
{
id: '12',
patrolTaskName: '任务点3',
startDate: '08:20',
completeness: '100.0%',
taskState: '未开始'
},
{
id: '12',
patrolTaskName: '任务点4',
startDate: '18:20',
completeness: '100.0%',
taskState: '未开始'
}
];
this.jobList = data;
if (this.jobList.length > 0) {
this.jobList.forEach((item) => {
let now = new Date();
let nowStr = now.getHours() + ':' + now.getMinutes();
let timeStr = item.startDate;
let obj = {
statusDesign: '即将开始'
};
if (timeStr >= nowStr) {
item = Object.assign(item, obj);
} else {
obj.statusDesign = '巡更打卡';
item = Object.assign(item, obj);
}
});
}
}, 1000);
},
getPatrollingTaskData() {
let data = {
"patrolDate": this.patrolDate,
}
let now = new Date();
getPatrollingTaskData(data).then(res => {
if (res.code == 200) {
this.jobList = res.rows
if (this.jobList.length > 0) {
this.jobList.forEach((item) => {
let nowStr = (formatDate(now) + " " + now);
let timeStr = (this.patrolDate + " " + item.startDate);
let obj = {
statusDesign: '即将开始'
};
if (timeStr > nowStr) {
item = Object.assign(item, obj);
} else {
obj.statusDesign = '巡更打卡';
item = Object.assign(item, obj);
}
});
}
}
})
},
getDateWithData() {
let this_ = this
var date = new Date;
var year = date.getFullYear();
var month = date.getMonth() + 1;
month = (month < 10 ? "0" + month : month);
var mydate = (year.toString() + '-' + month.toString());
getDateWithData(mydate).then(res => {
if (res.code == 200) {
// this.signeddates = res.data
let dateData = [];
res.data.forEach(item => {
let year = item.substring(0, 4)
let month = item.substring(6, 7)
let day = item.substring(8, item.length)
let time = year + '-' + month + '-' + day
dateData.push(time)
})
this.$nextTick(() => {
this_.signeddates = dateData
})
this.$forceUpdate()
}
})
}
}
}
};
};
</script>
<style lang="scss" scoped>
.body-item {
.job-list {
width: 95%;
margin: 0 2.5%;
padding: 20rpx;
border-bottom: solid 1px #eee;
position: relative;
.job-title-box {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10rpx;
.job-status {
color: #4f4f4f;
.body-item {
.job-list {
width: 95%;
margin: 0 2.5%;
padding: 20rpx;
border-bottom: solid 1px #eee;
position: relative;
.job-title-box {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10rpx;
.job-status {
color: #4f4f4f;
}
}
}
.job-detail {
color: #8f8f8f;
}
.job-btn-off,.job-btn-on {
position: absolute;
right: 7px;
top: 6vh;
}
.job-btn-on{
background-color: rgb(54, 127, 255);
color: #eee;
.job-detail {
color: #8f8f8f;
}
.job-btn-off,
.job-btn-on {
position: absolute;
right: 7px;
top: 6vh;
}
.job-btn-on {
background-color: rgb(54, 127, 255);
color: #eee;
}
}
}
}
</style>
</style>

@ -1,30 +1,37 @@
<template>
<view class="detail-container">
<view class="g-body">
<view class="body-item">
<view class="job-list">
<view class="job-title-box">
<text class="job-title big-font">{{ job.patrolTaskName }}</text>
<text class="job-status small-font">{{ job.taskState }}</text>
</view>
<view class="job-detail">
<view class="j-d-item">开始时间{{ job.startDate }}</view>
<view class="j-d-item">完成度{{ job.completeness }}</view>
<view class="v-page">
<view class="v-card contain">
<view class="v-card-box v-card-bg" style="padding-bottom: 40rpx;">
<view class="job-title-box">
<text class="v-card-title">{{ job.patrolTaskName }}</text>
<text class="v-state-text" :class="job.taskState == '已完成' ? 'type1' : 'type5'">{{ job.taskState }}</text>
</view>
<view class="v-card-tip">开始时间{{ job.startDate }}</view>
<view class="v-bar" style="margin: 30rpx 0;">
<view class="v-bar-dot" :style="{'left':job.completeness}">
<image class="v-bar-image" src="@/static/images/icons/icon-bar.svg">
</image>
<view class="v-bar-text font-primary v-m-t2">{{job.completeness}}</view>
</view>
<view class="job-btn-box">
<view @click="goPerson(job.id)" class="job-person">
<image class="job-icon" src="@/static/images/icons/ren.png" mode="widthFix"></image>
<text>值守人员</text>
<view class="v-bar-inner" :style="{'width':job.completeness}"></view>
</view>
<view class="row v-m-t10">
<view class="col-6">
<view @click="goPerson(job.id)" class="v-btn block v-btn-primary v-m-r4 text-center">
<image class="v-card-icon-img" src="@/static/images/icons/icon-patrol01.svg"></image><text>值守人员</text>
</view>
<view @click="goLine(job.id)" class="job-person">
<image class="job-icon" src="@/static/images/icons/luxian.png" mode="widthFix"></image>
<text>巡更轨迹</text>
</view>
<view class="col-6">
<view @click="goLine(job.id)" class="v-btn block v-btn-warning v-m-l4 text-center">
<image class="v-card-icon-img" src="@/static/images/icons/icon-patrol02.svg"></image><text>巡更轨迹</text>
</view>
</view>
</view>
</view>
<view class="body-item">
<common-title :title="'巡更点位'" ></common-title>
<view class="v-card-box v-m-t10">
<common-title :title="'巡更点位'"></common-title>
<view class="task-item" v-for="item in job.list">
<view class="job-title">
{{item.patrolPointName}}
@ -32,19 +39,21 @@
<view class="job-detail">
开始时间{{item.startDate}}
</view>
<view >
<view>
<view>
<template v-if="(nowDate == patrolDate)">
<button @click="clockIn(item)" :class="[item.finishDate==''?'unfinish-btn':'finish-btn','task-btn']" :disabled="item.finishDate!='' && item.finishDate != null">{{item.finishDate=='' || item.finishDate == null?'打卡':'已打卡'}} </button>
<button @click="clockIn(item)"
:class="[item.finishDate==''?'unfinish-btn':'finish-btn','task-btn']"
:disabled="item.finishDate!='' && item.finishDate != null">{{item.finishDate=='' || item.finishDate == null?'打卡':'已打卡'}}
</button>
</template>
<template v-else>
<button :class="['finish-btn','task-btn']" disabled="true">{{item.finishDate=='' || item.finishDate == null?'未完成':'已打卡'}} </button>
<button :class="['finish-btn','task-btn']"
disabled="true">{{item.finishDate=='' || item.finishDate == null?'未完成':'已打卡'}}
</button>
</template>
</view>
</view>
</view>
</view>
@ -68,7 +77,7 @@ export default {
completeness: '100.0%',
taskState: '未完成',
list: [ ],
nowDate: '',
}
};
@ -78,7 +87,7 @@ export default {
let patrolDate = option.patrolDate;
this.taskId = id;
this.patrolDate = patrolDate;
let now = new Date();
let now = new Date();
this.nowDate = formatDate(now)
console.log(this.patrolDate == this.nowDate)
this.getPatrollingTaskDetail();
@ -106,8 +115,8 @@ export default {
this.job = res.data
}
})
},
clockIn(val){
},
clockIn(val){
let myDate = new Date();
let str = myDate.toTimeString(); //"10:55:24 GMT+0800 ()"
let timeStr = str.substring(0,8); // '10:55:24'
@ -116,15 +125,15 @@ export default {
title:"尚未到打卡时间",
icon: 'none'
})
}else{
this.patrollingClock(val)
}
},
//
patrollingClock(val){
patrollingClock(val){
let _that =this;
uni.getLocation({
type: 'gcj02',
@ -138,8 +147,8 @@ export default {
"patrolPointId": val.patrolPointId,
"longitude": res.longitude,
"dimension":res.latitude
}
}
patrollingClock(data).then(res =>{
let _that = this
if(res.code == 200){
@ -149,7 +158,7 @@ export default {
_that.getPatrollingTaskDetail();
}
})
}
});
@ -190,18 +199,18 @@ export default {
background-color: rgb(54, 127, 255);
color: #eee;
}
.job-btn-box{
display: flex;
align-items: center;
margin-top: 30rpx;
.job-person{
display: flex;
align-items: center;
margin-right: 30rpx;
}
.job-icon{
width: 40rpx;
height: 40rpx;
@ -215,7 +224,7 @@ export default {
padding:0 20rpx 20rpx;
border-bottom: solid 1rpx #eee;
position: relative;
.job-title{
margin-bottom: 10rpx;
font-size: 32rpx;

@ -12,12 +12,13 @@
{{ datas.name }}
</view>
<view class="v-form">
<view class="v-form-item row items-center">事件分类{{ datas.classificationName || '-' }}</view>
<view class="v-form-item row items-center">预案说明{{ datas.description || '-' }}</view>
<view class="v-form-item row items-center">备注{{ datas.remark || '-' }}</view>
<view class="v-form-item row items-center">
文件附件
<view class="file-list-box">
<view class="v-form-item row"><text class="v-form-label">事件分类</text>{{ datas.classificationName || '-' }}</view>
<view class="v-form-item row"><text class="v-form-label">预案说明</text><text
class="v-form-item-con v-m-p10 flex-auto">{{ datas.description || '-' }}</text></view>
<view class="v-form-item row"><text class="v-form-label">备注</text>{{ datas.remark || '-' }}</view>
<view class="v-form-item row">
<text class="v-form-label">文件附件</text>
<view class="v-form-item-con v-m-p10">
<view class="file-item" v-for="item in datas.fileList">
{{ item.storeName }}.{{ item.fileType }}
</view>

@ -1,6 +1,8 @@
<template>
<view class="table-box">
<uni-table :loading="loading" border stripe emptyText="暂无更多数据">
<view class="v-page">
<view class="v-card contain">
<view class="v-table">
<uni-table :loading="loading" emptyText="暂无更多数据">
<!-- 表头行 -->
<uni-tr>
<uni-th align="center">资产名称</uni-th>
@ -14,9 +16,9 @@
<uni-td align="center">{{ item.count }}</uni-td>
</uni-tr>
</uni-table>
<view class="uni-pagination-box"><uni-pagination :page-size="pageSize" :current="pageCurrent" :total="total"
<view class="uni-pagination-box v-m-t10"><uni-pagination :page-size="pageSize" :current="pageCurrent" :total="total"
@change="change" /></view>
</view>
</view></view></view>
</template>
<script>

@ -23,9 +23,9 @@
<!-- <input v-model="info.devBrand" class="form-input" placeholder="请输入标题" placeholder-class="form-input-placeholder" />
--> </evan-form-item>
<evan-form-item label="规格型号:" prop="title">
<uni-data-picker class="tree-pick" v-model="info.devModel" :localdata="devModelData"
placeholder="规则型号" popup-title="请选择" @change="onchange" @inputclick="inputclick"
@nodeclick="onnodeclick" @popupclosed="onpopupclosed"
<uni-data-picker class="tree-pick" :border='false' v-model="info.devModel"
:localdata="devModelData" placeholder="规则型号" popup-title="请选择" @change="onchange"
@inputclick="inputclick" @nodeclick="onnodeclick" @popupclosed="onpopupclosed"
@popupopened="onpopupopened"></uni-data-picker>
</evan-form-item>
<evan-form-item label="采购时间:" prop="title">
@ -37,7 +37,9 @@
placeholder="请选择坐标" placeholder-class="form-input-placeholder" />
<text
v-if="info.lat != '' && info.lon != ''">经度:{{ info.lon || '/' }},纬度:{{ info.lat || '/' }}</text>
<button class="set-position" size="mini" @click="getLocation">定位</button>
<image class="v-card-icon-img" @click="getLocation"
src="@/static/images/icons/icon-position.svg"></image>
</evan-form-item>
</view>
</view>
@ -60,7 +62,7 @@
<view class="v-card-item">
<view class="v-card-box">
<evan-form-item label="设备描述:" prop="description">
<piaoyiEditor :values="info.resourceDescribe" :maxlength="3000" @changes="saveContens" />
<piaoyiEditor :values="info.resourceDescribe" :maxlength="3000" @changes="saveContens" />
<!-- <input v-model="info.resourceDescribe" class="form-input" placeholder="请输入描述" placeholder-class="form-input-placeholder" /> -->
</evan-form-item>
</view>

@ -213,7 +213,7 @@
this.getEnquipmentData();
uni.showToast({
icon: 'success',
title: '操作成功'
title: '启用成功'
});
this.$refs.refresh.endAfter(); //

@ -1,7 +1,7 @@
<template>
<view class="detail-container">
<view class="g-body">
<view class="body-item">
<view class="v-page">
<view class="v-card contain">
<view class="v-card-item">
<view class="status-top">
<view>当前处理状态</view>
<button class="rignt-button" size="mini" @click="goList">处理记录</button>
@ -16,30 +16,32 @@
</view>
</view>
<!-- 警情信息 -->
<view class="body-item">
<common-title :title="'警情信息'"></common-title>
<view class="content-detail">
<uni-list>
<uni-list-item title="上报时间" :rightText="datas.reportTime || '/'" />
<uni-list-item title="警情分类" :rightText="datas.classificationDataName || '/'" />
<uni-list-item title="联系人" :rightText="datas.contactUser|| '/'" />
<uni-list-item title="联系人手机" :rightText="datas.phone || '/'" />
<uni-list-item title="标题" :rightText="datas.title" />
<uni-list-item title="事件位置" :rightText="'经度:'+datas.longitude+',纬度:'+datas.latitude " />
<view class="v-card-item">
<view class="v-card-box">
<common-title :title="'警情信息'"></common-title>
<view class="content-detail">
<uni-list>
<uni-list-item title="上报时间" :rightText="datas.reportTime || '/'" />
<uni-list-item title="警情分类" :rightText="datas.classificationDataName || '/'" />
<uni-list-item title="联系人" :rightText="datas.contactUser|| '/'" />
<uni-list-item title="联系人手机" :rightText="datas.phone || '/'" />
<uni-list-item title="标题" :rightText="datas.title" />
<uni-list-item title="事件位置" :rightText="'经度:'+datas.longitude+',纬度:'+datas.latitude " />
<map class="map" :markers="covers" :longitude="datas.longitude" :latitude="datas.latitude" name="" ></map>
<uni-list-item title="描述" :rightText="datas.description" />
<uni-list-item>
<template v-slot:body>
<text class="slot-box slot-text">现场照片</text>
</template>
<template v-slot:footer>
<view class="image-box" v-if="datas.pathList">
<uni-list-item title="描述" :rightText="datas.description" />
<uni-list-item>
<template v-slot:body>
<text class="slot-box slot-text">现场照片</text>
</template>
<template v-slot:footer>
<view class="image-box" v-if="datas.pathList">
<image class="iamges-list" mode="widthFix" v-for="(item, index) in datas.pathList" :key="index" :src="requestUrl+item" @click="preview(item)"></image>
<q-previewImage ref="previewImage" :urls="datas.pathList" @open="open" @close="close"></q-previewImage>
</view>
</template>
</uni-list-item>
</uni-list>
</view>
</template>
</uni-list-item>
</uni-list>
</view>
</view>
</view>
</view>
@ -101,7 +103,7 @@ export default {
this.datas.latitude = '/'
}
},
},
methods: {
goList(){
@ -155,7 +157,7 @@ export default {
let arr = []
res.data.forEach(item =>{
arr.push(item)
})
})
this.processState = arr
console.log(this.processState)
}
@ -165,12 +167,12 @@ export default {
getEventReportDetail(id){
getEventReportDetail(id).then(res =>{
if(res.code === 200){
this.datas = res.data
this.datas = res.data
let obj = {
longitude: Number(this.datas.longitude),
latitude: Number(this.datas.latitude)
}
this.covers.push(obj);
}
})
@ -211,12 +213,12 @@ export default {
width: 35%;
font-size: 28rpx;
}
.image-box{
display: flex;
flex: 1;
justify-content: flex-end;
.iamges-list{
width: 120rpx;
}

@ -15,7 +15,7 @@
<view class="detail-text">
<view class="title-box">
<text>{{ item.resourceName || '-' }}</text>
<text class="level">{{ item.grade || '-' }}</text>
<text class="v-state-text type1">{{ item.grade || '-' }}</text>
</view>
<view class="detail-address">
<text>{{ item.address || '-' }}</text>
@ -23,9 +23,9 @@
</view>
</view>
<view class="btn-group">
<button size="mini" class="btn" @click="goEdit(item)">编辑</button>
<button size="mini" disabled="" class="btn">游客信息</button>
<button size="mini" disabled="" class="btn">游客分布</button>
<button size="mini" class="v-btn v-btn-primary" @click="goEdit(item)">编辑</button>
<button size="mini" class="v-btn v-btn-primary" disabled="">游客信息</button>
<button size="mini" class="v-btn v-btn-primary" disabled="">游客分布</button>
</view>
</view>
</swiper-item>

@ -1,7 +1,7 @@
<template>
<view class="v-page">
<view class="v-card contain" style="padding-bottom: 120rpx;">
<evan-form ref="form" :hide-required-asterisk="hideRequiredAsterisk" :model="info">
<evan-form ref="form" class="v-form" :hide-required-asterisk="hideRequiredAsterisk" :model="info">
<view class="v-card-item">
<view class="v-card-box">
<common-title :title="'基本信息'"></common-title>
@ -13,7 +13,7 @@
<uni-data-checkbox v-model="info.ifRecommend" :localdata="range"></uni-data-checkbox>
</evan-form-item>
<evan-form-item label="景点排序:">
<uni-number-box v-model="vModelValue" @blur="blur" @focus="focus" @change="changeValue" />
<uni-number-box class="v-m-t10" v-model="vModelValue" @blur="blur" @focus="focus" @change="changeValue" />
</evan-form-item>
<evan-form-item label="开放时间:">
<!-- <uni-datetime-picker v-model="info.openTime" type="timerange" rangeSeparator="至" /> -->

Loading…
Cancel
Save