From 3062b6cdec246445a8102b61c8a28de6dc707de1 Mon Sep 17 00:00:00 2001
From: Lou <luzhiping@qqyjz.com>
Date: Mon, 13 Nov 2023 17:34:57 +0800
Subject: [PATCH] 校园安全页面编写与数据交互
---
pages.json | 29 +
subPackage/workbench/views/labelReportDetail.vue | 97 ++++-
subPackage/label/index.vue | 8
subPackage/label/hotel.vue | 54 ++
subPackage/label/form.vue | 52 ++
subPackage/label/formList.vue | 2
api/reporting/reporting.js | 37 ++
manifest.json | 4
subPackage/workbench/views/schoolReportDetail.vue | 8
subPackage/label/bail.vue | 51 ++
subPackage/label/schoolList.vue | 96 +++++
common/setting.js | 4
subPackage/label/school.vue | 592 ++++++++++++++++++++++++++++++++
13 files changed, 995 insertions(+), 39 deletions(-)
diff --git a/api/reporting/reporting.js b/api/reporting/reporting.js
index 9ae978b..d574aa9 100644
--- a/api/reporting/reporting.js
+++ b/api/reporting/reporting.js
@@ -141,3 +141,40 @@
})
}
+//添加校园安全报事
+export const setSchoolReporting = (data) => {
+ return http.request({
+ url: '/blade-taskCampusReportingEvent/taskCampusReportingEvent/save',
+ method: 'POST',
+ data: data
+ })
+}
+
+//获取校园安全报事列表
+export const getSchoolReportingList = (params) => {
+ return http.request({
+ url: '/blade-taskCampusReportingEvent/taskCampusReportingEvent/page',
+ method: 'get',
+ params: {
+ ...params
+ }
+ })
+}
+//获取校园安全报事详情
+export const getSchoolReportingDetail = (params) => {
+ return http.request({
+ url: '/blade-taskCampusReportingEvent/taskCampusReportingEvent/detail',
+ method: 'get',
+ params: {
+ ...params
+ }
+ })
+}
+//修改校园安全报事
+export const saveSchoolReporting = (data) => {
+ return http.request({
+ url: '/blade-taskCampusReportingEvent/taskCampusReportingEvent/update',
+ method: 'POST',
+ data: data
+ })
+}
\ No newline at end of file
diff --git a/common/setting.js b/common/setting.js
index a94d269..1f08edf 100644
--- a/common/setting.js
+++ b/common/setting.js
@@ -12,8 +12,8 @@
// devUrl: 'https://sk.hubeishuiyi.cn',
// devUrl: 'http://192.168.1.156:9528',
// devUrl:'http://192.168.1.50:9528',
- // devUrl: 'http://192.168.0.102:9528',
- devUrl: 'https://srgdjczzxtpt.com:2080/api',
+ devUrl: 'http://192.168.0.102:9528',
+ // devUrl: 'https://srgdjczzxtpt.com:2080/api',
minioBaseUrl: "http://60.220.177.113:9000/jczz/",
// 数据中台接口url
// dataCenterUrl: 'http://10.10.2.192/services',
diff --git a/manifest.json b/manifest.json
index 3b3b89c..399d6eb 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,5 +1,5 @@
{
- "name" : "基层自治",
+ "name" : "饶城格格通",
"appid" : "__UNI__EE88272",
"description" : "",
"versionName" : "1.0.10",
@@ -142,7 +142,7 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
- "appid" : "wxdc5675f4df850da6",
+ "appid" : "wx41aa8a5d2e565a05",
"setting" : {
"urlCheck" : false,
"minified" : true,
diff --git a/pages.json b/pages.json
index f98dc02..93e4208 100644
--- a/pages.json
+++ b/pages.json
@@ -171,6 +171,24 @@
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
+ },
+ {
+ "path": "school",
+ "style": {
+ "navigationBarTitleText": "校园安全",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "schoolList",
+ "style": {
+ "navigationBarTitleText": "报事列表",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black"
+ }
}
]
},
@@ -281,6 +299,15 @@
},
{
"path": "views/labelReportDetail",
+ "style": {
+ "navigationBarTitleText": "审核",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTextStyle": "black"
+ }
+ },
+ {
+ "path": "views/schoolReportDetail",
"style": {
"navigationBarTitleText": "审核",
"enablePullDownRefresh": false,
@@ -439,7 +466,7 @@
],
"globalStyle": {
"navigationBarTextStyle": "black",
- "navigationBarTitleText": "",
+ "navigationBarTitleText": "饶城格格通",
"navigationBarBackgroundColor": "#fff",
"backgroundColor": "#4586FE"
},
diff --git a/subPackage/label/bail.vue b/subPackage/label/bail.vue
index 0d2f31f..79893cc 100644
--- a/subPackage/label/bail.vue
+++ b/subPackage/label/bail.vue
@@ -22,8 +22,24 @@
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
<u-form-item label="申请位置" prop="location" borderBottom ref="location" required>
- <u-input v-model="info.location" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
+ <!-- <u-input v-model="info.location" disabled disabledColor="#ffffff" border="none" placeholder="请选择地址" placeholderClass="f-28 c-99"
+ inputAlign="right">
+ <template slot="suffix">
+ <button class="location-btn c-main f-24" @click="getLocation()">获取地址</button>
+ </template>
+ </u-input> -->
+ <view class="address-row flex">
+ <view class="address-content f-28" v-if="info.location">
+ {{info.location}}
+ </view>
+ <view class="address-content f-28 c-99" v-if="!info.location">
+ 请选择位置
+ </view>
+ <view class="location-btn c-main f-24" @click="getLocation()">
+ 获取地址
+ </view>
+ </view>
+
</u-form-item>
</view>
@@ -106,6 +122,8 @@
let userInfo = uni.getStorageSync("userInfo");
this.$set(this.info, "houseCode", siteInfo.id);
this.$set(this.info, "districtName", siteInfo.name);
+ this.$set(this.info,"checkUserName",userInfo.real_name);
+ this.$set(this.info,"checkTelephone",userInfo.phone);
this.$set(this.info, "checkUserId", userInfo.user_id);
},
@@ -115,6 +133,15 @@
},
methods: {
+
+ getLocation(){
+ uni.chooseLocation({
+ success:(res)=>{
+ this.$set(this.info,"location",res.address);
+ }
+ })
+ },
+
formatter(type, value) {
if (type === 'year') {
@@ -236,4 +263,24 @@
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/label/form.vue b/subPackage/label/form.vue
index 3189aed..7033e07 100644
--- a/subPackage/label/form.vue
+++ b/subPackage/label/form.vue
@@ -16,9 +16,20 @@
<u-input v-model="info.goodsNums" type="number" border="none" placeholder="请输入"
placeholderClass="f-28 c-99" inputAlign="right"></u-input>
</u-form-item>
- <u-form-item label="交易位置" prop="location" borderBottom ref="location" required>
- <u-input v-model="info.location" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
+ <u-form-item label="交易位置" prop="localtion" borderBottom ref="localtion" required>
+ <!-- <u-input v-model="info.location" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input> -->
+ <view class="address-row flex">
+ <view class="address-content f-28" v-if="info.localtion">
+ {{info.localtion}}
+ </view>
+ <view class="address-content f-28 c-99" v-if="!info.localtion">
+ 请选择位置
+ </view>
+ <view class="location-btn c-main f-24" @click="getLocation()">
+ 获取地址
+ </view>
+ </view>
</u-form-item>
<u-form-item label="交易过程" prop="transactionProcess" borderBottom>
<u-input v-model="info.transactionProcess" border="none" placeholder="请输入"
@@ -56,7 +67,7 @@
</u-form>
<button class="submit-btn" @click="sumitInfo">提交</button>
- <button class="list-btn" @click="navigatorPage">我上报的事件</button>
+ <button class="list-btn mb-20" @click="navigatorPage">我上报的事件</button>
</view>
</template>
@@ -74,7 +85,7 @@
transactionObjectTel: "",
transactionMoney: "",
goodsNums: "",
- location: "",
+ localtion: "",
transactionProcess: "",
houseCode: "",
districtName: "",
@@ -94,7 +105,7 @@
message: '请输入交易金额',
trigger: ['blur', 'change']
},
- 'location': {
+ 'localtion': {
type: 'string',
required: true,
message: '请输入交易位置',
@@ -134,6 +145,15 @@
return "二手车交易"
}
},
+
+ getLocation(){
+ uni.chooseLocation({
+ success:(res)=>{
+ this.$set(this.info,"localtion",res.address);
+ }
+ })
+ },
+
confirmDate(e) {
console.log(e);
@@ -269,4 +289,24 @@
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/label/formList.vue b/subPackage/label/formList.vue
index d2c7e05..03603b2 100644
--- a/subPackage/label/formList.vue
+++ b/subPackage/label/formList.vue
@@ -63,7 +63,7 @@
},
navTo(id) {
uni.navigateTo({
- url: `/subPackage/workbench/views/bailReportDetail?id=${id}`
+ url: `/subPackage/workbench/views/labelReportDetail?id=${id}`
})
}
}
diff --git a/subPackage/label/hotel.vue b/subPackage/label/hotel.vue
index 1b36cf2..7177283 100644
--- a/subPackage/label/hotel.vue
+++ b/subPackage/label/hotel.vue
@@ -5,7 +5,7 @@
:labelStyle="{fontSize:'28rpx'}">
<view class="content">
<u-form-item label="社区名称" prop="districtName" borderBottom required>
- <view>
+ <view class="content-name f-28">
{{info.districtName}}
</view>
<!-- <u-input v-model="info.districtName" disabled disabledColor="#fff" border="none" placeholder="请输入"
@@ -28,9 +28,20 @@
<u-input v-model="info.checkTelephone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
inputAlign="right"></u-input>
</u-form-item>
- <u-form-item label="自查位置" prop="phone" borderBottom ref="location" required>
- <u-input v-model="info.location" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
- inputAlign="right"></u-input>
+ <u-form-item label="自查位置" prop="location" borderBottom ref="location" required>
+ <!-- <u-input v-model="info.location" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input> -->
+ <view class="address-row flex">
+ <view class="address-content f-28" v-if="info.location">
+ {{info.location}}
+ </view>
+ <view class="address-content f-28 c-99" v-if="!info.location">
+ 请选择位置
+ </view>
+ <view class="location-btn c-main f-24" @click="getLocation()">
+ 获取地址
+ </view>
+ </view>
</u-form-item>
<u-form-item label="灭火器数量" prop="fireNums" borderBottom>
<u-input type="number" v-model="info.fireNums" border="none" placeholder="请输入"
@@ -318,6 +329,8 @@
let userInfo = uni.getStorageSync("userInfo");
this.$set(this.info, "houseCode", siteInfo.id);
this.$set(this.info, "districtName", siteInfo.neiName);
+ this.$set(this.info,"checkUserName",userInfo.real_name);
+ this.$set(this.info,"checkTelephone",userInfo.phone);
this.$set(this.info, "checkUserId", userInfo.user_id);
},
@@ -327,6 +340,15 @@
},
methods: {
+
+ getLocation(){
+ uni.chooseLocation({
+ success:(res)=>{
+ this.$set(this.info,"location",res.address);
+ }
+ })
+ },
+
formatter(type, value) {
if (type === 'year') {
return `${value}年`
@@ -435,6 +457,10 @@
padding: 0 30rpx;
background-color: #fff;
}
+ .content-name{
+ flex:1;
+ text-align: right;
+ }
/deep/.u-radio-group--row {
justify-content: flex-end;
@@ -497,4 +523,24 @@
.mt-30{
margin-top:30rpx;
}
+ .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/label/index.vue b/subPackage/label/index.vue
index 7110dfd..a3fd3e5 100644
--- a/subPackage/label/index.vue
+++ b/subPackage/label/index.vue
@@ -90,7 +90,13 @@
bgImg:"/static/icon/nav-bg-14.png",
path:"form",
background:"#13C6C7"
- }
+ },
+ // {
+ // title:"校园安全",
+ // bgImg:"/static/icon/nav-bg-11.png",
+ // path:"school",
+ // background:"#4D98E2"
+ // }
],
siteInfo:{},
count:{}
diff --git a/subPackage/label/school.vue b/subPackage/label/school.vue
new file mode 100644
index 0000000..3dea748
--- /dev/null
+++ b/subPackage/label/school.vue
@@ -0,0 +1,592 @@
+<template>
+ <view class="">
+ <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="100"
+ :labelStyle="{fontSize:'28rpx'}">
+ <view class="content">
+ <u-form-item label="社区名称" prop="districtName" borderBottom required>
+ <view class="content-name f-28">
+ {{info.districtName}}
+ </view>
+ </u-form-item>
+ <u-form-item label="校园名称" prop="campusName" borderBottom required>
+ <u-input v-model="info.campusName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="自查时间" prop="checkTime" borderBottom required @click="showSelectDate = true">
+ <u-input v-model="info.checkTime" disabled disabledColor="#ffffff" border="none" placeholder="请输入"
+ placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
+ </u-form-item>
+ <u-form-item label="自查人姓名" prop="checkUserName" borderBottom required>
+ <u-input v-model="info.checkUserName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="自查人手机" prop="checkTelephone" borderBottom required>
+ <u-input v-model="info.checkTelephone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="自查位置" prop="location" borderBottom ref="location" required>
+ <view class="address-row flex">
+ <view class="address-content f-28" v-if="info.location">
+ {{info.location}}
+ </view>
+ <view class="address-content f-28 c-99" v-if="!info.location">
+ 请选择位置
+ </view>
+ <view class="location-btn c-main f-24" @click="getLocation()">
+ 获取地址
+ </view>
+ </view>
+ </u-form-item>
+ </view>
+
+ <view class="content">
+ <u-form-item label="四个一工程" prop="fourOne" labelWidth="300" :borderBottom="false" required
+ labelPosition="top">
+ <view class="mt-30">
+ <u-radio-group v-model="info.fourOne" placement="column">
+ <u-radio :customStyle="{marginBottom: '10px'}" v-for="(item, index) in fourOneList"
+ :key="index" :label="item.name" :name="item.name" 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="foImageUrls" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
+ :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
+ @afterRead="afterReadImgs($event,'foImageUrls')" @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>
+
+ <view class="content">
+ <u-form-item label="消防设施种类" prop="fireFacsType" borderBottom required>
+ <u-input v-model="info.fireFacsType" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
+ inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="消防器材数量" prop="fireFacsNums" :borderBottom="false" required>
+ <u-input type="number" v-model="info.fireFacsNums" border="none" placeholder="请输入"
+ placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+ </u-form-item>
+ </view>
+
+ <view class="upload bgc-ff">
+ <view class="f-28 mb-20">消防器材照片(需拍到灭火器有效期)</view>
+ <view class="mt-20">
+ <u-upload :fileList="fireFacsImageUrls" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
+ :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
+ @afterRead="afterReadImgs($event,'fireFacsImageUrls')" @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>
+
+ <view class="content">
+ <u-form-item label="安全通道状态" prop="scStatus" :borderBottom="false" ref="scFlag" required
+ @click="isShowScStatus = true">
+ <u-input v-model="info.scStatus" disabled disabledColor="#fff" border="none" placeholder="请选择"
+ placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
+ </u-form-item>
+ </view>
+
+ <view class="upload bgc-ff mb-20">
+ <view class="f-28 mb-20">安全通道图片(需拍到门和指示箭头)</view>
+ <view class="mt-20">
+ <u-upload :fileList="scImageUrls" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
+ :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
+ @afterRead="afterReadImgs($event,'scImageUrls')" @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>
+ <view class="upload bgc-ff">
+ <view class="f-28 mb-20">校园周边安全巡查照片</view>
+ <view class="mt-20">
+ <u-upload :fileList="patrolImageUrls" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
+ :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
+ @afterRead="afterReadImgs($event,'patrolImageUrls')" @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>
+
+ <view class="content">
+ <u-form-item label="大门是否装备防撞装置" prop="antiCollision" :borderBottom="false" ref="scFlag" required
+ @click="isShowScStatus = true">
+ <u-radio-group v-model="info.antiCollision">
+ <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>
+
+ <view class="upload bgc-ff mb-20">
+ <view class="f-28 mb-20">校园防撞装置照片</view>
+ <view class="mt-20">
+ <u-upload :fileList="antiCollisionImageUrls" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
+ :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
+ @afterRead="afterReadImgs($event,'antiCollisionImageUrls')" @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>
+
+ <view class="content">
+ <u-form-item label="专职保安人数" prop="fullSoNums" borderBottom required>
+ <u-input type="number" v-model="info.fullSoNums" border="none" placeholder="请输入"
+ placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="兼职保安人数" prop="partSoNums" borderBottom required >
+ <u-input type="number" v-model="info.partSoNums" border="none" placeholder="请输入"
+ placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="学校监控总数" prop="monitorNums" borderBottom required>
+ <u-input type="number" v-model="info.monitorNums" border="none" placeholder="请输入"
+ placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+ </u-form-item>
+ <u-form-item label="监控是否全覆盖" prop="monitorOver" borderBottom required>
+ <u-radio-group v-model="info.monitorOver">
+ <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>
+ <u-form-item label="高空抛物监控" prop="highAltitudeMonitor" :borderBottom="false" ref="scFlag" required
+ @click="isShowScStatus = true">
+ <u-input v-model="info.highAltitudeMonitor" border="none" placeholder="请输入"
+ placeholderClass="f-28 c-99" inputAlign="right"></u-input>
+ </u-form-item>
+ </view>
+ <view class="upload bgc-ff mb-20">
+ <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="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>
+
+ </u-form>
+ <button class="submit-btn" @click="sumitInfo">提交</button>
+ <button class="list-btn" @click="navigatorPage">我上报的事件</button>
+ <u-datetime-picker ref="datetimePicker" :show="showSelectDate" v-model="checkTime" mode="datetime"
+ :formatter="formatter" @confirm="confirmDate" @cancel="showSelectDate = false"></u-datetime-picker>
+ <u-picker :show="isShowScStatus" :columns="scStatus" :defaultIndex="scStatusIndex"
+ @cancel="isShowScStatus = false" @confirm="confirmScStatus"></u-picker>
+ </view>
+</template>
+
+<script>
+ import uploadMixin from "@/mixin/uploadMixin";
+ import {
+ saveSchoolReporting
+ } from "@/api/reporting/reporting";
+
+ export default {
+ mixins: [uploadMixin],
+ data() {
+ return {
+ info: {
+ districtName: "",
+ campusName: "",
+ checkUserName: "",
+ checkTelephone: "",
+ checkTime: '',
+ location: '',
+ fourOne: '',
+ fireFacsType: '',
+ fireFacsNums: '',
+ scStatus: '',
+ antiCollision: '',
+ fullSoNums: '',
+ partSoNums: '',
+ monitorNums: '',
+ monitorOver: '',
+ highAltitudeMonitor: '',
+ houseCode: "",
+ checkUserId: "",
+ },
+ rules: {
+ 'districtName': {
+ type: 'string',
+ required: true,
+ message: '请输入社区名称',
+ trigger: ['blur', 'change']
+ },
+ 'campusName': {
+ type: 'string',
+ required: true,
+ message: '请输入学校名称',
+ trigger: ['blur', 'change']
+ },
+ 'checkTime': {
+ type: 'string',
+ required: true,
+ message: '请选择自查时间',
+ trigger: ['blur', 'change']
+ },
+ 'checkName': {
+ type: 'string',
+ required: true,
+ message: '请输入自查人姓名',
+ trigger: ['blur', 'change']
+ },
+ 'checkTelephone': {
+ type: 'number',
+ required: true,
+ message: '请输入自查人手机',
+ trigger: ['blur', 'change']
+ },
+ 'location': {
+ type: 'string',
+ required: true,
+ message: '请输入自查位置',
+ trigger: ['blur', 'change']
+ },
+ 'fourOne': {
+ type: 'string',
+ required: false,
+ message: '请选择四个一工程',
+ trigger: ['blur', 'change']
+ },
+ 'fireFacsType': {
+ type: 'string',
+ required: false,
+ message: '请选择消防器材种类',
+ trigger: ['blur', 'change']
+ },
+ 'fireFacsNums': {
+ type: 'string',
+ required: true,
+ message: '请选择消防器材数量',
+ trigger: ['blur', 'change']
+ },
+ 'scStatus': {
+ type: 'string',
+ required: true,
+ message: '请选择安全通道状态',
+ trigger: ['blur', 'change']
+ },
+ 'antiCollision': {
+ type: 'string',
+ required: true,
+ message: '请选择是否配备防撞装置',
+ trigger: ['blur', 'change']
+ },
+ 'fullSoNums': {
+ type: 'string',
+ required: true,
+ message: '请输入全职保安数量',
+ trigger: ['blur', 'change']
+ },
+ 'partSoNums': {
+ type: 'string',
+ required: true,
+ message: '请输入兼职保安数量',
+ trigger: ['blur', 'change']
+ },
+ 'monitorNums': {
+ type: 'string',
+ required: true,
+ message: '请输入监控总数',
+ trigger: ['blur', 'change']
+ },
+ 'monitorOver': {
+ type: 'string',
+ required: true,
+ message: '请选择监控是否全覆盖',
+ trigger: ['blur', 'change']
+ },
+ 'highAltitudeMonitor': {
+ type: 'string',
+ required: true,
+ message: '请输入高空抛物监控',
+ trigger: ['blur', 'change']
+ },
+ },
+ showSelectDate: false,
+ foImageUrls: [], //四个一工程照片
+ fireFacsImageUrls: [], //灭火器图片
+ scImageUrls: [], // 安全通道图片
+ patrolImageUrls: [], //周边巡查照片
+ antiCollisionImageUrls: [], //防撞装置照片
+ haImageUrls: [], //高空抛物监控照片
+ statusList: ["有", "无"],
+ scStatus: [
+ ["开启", "关闭"]
+ ], //安全通道状态
+ scStatusIndex: [0],
+ isShowScStatus: false,
+ checkTime: Number(new Date()),
+ fourOneList: [{
+ name: "已配备一个安检门",
+ value: 1
+ },
+ {
+ name: "已配备一键报警器",
+ value: 2
+ },
+ {
+ name: "已配备一组存储柜",
+ value: 3
+ },
+ {
+ name: "已配备一间会客室",
+ value: 4
+ },
+ {
+ name: "以上皆未配备",
+ value: 5
+ }
+ ]
+ }
+ },
+ onLoad(option) {
+ let siteInfo = uni.getStorageSync("siteInfo");
+ let userInfo = uni.getStorageSync("userInfo");
+ this.$set(this.info, "houseCode", siteInfo.id);
+ this.$set(this.info, "districtName", siteInfo.neiName);
+ this.$set(this.info, "checkUserName", userInfo.real_name);
+ this.$set(this.info, "checkTelephone", userInfo.phone);
+ this.$set(this.info, "checkUserId", userInfo.user_id);
+ },
+
+ onReady() {
+ // 微信小程序需要用此写法
+ this.$refs.datetimePicker.setFormatter(this.formatter)
+ },
+
+ methods: {
+
+ getLocation(){
+ uni.chooseLocation({
+ success:(res)=>{
+ this.$set(this.info,"location",res.address);
+ }
+ })
+ },
+
+ formatter(type, value) {
+ if (type === 'year') {
+ return `${value}年`
+ }
+ if (type === 'month') {
+ return `${value}月`
+ }
+ if (type === 'day') {
+ return `${value}日`
+ }
+ return value
+ },
+
+ confirmDate(e) {
+ this.showSelectDate = false;
+ this.info.checkTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
+ },
+
+ confirmScStatus(e) {
+ this.scStatusIndex = e.indexs;
+ this.info.scStatus = e.value[0];
+ this.isShowScStatus = false;
+ },
+
+ async afterReadImgs(event, key) {
+ this.showLoading()
+ let lists = [].concat(event.file)
+ let fileListLen = this[key].length
+ lists.map((item) => {
+ this[key].push({
+ ...item,
+ status: 'uploading',
+ message: '上传中'
+ })
+ })
+ for (let i = 0; i < lists.length; i++) {
+ const result = await this.uploadFilePromise(lists[i].url)
+ this[key].splice(fileListLen, 1, Object.assign({}, {
+ url: result.data.link,
+ name: result.data.name
+ }))
+ fileListLen++
+ }
+ this.loadingClose()
+ },
+
+ checkImages() {
+ if (this.foImageUrls.length) {
+ this.$set(this.info, "foImageUrls", this.setImages(this.foImageUrls))
+ }
+ if (this.fireFacsImageUrls.length) {
+ this.$set(this.info, "fireFacsImageUrls", this.setImages(this.fireFacsImageUrls))
+ }
+ if (this.patrolImageUrls.length) {
+ this.$set(this.info, "patrolImageUrls", this.setImages(this.patrolImageUrls))
+ }
+ if (this.antiCollisionImageUrls.length) {
+ this.$set(this.info, "antiCollisionImageUrls", this.setImages(this.antiCollisionImageUrls))
+ }
+ if (this.haImageUrls.length) {
+ this.$set(this.info, "haImageUrls", this.setImages(this.haImageUrls))
+ }
+ },
+
+ setImages(key) {
+ let urls = [];
+ for (let i of key) {
+ urls.push(i.url);
+ }
+ return urls.join(",")
+ },
+
+ sumitInfo() {
+ this.$refs.form.validate().then(valid => {
+ this.checkImages()
+ saveSchoolReporting(this.info).then(res => {
+ uni.showToast({
+ icon: 'success',
+ title: '提交成功',
+ success() {
+ setTimeout(() => {
+ uni.navigateBack()
+ }, 1000)
+ }
+ })
+ })
+ })
+ },
+ navigatorPage() {
+ this.$u.func.globalNavigator('schoolList', "navTo")
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ page {
+ background-color: #F5F5F5;
+ }
+
+ .content {
+ margin: 20rpx 30rpx;
+ padding: 0 30rpx;
+ background-color: #fff;
+ }
+
+ .content-name {
+ flex: 1;
+ text-align: right;
+ }
+
+ /deep/.u-radio-group--row {
+ justify-content: flex-end;
+ }
+
+ .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;
+ margin-bottom: 20rpx;
+ }
+
+ .mb-20 {
+ margin-bottom: 20rpx;
+ }
+
+ .mt-30 {
+ margin-top: 30rpx;
+ }
+
+ .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/label/schoolList.vue b/subPackage/label/schoolList.vue
new file mode 100644
index 0000000..ca5ef4c
--- /dev/null
+++ b/subPackage/label/schoolList.vue
@@ -0,0 +1,96 @@
+<template>
+ <view class="">
+ <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.campusName}}</text>
+ <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>
+ <u-tag v-if="i.confirmFlag == 3" text="审核拒绝" type="error" plain plainFill></u-tag>
+ </view>
+ <view class="item-row flex a-i-c j-c-s-b">
+ <text class="f-28">时间</text>
+ <text class="f-28 c-66">{{i.applyTime}}</text>
+ </view>
+ </view>
+ </view>
+ <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
+ </view>
+</template>
+
+<script>
+ import {
+ getSchoolReportingList
+ } from "@/api/reporting/reporting.js"
+ export default {
+ data() {
+ return {
+ list: [],
+ currentPage: 1,
+ loadingStatus: 'nomore',
+ }
+ },
+
+ onLoad() {
+ this.getList()
+ },
+ onReachBottom() {
+ this.currentPage++
+ this.getList()
+ },
+
+ methods: {
+ getList() {
+ getSchoolReportingList({
+ checkUserId: uni.getStorageSync("userInfo").user_id,
+ page: this.currentPage,
+ size: 10
+ }).then(res => {
+ if (res.code != 200) {
+ uni.showToast({
+ title: '数据请求失败',
+ icon: 'error'
+ })
+ return
+ }
+ let records = res.data.records;
+ this.list = [...this.list, ...records]
+ this.loadingStatus = 'nomore'
+ })
+ },
+ navTo(id) {
+ uni.navigateTo({
+ url: `/subPackage/workbench/views/hotelReportDetail?id=${id}`
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss">
+ page {
+ background-color: #F5F5F5;
+ }
+
+ .list {
+ margin: 20rpx 30rpx 0;
+ }
+
+ .list-item {
+ padding: 0 30rpx 20rpx;
+ border-radius: 8rpx;
+
+ .item-title {
+ padding: 30rpx 0;
+ border-bottom: 1px solid #F5F5F5;
+ }
+
+ .item-row {
+ padding: 10rpx 0;
+
+ .address {
+ width: 65%;
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/workbench/views/labelReportDetail.vue b/subPackage/workbench/views/labelReportDetail.vue
index 40144b4..b96de0c 100644
--- a/subPackage/workbench/views/labelReportDetail.vue
+++ b/subPackage/workbench/views/labelReportDetail.vue
@@ -49,8 +49,8 @@
import boxTitle from "@/subPackage/workbench/components/boxTitle/index.vue"
import lineItem from '../components/lineItem.vue'
import {
- getLabelReportingDetail,
- setLabelReporting
+ getSchoolReportingDetail,
+ setShoolReporting
} from '@/api/reporting/reporting'
export default {
components: {
@@ -60,30 +60,80 @@
data() {
return {
basicData: [{
- label: '对象电话',
- name: "transactionObjectTel",
+ label: '社区名称',
+ name: "districtName",
value: '未完善'
},
{
- label: '交易金额',
- name: 'transactionMoney',
+ label: '校园名称',
+ name: 'campusName',
value: '未完善'
},
{
- label: '物品数量',
- name: 'goodsNums',
+ label: '自查时间',
+ name: 'checkTime',
value: '未完善'
},
{
- label: '交易位置',
- name: 'location',
+ label: '自查人姓名',
+ name: 'checkUserName',
value: '未完善'
},
{
- label: '交易过程',
- name: 'transactionProcess',
+ label: '自查位置',
+ name: 'localtion',
value: '未完善'
- }
+ },
+ {
+ label: '四个一工程',
+ name: 'fourOne',
+ value: '未完善'
+ },
+ {
+ label: '消防设施种类',
+ name: 'fireFacsType',
+ value: '未完善'
+ },
+ {
+ label: '消防器材数量',
+ name: 'fireFacsNums',
+ value: '未完善'
+ },
+ {
+ label: '安全通道状态',
+ name: 'scStatus',
+ value: '未完善'
+ },
+ {
+ label: '大门是否装备防撞装置',
+ name: 'antiCollision',
+ value: '未完善'
+ },
+ {
+ label: '专职保安人员',
+ name: 'fullSoNums',
+ value: '未完善'
+ },
+ {
+ label: '兼职保安人员',
+ name: 'partSoNums',
+ value: '未完善'
+ },
+ {
+ label: '学校监控总数',
+ name: 'monitorNums',
+ value: '未完善'
+ },
+ {
+ label: '监控是否全覆盖',
+ name: 'monitorOver',
+ value: '未完善'
+ },
+ {
+ label: '高空抛物监控',
+ name: 'highAltitudeMonitor',
+ value: '未完善'
+ },
],
form: {
confirmFlag: '待审核',
@@ -108,8 +158,12 @@
currentId: '',
currentData: {},
id: "",
- imageUrls: [],
- goodsImageUrls: [],
+ foImageUrls: [], //四个一工程照片
+ fireFacsImageUrls: [], //灭火器图片
+ scImageUrls: [], // 安全通道图片
+ patrolImageUrls: [], //周边巡查照片
+ antiCollisionImageUrls: [], //防撞装置照片
+ haImageUrls: [], //高空抛物监控照片
selectStatus: "",
remark: ""
}
@@ -121,16 +175,19 @@
methods: {
getDetailInfo(id) {
- getLabelReportingDetail({
+ getSchoolReportingDetail({
taskId: id
}).then(res => {
console.log(res);
let data = res.data;
this.basicData.forEach(item => {
- item.value = data[item.name]
+ item.value = data[item.name] || "未完善"
})
- this.imageUrls = this.setImages(data.imageUrls);
- this.goodsImageUrls = this.setImages(data.goodsImageUrls);
+ this.foImageUrls = this.setImages(data.foImageUrls);
+ this.fireFacsImageUrls = this.setImages(data.fireFacsImageUrls);
+ this.patrolImageUrls = this.setImages(data.patrolImageUrls);
+ this.antiCollisionImageUrls = this.setImages(data.antiCollisionImageUrls);
+ this.haImageUrls = this.setImages(data.haImageUrls);
})
},
setImages(str) {
@@ -159,7 +216,7 @@
})
return;
}
- setLabelReporting(data).then(res => {
+ setSchoolReporting(data).then(res => {
if (res.code !== 200) {
uni.showToast({
title: '更新失败',
diff --git a/subPackage/workbench/views/schoolReportDetail.vue b/subPackage/workbench/views/schoolReportDetail.vue
new file mode 100644
index 0000000..02409e3
--- /dev/null
+++ b/subPackage/workbench/views/schoolReportDetail.vue
@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3