From d46a4b1d0f71b5e60a38da891bb7fe2064633cf7 Mon Sep 17 00:00:00 2001
From: Lou <luzhiping@qqyjz.com>
Date: Sun, 28 Jan 2024 10:29:35 +0800
Subject: [PATCH] 更新
---
subPackage/workbench/views/checkDetail.vue | 102 +++++
subPackage/workbench/views/selectHandle.vue | 32 +
pages.json | 27 +
subPackage/label/hotelList.vue | 3
subPackage/house/houseNumber/index.vue | 191 +++++++++
subPackage/bs/views/danger.vue | 281 +++++++++++++++
subPackage/label/index.vue | 32 +
subPackage/label/hotel.vue | 104 +++--
subPackage/workbench/views/audit.vue | 30
api/reporting/reporting.js | 9
pages/home/index.vue | 12
api/place/place.js | 26 +
subPackage/workbench/views/hotelReportDetail.vue | 2
subPackage/workbench/views/cscj.vue | 42 +
subPackage/workbench/views/auditList.vue | 181 ++++++---
15 files changed, 931 insertions(+), 143 deletions(-)
diff --git a/api/place/place.js b/api/place/place.js
index 8e4228e..b4af7c8 100644
--- a/api/place/place.js
+++ b/api/place/place.js
@@ -22,4 +22,30 @@
method: 'GET',
params
})
+}
+
+//场所检查列表
+export const getPlaceCheckList = (params) => {
+ return http.request({
+ url: '/blade-placeCheck/placeCheck/page',
+ method: 'GET',
+ params
+ })
+}
+
+//场所检查
+export const addPlaceCheck = (data) => {
+ return http.request({
+ url: '/blade-placeCheck/placeCheck/save',
+ method: 'POST',
+ data: data
+ })
+}
+
+export const getPlaceCheckDetail = (params) => {
+ return http.request({
+ url: '/blade-placeCheck/placeCheck/detail',
+ method: 'GET',
+ params
+ })
}
\ No newline at end of file
diff --git a/api/reporting/reporting.js b/api/reporting/reporting.js
index a4e99d3..d23290c 100644
--- a/api/reporting/reporting.js
+++ b/api/reporting/reporting.js
@@ -178,4 +178,13 @@
method: 'POST',
data: data
})
+}
+
+//添加隐患上报
+export const saveDangerReporting = (data) => {
+ return http.request({
+ url: '/blade-hiddenDangerRecord/hiddenDangerRecord/add',
+ method: 'POST',
+ data: data
+ })
}
\ No newline at end of file
diff --git a/pages.json b/pages.json
index 1a5fe7a..68d5212 100644
--- a/pages.json
+++ b/pages.json
@@ -563,6 +563,24 @@
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
+ },
+ {
+ "path": "views/selectHandle",
+ "style": {
+ // "navigationBarTitleText": "网格员巡查",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "views/checkDetail",
+ "style": {
+ "navigationBarTitleText": "场所检查详情",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black"
+ }
}
]
},
@@ -648,6 +666,15 @@
"navigationBarTextStyle": "black",
"enablePullDownRefresh": false
}
+ },
+ {
+ "path": "views/danger",
+ "style": {
+ "navigationBarTitleText": "隐患上报",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black",
+ "enablePullDownRefresh": false
+ }
}
]
},
diff --git a/pages/home/index.vue b/pages/home/index.vue
index df39874..5220718 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -636,6 +636,13 @@
let eventType = 0;
let obj = that.getUrlParams(res.result)
console.log(obj)
+ if (!that.isLogin) {
+ let data = res.data;
+ that.$u.func.globalNavigator(
+ `/subPackage/bs/views/danger?id=${obj.stdId}`, "navTo")
+ return
+ }
+
if (obj.stdId == "3C77B40EFC5F4C899AA74BEE747D9DF1") {
eventType = 1;
that.$u.func.globalNavigator(
@@ -680,7 +687,7 @@
roleName: uni.getStorageSync("activeRole").roleName,
addressCode: code,
}).then(res => {
- console.log(res)
+
let {
isJur,
doorplateType,
@@ -695,6 +702,9 @@
unitCode,
buildingCode
} = res.data;
+
+
+
if (isJur == 1) {
if (doorplateType == "户室牌") {
this.$u.func.globalNavigator(
diff --git a/subPackage/bs/views/danger.vue b/subPackage/bs/views/danger.vue
new file mode 100644
index 0000000..35ecab8
--- /dev/null
+++ b/subPackage/bs/views/danger.vue
@@ -0,0 +1,281 @@
+<template>
+ <view class="">
+ <!-- <view class="site-box bgc-ff flex">
+ <view class="flex a-i-c">
+ <u-icon name="map-fill" color="#AAAAAA"></u-icon>
+ <text class="f-28 c-aa ml-20">当前小区:</text>
+ </view>
+ <text class="address f-28">{{ curSelectSite.name }}</text>
+ </view> -->
+
+ <view class="top bgc-ff">
+ <view class="top-btn bgc-main f-26 c-ff" @click="navToLogin()">
+ 场所负责人登录
+ </view>
+
+ </view>
+
+ <view class="content bgc-ff">
+ <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="90"
+ :labelStyle="{fontSize:'28rpx'}">
+ <u-form-item label="姓名" prop="name" borderBottom ref="name">
+ <u-input v-model="info.name" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="手机" prop="phone" borderBottom ref="phone">
+ <u-input v-model="info.phone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input>
+ </u-form-item>
+ <!-- <u-form-item label="事发位置" prop="address" :borderBottom="false">
+ <view class="address-row flex">
+ <view class="address-content f-28" v-if="info.address">
+ {{info.address}}
+ </view>
+ <view class="address-content f-28 c-99" v-if="!info.address">
+ 请选择地址
+ </view>
+ <view class="location-btn c-main f-24" @click="getLocation()">
+ 获取地址
+ </view>
+ </view>
+ </u-form-item> -->
+ </u-form>
+ </view>
+
+ <view class="upload bgc-ff">
+ <view class="f-28 mb-20">描述</view>
+ <u-textarea v-model="info.remark" placeholder="请输入内容" border="none"
+ placeholderClass="c-99 f-26"></u-textarea>
+ <view class="mt-20">
+ <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" :maxCount="uploadConfig.maxCount"
+ :capture="uploadConfig.capture" @afterRead="afterReadImg" @delete="deletePic">
+ <view class="upload-item upload-icon flex_base">
+ <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
+ </view>
+ </u-upload>
+ </view>
+ </view>
+
+
+ <!-- <button class="submit-btn" @click="sumitInfo">提交</button> -->
+ <!-- <button class="list-btn" @click="navigatorPage">我上报的事件</button> -->
+ <footer-btn @click="sumitInfo"></footer-btn>
+ </view>
+</template>
+
+<script>
+ import uploadMixin from "@/mixin/uploadMixin";
+ import {
+ save
+ } from "@/api/task/taskReportForRepairs";
+ import {
+ saveDangerReporting
+ } from "@/api/reporting/reporting.js"
+ import {
+ getQrCodeDetail
+ } from "@/api/system/index"
+ export default {
+ mixins: [uploadMixin],
+ data() {
+ return {
+ info: {
+ name: "",
+ phone: "",
+ remark: "",
+ },
+ rules: {
+ 'name': {
+ type: 'string',
+ required: true,
+ message: '请输入姓名',
+ trigger: ['blur', 'change']
+ },
+ 'phone': [{
+ type: 'string',
+ required: true,
+ message: '请输入手机号',
+ trigger: ['blur', 'change']
+ },
+
+ {
+
+ validator: (rule, value, callback) => {
+ return uni.$u.test.mobile(value);
+ },
+ message: '手机号码不正确',
+ trigger: ['change', 'blur']
+
+ }
+
+ ],
+ // 'address': {
+ // type: 'string',
+ // required: true,
+ // message: '请选择地址',
+ // trigger: ['blur', 'change']
+ // },
+ },
+ desc: "",
+ title: "",
+ curSelectSite: {}
+ }
+ },
+ onLoad(option) {
+ this.info.houseCode = option.id;
+ },
+ // onShow() {
+ // this.curSelectSite = uni.getStorageSync('siteInfo')
+ // this.info.addressCode = this.curSelectSite.houseCode
+ // console.log(this.curSelectSite);
+ // },
+ methods: {
+ //获取二维码详情
+ getDetail() {
+ getQrCodeDetail({
+ addressCode: code
+ }).then(res => {
+ console.log(res);
+ })
+ },
+
+ getLocation() {
+ uni.chooseLocation({
+ success: (res) => {
+ this.$set(this.info, "address", res.address);
+ this.$set(this.info, "lat", res.latitude);
+ this.$set(this.info, "lng", res.longitude)
+ }
+ })
+ },
+
+
+ sumitInfo() {
+ const that = this
+ this.$refs.form.validate().then(valid => {
+ if (this.form.images.length > 0) {
+ let urls = []
+ this.form.images.forEach(e => {
+ urls.push(e.name)
+ })
+ this.info.imgUrl = urls.join(",")
+ }
+ saveDangerReporting(that.info).then(res => {
+ uni.showToast({
+ icon: 'success',
+ title: '提交成功',
+ success() {
+ setTimeout(() => {
+ uni.navigateBack();
+ }, 1000)
+ }
+ })
+ })
+ })
+ },
+ navigatorPage() {
+ let url = "/subPackage/bs/views/repairList" + "?title=" + this.title + "&type=" + this.info.type
+ this.$u.func.globalNavigator(url, "navTo")
+ },
+ navToLogin() {
+ this.$u.func.globalNavigator("/pages/login/login", "navTo")
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ page {
+ background-color: #F5F5F5;
+ }
+
+ .top {
+ display: flex;
+ justify-content: flex-end;
+ padding: 20rpx;
+ }
+
+ .top-btn {
+ padding: 16rpx 22rpx;
+ border-radius: 6rpx;
+ text-align: center;
+ }
+
+ .content {
+ margin: 20rpx 30rpx;
+ padding: 0 30rpx;
+ }
+
+ .site-box {
+ padding: 30rpx;
+ margin: 20rpx 30rpx;
+ border-radius: 4rpx;
+
+ .c-aa {
+ color: #aaa;
+ }
+
+ .address {
+ width: 60%;
+ margin-left: 25rpx;
+ }
+ }
+
+ .upload-item {
+ width: 140rpx;
+ height: 140rpx;
+ border: 1px solid #EEEEEE;
+ }
+
+ .upload {
+ margin: 0 30rpx;
+ padding: 30rpx;
+
+
+ }
+
+ .submit-btn {
+ width: 690rpx;
+ height: 78rpx;
+ line-height: 78rpx;
+ background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
+ border-radius: 8rpx 8rpx 8rpx 8rpx;
+ font-size: 32rpx;
+ color: #fff;
+ margin-top: 50rpx;
+ }
+
+ .list-btn {
+ width: 690rpx;
+ height: 78rpx;
+ line-height: 78rpx;
+ background: linear-gradient(163deg, #c7d7dc 0%, #c3cdd8 100%);
+ border-radius: 8rpx 8rpx 8rpx 8rpx;
+ font-size: 32rpx;
+ color: #fff;
+ margin-top: 50rpx;
+ }
+
+ .address-row {
+ flex: 1;
+ justify-content: flex-end;
+ align-items: center;
+ }
+
+ .address-content {
+ width: calc(100% - 116rpx - 20rpx);
+ margin-right: 20rpx;
+ text-align: right;
+ }
+
+ .location-btn {
+ width: 116rpx;
+ height: 46rpx;
+ line-height: 46rpx;
+ border-radius: 4rpx;
+ border: 1px solid currentColor;
+ padding: 0;
+ background-color: #fff;
+ text-align: center;
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/house/houseNumber/index.vue b/subPackage/house/houseNumber/index.vue
index 7f0d401..419d0ce 100644
--- a/subPackage/house/houseNumber/index.vue
+++ b/subPackage/house/houseNumber/index.vue
@@ -1,6 +1,6 @@
<template>
<view class="container">
- <view class="info-box">
+ <view class="info-box" :style="{paddingBottom:isPolice?'228rpx':'110rpx'}">
<view class="item">
<box-title title="门牌号信息"></box-title>
<line-item :list="houseNumberData"></line-item>
@@ -67,7 +67,7 @@
</view>
</view>
<u-toast ref="uToast"></u-toast>
- <view class="btn-box">
+ <view class="btn-box" :style="{bottom:isPolice?'118rpx':'0'}">
<view class="sl-box" @click="csjlClick">
<u-icon name="/static/icon/menu-01.png" size="30"></u-icon>
<text>场所记录</text>
@@ -77,6 +77,48 @@
<text>场所采集</text>
</view>
</view>
+
+ <footer-btn v-if="isPolice" text="场所检查" @click="showPopup = true"></footer-btn>
+
+ <u-popup :show="showPopup" mode="bottom" round="10" :closeable="true" @close="showPopup=false">
+ <view class="">
+ <view class="popup-content">
+ <view class="mb-20">
+ <view class=" f-28 mb-20">整改内容</view>
+ <u--textarea v-model="checkInfo.remark" placeholder="请输入内容"></u--textarea>
+ </view>
+ <view class="mb-20">
+ <view class=" f-28 mb-20">图片</view>
+ <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
+ :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" @afterRead="afterReadImg"
+ @delete="deletePic">
+ <view class="upload-item upload-icon flex_base">
+ <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
+ </view>
+ </u-upload>
+ </view>
+ <view class="flex j-c-s-b a-i-c mb-20" @click="showSignature = true">
+ <view class="f-28">签名</view>
+ <u-icon name="arrow-right"></u-icon>
+ </view>
+ <view class="" v-if="signatureUrl">
+ <u-image :src="signatureUrl" width="70" height="70"></u-image>
+ </view>
+ </view>
+ <view class="popup-bottom">
+ <button class="popup-btn" @click="submitCheck">保存</button>
+ </view>
+ </view>
+ </u-popup>
+
+ <u-popup mode="bottom" :show="showSignature" round="10" zIndex="20000" :closeable="true"
+ @close="showSignature=false">
+ <view class="signture-popup">
+ <jushi-signature :settings="signatureSettings" @change="signatureChange"></jushi-signature>
+ </view>
+ </u-popup>
+
</view>
</template>
<script>
@@ -89,9 +131,19 @@
} from '@/api/place/place.js'
import boxTitle from '../components/boxTitle/index2.vue'
import {
+ prodUrl,
+ clientId,
+ clientSecret,
minioBaseUrl
} from "../../../common/setting";
+
+ import {
+ addPlaceCheck
+ } from "@/api/place/place.js"
+ import uploadMixin from "@/mixin/uploadMixin";
+
export default {
+ mixins: [uploadMixin],
components: {
lineItem,
boxTitle
@@ -232,12 +284,40 @@
placeId: "",
eventType: 0, //历史事件类型 1邻里纠纷 2噪音扰民
neiName: "", //社区名称
- placeName: "" //场所名称
+ placeName: "", //场所名称
+ isPolice: false, //当前角色是否为民警
+ showPopup: false, //场所检查弹窗
+ checkInfo: {
+ remark: "",
+ imageUrls: "",
+ signaturePath: ""
+ },
+ form: {
+ images: []
+ },
+ signatureSettings: { //签名设置
+ width: '700', //签名区域的宽
+ height: '800', //签名区域的高
+ lineWidth: 3, //签名时线宽
+ textColor: '#007AFF' //签名文字颜色
+ },
+ showSignature: false,
+ header: {},
+ uploadConfig: {
+ url: prodUrl + "/blade-resource/oss/endpoint/put-file",
+ header: {},
+ },
+ signatureUrl: ""
}
},
onLoad(option) {
console.log("oload=>", option)
this.stdId = option.stdId
+
+ if (uni.getStorageSync("activeRole").roleName == "民警") {
+ this.isPolice = true;
+ }
+
if (option.addressType) {
this.addressType = option.addressType
}
@@ -295,14 +375,14 @@
item.value = data[item.name] || '未完善'
}
- if (item.name == 'label' && data.label) {
-
- let labelArr = []
- placePoiLabelVOList.forEach(item => {
- labelArr.push(item.labelName)
- })
-
- item.value = labelArr.join('、')
+ if (item.name == 'label' && data.placePoiLabelVOList.length) {
+ // let labelArr = []
+ // placePoiLabelVOList.forEach(item => {
+ // labelArr.push(item.labelName)
+ // })
+ // item.value = labelArr.join('、')
+ item.value = data.placePoiLabelVOList[data.placePoiLabelVOList.length - 1]
+ .labelName;
}
})
@@ -378,6 +458,62 @@
} else {
this.$u.func.globalNavigator(`/subPackage/workbench/views/auditList?code=${this.stdId}`)
}
+ },
+
+ getUploadHeader() {
+ let accessToken = uni.getStorageSync('accessToken');
+ let myHeader = {}
+ if (accessToken) {
+ myHeader['Blade-Auth'] = 'bearer ' + accessToken;
+ }
+ // 客户端认证参数
+ myHeader['Authorization'] = 'Basic ' + Base64.encode(clientId + ':' + clientSecret);
+ this.uploadConfig.header = myHeader
+ },
+
+ signatureChange(e) {
+ // this.signatureUrl = e;
+ this.uploadSignImg(e)
+ },
+
+ uploadSignImg(url) {
+ uni.uploadFile({
+ url: this.uploadConfig.url,
+ filePath: url,
+ name: 'file',
+ header: this.uploadConfig.header,
+ success: (res) => {
+ console.log(res);
+ let data = JSON.parse(res.data);
+ if (res.statusCode == 200 && data.code == 200) {
+ // this.handleSubmit(data.data.name);
+ this.showSignature = false;
+ this.signatureUrl = data.data.link;
+ this.checkInfo.signaturePath = data.data.name;
+ }
+ }
+ })
+ },
+
+ submitCheck() {
+ if (this.form.images.length) {
+ let arr = [];
+ for (let i of this.form.images) {
+ arr.push(i.name)
+ }
+ this.checkInfo.imageUrls = arr.join(",")
+ }
+ if (!this.checkInfo.signaturePath) {
+ this.$showTips("请填写签名");
+ return;
+ }
+ this.checkInfo.houseCode = this.stdId;
+ addPlaceCheck(this.checkInfo).then(res => {
+ if (res.code == 200) {
+ this.$showTips("操作成功", "success")
+ this.showPopup = false;
+ }
+ })
}
},
}
@@ -437,7 +573,6 @@
box-shadow: 0 2rpx 12rpx 0 rgba(0, 0, 0, .1);
position: fixed;
left: 0;
- bottom: 0;
.sl-box {
flex: 1;
@@ -485,4 +620,36 @@
text-align: right;
}
}
+
+ .popup-content {
+ padding: 40rpx 20rpx 20rpx;
+ }
+
+ .popup-bottom {
+ padding: 20rpx;
+
+ .popup-btn {
+ width: 100%;
+ height: 70rpx;
+ border-radius: 8rpx;
+ font-size: 28rpx;
+ border: none;
+ color: #fff;
+ background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
+ }
+
+ .popup-btn::after {
+ border: none;
+ }
+ }
+
+ .upload-item {
+ width: 140rpx;
+ height: 140rpx;
+ border: 1px solid #EEEEEE;
+ }
+
+ .signture-popup {
+ padding-bottom: 20rpx;
+ }
</style>
\ No newline at end of file
diff --git a/subPackage/label/hotel.vue b/subPackage/label/hotel.vue
index 5e6db55..6851a30 100644
--- a/subPackage/label/hotel.vue
+++ b/subPackage/label/hotel.vue
@@ -9,7 +9,7 @@
{{info.districtName}}
</view>
</u-form-item> -->
- <u-form-item label="酒店名称" prop="hotelName" borderBottom required>
+ <u-form-item label="场所名称" prop="hotelName" borderBottom required>
<u-input v-model="info.hotelName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
inputAlign="right"></u-input>
</u-form-item>
@@ -123,43 +123,44 @@
</u-upload>
</view>
</view>
+ <block v-if="isNineHotle">
+ <view class="content">
+ <u-form-item label="接待未成年人需要做到的五个必须" prop="fiveMust" labelWidth="300" :borderBottom="false" required
+ labelPosition="top">
+ <view class="mt-30">
+ <u-radio-group v-model="info.fiveMust" placement="column">
+ <u-radio :customStyle="{marginBottom: '10px'}" v-for="(item, index) in mustList"
+ :key="index" :label="item.name" :name="item.value" labelSize="14" iconSize="20">
+ </u-radio>
+ </u-radio-group>
+ </view>
+ </u-form-item>
+ </view>
+ <view class="upload bgc-ff">
+ <view class="f-28 mb-20">未成年人入住登记本照片上传</view>
+ <view class="mt-20">
+ <u-upload :fileList="uanImageUrls" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
+ :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
+ @afterRead="afterReadImgs($event,'uanImageUrls')"
+ @delete="deletePics($event,'uanImageUrls')">
+ <view class="upload-item upload-icon flex_base">
+ <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
+ </view>
+ </u-upload>
+ </view>
+ </view>
- <view class="content">
- <u-form-item label="接待未成年人需要做到的五个必须" prop="fiveMust" labelWidth="300" :borderBottom="false" required
- labelPosition="top">
- <view class="mt-30">
- <u-radio-group v-model="info.fiveMust" placement="column">
- <u-radio :customStyle="{marginBottom: '10px'}" v-for="(item, index) in mustList"
- :key="index" :label="item.name" :name="item.value" labelSize="14" iconSize="20">
+ <view class="content">
+ <u-form-item label="是否实名登记" prop="realName" borderBottom required>
+ <u-radio-group v-model="info.realName">
+ <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
+ :key="index" :label="item" :name="item">
</u-radio>
</u-radio-group>
- </view>
- </u-form-item>
- </view>
-
-
- <view class="upload bgc-ff">
- <view class="f-28 mb-20">未成年人入住登记本照片上传</view>
- <view class="mt-20">
- <u-upload :fileList="uanImageUrls" :previewFullImage="uploadConfig.previewFullImage"
- :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
- :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
- @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePics($event,'uanImageUrls')">
- <view class="upload-item upload-icon flex_base">
- <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
- </view>
- </u-upload>
+ </u-form-item>
</view>
- </view>
- <view class="content">
- <u-form-item label="是否实名登记" prop="realName" borderBottom required>
- <u-radio-group v-model="info.realName">
- <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList" :key="index"
- :label="item" :name="item">
- </u-radio>
- </u-radio-group>
- </u-form-item>
- </view>
+ </block>
</u-form>
<button class="submit-btn" @click="sumitInfo">{{isEdit?"保存":"提交"}}</button>
<button class="list-btn" @click="navigatorPage">我上报的事件</button>
@@ -195,7 +196,7 @@
scStatus: "",
pfFlag: "",
pfName: "",
- realName: "",
+ // realName: "",
houseCode: "",
checkUserId: "",
reportType: 2
@@ -281,12 +282,12 @@
message: '请输入技防设施名称',
trigger: ['blur', 'change']
},
- 'info.realName': {
- type: 'string',
- required: true,
- message: '请选择是否完全实名制登记',
- trigger: ['blur', 'change']
- }
+ // 'info.realName': {
+ // type: 'string',
+ // required: true,
+ // message: '请选择是否完全实名制登记',
+ // trigger: ['blur', 'change']
+ // }
},
showSelectDate: false,
fireImageUrls: [], //灭火器图片
@@ -332,10 +333,14 @@
],
isEdit: false,
id: "",
- status: ""
+ status: "",
+ isNine: 2,
+ ids: ["120101,120102,120103,120104"],
+ isNineHotle: false
}
},
onLoad(option) {
+
if (option.id) {
this.isEdit = true;
this.getDetail(option.id)
@@ -348,6 +353,20 @@
this.$set(this.info, "checkTelephone", userInfo.phone);
this.$set(this.info, "checkUserId", userInfo.user_id);
this.$set(this.info, "hotelName", siteInfo.name);
+ this.isNine = siteInfo.isNine ? siteInfo.isNine : 2;
+ if (this.ids.indexOf(siteInfo.categoryList[0].categoryNo) != -1 && siteInfo.isNine != 1) {
+ this.isNineHotle = true;
+ }
+
+ if (this.ids.indexOf(siteInfo.categoryList[0].categoryNo) != -1 && siteInfo.isNine == 1) {
+ this.info.eventType = 0;
+ }
+ if (this.ids.indexOf(siteInfo.categoryList[0].categoryNo) == -1 && siteInfo.isNine == 1) {
+ this.info.eventType = 1;
+ uni.setNavigationBarTitle({
+ title: "消防检查"
+ })
+ }
}
},
@@ -372,6 +391,7 @@
if (data.fireStatus) {
this.fireStatusIndex = [this.$getIndex(this.fireStatus[0], data.fireStatus)];
}
+ this.info.eventType = data.eventType;
this.fireImageUrls = this.$setImageUrl(data.fireImageUrls, 2);
this.scImageUrls = this.$setImageUrl(data.scImageUrls, 2);
diff --git a/subPackage/label/hotelList.vue b/subPackage/label/hotelList.vue
index 5949c65..30999f7 100644
--- a/subPackage/label/hotelList.vue
+++ b/subPackage/label/hotelList.vue
@@ -3,7 +3,8 @@
<view class="list">
<view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k" @click="navTo(i.taskId)">
<view class="item-title flex a-i-c j-c-s-b mb-20">
- <text class="f-32 fw">{{i.hotelName}}</text>
+ <text class="f-32 fw" v-if="i.type == 7">消防检查</text>
+ <text class="f-32 fw" v-else>{{i.hotelName}}</text>
<u-tag v-if="i.confirmFlag == 4" text="待接收" type="warning" plain plainFill></u-tag>
<u-tag v-if="i.confirmFlag == 1" text="待审批" type="warning" plain plainFill></u-tag>
<u-tag v-if="i.confirmFlag == 2" text="审核通过" type="success" plain plainFill></u-tag>
diff --git a/subPackage/label/index.vue b/subPackage/label/index.vue
index fc1bf76..9f6da14 100644
--- a/subPackage/label/index.vue
+++ b/subPackage/label/index.vue
@@ -39,12 +39,22 @@
<text class="address f-28">{{curSiteInfo.name}}</text>
</view>
- <view class="nav flex flex-wrap j-c-s-b">
+ <view class="nav flex flex-wrap j-c-s-b" v-if="isNine == 2">
<view class="nav-item" v-for="(i,k) in labelList" :key="k" @click="navTo(i.path,k)">
<image class="nav-item-bg" :src="i.bgImg" mode="aspectFill"></image>
<view class="nav-item-inner flex f-d-c">
<text class="f-32 mb-30">{{i.title}}</text>
<button class="item-btn" :style="{backgroundColor:i.background}">立即上报</button>
+ </view>
+ </view>
+ </view>
+
+ <view class="nav flex flex-wrap j-c-s-b" v-if="isNine == 1">
+ <view class="nav-item" :key="k" @click="navTo('hotel')">
+ <image class="nav-item-bg" src="/static/icon/nav-bg-12.png" mode="aspectFill"></image>
+ <view class="nav-item-inner flex f-d-c">
+ <text class="f-32 mb-30">{{isNineHotel?"旅馆安全":"消防检查"}}</text>
+ <button class="item-btn" :style="{backgroundColor:'#EC7E51'}">立即上报</button>
</view>
</view>
</view>
@@ -106,14 +116,28 @@
],
curSiteInfo: {},
count: {},
- labelList: []
+ labelList: [],
+ isNine: 2,
+ isNineHotel: false
}
},
onLoad() {
- this.curSiteInfo = uni.getStorageSync("siteInfo");
+
+ let siteInfo = uni.getStorageSync("siteInfo");
+ this.curSiteInfo = siteInfo;
+ this.isNine = siteInfo.isNine;
+ if (siteInfo.isNine == 1) {
+ for (let i of this.navList[1]) {
+ if (i.id.includes(siteInfo.categoryList[0].categoryNo)) {
+ this.isNineHotel = true;
+ }
+ }
+ } else {
+ this.getMenu()
+ }
// this.navList = uni.getStorageSync("labelMenuList");
- this.getMenu()
+
},
onShow() {
diff --git a/subPackage/workbench/views/audit.vue b/subPackage/workbench/views/audit.vue
index 1100f49..aaeac90 100644
--- a/subPackage/workbench/views/audit.vue
+++ b/subPackage/workbench/views/audit.vue
@@ -20,7 +20,7 @@
<view class="list">
<view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k"
- @click="navTo(i.id,i.reportType,i.status)">
+ @click="navTo(i.id,i.reportType,i.status,i.type)">
<view class="item-title flex a-i-c j-c-s-b mb-20">
<text class="f-32 fw">{{i.name}}</text>
<u-tag v-if="i.status == 4" text="待接收" type="warning" plain plainFill></u-tag>
@@ -186,38 +186,38 @@
this.loadingStatus = 'nomore'
})
},
- navTo(id, type, status) {
+ navTo(id, reportType, status, type) {
if (status == 4) {
if (uni.getStorageSync("activeRole").roleName == "民警") {
- this.navToDetail(type, id)
+ this.navToDetail(reportType, id, type)
} else {
- this.navToEdit(type, id);
+ this.navToEdit(reportType, id, type);
}
} else {
- this.navToDetail(type, id)
+ this.navToDetail(reportType, id, type)
}
},
- navToEdit(type, id) {
- if (type == 1) {
+ navToEdit(reportType, id, type) {
+ if (reportType == 1) {
this.$u.func.globalNavigator(`/subPackage/label/bail?id=${id}`)
- } else if (type == 2) {
+ } else if (reportType == 2 || type == 7) {
this.$u.func.globalNavigator(`/subPackage/label/hotel?id=${id}`)
- } else if (type == 3 || type == 4 || type == 5) {
+ } else if (reportType == 3 || reportType == 4 || reportType == 5) {
this.$u.func.globalNavigator(`/subPackage/label/form?id=${id}`)
- } else if (type == 6) {
+ } else if (reportType == 6) {
this.$u.func.globalNavigator(`/subPackage/label/school?id=${id}`)
}
},
- navToDetail(type, id) {
- if (type == 1) {
+ navToDetail(reportType, id, type) {
+ if (reportType == 1) {
this.$u.func.globalNavigator(`bailReportDetail?id=${id}`)
- } else if (type == 2) {
+ } else if (reportType == 2 || type == 7) {
this.$u.func.globalNavigator(`hotelReportDetail?id=${id}`)
- } else if (type == 3 || type == 4 || type == 5) {
+ } else if (reportType == 3 || reportType == 4 || reportType == 5) {
this.$u.func.globalNavigator(`labelReportDetail?id=${id}`)
- } else if (type == 6) {
+ } else if (reportType == 6) {
this.$u.func.globalNavigator(`schoolReportDetail?id=${id}`)
}
},
diff --git a/subPackage/workbench/views/auditList.vue b/subPackage/workbench/views/auditList.vue
index 369be1a..ca613cc 100644
--- a/subPackage/workbench/views/auditList.vue
+++ b/subPackage/workbench/views/auditList.vue
@@ -3,9 +3,9 @@
<u-sticky>
<view class="bgc-ff">
<view class="tab">
- <!-- <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :inactiveStyle="{color:'#999999'}"
- :activeStyle="{color:'#017BFC'}">
- </u-tabs> -->
+ <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :scrollable="false"
+ :inactiveStyle="{color:'#999999'}" :activeStyle="{color:'#017BFC'}">
+ </u-tabs>
<view class="search flex j-c-s-b a-i-c">
<view class="tab-filter flex j-c-c a-i-c" @click="showDateModal">
<text class="f-28">时间筛选</text>
@@ -20,9 +20,10 @@
<view class="list">
<view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k"
- @click="navTo(i.id,i.reportType,i.status)">
- <view class="item-title flex a-i-c j-c-s-b mb-20">
- <text class="f-32 fw">{{i.name}}</text>
+ @click="navTo(i.id,i.reportType,i.status,i.type)">
+ <view class="item-title flex a-i-c j-c-s-b mb-20" v-if="tabIndex == 0">
+ <text class="f-32 fw" v-if="i.type == 7">消防检查</text>
+ <text class="f-32 fw" v-else>{{i.name}}</text>
<u-tag v-if="i.status == 4" text="待接收" type="warning" plain plainFill></u-tag>
<u-tag v-if="i.status == 1" text="待审批" type="warning" plain plainFill></u-tag>
<u-tag v-if="i.status == 2" text="审核通过" type="success" plain plainFill></u-tag>
@@ -32,9 +33,13 @@
<text class="f-28">时间</text>
<text class="f-28 c-66">{{i.createTime}}</text>
</view>
- <view class="item-row flex a-i-c j-c-s-b">
+ <view class="item-row flex a-i-c j-c-s-b" v-if="ftabIndex == 0">
<text class="f-28">地址</text>
<text class="address f-28 c-66">{{i.addressName || ""}}</text>
+ </view>
+ <view class="item-row flex a-i-c j-c-s-b" v-if="tabIndex == 1">
+ <text class="f-28">整改内容</text>
+ <text class="address f-28 c-66">{{i.remark}}</text>
</view>
</view>
</view>
@@ -49,6 +54,11 @@
import {
getAuditReportingList
} from "@/api/reporting/reporting"
+
+ import {
+ getPlaceCheckList
+ } from "@/api/place/place.js"
+
import dateRangeModal from '@/components/dateRangeModal/modal.vue';
export default {
components: {
@@ -56,28 +66,12 @@
},
data() {
return {
- tabList: [
-
- {
- name: "全部",
- status: "",
+ tabList: [{
+ name: "标签报事"
},
{
- name: "待接收",
- status: 4,
+ name: "场所检查"
},
- {
- name: "待审核",
- status: 1
- },
- {
- name: "审核通过",
- status: 2
- },
- {
- name: "已拒绝",
- status: 3
- }
],
tabIndex: 0,
currentStatus: 2,
@@ -94,17 +88,20 @@
onLoad(option) {
console.log(option);
- if (option.reportType) {
- this.reportType = option.reportType;
- uni.setNavigationBarTitle({
- title: "取保候审"
- })
- }
- if (option.from == "index") {
- uni.setNavigationBarTitle({
- title: "场所任务"
- })
- }
+ uni.setNavigationBarTitle({
+ title: "历史事件"
+ })
+ // if (option.reportType) {
+ // this.reportType = option.reportType;
+ // uni.setNavigationBarTitle({
+ // title: "取保候审"
+ // })
+ // }
+ // if (option.from == "index") {
+ // uni.setNavigationBarTitle({
+ // title: "场所任务"
+ // })
+ // }
if (option.from == "task") {
this.tabIndex = 1;
this.currentStatus = 1;
@@ -116,12 +113,15 @@
},
onReachBottom() {
this.currentPage++
- this.getList()
+ if (this.tabIndex == 0) {
+ this.getList()
+ } else {
+ this.getCheckList();
+ }
+
},
methods: {
-
-
searchConfirm() {
this.resetParams()
this.getList()
@@ -134,7 +134,11 @@
this.tabIndex = e.index;
this.currentStatus = e.status;
this.resetParams();
- this.getList();
+ if (e.index == 0) {
+ this.getList()
+ } else {
+ this.getCheckList();
+ }
},
resetParams() {
this.list = [];
@@ -186,38 +190,85 @@
this.loadingStatus = 'nomore'
})
},
- navTo(id, type, status) {
- if (status == 4) {
- if (uni.getStorageSync("activeRole").roleName == "民警") {
- this.navToDetail(type, id)
+
+ getCheckList() {
+ this.$nextTick(() => {
+ this.loadingStatus = 'loadingmore'
+ this.$refs.uToast.show({
+ type: 'loading',
+ message: '正在加载',
+ duration: 9999999
+ })
+ })
+ let params = {
+ page: this.currentPage,
+ size: 20,
+ }
+ if (this.selectDate.length) {
+ params.startTime = this.selectDate[0]
+ params.endTime = this.selectDate[1]
+ }
+ if (this.houseCode) {
+ params.houseCode = this.houseCode;
+ }
+ if (this.keyword) {
+ params.name = this.keyword;
+ }
+ getPlaceCheckList(params).then(res => {
+ if (res.code != 200) {
+ uni.showToast({
+ title: '数据请求失败',
+ icon: 'error'
+ })
+ return
+ }
+ let records = res.data.records;
+ this.list = [...this.list, ...records]
+ this.$nextTick(() => {
+ this.$refs.uToast.isShow = false
+ })
+ this.loadingStatus = 'nomore'
+ })
+ },
+
+ navTo(id, reportType, status, type) {
+ if (this.tabIndex == 0) {
+ if (status == 4) {
+ if (uni.getStorageSync("activeRole").roleName == "民警") {
+ this.navToDetail(reportType, id, type)
+ } else {
+ this.navToEdit(reportType, id, type);
+ }
} else {
- this.navToEdit(type, id);
+ this.navToDetail(reportType, id, type)
}
} else {
- this.navToDetail(type, id)
+ uni.navigateTo({
+ url: `checkDetail?id=${id}`
+ })
}
},
- navToEdit(type, id) {
- if (type == 1) {
+ navToEdit(reportType, id, type) {
+ if (reportType == 1) {
this.$u.func.globalNavigator(`/subPackage/label/bail?id=${id}`)
- } else if (type == 2) {
+ } else if (reportType == 2 || type == 7) {
this.$u.func.globalNavigator(`/subPackage/label/hotel?id=${id}`)
- } else if (type == 3 || type == 4 || type == 5) {
+ } else if (reportType == 3 || reportType == 4 || reportType == 5) {
this.$u.func.globalNavigator(`/subPackage/label/form?id=${id}`)
- } else if (type == 6) {
+ } else if (reportType == 6) {
this.$u.func.globalNavigator(`/subPackage/label/school?id=${id}`)
}
},
- navToDetail(type, id) {
- if (type == 1) {
+ navToDetail(reportType, id, type) {
+ if (reportType == 1) {
this.$u.func.globalNavigator(`bailReportDetail?id=${id}`)
- } else if (type == 2) {
+ } else if (reportType == 2 || type == 7) {
this.$u.func.globalNavigator(`hotelReportDetail?id=${id}`)
- } else if (type == 3 || type == 4 || type == 5) {
+ } else if (reportType == 3 || reportType == 4 || reportType == 5) {
this.$u.func.globalNavigator(`labelReportDetail?id=${id}`)
- } else if (type == 6) {
+ } else if (reportType == 6) {
this.$u.func.globalNavigator(`schoolReportDetail?id=${id}`)
}
},
@@ -229,14 +280,24 @@
handleRestDate() {
this.selectDate = [];
this.resetParams();
- this.getList()
+ if (this.tabIndex == 0) {
+ this.getList()
+ } else {
+ this.getCheckList()
+ }
},
+
+
+
handleComfirmDate(val) {
this.selectDate = val;
this.resetParams();
- this.getList()
+ if (this.tabIndex == 0) {
+ this.getList()
+ } else {
+ this.getCheckList()
+ }
}
-
}
}
</script>
diff --git a/subPackage/workbench/views/checkDetail.vue b/subPackage/workbench/views/checkDetail.vue
new file mode 100644
index 0000000..d18bfcf
--- /dev/null
+++ b/subPackage/workbench/views/checkDetail.vue
@@ -0,0 +1,102 @@
+<template>
+ <view class="">
+
+ <view class="item-row flex j-c-s-b a-i-c">
+ <text>整改内容</text>
+ <text>{{info.remark}}</text>
+ </view>
+ <view class="item-row flex j-c-s-b a-i-c">
+ <text>时间</text>
+ <text>{{info.createTime}}</text>
+ </view>
+
+ <view class="image-wrap bgc-ff" v-if="images.length">
+ <view class="mb-20">
+ 图片
+ </view>
+ <view class="image-item" v-for="(i,k) in images" @click="previewImage(images,i)">
+ <u-image :src="i" width="100rpx" height="100rpx"></u-image>
+ </view>
+ </view>
+
+ <view class="image-wrap bgc-ff" v-if="signatureUrl.length">
+ <view class="mb-20">
+ 签名
+ </view>
+ <view class="image-item" v-for="(i,k) in signatureUrl" @click="previewImage(signatureUrl,i)">
+ <u-image :src="i" width="100rpx" height="100rpx"></u-image>
+ </view>
+ </view>
+
+ </view>
+</template>
+
+<script>
+ import {
+ getPlaceCheckDetail
+ } from '@/api/place/place.js'
+
+ export default {
+ data() {
+ return {
+ info: {},
+ images: [],
+ signatureUrl: []
+ }
+ },
+ onLoad(option) {
+ this.getDetail(option.id);
+ },
+ methods: {
+ getDetail(id) {
+ getPlaceCheckDetail({
+ id
+ }).then(res => {
+ this.info = res.data;
+ this.images = this.$setImageUrl(res.data.imageUrls);
+ this.signatureUrl = this.$setImageUrl(res.data.signaturePath);
+ })
+ },
+
+
+
+
+ previewImage(urls, current) {
+ uni.previewImage({
+ urls,
+ current
+ })
+ }
+
+ }
+ }
+</script>
+
+<style lang="scss">
+ page {
+ background-color: #f5f5f5;
+ }
+
+ .item-row {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ border-bottom: 1px solid #f5f5f5;
+ font-size: 28rpx;
+ background-color: #fff;
+
+ .item-content {
+ width: 70%;
+ text-align: right;
+ }
+ }
+
+ .image-wrap {
+ margin-top: 20rpx;
+ padding: 20rpx;
+
+ .image-item {
+ margin-right: 20rpx;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/workbench/views/cscj.vue b/subPackage/workbench/views/cscj.vue
index 77e2d6d..c4b2f4f 100644
--- a/subPackage/workbench/views/cscj.vue
+++ b/subPackage/workbench/views/cscj.vue
@@ -12,6 +12,9 @@
<view class="box-title">
<box-title title="基础信息"></box-title>
</view>
+
+
+
<u-form-item class="form-item" labelWidth="100" label="场所名称:" :required="isRequiredPlace"
:disabled="isDisabled" prop="placeName">
<u--input v-if="!currentId" border="none" v-model="form.placeName" placeholder="请输入">
@@ -27,6 +30,16 @@
placeholder="请选择">
</u-input>
<u-icon slot="right" name="arrow-right"></u-icon>
+ </u-form-item>
+ <u-form-item label="九小场所" labelWidth="100" prop="isNine" :required="isRequired">
+ <u-radio-group v-model="form.isNine" v-if="!currentId">
+ <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
+ :key="index" :label="item.name" :name="item.id">
+ </u-radio>
+ </u-radio-group>
+ <view class="f-30" v-if="currentId">
+ {{form.isNine == 1?"是":"否"}}
+ </view>
</u-form-item>
<!-- <view v-if="showLabelList.length" class="label" style="border-bottom:1px solid eff1f3;">
<view v-for="(item,index) in showLabelList" :key="index" class="activeLabel">
@@ -231,7 +244,8 @@
principalPhone: '',
lat: '',
lng: '',
- location: ''
+ location: '',
+ isNine: ""
},
rules: {
// 'buildingCode': {
@@ -240,25 +254,31 @@
// message: '请选择楼栋',
// trigger: ['blur', 'change']
// },
- 'placeName': {
+ 'form.isNine': {
+ type: 'string',
+ required: true,
+ message: '是否九小场所',
+ trigger: ['blur', 'change']
+ },
+ 'form.placeName': {
type: 'string',
required: true,
message: '请输入场所名称',
trigger: ['blur', 'change']
},
- 'label': {
+ 'form.label': {
type: 'string',
required: true,
message: '请选择标签',
trigger: ['blur', 'change'],
},
- 'username': {
+ 'form.username': {
type: 'string',
required: true,
message: '请输入场所负责人',
trigger: ['blur', 'change'],
},
- 'principalPhone': [{
+ 'form.principalPhone': [{
required: false,
message: '请输入手机号',
trigger: ['blur', 'change'],
@@ -271,7 +291,6 @@
trigger: ['change', 'blur']
}
-
],
},
@@ -400,7 +419,16 @@
firstId: "",
secondId: "",
categoryValue: "",
- houseCode: ""
+ houseCode: "",
+ statusList: [{
+ name: "是",
+ id: 1
+ },
+ {
+ name: "否",
+ id: 2
+ }
+ ],
}
},
created() {
diff --git a/subPackage/workbench/views/hotelReportDetail.vue b/subPackage/workbench/views/hotelReportDetail.vue
index 45d1e3b..db94997 100644
--- a/subPackage/workbench/views/hotelReportDetail.vue
+++ b/subPackage/workbench/views/hotelReportDetail.vue
@@ -98,7 +98,7 @@
// value: '未完善'
// },
{
- label: '酒店名称',
+ label: '场所名称',
name: 'hotelName',
value: '未完善'
},
diff --git a/subPackage/workbench/views/selectHandle.vue b/subPackage/workbench/views/selectHandle.vue
new file mode 100644
index 0000000..373fc51
--- /dev/null
+++ b/subPackage/workbench/views/selectHandle.vue
@@ -0,0 +1,32 @@
+<template>
+
+
+ <view class="wrap flex j-c-s-b a-i-c">
+ <view class="btn">
+ 场所采集
+ </view>
+ <view class="btn">
+ 场所检查
+ </view>
+ </view>
+
+</template>
+
+<script>
+</script>
+
+<style>
+ .wrap {
+ padding: 0 20rpx;
+ margin-top: 30%;
+ }
+
+ .btn {
+ width: 40%;
+ height: 60rpx;
+ background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
+ font-size: 28rpx;
+ color: #fff;
+ text-align: center;
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.3