瀏覽代碼

黑名单设置,物业费设置

zouling 4 月之前
父節點
當前提交
d58c1c29f5

+ 4 - 0
property_ui/.hbuilderx/launch.json

@@ -2,6 +2,10 @@
   // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
     "version": "0.0",
     "configurations": [{
+     	"app-plus" : 
+     	{
+     		"launchtype" : "local"
+     	},
      	"default" : 
      	{
      		"launchtype" : "local"

+ 76 - 2
property_ui/api/work/manage.js

@@ -390,9 +390,83 @@ export function feecallPaymentAll(data) {
   })
 }
 
+// 物业费设置-新增wuYe:fee:settings:add
+export function feesetAdd(data) {
+  return request({
+    url: '/wuYe/fee/settings',
+    method: 'post',
+    'data': data
+  })
+}
+// 物业费设置-修改wuYe:fee:settings:edit
+export function feesetPut(data) {
+  return request({
+    url: '/wuYe/fee/settings/put',
+    method: 'post',
+    'data': data
+  })
+}
+// 物业费设置-删除wuYe:fee:settings:remove
+export function feesetDel(data) {
+  return request({
+    url: '/wuYe/fee/settings/delete/'+data,
+    method: 'get',
+  })
+}
+//物业费设置-列表wuYe:fee:settings:list
+export function feesetList(data) {
+  return request({
+    url: '/wuYe/fee/settings/list',
+    method: 'get',
+    'data': data
+  })
+}
+// 物业费设置-详情wuYe:fee:settings:list
+export function feesetDet(data) {
+  return request({
+    url: '/wuYe/fee/settings/'+data,
+    method: 'get',
+  })
+}
 
-
-
+// 黑名单管理-新增wuYe:blackManage:add
+export function blackManageAdd(data) {
+  return request({
+    url: '/wuYe/blackManage',
+    method: 'post',
+    'data': data
+  })
+}
+// 黑名单管理-修改wuYe:blackManage:edit
+export function blackManagePut(data) {
+  return request({
+    url: '/wuYe/blackManage/put',
+    method: 'post',
+    'data': data
+  })
+}
+// 黑名单管理-删除wuYe:illegalParking:remove
+export function blackManageDel(data) {
+  return request({
+    url: '/wuYe/blackManage/delete/'+data,
+    method: 'get',
+  })
+}
+//黑名单管理-列表wuYe:blackManage:list
+export function blackManageList(data) {
+  return request({
+    url: '/wuYe/blackManage/list',
+    method: 'get',
+    'data': data
+  })
+}
+// 黑名单管理-详情wuYe:blackManage:query
+export function blackManageDet(data) {
+  return request({
+    url: '/wuYe/blackManage/'+data,
+    method: 'get',
+  })
+}
 
 
 

+ 2 - 6
property_ui/car/pages/carcheck.vue

@@ -7,7 +7,7 @@
 			</view>
 			<view class="chmain">
 				<view class="upbox" @click="getaddImage">
-					<image :src="baseUrl+datainfo.front" class="img" v-if="datainfo.front"></image>
+					<!-- <image :src="baseUrl+datainfo.front" class="img" v-if="datainfo.front"></image> -->
 					<image :src="car" class="addimg"></image>
 					<view>拍摄车辆照片自动识别</view>
 				</view>
@@ -42,12 +42,8 @@
 				baseUrl:config.baseUrl,
 				datainfo:{
 					realName:'',
-					idCard:'',
-					address:'',
-					expirationDate:'',
-					phonenumber:this.$store.state.datainfo.phonenumber,
+					phonenumber:'',
 					front:'',
-					back:'',
 				},
 			}
 		},

+ 4 - 3
property_ui/health/pages/health/add.vue

@@ -1,9 +1,10 @@
 <template>
-	<view class="check" :style="'padding-top:'+nvaHeight+'px;'">
-		<view class="navbox">
+	<!-- :style="'padding-top:'+nvaHeight+'px;'" -->
+	<view class="check" >
+		<!-- <view class="navbox">
 			<uni-nav-bar  color="#ffffff" left-icon="left" title="健康档案"  :background-color="backgroundColor" :border="false" statusBar='true' fixed="true" @clickLeft="getBackFn">
 			</uni-nav-bar>
-		</view>
+		</view> -->
 		<uni-forms ref="form" :model="datainfo" :rules="rules">
 			<view class="cbox">
 				<view class="chmain">

+ 2 - 2
property_ui/manage/pages/community/sqmoney.vue

