From 83c8ed513caa29f7d4b3094e0beb9558a82e01ad Mon Sep 17 00:00:00 2001
From: Lou <luzhiping@qqyjz.com>
Date: Thu, 21 Dec 2023 18:11:33 +0800
Subject: [PATCH] 更新
---
pages/user/center.vue | 4
pages/user/test.vue | 268 ++++++---
subPackage/workbench/views/cscj02.vue | 944 ++++++++++++++++++++++++++++++++++++
subPackage/house/roomDetails/index.vue | 47 +
pages/home/index.vue | 4
subPackage/workbench/views/cscj.vue | 15
subPackage/user/clockIn/index.vue | 3
subPackage/workbench/components/selector.vue | 213 ++++++++
subPackage/house/roomControl/index.vue | 11
9 files changed, 1,389 insertions(+), 120 deletions(-)
diff --git a/pages/home/index.vue b/pages/home/index.vue
index c908b40..4c73428 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -129,7 +129,9 @@
</u-grid-item>
</u-grid>
</view>
- <view class="bgc-ff mb-20 p-20 pb-20" v-if="roleType == 2 && curSelectSite.addressType == 2">
+
+ <view class="bgc-ff mb-20 p-20 pb-20" v-if="(roleType == 2) && (curSelectSite.addressType == 2)">
+
<caption-row title="工作台" />
<u-grid :border="false" col="4">
<u-grid-item @click="navigatorPage('/subPackage/workbench/views/editExamine')"
diff --git a/pages/user/center.vue b/pages/user/center.vue
index e4b1cc4..ba0e66c 100644
--- a/pages/user/center.vue
+++ b/pages/user/center.vue
@@ -64,9 +64,9 @@
<u-cell title="修改密码" :border="false" isLink url="/subPackage/user/password/index">
<image slot="icon" src="/static/icon/menu-center-03.png" class="icon" mode=""></image>
</u-cell>
- <!-- <u-cell title="测试页面" :border="false" isLink url="test">
+ <u-cell title="测试页面" :border="false" isLink url="test">
<image slot="icon" src="/static/icon/menu-center-03.png" class="icon" mode=""></image>
- </u-cell> -->
+ </u-cell>
<!-- <u-cell-item title="评分">
<image slot="icon" src="/static/images/user/c5.png" class="icon" mode=""></image>
</u-cell-item>
diff --git a/pages/user/test.vue b/pages/user/test.vue
index adef062..decd9b0 100644
--- a/pages/user/test.vue
+++ b/pages/user/test.vue
@@ -1,97 +1,149 @@
<template>
<view class="">
- <view class="cell flex j-c-s-b a-i-c bgc-ff" @click="isShow = true">
+ <view class="cell flex j-c-s-b a-i-c bgc-ff" @click="isShow = true">
<text class="f-28">选择标签</text>
<u-icon name="arrow-right"></u-icon>
</view>
-
-
- <u-popup :show="isShow" @close="isShow = false" :safeAreaInsetTop="true" mode="bottom" :closeable="true" round="12">
- <view class="popup-title fw f-30">标签选择</view>
-
+ <view class="mt-20 p-20 bgc-ff" v-if="selectedItem.length">
+ <view class="f-28">已选标签</view>
+ <view class="p-20 flex flex-wrap">
+ <view v-for="(item,index) in selectedItem" :key="index" class="mr-20">
+ <u-tag :closable="true" size="mini" @close="delTag(index)"
+ :text="item.categoryName"></u-tag>
+ </view>
+ </view>
+ </view>
+
+
+
+
+
+ <u-popup :show="isShow" @close="closePopup" :safeAreaInsetTop="true" mode="bottom" :closeable="true"
+ round="12">
+ <view class="popup-title fw f-30">标签选择</view>
+
<view class="popup-list flex a-i-c">
- <scroll-view scroll-y="true" class="scroll">
- <view class="popup-box bgc-f4">
- <view :class="['box-item','f-28',index == fIndex?'bgc-ff':'']" v-for="(item,index) in categoryList" :key="index" @click="handleSelect(item,index)">
- {{item.categoryName}}
+ <scroll-view scroll-y="true" class="scroll">
+ <view class="popup-box">
+ <view :class="['box-item','f-28',index == fIndex?'c-main fw':'']"
+ v-for="(item,index) in categoryList" :key="index" @click="handleSelect(item,index)">
+ {{item.categoryName}}
+ </view>
</view>
- </view>
</scroll-view>
- <scroll-view scroll-y="true" class="scroll">
- <view class="popup-box">
- <view :class="['box-item','f-28',item.isSelect?'c-main fw':'']" v-for="(item,index) in childList" :key="index" @click="handleSelectChild(item,index)">
- {{item.categoryName}}
+ <u-line direction="col" length="300rpx" v-if="childList.length"></u-line>
+ <scroll-view scroll-y="true" class="scroll" v-if="childList.length">
+ <view class="popup-box">
+ <view :class="['box-item','f-28',item.isSelect?'c-main fw':'']"
+ v-for="(item,index) in childList" :key="index" @click="handleSelectChild(item,index)">
+ {{item.categoryName}}
+ </view>
</view>
- </view>
</scroll-view>
</view>
-
- </u-popup>
-
+ <!-- <view class="popup-footer flex j-c-s-b a-i-c">
+ <view class="popup-btn c-main" @click="closePopup">
+ 取消
+ </view>
+ <view class="popup-btn bgc-main c-ff">
+ 确定
+ </view>
+ </view> -->
+ </u-popup>
+
</view>
</template>
<script>
import {
- getLabelCate
+ getLabelCate
} from "@/api/label/categoryLabel.js";
export default {
data() {
return {
- isShow:false,
- categoryList:[],
- childList:[],
- fIndex:0,
- cId:null,
- showLabelList:[]
+ isShow: false,
+ categoryList: [],
+ childList: [],
+ fIndex: null,
+ cId: null,
+ showLabelList: [],
+ selectedItem: []
}
},
-
+
onLoad() {
this.getCategory(1);
- getLabelCate().then(res=>{
- console.log(res)
- })
},
-
+
methods: {
- getCategory(level,id){
- let params = {
- level
- }
- if(level == 2){
- params.parentNo = id;
- }
- getLabelCate(params).then(res=>{
- if(res.code == 200){
- if(level == 2){
- let data = res.data;
- for(let i of data){
- i.isSelect = false;
- }
- this.childList = data;
- }else {
-
- this.categoryList = res.data;
- }
- }
- })
- },
- handleSelect(item,index){
- this.fIndex = index;
- this.getCategory(2,item.categoryNo);
- },
- handleSelectChild(item,index){
- // this.cId = item.id;
-
-
- this.childList[index].isSelect = !this.childList[index].isSelect
-
-
-
-
-
- }
+ getCategory(level, id) {
+ let params = {
+ level
+ }
+ if (level == 2) {
+ params.parentNo = id;
+ }
+ getLabelCate(params).then(res => {
+ if (res.code == 200) {
+ if (level == 2) {
+ let data = res.data;
+ for (let i of data) {
+ i.isSelect = false;
+ }
+ this.childList = data;
+ } else {
+
+ this.categoryList = res.data;
+ }
+ }
+ })
+ },
+ handleSelect(item, index) {
+ if (index == this.fIndex) return;
+ this.fIndex = index;
+ this.selectedItem = [item];
+ this.getCategory(2, item.categoryNo);
+ console.table( "选择父级=>",this.selectedItem)
+ },
+ handleSelectChild(item, index) {
+ this.childList[index].isSelect = !this.childList[index].isSelect;
+ this.getSelected()
+
+ },
+
+ getSelected() {
+ let arr = []
+ for (let i of this.childList) {
+ if (i.isSelect) {
+ arr.push(i);
+ }
+ }
+ this.selectedItem = arr;
+ console.table("选择子级=>",this.selectedItem);
+ },
+
+ showSelected() {
+ for (let i = 0, ii = this.childList.length; i < ii; i++) {
+ for (let k = 0, kk = this.selectedItem.length; k < kk; k++) {
+ if (this.childList[i].id == this.selectedItem[k].id) {
+ this.childList[i].isSelect = true;
+ }
+ }
+ }
+ },
+
+
+ closePopup(){
+ this.isShow = false;
+ },
+
+ delTag(index){
+ this.selectedItem.splice(index,1);
+ }
+
+
+
+
}
}
</script>
@@ -100,36 +152,76 @@
page {
background-color: #F5F5F5;
}
- .cell{
- padding:20rpx;
+
+ .cell {
+ padding: 20rpx;
}
- .popup-title{
+
+ .popup-title {
padding: 20rpx 0;
text-align: center;
}
- .scroll{
- height:700rpx;
+
+ .scroll {
+ flex: 1;
+ height: 700rpx;
+ transition: all .2s;
}
- .scroll:first-child{
- width:40%;
+
+ // .scroll:first-child {
+ // flex:1;
+ // .box-item{
+ // border-bottom:1px solid #F5F5F5;
+ // }
+ // }
+
+ // .scroll:last-child {
+ // flex:2;
+ // }
+ .p-20{
+ padding:20rpx;
}
- .scroll:last-child{
- width:60%;
- }
- .popup-list{
- width:100%;
- height:700rpx;
- .bgc-f4{
- background-color:#f4f4f4;
+
+
+ .popup-list {
+ width: 100%;
+ height: 700rpx;
+ padding:10rpx 0;
+ box-sizing: border-box;
+ .bgc-f4 {
+ background-color: #f4f4f4;
}
- .popup-box{
+
+ .popup-box {
width: 100%;
- height:700rpx;
- .box-item{
- width:100%;
- padding:30rpx;
+ height: 700rpx;
+
+ .box-item {
+ width: 100%;
+ padding: 30rpx;
box-sizing: border-box;
+ text-align: center;
}
}
}
+
+ .popup-footer {
+ padding: 20rpx;
+ box-shadow: 0rpx 0rpx 10rpx 1rpx rgba(0, 0, 0, 0.1);
+
+ .popup-btn {
+ width: 45%;
+ height: 78rpx;
+ line-height: 78rpx;
+ border-radius: 10rpx;
+ text-align: center;
+ font-size: 28rpx;
+ }
+
+ .popup-btn:nth-child(1) {
+ border: 1px solid currentColor;
+ }
+ }
+
+
</style>
\ No newline at end of file
diff --git a/subPackage/house/roomControl/index.vue b/subPackage/house/roomControl/index.vue
index d82bff5..615d871 100644
--- a/subPackage/house/roomControl/index.vue
+++ b/subPackage/house/roomControl/index.vue
@@ -33,7 +33,7 @@
@delete="deletePic" uploadIcon="/static/icon/upload.png">
</u-upload>
</view>
- <view class=" flex label-btn-box b-c-w">
+ <view class=" flex label-btn-box b-c-w" v-if="roleType == 2">
<newBoxTitle title="房屋标签"></newBoxTitle>
<view class="list">
<view v-for="(item, index) in labelBtnList" :key="index">
@@ -178,7 +178,8 @@
labelValue: "",
remark: '',
// 标记
- number: 0
+ number: 0,
+ roleType:1
}
},
@@ -193,6 +194,12 @@
code
} = option
this.houseCode = code
+
+ let roleName = uni.getStorageSync("activeRole").roleName;
+ if(roleName == "网格员"){
+ this.roleType = 2;
+ }
+
},
onShow() {
// this.getLabelList()
diff --git a/subPackage/house/roomDetails/index.vue b/subPackage/house/roomDetails/index.vue
index d3f4254..37a15be 100644
--- a/subPackage/house/roomDetails/index.vue
+++ b/subPackage/house/roomDetails/index.vue
@@ -84,11 +84,11 @@
<view class="mt-20 rent-out-box">
<!-- <box-title :title="'出租管理'"></box-title> -->
- <view class="mt-40 rent-out-list b-c-w rent-out-content" v-for="(item, index) in rentOutList"
+ <view class="mt-20 rent-out-list b-c-w rent-out-content" v-for="(item, index) in rentOutList"
:key="index">
<view class="t flex j-c-s-b a-i-c">
<view class="l">
- 租客:{{item.tenant}}(共{{item.allNum}}人)
+ 租客:{{item.tenant || ""}}(共{{item.allNum}}人)
</view>
<view class="r">
<u-icon name="/static/icon/delete.png" color="red" @click="deleteRent(item)"></u-icon>
@@ -102,13 +102,30 @@
{{findObjValue(item.status, status)}}
</view>
</view>
- <view class="btn-box flex j-c-s-a">
- <u-button icon="edit-pen" class="btn-item" type="primary" plain text="修改"
+ <view class="btn-box flex j-c-s-b">
+ <!-- <u-button icon="edit-pen" class="btn-item bgc-main" type="primary" size='small' text="修改"
:disabled="item.status == 1 || item.status == 2" @click="editRent(item)"></u-button>
- <u-button icon="calendar" class="btn-item" type="primary" plain text="续租"
+ <u-button icon="calendar" class="btn-item bgc-main" type="primary" size='small' text="续租"
:disabled="item.status == 2" @click="reletRent(item)"></u-button>
- <u-button icon="order" class="btn-item" type="primary" plain text="终止"
- :disabled="item.status == 1 || item.status == 2" @click="terRent(item)"></u-button>
+ <u-button icon="order" class="btn-item bgc-main" type="primary" size='small' text="终止"
+ :disabled="item.status == 1 || item.status == 2" @click="terRent(item)"></u-button>-->
+ <view class="btn-item">
+ <u-button class="bgc-main" type="primary" size='small' text="修改"
+ :disabled="item.status == 1 || item.status == 2" @click="editRent(item)"></u-button>
+ </view>
+ <view class="btn-item">
+ <u-button class="bgc-main" type="primary" size='small' text="续租"
+ :disabled="item.status == 2" @click="reletRent(item)"></u-button>
+ </view>
+
+ <view class="btn-item">
+ <u-button class="bgc-main" type="primary" size='small' text="终止"
+ :disabled="item.status == 1 || item.status == 2" @click="terRent(item)"></u-button>
+ </view>
+
+
+
+
</view>
</view>
</view>
@@ -509,13 +526,17 @@
&>.u-button {
margin: 0 16rpx;
}
-
- .btn-item {
- margin: 0 10rpx;
- border: 0;
- color: #009FFF;
- font-weight: 700;
+ .btn-item{
+ width:180rpx;
}
+
+ // /deep/ .btn-item {
+ // // margin: 0 10rpx;
+ // width:300rpx !important;
+ // border: 0;
+ // color: #009FFF;
+ // font-weight: 700;
+ // }
}
}
}
diff --git a/subPackage/user/clockIn/index.vue b/subPackage/user/clockIn/index.vue
index d7a6659..4eeae32 100644
--- a/subPackage/user/clockIn/index.vue
+++ b/subPackage/user/clockIn/index.vue
@@ -115,7 +115,8 @@
title: '提交成功',
success() {
setTimeout(() => {
- this.$u.func.globalNavigator("", "navBack")
+ // this.$u.func.globalNavigator("", "navBack")
+ uni.navigateBack();
}, 1000)
}
})
diff --git a/subPackage/workbench/components/selector.vue b/subPackage/workbench/components/selector.vue
new file mode 100644
index 0000000..c4845d8
--- /dev/null
+++ b/subPackage/workbench/components/selector.vue
@@ -0,0 +1,213 @@
+<template>
+ <view class="">
+
+ <u-popup :show="isShow" @close="closePopup" :safeAreaInsetTop="true" mode="bottom" :closeable="true" round="12">
+ <view class="popup-title fw f-30">标签选择</view>
+
+ <view class="popup-list flex a-i-c">
+ <scroll-view scroll-y="true" class="scroll">
+ <view class="popup-box">
+ <view :class="['box-item','f-28',index == fIndex?'c-main fw':'']"
+ v-for="(item,index) in categoryList" :key="index" @click="handleSelect(item,index)">
+ {{item.categoryName}}
+ </view>
+ </view>
+ </scroll-view>
+ <u-line direction="col" length="300rpx" v-if="childList.length"></u-line>
+ <scroll-view scroll-y="true" class="scroll" v-if="childList.length">
+ <view class="popup-box">
+ <view :class="['box-item','f-28',item.isSelect?'c-main fw':'']"
+ v-for="(item,index) in childList" :key="index" @click="handleSelectChild(item,index)">
+ {{item.categoryName}}
+ </view>
+ </view>
+ </scroll-view>
+ </view>
+ <!-- <view class="popup-footer flex j-c-s-b a-i-c">
+ <view class="popup-btn c-main" @click="closePopup">
+ 取消
+ </view>
+ <view class="popup-btn bgc-main c-ff">
+ 确定
+ </view>
+ </view> -->
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import {
+ getLabelCate
+ } from "@/api/label/categoryLabel.js";
+ export default {
+ name: "selector",
+ data() {
+ return {
+ isShow: false,
+ fIndex: null,
+ selectedItem: [],
+ selectedId: [],
+ categoryList: [],
+ childList: []
+ }
+ },
+ methods: {
+
+ getCategory(level, id) {
+ let params = {
+ level
+ }
+ if (level == 2) {
+ params.parentNo = id;
+ }
+ getLabelCate(params).then(res => {
+ if (res.code == 200) {
+ if (level == 2) {
+ let data = res.data;
+ for (let i of data) {
+ i.isSelect = false;
+ }
+ this.childList = data;
+ } else {
+
+ this.categoryList = res.data;
+ }
+ }
+ })
+ },
+
+ open() {
+ this.isShow = true;
+ },
+ close() {
+ this.isShow = false;
+ },
+ handleSelect(item, index) {
+ if (index == this.fIndex) return;
+ this.fIndex = index;
+ this.selectedItem = [item];
+ this.selectedId = [item.id]
+ this.getCategory(2, item.categoryNo);
+ this.$emit("select", {
+ selected: this.selectedItem,
+ selectedId: this.selectedId
+ })
+ },
+ handleSelectChild(item, index) {
+ this.childList[index].isSelect = !this.childList[index].isSelect;
+ this.getSelected()
+ this.$emit("select", {
+ selected: this.selectedItem,
+ selectedId: this.selectedId
+ });
+
+ },
+ getSelected() {
+ let arr = []
+ let ids = []
+ for (let i of this.childList) {
+ if (i.isSelect) {
+ arr.push(i);
+ ids.push(i.id)
+ }
+ }
+ this.selectedItem = arr;
+ this.selectedId = ids;
+ },
+
+ setDefault(arr) {
+ let ids = [];
+ this.selectedItem = arr;
+ if (arr.length == 1) {
+ for (let i = 0, ii = this.categoryList.length; i < ii; i++) {
+ if (this.categoryList[i].id == arr[0].id) {
+ this.fIndex = i;
+ this.selectedId = [arr[0].id]
+ }
+ }
+ } else {
+ for (let i = 0, ii = this.childList.length; i < ii; i++) {
+ for (let k = 0, kk = arr.length; k < kk; k++) {
+ if (this.childList[i].id == this.arr[k].id) {
+ this.childList[i].isSelect = true;
+ ids.push(this.arr[k].id);
+ }
+ }
+ }
+ this.selectedId = ids;
+ }
+ }
+
+ }
+
+ }
+</script>
+
+<style lang="scss" scoped>
+ .popup-title {
+ padding: 20rpx 0;
+ text-align: center;
+ }
+
+ .scroll {
+ flex: 1;
+ height: 700rpx;
+ transition: all .2s;
+ }
+
+ // .scroll:first-child {
+ // flex:1;
+ // .box-item{
+ // border-bottom:1px solid #F5F5F5;
+ // }
+ // }
+
+ // .scroll:last-child {
+ // flex:2;
+ // }
+ .p-20 {
+ padding: 20rpx;
+ }
+
+
+ .popup-list {
+ width: 100%;
+ height: 700rpx;
+ padding: 10rpx 0;
+ box-sizing: border-box;
+
+ .bgc-f4 {
+ background-color: #f4f4f4;
+ }
+
+ .popup-box {
+ width: 100%;
+ height: 700rpx;
+
+ .box-item {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ text-align: center;
+ }
+ }
+ }
+
+ .popup-footer {
+ padding: 20rpx;
+ box-shadow: 0rpx 0rpx 10rpx 1rpx rgba(0, 0, 0, 0.1);
+
+ .popup-btn {
+ width: 45%;
+ height: 78rpx;
+ line-height: 78rpx;
+ border-radius: 10rpx;
+ text-align: center;
+ font-size: 28rpx;
+ }
+
+ .popup-btn:nth-child(1) {
+ border: 1px solid currentColor;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/subPackage/workbench/views/cscj.vue b/subPackage/workbench/views/cscj.vue
index f08f8cd..9e06ac8 100644
--- a/subPackage/workbench/views/cscj.vue
+++ b/subPackage/workbench/views/cscj.vue
@@ -172,7 +172,7 @@
import uploadMixin from "@/mixin/uploadMixin";
import lineItem from "@/subPackage/workbench/components/lineItem.vue"
import {
- getLabelList,getLabelCate
+ getLabelList
} from "@/api/label/categoryLabel.js";
import {
getDoorplateAddressDetail,
@@ -416,7 +416,6 @@
},
onShow() {
this.getLabel()
- this.getCategory();
// this.getLocation()
},
methods: {
@@ -533,7 +532,7 @@
})
- this.form.jwd = `${Number(data.lat).toFixed(6)},${Number(data.lng).toFixed(6)}`
+ this.form.jwd = `${Number(data.lng).toFixed(6)},${Number(data.lat).toFixed(6)}`
this.form.building = arr.join("")
setTimeout(() => {
@@ -722,16 +721,6 @@
popup() {
this.$refs.uniPopup.open()
},
-
- getCategory(){
- getLabelCate({
- level:2,
- parentNo:11
- }).then(res=>{
- console.log("category===>",res)
- })
- },
-
getLabel() {
getLabelList({
diff --git a/subPackage/workbench/views/cscj02.vue b/subPackage/workbench/views/cscj02.vue
new file mode 100644
index 0000000..08fe435
--- /dev/null
+++ b/subPackage/workbench/views/cscj02.vue
@@ -0,0 +1,944 @@
+<template>
+ <view class="container">
+ <view class="wrap">
+ <u-form labelWidth="70" :model="form" :rules="rules" ref="form">
+ <view class="item">
+ <!-- u-form-item v-if="!currentId" @click="showPicker = true" class="form-item" labelWidth="100" label="楼栋:"
+ :required="isRequired" :disabled="isDisabled" prop="buildingCode">
+ <u--input border="none" disabledColor="#ffffff" v-model="form.building" placeholder="请选择">
+ </u--input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
+ </u-form-item> -->
+ <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 border="none" v-model="form.placeName" placeholder="请输入">
+ </u--input>
+ </u-form-item>
+
+ <u-form-item @click="popup" class="form-item" labelWidth="100" label="标签:" :required="isRequired"
+ :disabled="isDisabled" prop="label">
+ <u--input border="none" disabled disabledColor="#ffffff" placeholder="请选择">
+ </u--input>
+ <u-icon slot="right" name="arrow-right"></u-icon>
+ </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">
+ <u-tag :closable="currentId?false:true" :show="!item.isClose" size="mini" @close="delTag(item)"
+ :text="item.text"></u-tag>
+ </view>
+ </view>
+
+ <u-form-item class="form-item" labelWidth="100" label="备注:" prop="remark">
+ <u--input border="none" v-model="form.remark" placeholder="请输入">
+ </u--input>
+ </u-form-item>
+
+ <!-- <u-form-item class="form-item" labelWidth="100" label="经纬度:" prop="location">
+ <u--input border="none" disabled disabledColor="#ffffff" v-model="form.jwd" placeholder="请输入">
+ </u--input>
+ </u-form-item> -->
+ <u-form-item label="经纬度:" prop="location" labelWidth="100">
+ <view class="address-row flex">
+ <view class="address-content f-28" v-if="form.jwd">
+ {{form.jwd}}
+ </view>
+ <view class="address-content f-30" style="color: #c0c4cc;" v-if="!form.jwd">
+ 请选择地址
+ </view>
+ <view class="location-btn c-main f-24" @click="getLocation()">
+ 获取地址
+ </view>
+ </view>
+ </u-form-item>
+
+
+ </view>
+
+ <view class="item">
+ <view class="box-title">
+ <box-title title="负责人信息"></box-title>
+ </view>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="场所负责人:" prop="username">
+ <u--input border="none" v-model="form.username" placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
+ label="手机号:" prop="phone">
+ <u--input border="none" v-model="form.phone" placeholder="请输入">
+ </u--input>
+ </u-form-item>
+ </view>
+
+ <view class="item pic" v-if="(currentId && form.images.length) || !currentId ">
+ <view class="box-title">
+ <box-title title="场所照片"></box-title>
+ </view>
+ <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
+ :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" :maxCount="uploadConfig.maxCount"
+ :capture="uploadConfig.capture" uploadIcon="/static/icon/upload.png" @afterRead="afterReadImg"
+ @delete="deletePic" :disabled="currentId?true:false" :deletable="currentId?false:true">
+ </u-upload>
+ </view>
+
+ </u-form>
+
+
+
+ <view class="item">
+ <view class="box-title">
+ <box-title title="综治网格">
+ <template slot="titleMore">
+ <view class="title-more">
+ <view class="red item"></view>
+ <view class="orange item">85.9</view>
+ <view class="green item"></view>
+ </view>
+ </template>
+ </box-title>
+ </view>
+ <lineItem :dataInfo="comprehensiveData.basic">
+ </lineItem>
+
+ <lineItem :dataInfo="comprehensiveData.scene">
+ <template v-slot:pic="{scope}">
+ <view class="image" v-if="scope.value !== ''">
+ <u--image @click="imgPreview(scope.value)" width="200rpx" height="200rpx"
+ :src="scope.value"></u--image>
+ </view>
+ <view class="" v-else>
+ {{scope.value}}
+ </view>
+ </template>
+ </lineItem>
+ </view>
+
+
+
+ <view class="item">
+ <view class="box-title">
+ <box-title title="公安网格">
+ <template slot="titleMore">
+ <view class="title-more">
+ <view class="red item"></view>
+ <view class="orange item">85.9</view>
+ <view class="green item"></view>
+ </view>
+ </template>
+ </box-title>
+ </view>
+ <lineItem :dataInfo="publicData.basic">
+ </lineItem>
+
+ <lineItem :dataInfo="publicData.scene">
+ <template v-slot:pic="{scope}">
+ {{scope.value}}
+ </template>
+ </lineItem>
+ </view>
+
+
+ <!-- <view class="bottom">
+ <view class="btn">
+ <u-button @click="submit" type="primary" text="提交" v-if="!currentId"></u-button>
+ </view>
+ </view> -->
+ </view>
+ <footer-btn @click="submit" v-if="!currentId" />
+
+ <uni-popup class="citys_win popup_win" ref="uniPopup" type="bottom">
+ <wyh-tree-select :items="labelList" title="标签选择" :showNav="true" defaultActiveColor="#4586fe"
+ :activeIds="activeIds" @clickItem="labelClick" :showCancel="false" :showConfirm="false">
+ </wyh-tree-select>
+ </uni-popup>
+
+
+ <u-picker :show="showPicker" :defaultIndex="defaultIndex" ref="uPicker" keyName="name" :loading="pickerLoading"
+ :columns="pickColumns" @change="changeHandler" @confirm="confirmPicker"
+ @cancel="showPicker = false"></u-picker>
+
+ <selector ref="select" @select="selectChange" />
+
+
+
+ </view>
+</template>
+
+<script>
+ import uploadMixin from "@/mixin/uploadMixin";
+ import lineItem from "@/subPackage/workbench/components/lineItem.vue"
+ import {
+ getLabelList,getLabelCate
+ } from "@/api/label/categoryLabel.js";
+ import {
+ getDoorplateAddressDetail,
+ getDoorplateAddressList
+ } from "@/api/doorplateAddress/doorplateAddress";
+ import {
+ getPlaceDetail
+ } from '@/api/place/place.js'
+ import {
+ add
+ } from "@/api/place/place";
+ import {
+ format
+ } from "echarts";
+ import boxTitle from '../components/boxTitle/index.vue'
+ import {
+ minioBaseUrl
+ } from "../../../common/setting";
+ import selector from '../components/selector.vue'
+ export default {
+ mixins: [uploadMixin],
+ components: {
+ lineItem,
+ boxTitle,
+ selector
+ },
+ data() {
+ return {
+ isRequired: false,
+ isRequiredPlace: true,
+ isDisabled: true,
+ showPicker: false,
+ pickerLoading: false,
+ pickColumns: [],
+ defaultIndex: [0, 0, 0, 0, 0],
+
+ selectValue: [],
+
+ form: {
+ // buildingCode: "",
+ images: [],
+ label: "",
+ remark: "",
+ imageUrls: "",
+ placeName: "",
+ username: '',
+ phone: '',
+ lat:'',
+ lng:''
+ },
+ rules: {
+ // 'buildingCode': {
+ // type: 'string',
+ // required: true,
+ // message: '请选择楼栋',
+ // trigger: ['blur', 'change']
+ // },
+ 'placeName': {
+ type: 'string',
+ required: true,
+ message: '请输入场所名称',
+ trigger: ['blur', 'change']
+ },
+ 'label': {
+ type: 'string',
+ required: true,
+ message: '请选择标签',
+ trigger: ['blur', 'change'],
+ },
+ 'username': {
+ type: 'string',
+ required: true,
+ message: '请输入场所负责人',
+ trigger: ['blur', 'change'],
+ },
+ 'phone': {
+ type: 'string',
+ required: true,
+ message: '请输入手机号',
+ trigger: ['blur', 'change'],
+ },
+ },
+
+ labelList: [{
+ text: '全部标签',
+ children: [],
+ dot: false
+ }, ],
+
+ comprehensiveData: {
+ basic: [{
+ label: "社区名称",
+ name: 'communityName',
+ value: "暂无数据"
+ },
+ {
+ label: "网格名称",
+ name: 'gridName',
+ value: "暂无数据"
+ },
+ {
+ label: "网格员",
+ name: 'realName',
+ value: "暂无数据"
+ },
+ {
+ label: "联系电话",
+ name: 'gridPhone',
+ value: "暂无数据"
+ }
+ ],
+ scene: [{
+ label: "场所照片",
+ name: 'imageUrls',
+ value: "",
+ useSlot: "pic",
+ },
+ {
+ label: "场所负责人",
+ name: 'username',
+ value: "未完善",
+ },
+ {
+ label: "采集人",
+ name: 'createUserName',
+ value: "未完善"
+ },
+ {
+ label: "采集时间",
+ name: 'createTime',
+ value: "未完善"
+ },
+ {
+ label: "历史事件",
+ value: "未完善",
+ }
+ ],
+ },
+ publicData: {
+ basic: [{
+ label: "公安局",
+ name: 'branchName',
+ value: "暂无数据"
+ },
+ {
+ label: "派出所",
+ name: 'localPoliceStationName',
+ value: "暂无数据"
+ },
+ {
+ label: "辖区民警",
+ name: 'policeman',
+ value: "暂无数据"
+ },
+ {
+ label: "联系电话",
+ name: 'policemanPhone',
+ value: "暂无数据"
+ }
+ ],
+ scene: [{
+ label: "消防照片",
+ useSlot: "pic",
+ },
+ {
+ label: "采集人",
+ value: "未完善"
+ },
+ {
+ label: "采集时间",
+ value: "未完善"
+ },
+ {
+ label: "消防负责人",
+ value: "未完善",
+ },
+ {
+ label: "采集人",
+ value: "未完善"
+ },
+ {
+ label: "采集时间",
+ value: "未完善",
+ },
+ {
+ label: "历史事件",
+ value: "未完善",
+ }
+ ],
+ },
+
+ activeIds: [],
+ showLabelList: [],
+ houseCode: "",
+ currentId: "",
+ addressType: 2,
+ selectItem:[]
+ }
+ },
+ watch: {
+ activeIds: {
+ handler(newVal) {
+ this.form.label = newVal.join(",")
+ }
+ },
+ "form.buildingCode": {
+ handler(newVal) {}
+ },
+ showLabelList(newVal) {}
+ },
+
+ created() {
+ this.buildColumn()
+ },
+ mounted() {
+
+ },
+ options: {
+ styleIsolation: 'shared', // 解除样式隔离
+ },
+ onLoad(option) {
+ console.log(option)
+ const {
+ type
+ } = option
+ if (option.addressType) {
+ this.addressType = option.addressType
+ }
+ if (option.id) {
+ this.currentId = option.id
+ }
+ if (option.houseCode) {
+ this.houseCode = option.houseCode
+ this.form.houseCode = option.houseCode
+ }
+ if (option.id || option.houseCode) {
+ this.getBuildingDetail()
+ }
+ if (!!type || type != void 0) {
+ uni.setNavigationBarTitle({
+ title: '详情'
+ })
+ }
+ // this.$refs.selector.getCategory(1);
+ },
+ onShow() {
+ this.getLabel()
+ this.getCategory();
+ // this.getLocation()
+ },
+ methods: {
+
+ // getBuildingDetail(params = {}) {
+ // getDoorplateAddressDetail(Object.assign(params, {
+ // stdId: this.stdId
+ // })).then(res => {
+ // let data = res.data
+ // this.form.buildingCode = data.buildingCode
+
+ // let buildingNameArr = [data.townStreetName, data.neiName, data.streetRuName, data.aoiName,
+ // data.buildingName
+ // ]
+ // let arr = buildingNameArr.filter(e => {
+ // return e != null || e != ''
+ // })
+
+ // // 赋值
+ // // this.form.placeName = data['placeName']
+ // Object.keys(this.form).forEach(key => {
+ // if (!data[key]) {
+ // this.form[key] = data.place[key]
+ // } else {
+ // this.form[key] = data[key]
+ // }
+ // })
+
+ // this.form.building = arr.join("")
+
+ // Object.keys(this.comprehensiveData).forEach(key => {
+ // this.comprehensiveData[key].forEach(item => {
+ // if (!data[item.name]) {
+ // item.value = data.place[item.name] || '未完善'
+ // } else {
+ // item.value = data[item.name] || '未完善'
+ // }
+ // })
+ // this.publicData[key].forEach(item => {
+ // if (!data[item.name]) {
+ // item.value = data.place[item.name] || '未完善'
+ // } else {
+ // item.value = data[item.name] || '未完善'
+ // }
+ // })
+ // })
+ // })
+ // },
+
+ getBuildingDetail(params = {}) {
+ let idorCodeParams = {}
+ if (this.houseCode) {
+ idorCodeParams = {
+ houseCode: this.houseCode,
+ // addressType:this.addressType
+ }
+ }
+ if (this.addressType) {
+ idorCodeParams.addressType = this.addressType
+ }
+ if (this.currentId) {
+ idorCodeParams = {
+ id: this.currentId
+ }
+ }
+ getPlaceDetail({
+ ...params,
+ ...idorCodeParams
+ }).then(({
+ code,
+ data
+ }) => {
+ if (code !== 200) {
+ uni.showToast({
+ title: "数据加载失败",
+ icon: 'error'
+ })
+ return
+ }
+ const dpaEntity = data?.doorplateAddressEntity || {}
+
+ const gridEntity = data?.grid || {}
+
+ // this.form.buildingCode = dpaEntity?.buildingCode || ''
+
+ let buildingNameArr = [
+ dpaEntity?.townStreetName,
+ dpaEntity?.neiName,
+ dpaEntity?.streetRuName,
+ dpaEntity?.aoiName,
+ dpaEntity?.buildingName
+ ]
+ let arr = buildingNameArr.filter(e => {
+ return e != null || e != ''
+ })
+ this.form.placeName = data['placeName'] || ''
+
+ Object.keys(this.form).forEach(key => {
+ if (!data[key]) {
+ // this.form[key] = dpaEntity[key] || '未完善'
+ this.form[key] = dpaEntity[key]
+ } else {
+ // this.form[key] = data[key] || '未完善'
+ this.form[key] = data[key]
+ }
+ if (key === "images") {
+ // this.form[key] = data.imageUrls
+ if (data.imageUrls) {
+ this.form.images = this.$setImageUrl(data.imageUrls, 2);
+ } else {
+ this.form.images = []
+ }
+ }
+ })
+
+
+ this.form.jwd = `${Number(data.lat).toFixed(6)},${Number(data.lng).toFixed(6)}`
+
+ this.form.building = arr.join("")
+ // setTimeout(() => {
+ // data.placePoiLabelVOList.forEach(item => {
+ // let label = this.labelList[0].children.find(sl => sl.text === item
+ // .labelName) || {}
+ // label['isClose'] = false
+ // label?.text && this.showLabelList.push(label)
+ // })
+ // }, 500)
+ let labelList = data.placePoiLabelVOList
+ if(labelList.length){
+ this.getCategory(2,labelList[0].id);
+ }
+ setTimeout(() => {
+ for(let i of labelList){
+ i.categoryName = i.text;
+ }
+ this.selectItem = labelList;
+ this.$refs.select.setDefault(labelList);
+ }, 500)
+
+
+ Object.keys(this.comprehensiveData).forEach(key => {
+ this.comprehensiveData[key].forEach(item => {
+ if (!data[item.name]) {
+ item.value = dpaEntity[item.name] || '未完善'
+ item.value = gridEntity[item.name] || '未完善'
+ } else {
+ item.value = data[item.name] || '未完善'
+ if (item.name == "imageUrls") {
+ item.value = this.$setImageUrl(data[item.name])
+ // item.value = minioBaseUrl + data[item.name] || '未完善'
+ }
+ }
+ })
+ this.publicData[key].forEach(item => {
+ if (!data[item.name]) {
+ item.value = dpaEntity[item.name] || '未完善'
+ } else {
+ item.value = data[item.name] || '未完善'
+ }
+ })
+ })
+
+ })
+ },
+
+ //表单提交
+ submit() {
+ const that = this
+ this.$refs.form.validate().then(valid => {
+ if (valid) {
+ if (this.form?.images?.length > 0) {
+ let urls = []
+ this.form.images.forEach(e => {
+ urls.push(e.name)
+ })
+ this.form.imageUrls = urls.join(",")
+ }
+ add(this.form).then(res => {
+ uni.showToast({
+ icon: 'success',
+ title: '提交成功',
+ success() {
+ setTimeout(() => {
+ that.$u.func.globalNavigator(
+ "/pages/home/index", "switchTab")
+ }, 1000)
+ }
+ })
+ })
+ }
+ })
+ },
+
+ async buildColumn() {
+
+ //设置街道
+ const townStreet = await this.getDoorplateAddressList(null, "townStreet")
+ this.setColumn(townStreet, 0)
+ //设置社区
+ const nei = await this.getDoorplateAddressList(townStreet[0]?.code, "nei")
+ this.setColumn(nei, 1)
+ //设置路
+ const streetRu = await this.getDoorplateAddressList(nei[0]?.code, "streetRu")
+ this.setColumn(streetRu, 2)
+ //设置地区
+ const district = await this.getDoorplateAddressList(streetRu[0]?.code, "district")
+ this.setColumn(district, 3)
+ //设置楼栋
+ const building = await this.getDoorplateAddressList(district[0]?.code, "building")
+ this.setColumn(building, 4)
+ },
+
+ setColumn(data, index) {
+ this.$set(this.pickColumns, index, data)
+ },
+
+ getLocation() {
+ const that = this
+ uni.getLocation({
+ type: 'wgs84', // 坐标系类型
+ success: function(res) {
+ var latitude = res.latitude; // 维度
+ var longitude = res.longitude; // 经度
+
+ that.form.lng = longitude
+ that.form.lat = latitude
+
+ that.form.jwd = longitude + "," + latitude
+ },
+ fail: function(res) {
+ console.log('获取定位失败:' + res.errMsg);
+ }
+ });
+ },
+
+ getLocation() {
+ uni.chooseLocation({
+ success: (res) => {
+ this.form.lat = res.latitude;
+ this.form.lng = res.longitude;
+ this.form.jwd = `${Number(res.latitude).toFixed(5)},${Number(res.longitude).toFixed(5)}`
+ }
+ })
+ },
+
+ async getDoorplateAddressList(code, type) {
+ const res = await getDoorplateAddressList(code, type)
+ return res.data
+ },
+
+ confirmPicker(e) {
+
+ if (e.value[4]) {
+ this.selectValue = e.value
+
+ let arr = this.selectValue.map(e => e.name)
+ this.form.building = arr.join("")
+
+ this.form.buildingCode = e.value[4].code
+ }
+ this.showPicker = false
+ },
+
+ async changeHandler(e) {
+ const {
+ columnIndex,
+ index,
+ // 微信小程序无法将picker实例传出来,只能通过ref操作
+ picker = this.$refs.uPicker
+ } = e
+ let item = e.values[columnIndex][index]
+ //街道
+ if (columnIndex === 0) {
+ //获取社区列表
+ const nei = await this.getDoorplateAddressList(item.code, "nei")
+ picker.setColumnValues(1, nei)
+
+ const streetRu = await this.getDoorplateAddressList(nei[0].code, "streetRu")
+ picker.setColumnValues(2, streetRu)
+
+ const district = await this.getDoorplateAddressList(streetRu[0].code, "district")
+ picker.setColumnValues(3, district)
+
+ const building = await this.getDoorplateAddressList(district[0].code, "building")
+ picker.setColumnValues(4, building)
+ }
+
+ if (columnIndex === 1) {
+ const streetRu = await this.getDoorplateAddressList(item.code, "streetRu")
+ picker.setColumnValues(2, streetRu)
+
+ const district = await this.getDoorplateAddressList(streetRu[0].code, "district")
+ picker.setColumnValues(3, district)
+
+ const building = await this.getDoorplateAddressList(district[0].code, "building")
+ picker.setColumnValues(4, building)
+ }
+
+ if (columnIndex === 2) {
+
+ const district = await this.getDoorplateAddressList(item.code, "district")
+ picker.setColumnValues(3, district)
+
+ const building = await this.getDoorplateAddressList(district[0].code, "building")
+ picker.setColumnValues(4, building)
+ }
+
+ if (columnIndex === 3) {
+ const building = await this.getDoorplateAddressList(item.code, "building")
+ picker.setColumnValues(4, building)
+ }
+
+ },
+
+ //弹出层打开
+ popup() {
+ // this.$refs.uniPopup.open()
+ this.$refs.selector.open()
+ },
+
+
+ //标签选择
+ selectChange(val){
+ this.selectItem = val.selected;
+ this.form.label = val.selectedId.join(",");
+ },
+
+ getCategory(){
+ getLabelCate({
+ // level:2,
+ // parentNo:11
+ level:3,
+ parentNo:1101
+ }).then(res=>{
+ console.log("category===>",res)
+ })
+ },
+
+
+ getLabel() {
+ getLabelList({
+ size: -1
+ }).then(res => {
+ let data = res.data.records
+ data.sort((a, b) => a.sort - b.sort)
+
+ data.forEach(label => {
+ this.labelList[0].children.push({
+ id: label.categoryNo,
+ text: label.categoryName
+ })
+ })
+ })
+ },
+
+ labelClick(item) {
+
+ //判断label是否已在
+ const label = this.showLabelList.find(e => e.id == item.id)
+ if (label) {
+ //在,去掉
+ this.showLabelList = this.showLabelList.filter(e => e.id != label.id)
+ this.activeIds = this.activeIds.filter(e => e != label.id)
+ } else {
+ //不在,添加
+ item.isClose = false
+ this.showLabelList.push(item)
+ this.activeIds.push(item.id)
+ }
+
+ this.showLabelList.sort((a, b) => a.sort - b.sort)
+
+ },
+ delTag(label) {
+ label.isClose = true
+ this.showLabelList = this.showLabelList.filter(e => e.id != label.id)
+ this.activeIds = this.activeIds.filter(e => e != label.id)
+
+ },
+ imgPreview(value) {
+ uni.previewImage({
+ urls: minioBaseUrl + [value],
+ })
+ },
+ }
+ }
+</script>
+
+<style scoped lang="scss">
+ .container {
+ position: relative;
+ width: calc(100% - 60rpx);
+ // height: 100%;
+ display: flex;
+ flex-direction: column;
+ background: #f5f5f5;
+ padding: 0 30rpx 20rpx 30rpx;
+ .wrap{
+ width:100%;
+ margin-bottom:120rpx;
+ }
+ .box-title {
+ padding: 10px 0;
+
+ .title-more {
+ display: flex;
+ align-items: center;
+ height: 100%;
+
+ .item {
+ width: 50rpx;
+ height: 40rpx;
+ color: #ffffff;
+ padding: 6rpx;
+ font-size: 2rpx;
+ text-align: center;
+ line-height: 20px;
+ }
+
+ }
+ }
+
+ .item {
+ margin-top: 20rpx;
+ background-color: #ffffff;
+ border-radius: 8rpx;
+ padding: 0 30rpx;
+
+ .form-item {
+ background-color: #ffffff;
+ padding: 2rpx 10px;
+ border-bottom: 0.1px solid #eff1f3;
+ }
+
+ .label {
+ padding: 10rpx 30rpx;
+ display: flex;
+ background-color: #ffffff;
+ flex-wrap: wrap;
+
+ .activeLabel {
+ // width: 80rpx;
+ margin-left: 10rpx;
+ margin-top: 10rpx
+ }
+ }
+
+
+
+ }
+
+ .pic {
+ background-color: #ffffff;
+ padding-bottom: 20rpx;
+
+ /deep/ .u-upload__button {
+ border: 1rpx solid #EEEEEE;
+ background-color: #fff;
+ }
+ }
+
+ .image {
+ padding: 20rpx;
+ }
+
+ .bottom {
+ padding: 20rpx;
+ background-color: #ffffff;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ .btn {
+ width: calc(100% - 40rpx);
+ }
+ }
+ }
+
+ /deep/ .u-form-item {
+ background-color: #ffffff;
+ padding: 2rpx 10px;
+ border-bottom: 1px solid #eff1f3;
+ }
+
+ .red {
+ background-color: red;
+ border-radius: 10rpx 0rpx 0rpx 10rpx;
+ }
+
+ .orange {
+ background-color: orange;
+ }
+
+ .green {
+ background-color: green;
+ border-radius: 0rpx 10rpx 10rpx 0rpx;
+ }
+
+
+ .address-row {
+ flex: 1;
+ justify-content: flex-end;
+ align-items: center;
+ }
+
+ .address-content {
+ width: calc(100% - 116rpx - 12rpx);
+ margin-right: 12rpx;
+ }
+
+ .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
--
Gitblit v1.9.3