@@ -99,7 +99,7 @@
 					{ name: 'equipmentStatus', label: '状态',align:'center',type:"format",key:"sbztList"},
 					{ name: 'operation', type:'operation',label: '操作',renders:[
 						{
-						    name:'编辑',
+						    name:'查看',
 						    func:'edit' // func 代表子元素点击的事件 父元素接收的事件 父元素 @edit
 						  },
 						  {
@@ -208,7 +208,7 @@
 			},
 			getDetail(data){
 				var id=data.communityAssetId;
-				this.$tab.navigateTo("/manage/pages/community/sqmoneyadd?id="+id)
+				this.$tab.navigateTo("/manage/pages/community/sqmoneydetail?from=list&id="+id)
 			},
 			getAddFn(){
 				this.$tab.navigateTo("/manage/pages/community/sqmoneyadd")

+ 204 - 0
property_ui/manage/pages/community/sqmoneydetail.vue

@@ -0,0 +1,204 @@
+<template>
+	<view class="mdetail">
+		<uni-data-picker :map="map" :readonly='readonly' :localdata="assetTree" v-model="datainfo.assetId" >
+		</uni-data-picker>
+		<!-- <view class="mdtit">车辆资产 / {{datainfo.assetName}}</view> -->
+		<view class="mdbox">
+			<image :src="yy_code" class="code"></image>
+			<view class="down flexcc" @click="getDown">
+				<image :src="downico"></image>保存二维码至手机
+			</view>
+			<image :src="line" class="line mb20"></image>
+			<view class="mdlist flex mb14"><view class="tit">资产名称:</view>{{datainfo.equipmentName}}</view>
+			<view class="mdlist flex mb14"><view class="tit">资产编号:</view>{{datainfo.equipmentNumber}}</view>
+			<view class="mdlist flex mb14"><view class="tit">资产型号:</view>{{datainfo.equipmentModel}}</view>
+			<view class="mdlist flex mb14"><view class="tit">存放位置或使用位置:</view>{{datainfo.equipmentLocation}}</view>
+			<view class="mdlist flex mb14"><view class="tit">购买价格:</view>{{datainfo.equipmentPrice}}
+				<!-- <view class="coby">复制</view> -->
+			</view>
+			<view class="mdlist flex mb14"><view class="tit">购买时间:</view>{{datainfo.purchaseDate}}</view>
+			<view class="mdlist flex mb14"><view class="tit">资产状态:</view>{{kaType(datainfo.equipmentStatus,sbztList)}}</view>
+			<view class="mdlist flex mb14"><view class="tit">用途描述:</view>{{datainfo.equipmentPurpose}}</view>
+			<view class="mdlist flex mb14"><view class="tit">车牌号:</view>{{datainfo.plateNumber}}</view>
+			<view class="mdlist flex mb14"><view class="tit">备注信息:</view>{{datainfo.remark}}</view>
+			<view class="mdlist flex mb14"><view class="tit">设备封面:</view>
+				<view class="imgs">
+					<block v-if="fmphofile&&fmphofile.length">
+						<view class="img" v-for="(ite,idx) in fmphofile" :key="idx" @click="getPreview(idx,fmphofile)">
+							<image :src="baseUrl+ite" class="pimg"></image>
+						</view>
+					</block>
+				</view>
+			</view>
+			<view class="mdlist flex mb14"><view class="tit">设备图片:</view>
+				<view class="imgs">
+					<block v-if="phofile&&phofile.length">
+						<view class="img" v-for="(ite,idx) in phofile" :key="idx" @click="getPreview(idx,phofile)">
+							<image :src="baseUrl+ite" class="pimg"></image>
+						</view>
+					</block>
+				</view>
+			</view>
+
+			<view class="flex1"></view>
+			<view class="rhbtn mb12 mt30" v-if="pfrom=='list'&&checkPermi(['wuYe:assets:edit'])" @click="getput">修改</view>
+			<view class="time">最近更新时间:2025-03-03  17:35:56</view>
+		</view>
+	<loading></loading>	
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl;
+	import {selectDictValue} from "@/utils/common.js"
+	import {getDictionaryFn} from "@/api/system/user.js"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import {assetsDet,assetTypeTree} from "@/api/work/manage.js"
+	import QR from "@/utils/wxqrcode.js" // 二维码生成器 
+	export default{
+		components:{},
+		data(){
+			return{
+				downico:require('@/manage/static/community/downico.png'),
+				line:require('@/manage/static/community/line.png'),
+				id:'',
+				datainfo:{},
+				pfrom:"",
+				sbztList:[],
+				baseUrl:config.baseUrl,
+				readonly:true,
+				fmphofile:[],
+				phofile:[],
+				assetTree:[],
+				map:{text:'label',value:'id'},
+				yy_code:'',
+			}
+		},
+		onLoad: function(e) {
+			this.id=e.id;
+			if(e.from){
+				this.pfrom=e.from
+			}
+			this.init()
+			this.getDetailFn()
+		},
+		methods:{
+			checkPermi, checkRole,
+			kaType(data, list) {
+				return selectDictValue(list, data);
+			},
+			init(){
+				assetTypeTree().then(res=>{
+					if(res.code==200){
+						this.assetTree=res.data;
+					}
+				})
+				//设备状态
+				getDictionaryFn('shebei_status').then(res=>{
+					if(res.code==200){
+						if(res.data){
+							this.sbztList = res.data.map(v => {
+								return {
+									dictLabel: v.dictLabel,
+									dictValue: v.dictValue
+								}
+							})
+						}
+					}
+				})	
+			},
+			getDown(urls){
+				// var url=this.baseUrl+urls
+				var url=this.yy_code;
+				// uni.downloadFile({
+				// 	url: url,//文件的下载路径
+				// 	success(res) {
+				// 		if (res.statusCode === 200) {
+				// 		uni.saveImageToPhotosAlbum({ //保存图片到系统相册。
+				// 			filePath: res.tempFilePath, //图片文件路径
+				// 			success: function() {
+				// 				uni.showToast({
+				// 					title: '图片保存成功',
+				// 					icon: 'none',
+				// 				});
+				// 			},
+				// 			fail: function(e) {
+				// 				uni.showToast({
+				// 					title: '图片保存失败',
+				// 					icon: 'none',
+				// 				});
+				// 			}
+				// 		});
+				// 	}
+				// 	},
+				// 	fail(res) {
+				// 		uni.hideLoading()
+				// 	}
+				// })
+			},
+			getPreview(idx,arr) {
+				var newArr=[];
+				arr.forEach(ite=>{
+					var ds=this.baseUrl+ite
+					newArr.push(ds)
+				})
+				uni.previewImage({
+					urls: newArr,
+					current:idx,
+					success: function(data) {},
+					fail: function(err) {}
+				});
+			},
+			getDetailFn(){
+				var that=this;
+				assetsDet(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						this.yy_code = QR.createQrCodeImg(this.id, {
+								size: parseInt(240),//二维码大小 
+								typeNumber:10
+						})
+						if(res.data.equipmentCoverPhoto){
+							this.fmphofile=res.data.equipmentCoverPhoto.split(',')
+						}
+						if(res.data.equipmentPhotos){
+							this.phofile=res.data.equipmentPhotos.split(',')
+						}
+					}
+				})
+			},
+			getput(){
+				this.$tab.navigateTo("/manage/pages/community/sqmoneyadd?id="+this.id)
+			},
+		}
+	}
+</script>
+<style>
+	page{background: #F3F3F0;}
+</style>
+<style lang="scss" scoped>
+.mdetail /deep/ .input-value-border{border: none !important;font-weight: bold;font-size: 34rpx;color: #161616;padding: 16rpx 6rpx;}
+.mdetail{background: linear-gradient(180deg, #CCDDFF 0%, #F3F3F0 100%) no-repeat;min-height: 100vh;background-position: top;background-size: 100% 578rpx;padding: 32rpx 30rpx 26rpx;position: relative;display: flex;flex-direction: column;}
+// .mdtit{font-weight: bold;font-size: 34rpx;color: #161616;padding: 16rpx 6rpx;}
+.mdbox{width: 100%;background: #FFFFFF;border-radius: 20rpx;flex: 1;padding: 84rpx 24rpx 80rpx;box-sizing: border-box;display: flex;flex-direction: column;
+	.code{width: 222rpx;height: 222rpx;margin: 0 auto 20rpx;display: block;}
+	.down{font-weight: 500;font-size: 24rpx;color: #161616;margin-bottom: 54rpx;
+		image{width: 18rpx;height: 20rpx;margin-right: 10rpx;}
+	}
+	.line{width: 100%;height: 14rpx;}
+	.mdlist{font-weight: bold;font-size: 26rpx;color: #272727;
+		.tit{font-weight: 500;color: #AAAAAA;flex: 0 0 auto;}
+		.coby{font-weight: 500;margin-left: 18rpx;flex: 0 0 auto;font-size: 24rpx;color: #0256FD;}
+	}
+	.time{font-weight: 500;font-size: 24rpx;color: #AAAAAA;text-align: center;}
+	.imgs{display: flex;align-items: center;flex-wrap: wrap;
+		.img{width: 142rpx;height:142rpx;border-radius: 20rpx;margin: 0 28rpx 20rpx 0;position: relative;
+		&:nth-of-type(4n){margin-right: 0;}
+		}
+		.pimg{width: 100%;height: 100%;border-radius: 20rpx;}
+
+	}
+}
+
+</style>

二進制
property_ui/manage/static/community/downico.png


二進制
property_ui/manage/static/community/line.png


+ 40 - 3
property_ui/pages.json

@@ -176,6 +176,34 @@
 						"titleNView":false
 					}
 				}
+			},
+			{
+				"path": "pages/fee/set",
+				"style": {
+					"navigationBarTitleText": "物业费设置",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/fee/index",
+				"style": {
+					"navigationBarTitleText": "物业费设置",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/blackManage/index",
+				"style": {
+					"navigationBarTitleText": "黑名单设置",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/blackManage/add",
+				"style": {
+					"navigationBarTitleText": "黑名单设置",
+					"h5":{"titleNView":false}
+				}
 			}
 		]
   	},
@@ -324,6 +352,15 @@
 					}
 				}
 			},
+			{
+				"path": "pages/community/sqmoneydetail",
+				"style": {
+					"navigationBarTitleText": "资产详情",
+					"h5":{
+						"titleNView":false
+					}
+				}
+			},
 			{
 				"path": "pages/community/sqmoneyadd",
 				"style": {
@@ -557,9 +594,9 @@
 				"path": "pages/health/add",
 				"style": {
 					"navigationBarTitleText": "添加档案",
-					"h5":{
-						"titleNView":false
-					}
+					"navigationBarTextStyle": "white",
+					"navigationBarBackgroundColor": "#48CC9A"
+					// "h5":{"titleNView":false}
 				}
 			},
 			{

+ 14 - 1
property_ui/pages/mine/index.vue

@@ -67,6 +67,13 @@
 					<view class="tit flex1">报修管理</view>
 					<image :src="rimg" class="rimg"></image>
 				</view>
+				<view class="flexc mine_list" @click="getFeeSet" v-if="checkPermi(['wuYe:fee:settings:list'])">
+					<view class="limg">
+						<image :src="listimgj" class="imga"></image>
+					</view>
+					<view class="tit flex1">物业费设置</view>
+					<image :src="rimg" class="rimg"></image>
+				</view>
 				<view class="flexc mine_list" @click="getFeeFn" v-if="checkPermi(['wuYe:fee:list'])">
 					<view class="limg">
 						<image :src="listimgf" class="imgb"></image>
@@ -102,7 +109,7 @@
 					<view class="tit flex1">修改密码</view>
 					<image :src="rimg" class="rimg"></image>
 				</view>
-				<view class="flexc mine_list" @click="handleUpassword">
+				<view class="flexc mine_list" @click="getblackManage" v-if="checkPermi(['wuYe:blackManage:add'])">
 					<view class="limg">
 						<image :src="listimgj" class="imga"></image>
 					</view>
@@ -251,6 +258,12 @@
 			getWarrantyFn(){//报修管理
 				this.$tab.navigateTo('/service/pages/service/warranty')
 			},
+			getblackManage(){//黑名单
+				this.$tab.navigateTo('/work/pages/blackManage/index')
+			},
+			getFeeSet(){//物业费设置
+				this.$tab.navigateTo('/work/pages/fee/index')
+			},
 			getFeeFn(){//物业费
 				this.$tab.navigateTo('/work/pages/manage/money')
 			},

文件差異過大導致無法顯示
+ 987 - 0
property_ui/utils/wxqrcode.js


+ 58 - 1
property_ui/work/components/car/list.vue

@@ -77,6 +77,28 @@
 				<view class="spdel" v-if="ite.right>0&&checkPermi(['wuYe:car:remove'])" @click.stop="getDelFn(ite.carId)">删除</view>
 			</view>
 		</block>
+		<!-- 黑名单设置 -->
+		<block v-if="type=='blackhmd'">
+			<view class="carlist pr" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite.blackManageId)"
+				:data-idx="idx"
+				@touchstart="drawStart" @touchmove="drawMove" @touchend="drawEnd" :style="'right:'+ite.right+'px'"
+			>
+				<view class="delleft" style="padding: 0 24rpx;">
+					<view class="ctop flexc" style="padding: 24rpx 0;">
+						<view class="tit">{{kaType(ite.blackType,hmdlxList)}}</view>
+					</view>
+					<view class="carlf">
+						<!-- <view class="clflist">类型 :{{kaType(ite.blackType,hmdlxList)}}</view> -->
+						<view class="clflist">说明:{{ite.blackTitle}}</view>
+						<view class="clflist">阈值:{{ite.blackNum}}</view>
+						<view class="clflist">启用:{{ite.isDel=='Y'?'启用':'禁用'}}</view>
+						
+					</view>
+				</view>
+				
+				<view class="spdel" v-if="ite.right>0&&checkPermi(['wuYe:illegalParking:remove'])" @click.stop="getDelFn(ite.blackManageId)">删除</view>
+			</view>
+		</block>
 		<!-- 物业费管理 -->
 		<block v-if="type=='money'">
 			<view class="carlist peolist" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite.propertyId)">
@@ -123,7 +145,36 @@
 				</view>
 			</view>
 		</block>
-		
+		<!-- 物业费设置 -->
+		<block v-if="type=='feeset'">
+			<view class="carlist peolist pr" v-for="(ite,idx) in datainfo" :key="idx" @click="getDetail(ite.settingsId)"
+				:data-idx="idx"
+				@touchstart="drawStart" @touchmove="drawMove" @touchend="drawEnd" :style="'right:'+ite.right+'px'"
+			>
+				<view class="delleft">
+					<view class="ctop flexc" style="padding: 26rpx 24rpx 24rpx;">
+						<image :src="time" class="imgs"></image>
+						<view class="tit">{{ite.year}}/01 {{ite.year}}/12</view>
+	<!-- 					<view class="btn btnbgb" v-if="ite.isExpense=='Y'">已缴费</view>
+						<view class="btn btnbgc" v-else>未缴费</view> -->
+						<view class="flex1"></view>
+						<!-- <view class="txta">{{ite.detailedAddress}}</view> -->
+					</view>
+					<view class="clists flexc">
+						<view class="mlistl">
+							<view class="mltit">应缴总额 /元</view>
+							<view class="mltxt">{{ite.totalExpense}}</view>
+						</view>
+						<view class="mlistr">
+							<view class="clist"><view class="tit">物业费用:</view>{{ite.tenementExpense}}元</view>
+							<view class="clist"><view class="tit">车位费用:</view>{{ite.parkingExpense}}元</view>
+							<view class="clist"><view class="tit">能耗费用:</view>{{ite.energyExpense}}元</view>
+						</view>
+					</view>
+				</view>
+				<view class="spdel" v-if="ite.right>0&&checkPermi(['wuYe:car:remove'])" @click.stop="getDelFn(ite.settingsId)">删除</view>
+			</view>
+		</block>
 		<view class="shax">{{wtdt}}</view>
 	</block>
 	
@@ -167,6 +218,12 @@
 				default () {
 					return []
 				}
+			},
+			hmdlxList:{
+				type:Array,
+				default () {
+					return []
+				}
 			}
 		},
 		data(){

+ 204 - 0
property_ui/work/pages/blackManage/add.vue

@@ -0,0 +1,204 @@
+<template>
+	<view class="check">
+		<uni-forms ref="form" :model="datainfo">
+			<view class="cbox">
+				<view class="chmain">
+					<uni-forms-item label="类型" name="blackType">
+						<picker range-key='dictLabel' :disabled="isdisabled" :value="hmdlxidx" :range="hmdlxList"   @change='bindDateChange'>
+							<view class="flexc">
+								<view class="flex1 txr f13 co27" v-if="datainfo.blackType&&!hmdlx">{{statusFormats(datainfo.blackType,hmdlxList,'hmdlx')}}</view>
+								<view class="flex1 txr f13" v-else :class="hmdlx?'co27':'coa'">{{hmdlx||"请选择类型"}}</view>
+								<view class="rimg"><image :src="rimg"></image></view>
+							</view>
+						</picker>
+					</uni-forms-item>
+					<uni-forms-item label="阈值" name="blackNum">
+						<view class="flexc">
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.blackNum" :inputBorder='false' placeholder="请输入阈值" />
+							<view class="rimg"></view>
+						</view>
+					</uni-forms-item>
+					<uni-forms-item label="说明" name="blackTitle">
+						<view class="flexc">
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.blackTitle" :inputBorder='false' placeholder="请输入说明" />
+							<view class="rimg"></view>
+						</view>
+					</uni-forms-item>
+					<uni-forms-item label="是否启用" name="isDel">
+						<view class="flexc" @click="getChangeFn">
+							<view class="flex1"></view>
+							<image :src="check" v-if="datainfo.isDel=='Y'" class="checkimg"></image>
+							<image :src="ncheck" v-else class="checkimg"></image>
+						</view>
+					</uni-forms-item>
+				</view>
+			</view>
+		</uni-forms>
+		<view class="rfbtn" @click="getEditFn" v-if="isdisabled">修改</view>
+		<view class="rfbtn" @click="getSubmit" v-else>发布</view>
+		<loading></loading>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
+	import {getDictionaryFn} from "@/api/system/user.js"
+	import {selectValueKey} from "@/utils/common.js"
+	import {blackManageAdd,blackManagePut,blackManageDet} from "@/api/work/manage.js"
+	export default {
+		components: {},
+		data() {
+			return {
+				rimg: require('@/people/static/people/rimg.png'),
+				baseUrl: config.baseUrl,
+				checkflag:true,
+				check: require('@/people/static/people/check.png'),
+				ncheck: require('@/people/static/people/ncheck.png'),
+				datainfo: {
+					"blackType":"",//黑名单类型
+					"blackTitle":"",//黑名单说明
+					"blackNum":"",//黑名单的阈值
+					"isDel":"Y",//黑名单是否启用
+				},
+				hmdlx:'',
+				hmdlxidx:[],
+				sfztList:[{dictLabel:'启用',dictValue:'Y'},{dictLabel:'禁用',dictValue:'N'}],
+				id:'',
+				ptype:"add",
+				isdisabled:false,
+				hmdlxList:[]
+			}
+		},
+		onLoad: function(e) {
+			this.init()
+			if(e.id){
+				this.id=e.id;
+				this.ptype='edit';
+				this.isdisabled=true;
+				this.getDetailFn()
+			}
+		},
+		methods: {
+			checkPermi,
+			checkRole,
+			getEditFn(){
+				this.isdisabled=false;
+			},
+			statusFormats(data, list,type) {
+				var aite=selectValueKey(list, data);
+				if(type=='hmdlx'){
+					this.hmdlxidx=aite.key
+				}
+				return aite.actions;
+			},
+			bindDateChange(e){
+				var val=e.detail.value;
+				this.datainfo.blackType=this.hmdlxList[val].dictValue;
+				this.hmdlx=this.hmdlxList[val].dictLabel;	
+			},
+			getChangeFn(){
+				if(this.isdisabled){
+					return
+				}
+				if(this.datainfo.isDel=='Y'){
+					this.datainfo.isDel='N'
+				}else{
+					this.datainfo.isDel='Y'
+				}
+			},
+			init(){
+				// 黑名单类型
+				getDictionaryFn('heimindtype').then(res=>{
+					if(res.code==200){
+						if(res.data){
+							this.hmdlxList = res.data.map(v => {
+								return {
+									dictLabel: v.dictLabel,
+									dictValue: v.dictValue
+								}
+							})
+						}
+					}
+				})
+			},
+			getDetailFn(){
+				var that=this;
+				blackManageDet(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+					}
+				})
+			},
+			getSubmit(){
+				var that=this;
+				this.$refs.form.validate().then(res => {
+					var params=JSON.parse(JSON.stringify(this.datainfo))
+					if(!params.blackType){
+						this.$toast('请选择类型')
+						return
+					}
+					if(!params.blackNum){
+						this.$toast('请输入阈值')
+						return
+					}
+					if(this.ptype=='add'){
+						blackManageAdd(params).then(res=>{
+							if(res.code==200){
+								this.$toast("新增成功")
+								setTimeout(function(){
+									uni.$emit("refblackList")
+									uni.navigateBack({
+										delta:1
+									})
+								},1500)
+							}
+						})
+					}else{
+						blackManagePut(params).then(res=>{
+							if(res.code==200){
+								this.$toast("修改成功")
+								setTimeout(function(){
+									uni.$emit("refblackList")
+									uni.navigateBack({
+										delta:1
+									})
+								},1500)
+							}
+						})
+					}
+					
+				})
+			},
+			
+		}
+	}
+</script>
+<style>
+	page{background: #F3F3F0;}
+</style>
+<style lang="scss" scoped>
+.check /deep/ .uni-date-editor--x__disabled{opacity: 1;}
+.check /deep/ .uni-forms-item{min-height: 106rpx;box-sizing: border-box;display: flex;align-items: center;margin-bottom: 0;border-bottom: 2rpx solid #E6E6E6;padding:10rpx 0;}
+.check /deep/ .uni-forms-item__label{font-weight: bold;font-size: 26rpx;color: #222327;flex: 0 0 auto;width: auto !important;}
+.check /deep/ .uni-easyinput{flex: 1;text-align: right;font-size: 26rpx;color: #222327;}
+.check /deep/ .uni-easyinput__content-textarea{min-height: 40rpx;font-size: 26rpx;}
+.check /deep/ .uni-easyinput__placeholder-class{font-size: 26rpx;color: #AAAAAA;}
+.check /deep/ .uni-input-input{font-size: 26rpx;}
+.check /deep/ .uni-textarea-textarea{font-size: 26rpx;}
+.check /deep/ .uni-forms-item__label text{width: 110rpx;text-align-last: justify;}
+.check /deep/ .uni-forms-item__label .is-required{width: auto;}
+.check /deep/ .is-disabled{color: #222327;background-color: #ffffff !important;}
+.check{min-height: 100vh;padding: 20rpx 18rpx 110rpx;box-sizing: border-box;}
+.cbox{background: #FFFFFF;border-radius: 20rpx;flex: 1;margin-bottom: 24rpx;
+
+	.chmain{
+		padding: 0 32rpx;
+		.rimg{width: 16rpx;height: 28rpx;flex: 0 0 auto;margin-left: 20rpx;
+			image{width: 100%;height: 100%;}
+		}
+		.checkimg{width: 80rpx;height: 40rpx;margin-right: 8rpx;}
+	}
+	
+}
+</style>

+ 176 - 0
property_ui/work/pages/blackManage/index.vue

@@ -0,0 +1,176 @@
+<template>
+	<view class="car">
+		<!-- 列表 -->
+		<view class="carlists">
+			<car-list :datainfo="list" :hmdlxList="hmdlxList" :wtdt="wtdt" type='blackhmd' @getDetail="getDetail" @getDelFn="getDelFn"></car-list>
+		</view>
+		<view class="rfbtn" @click="getAddFn">添加黑名单</view>
+		<loading></loading>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import carList from "@/work/components/car/list.vue"
+	import {blackManageDel,blackManageList} from "@/api/work/manage.js"
+	import {getDictionaryFn} from "@/api/system/user.js"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		components:{carList},
+		data(){
+			return{
+				// reset:require('@/car/static/car/reset.png'),
+				// search:require('@/car/static/car/search.png'),
+				// up:require('@/car/static/car/up.png'),
+				// cxrq:"",
+				// text:'',
+				list:[],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag: true,
+				wtdt:'',
+				hmdlxList:[],
+			}
+		},
+		onUnload() {
+			uni.$off('refblackList')
+		},
+		onLoad: function(e) {
+			uni.$on('refblackList',(res)=>{
+				this.getrefreshData()
+			})
+			this.init()
+			this.getDataFn();
+		},
+		// 上拉触底加载更多触发事件
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			checkPermi, checkRole,
+			init(){
+				// 黑名单类型
+				getDictionaryFn('heimindtype').then(res=>{
+					if(res.code==200){
+						this.hmdlxList = res.data.map(v => {
+							return {
+								dictLabel: v.dictLabel,
+								dictValue: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getAddFn(){
+				this.$tab.navigateTo("/work/pages/blackManage/add")
+			},
+			getDetail(e){
+				this.$tab.navigateTo("/work/pages/blackManage/add?id="+e)
+			},
+			// getTabFn(val){
+			// 	this.tabval=val;
+			// 	this.getrefreshData()
+			// },
+			// getConfirm(){
+			// 	this.getrefreshData()
+			// },
+			// getReset(){
+			// 	this.cxrq='';
+			// 	this.text='';
+			// 	this.getrefreshData()
+			// },
+			getrefreshData(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
+			// bindDateChangea(e){
+			// 	var val=e.detail.value;
+			// 	this.cxrq=val;
+			// },
+			getDelFn(data){
+				var that=this;
+				blackManageDel(data).then(res=>{
+					if(res.code==200){
+						this.$toast("删除成功");
+						setTimeout(function(){
+							that.getrefreshData()
+						},1500)
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+				}
+				blackManageList(params).then(res=>{
+					if(res.code==200){
+						if (res.rows.length < this.pageSize) {
+							this.reachflag = false
+							this.wtdt = '到底了~';
+						} else {
+							var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+							if (num < res.total) {
+								this.reachflag = true
+								this.wtdt = ''
+							} else {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							}
+						}
+						if (this.pageNum == 1) {
+							this.list = res.rows;
+						} else {
+							this.list = this.list.concat(res.rows)
+						}
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+				
+			},
+		}
+	}
+</script>
+<style>
+	page{background: #F3F3F0;}
+</style>
+<style lang="scss" scoped>
+.car{padding: 24rpx 0 110rpx;}
+.cartop{position: fixed;left: 0;right: 0;top: 0;background-color: #ffffff;z-index: 2;
+	.topa{padding: 20rpx ;
+		.resetimg{width: 36rpx;height: 36rpx;margin-right: 24rpx;flex: 0 0 auto;}
+		.chekt{min-width: 180rpx;
+			view{font-weight: 500;font-size: 26rpx;color: #272727;flex: 1;}
+			image{width: 24rpx;height: 16rpx;margin-left: 18rpx;flex: 0 0 auto;}
+		}
+		.search{flex: 1;margin-left: 16rpx;height: 64rpx;background: #EEEEEE;border-radius: 32rpx;border: 2rpx solid #E6E6E6;padding-left: 24rpx;box-sizing: border-box;
+		image{width: 32rpx;height: 34rpx;margin-right: 22rpx;flex: 0 0 auto;}
+		input{flex: 1;font-size: 26rpx;color: #272727;}
+		.btn{width: 100rpx;height: 64rpx;background: #3565ED;border-radius: 32rpx;flex: 0 0 auto;font-weight: bold;text-align: center;line-height: 64rpx;
+font-size: 26rpx;
+color: #FFFFFF;}
+		}
+	}
+	.tabtop{padding-bottom: 40rpx;
+		.tabt{font-weight: 500;font-size: 32rpx;color: #666666;position: relative;line-height: 56rpx;padding: 0 40rpx;margin-right: 6rpx;
+			&.act{font-weight: bold;font-size: 32rpx;color: #272727;
+			&::after{content: '';width: 40rpx;height: 10rpx;background: #0156FE;border-radius: 6rpx;position: absolute;left: 50%;margin-left: -20rpx;bottom: -10rpx;}
+			}
+		}
+	}
+}
+.cdbtns{position: fixed;left: 0;right: 0;height: 98rpx;z-index: 2;display: flex;align-items: center;bottom: 0;
+	view{flex: 1;display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 26rpx;height: 98rpx;
+	&.btna{background: #FFFFFF;color: #0156FE;}
+	&.btnb{background: #0156FE;color: #FFFFFF;}
+	}
+}
+.carlists{padding: 0 18rpx;}
+</style>

+ 120 - 0
property_ui/work/pages/fee/index.vue

@@ -0,0 +1,120 @@
+<template>
+	<view class="car">
+		<!-- 列表 -->
+		<view class="carlists">
+			<car-list :datainfo="list"  :wtdt="wtdt" type='feeset' @getDetail="getDetail" @getDelFn="getDelFn"></car-list>
+		</view>
+		<block v-if="checkPermi(['wuYe:fee:settings:add'])">
+			<view style="height: 100rpx;"></view>
+			<view class="rfbtn" @click="getFeeSetFn">添加设置</view>
+		</block>
+		<loading></loading>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import carList from "@/work/components/car/list.vue"
+	import {feesetList,feesetDel} from "@/api/work/manage.js"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		components:{carList},
+		data(){
+			return{
+				list:[],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag: true,
+				wtdt:'',
+			}
+		},
+		onUnload() {
+			uni.$off('refsetList')
+		},
+		onLoad: function() {
+			uni.$on('refsetList',(res)=>{
+				this.getrefreshData()
+			})
+			this.getDataFn()
+		},
+		// 上拉触底加载更多触发事件
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			checkPermi, checkRole,
+			getDetail(id){
+				this.$tab.navigateTo("/work/pages/fee/set?id="+id)
+			},
+			getFeeSetFn(){
+				this.$tab.navigateTo("/work/pages/fee/set")
+			},
+			getAddFn(){
+				
+			},
+			getrefreshData(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
+			getDelFn(data){
+				var that=this;
+				feesetDel(data).then(res=>{
+					if(res.code==200){
+						this.$toast("删除成功");
+						setTimeout(function(){
+							that.getrefreshData()
+						},1500)
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+				}
+				feesetList(params).then(res=>{
+					if(res.code==200){
+						if (res.rows.length < this.pageSize) {
+							this.reachflag = false
+							this.wtdt = '到底了~';
+						} else {
+							var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+							if (num < res.total) {
+								this.reachflag = true
+								this.wtdt = ''
+							} else {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							}
+						}
+						var newArr=JSON.parse(JSON.stringify(res.rows))
+						newArr.forEach(ite=>{
+							ite.right=0;
+						})
+						if (this.pageNum == 1) {
+							this.list = newArr;
+						} else {
+							this.list = this.list.concat(newArr)
+						}
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+				
+			},
+		}
+	}
+</script>
+<style>
+	page{background: #F3F3F0;}
+</style>
+<style lang="scss" scoped>
+.car{padding: 24rpx 0 10rpx;}
+.carlists{padding: 0 18rpx;}
+</style>

+ 146 - 0
property_ui/work/pages/fee/set.vue

@@ -0,0 +1,146 @@
+<template>
+	<view class="check">
+		<uni-forms ref="form" :model="datainfo" :rules="rules">
+			<view class="cbox">
+				<view class="chmain">
+					<uni-forms-item label="物业费用" name="tenementExpense">
+						<view class="flexc">
+							<view class="tip">¥</view>
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.tenementExpense" :inputBorder='false' placeholder="请输入金额" />
+						</view>
+					</uni-forms-item>
+					<uni-forms-item label="车位费用" name="parkingExpense">
+						<view class="flexc">
+							<view class="tip">¥</view>
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.parkingExpense" :inputBorder='false' placeholder="请输入金额" />
+						</view>
+					</uni-forms-item>
+					<uni-forms-item label="能耗费用" name="energyExpense">
+						<view class="flexc">
+							<view class="tip">¥</view>
+							<uni-easyinput :disabled="isdisabled" v-model="datainfo.energyExpense" :inputBorder='false' placeholder="请输入金额" />
+						</view>
+					</uni-forms-item>
+				</view>
+			</view>
+		</uni-forms>
+		<view class="pdlr12 mt55">
+			<view class="rhbtn" @click="getEditFn" v-if="isdisabled">修改</view>
+			<view class="rhbtn" @click="getSubmit" v-else>确定</view>
+		</view>
+
+		<loading></loading>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
+	import {feesetAdd,feesetPut,feesetDet} from "@/api/work/manage.js"
+	// import {getDictionaryFn} from "@/api/system/user.js"
+	// import {selectValueKey} from "@/utils/common.js"
+	export default {
+		components: {},
+		data() {
+			return {
+				rimg: require('@/people/static/people/rimg.png'),
+				baseUrl: config.baseUrl,
+				datainfo: {
+					"tenementExpense":"",//应缴物业费用
+					"parkingExpense":"",//应缴车位费用
+					"energyExpense":"",//应缴能耗费用
+				},
+				rules: {
+				  // staffName: {rules: [{required: true,errorMessage: '请输入人员姓名' }]},
+				},
+				id:'',
+				ptype:'add',
+				isdisabled:false,
+			}
+		},
+		onLoad: function(e) {
+			if(e.id){
+				this.id=e.id;
+				this.ptype='edit';
+				this.isdisabled=true;
+				this.getDetailFn()
+			}
+		},
+		methods: {
+			checkPermi,
+			checkRole,
+			getEditFn(){
+				this.isdisabled=false;
+			},
+			getSubmit(){
+				var that=this;
+				this.$refs.form.validate().then(res => {
+					var params=JSON.parse(JSON.stringify(this.datainfo))
+					
+					if(this.ptype=='add'){
+						feesetAdd(params).then(res=>{
+							if(res.code==200){
+								this.$toast("新增成功")
+								setTimeout(function(){
+									uni.$emit("refsetList")
+									uni.navigateBack({
+										delta:1
+									})
+								},1500)
+							}
+						})
+					}else{
+						feesetPut(params).then(res=>{
+							if(res.code==200){
+								this.$toast("修改成功")
+								setTimeout(function(){
+									uni.$emit("refsetList")
+									uni.navigateBack({
+										delta:1
+									})
+								},1500)
+							}
+						})
+					}
+					
+				})
+			},
+			getDetailFn(){
+				feesetDet(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+					}
+				})
+			},
+		}
+	}
+</script>
+<style>
+	page{background: #F3F3F0;}
+</style>
+<style lang="scss" scoped>
+.check /deep/ .uni-forms-item__error{left:auto;right: 0;margin-top: 10rpx;z-index: 1;}
+.check /deep/ .uni-forms-item{min-height: 106rpx;box-sizing: border-box;display: flex;align-items: center;margin-bottom: 0;border-bottom: 2rpx solid #E6E6E6;padding:10rpx 0;}
+.check .cbox /deep/ .uni-forms-item:last-child{border: none;}
+.check /deep/ .uni-forms-item__label{font-weight: bold;font-size: 26rpx;color: #222327;flex: 0 0 auto;width: auto !important;}
+.check /deep/ .uni-easyinput{flex: 1;text-align: left;font-size: 26rpx;color: #222327;}
+.check /deep/ .uni-easyinput__content-textarea{min-height: 40rpx;font-size: 26rpx;}
+.check /deep/ .uni-easyinput__placeholder-class{font-size: 26rpx;color: #AAAAAA;}
+.check /deep/ .uni-input-input{font-size: 26rpx;}
+.check /deep/ .uni-textarea-textarea{font-size: 26rpx;}
+.check /deep/ .is-disabled{color: #222327;background-color: #ffffff !important;}
+.check /deep/ .uni-data-checklist .checklist-group .checklist-box{margin:10rpx 8rpx 10rpx 16rpx;}
+.check /deep/ .uni-data-checklist{flex: 0 0 auto;}
+.check{min-height: 100vh;padding: 20rpx 18rpx 24rpx;box-sizing: border-box;}
+.cbox{background: #FFFFFF;border-radius: 20rpx;flex: 1;margin-bottom: 24rpx;
+	
+	.chmain{
+		padding: 0 32rpx;
+		.tip{font-weight: bold;font-size: 36rpx;color: #161616;flex: 1;text-align: right;}
+		.rimg{width: 16rpx;height: 28rpx;flex: 0 0 auto;margin-left: 20rpx;
+			image{width: 100%;height: 100%;}
+		}
+	}
+	
+}
+</style>

+ 9 - 3
property_ui/work/pages/manage/car.vue

@@ -36,11 +36,11 @@
 		},
 		onLoad: function(e) {
 			uni.$on('carlist',(res)=>{
-				this.getDataFn()
+				this.getrefreshData()
 			})
 			this.houseId=e.id
 			this.init()
-			this.getDataFn()
+			this.getrefreshData()
 		},
 		// 上拉触底加载更多触发事件
 		onReachBottom() {
@@ -70,11 +70,17 @@
 					if(res.code==200){
 						this.$toast("删除成功");
 						setTimeout(function(){
-							that.getDataFn()
+							that.getrefreshData()
 						},1500)
 					}
 				})
 			},
+			getrefreshData(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
 			getAddFn(){
 				this.$tab.navigateTo("/work/pages/manage/addcar")
 			},

部分文件因文件數量過多而無法顯示