瀏覽代碼

修改发布公告

D4THYL3\long 3 年之前
父節點
當前提交
c0acf2347d

+ 1 - 2
operationSupport/src/assets/css/main.scss

@@ -221,7 +221,6 @@ a {
             color: #212226;
         }
         .nowrap {
-            display: inline-block;
             line-height: 20px;
             width: 300px;
             font-size: 12px;
@@ -246,7 +245,7 @@ a {
         align-items: center;
         justify-content: center;
         width: 55px;
-        font-size: 14px;
+        font-size: 12px;
         font-family: Microsoft YaHei;
         font-weight: 400;
         color: $mainTextColor;

+ 1 - 1
operationSupport/src/components/common/Header.vue

@@ -211,7 +211,7 @@ export default {
                             dangerouslyUseHTMLString: true,
                             showClose: true,
                             customClass: 'notice_icon',
-                            offset: 60,
+                            offset: 50,
                             duration: 3000,
                             message:
                                 "<div class='notice'><img src=" +

+ 54 - 21
operationSupport/src/views/deviceManagement/popups/poptreeSelect.vue

@@ -1,6 +1,15 @@
 <template>
     <el-scrollbar class="el-scrollbar-byself thisColor" style="width: 100%">
-        <el-tree class="" :data="tenantsTree" @node-click="treeClick" node-key="value" :props="treedefaultProps" ref="tenantstree">
+        <el-tree
+            :data="tenantsTree"
+            show-checkbox
+            node-key="value"
+            :props="treedefaultProps"
+            check-strictly
+            :default-checked-keys="defaultcheckedkeys"
+            ref="tenantstree"
+            @check="checkChange"
+        >
         </el-tree>
     </el-scrollbar>
 </template>
@@ -14,6 +23,7 @@ export default {
                 children: 'children',
                 label: 'name'
             },
+            defaultcheckedkeys: [],
             unitPa: {
                 buildingId: '',
                 buildingName: '',
@@ -29,26 +39,23 @@ export default {
     mounted() {},
     methods: {
         submit() {
-            debugger;
-            if (this.unitPa.type === 'room') {
+            if (this.$refs.tenantstree.getCheckedNodes().length) {
+                let thisRoom = this.$refs.tenantstree.getCheckedNodes()[0];
+                let thisObj = this.$refs.tenantstree.getNode(thisRoom);
+                this.unitPa.type = thisRoom.type;
+                let newValueIds = thisRoom.id.split('-');
+                if (thisRoom.type == 'room') {
+                    this.unitPa.buildingName = newValueIds.length == 4 ? thisObj.parent.parent.data.name : thisObj.parent.data.name;
+                    this.unitPa.buildingId = newValueIds.length == 4 ? thisObj.parent.parent.data.value : thisObj.parent.data.value;
+                    this.unitPa.unitName = newValueIds.length == 4 ? thisObj.parent.data.name : '';
+                    this.unitPa.unitId = newValueIds.length == 4 ? thisObj.parent.data.value : '';
+                    this.unitPa.houseName = thisRoom.name;
+                    this.unitPa.houseId = thisRoom.value;
+                }
                 this.params.callback && this.params.callback(this.unitPa);
                 this.$emit('close');
             } else {
-                this.$message.error('请先选择到房间');
-                return;
-            }
-        },
-        treeClick(e) {
-            this.unitPa.type = e.type;
-            let newValueIds = e.id.split('-');
-            let thisObj = this.$refs.tenantstree.getNode(e);
-            if (e.type == 'room') {
-                this.unitPa.buildingName = newValueIds.length == 4 ? thisObj.parent.parent.data.name : thisObj.parent.data.name;
-                this.unitPa.buildingId = newValueIds.length == 4 ? thisObj.parent.parent.data.value : thisObj.parent.data.value;
-                this.unitPa.unitName = newValueIds.length == 4 ? thisObj.parent.data.name : '';
-                this.unitPa.unitId = newValueIds.length == 4 ? thisObj.parent.data.value : '';
-                this.unitPa.houseName = e.name;
-                this.unitPa.houseId = e.value;
+                this.$message.error('请选择房间或取消');
             }
         },
         dimension(arr) {
@@ -63,6 +70,18 @@ export default {
                 }
             });
         },
+        checkChange(data, checked) {
+            if (checked) {
+                if (this.$refs.tenantstree.getCheckedNodes().length > 1) {
+                    this.$message({
+                        message: '只能选择一个房间!',
+                        type: 'error',
+                        showClose: true
+                    });
+                    this.$refs.tenantstree.setChecked(data, false);
+                }
+            }
+        },
         CheckChinese(val, name) {
             var reg = new RegExp('[\\u4E00-\\u9FFF]+', 'g');
             let newVal = val;
@@ -70,16 +89,30 @@ export default {
                 newVal = val + name;
             }
             return newVal;
+        },
+        filterTreeData(trData) {
+            trData.map((item, index) => {
+                if (this.isNotEmpty(item.children)) {
+                    item.disabled = true;
+                    this.filterTreeData(item.children);
+                } else {
+                    item.disabled = false;
+                }
+            });
+        },
+        isNotEmpty(arr) {
+            return arr && Array.isArray(arr) && arr.length > 0;
         }
     },
     created() {
         this.dimension(this.params.tenantsTree);
+        this.filterTreeData(this.params.tenantsTree);
         this.tenantsTree = this.params.tenantsTree;
     }
 };
 </script>
 <style lang="scss" scoped>
-.thisColor /deep/ .el-tree .is-current {
-    color: #56c6ff;
-}
+// .thisColor /deep/ .el-tree .is-current {
+//     color: #56c6ff;
+// }
 </style>

+ 2 - 1
operationSupport/src/views/flow/popups/AddOrEdit.vue

@@ -132,10 +132,11 @@ export default {
                             this.params.callback && this.params.callback();
                             this.$emit('close');
                         } else {
-                            this.$message.error(data);
+                            this.$message.error(msg);
                         }
                     })
                     .catch((err) => {
+                        this.$message.error(err);
                         loading.close();
                     });
             });

+ 78 - 49
operationSupport/src/views/patrolManagement/popups/addPatrol.vue

@@ -1,24 +1,10 @@
 <template>
     <div class="main">
-        <div class="blockName">
-            {{ !isAdd ? '编辑' : '新增' }}巡更路线(
-            <span class="show-required-icon-star"></span>为必填项)
-        </div>
-        <el-form
-            :model="ruleForm"
-            :rules="rules"
-            ref="ruleForm"
-            label-width="120px"
-            class="formContent"
-        >
+        <div class="blockName">{{ !isAdd ? '编辑' : '新增' }}巡更路线( <span class="show-required-icon-star"></span>为必填项)</div>
+        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="formContent">
             <div class="formContent-item">
                 <el-form-item label="所属社区" prop="communityId">
-                    <el-select
-                        class="width100"
-                        v-model="ruleForm.communityId"
-                        placeholder="所属社区"
-                        clearable
-                    >
+                    <el-select class="width100" v-model="ruleForm.communityId" placeholder="所属社区" clearable>
                         <el-option
                             v-for="(item, index) in $parent.communityArr"
                             :key="index"
@@ -35,7 +21,7 @@
                         v-model="ruleForm.routePointRelationDtos"
                         ref="transferTude"
                         filterable
-                        style="margin-bottom: 20px;"
+                        style="margin-bottom: 20px"
                         :props="{
                             key: 'id',
                             label: 'pointName',
@@ -44,8 +30,17 @@
                         }"
                         :titles="['待选列表', '已选列表']"
                         @change="handleChange"
+                        target-order="push"
                         :data="patrolArr"
-                    ></el-transfer>
+                    >
+                        <div slot-scope="{ option }" class="transferTudeClass">
+                            <span>{{ option.pointName }}</span>
+                            <div>
+                                <span class="zoniot_font zoniot-icon-shang" @click="optionUp(0, option)"></span>
+                                <span class="zoniot_font zoniot-icon-xia" @click="optionUp(1, option)"></span>
+                            </div>
+                        </div>
+                    </el-transfer>
                     <map-value :point="targetData"></map-value>
                 </el-form-item>
             </div>
@@ -64,17 +59,17 @@
                     ></el-date-picker>
                 </el-form-item>
                 <el-form-item label="巡更时间" prop="timePeriod">
-                    <div class="timeList" v-for="(item,index) in timePeriod" :key="index">
+                    <div class="timeList" v-for="(item, index) in timePeriod" :key="index">
                         <el-time-select
                             class="width50"
                             placeholder="开始时间"
                             v-model="item.startTime"
                             :picker-options="{
-                            start: '00:00',
-                            step: '00:15',
-                            end: '23:30'
+                                start: '00:00',
+                                step: '00:15',
+                                end: '23:30'
                             }"
-                            @change="timeChange(item,'startTime')"
+                            @change="timeChange(item, 'startTime')"
                         ></el-time-select>
                         <span>至</span>
                         <el-time-select
@@ -82,21 +77,17 @@
                             v-model="item.endTime"
                             class="width50"
                             :picker-options="{
-                            start: '00:00',
-                            step: '00:15',
-                            end: '23:30',
-                            minTime: item.startTime
+                                start: '00:00',
+                                step: '00:15',
+                                end: '23:30',
+                                minTime: item.startTime
                             }"
-                            @change="timeChange(item,'endTime')"
+                            @change="timeChange(item, 'endTime')"
                         ></el-time-select>
-                        <div class="sunm" @click="addTime(index,1)">
+                        <div class="sunm" @click="addTime(index, 1)">
                             <i class="zoniot_font zoniot-icon-tianjia1"></i>
                         </div>
-                        <div
-                            class="sunm"
-                            @click="addTime(index,-1)"
-                            v-if="timePeriod.length>1 && index!=0"
-                        >
+                        <div class="sunm" @click="addTime(index, -1)" v-if="timePeriod.length > 1 && index != 0">
                             <i class="zoniot_font zoniot-icon-shanjian"></i>
                         </div>
                     </div>
@@ -118,12 +109,8 @@
                     </el-checkbox-group>
                     <div v-else class="periodValueInput">
                         每隔
-                        <el-input-number
-                            v-model="ruleForm.periodValue"
-                            controls-position="right"
-                            :min="0"
-                            :max="30"
-                        ></el-input-number>天进行(输入0-30的数字,0代表每天都要进行任务)
+                        <el-input-number v-model="ruleForm.periodValue" controls-position="right" :min="0" :max="30"></el-input-number
+                        >天进行(输入0-30的数字,0代表每天都要进行任务)
                     </div>
                 </el-form-item>
                 <el-form-item label="定位距离(m)">
@@ -133,12 +120,7 @@
                     ></el-input>
                 </el-form-item>
                 <el-form-item label="拍照/视频要求">
-                    <el-select
-                        class="width100"
-                        v-model="ruleForm.cameraSettings"
-                        placeholder="请选择拍照/视频要求"
-                        clearable
-                    >
+                    <el-select class="width100" v-model="ruleForm.cameraSettings" placeholder="请选择拍照/视频要求" clearable>
                         <el-option label="是" :value="1"></el-option>
                         <el-option label="否" :value="0"></el-option>
                     </el-select>
@@ -212,11 +194,11 @@ export default {
     methods: {
         //保存
         addEdit() {
-            this.$refs.ruleForm.validate(valid => {
+            this.$refs.ruleForm.validate((valid) => {
                 if (valid) {
                     let url = '/sc-community/patrolRoute/add';
                     this.ruleForm;
-                    let dotArr = arr => {
+                    let dotArr = (arr) => {
                         let dotObj = [];
                         arr.map((item, index) => {
                             dotObj.push({
@@ -266,6 +248,8 @@ export default {
             this.$emit('initPage');
         },
         getPoint(id) {
+            this.ruleForm.routePointRelationDtos = [];
+            this.targetData = [];
             this.$http.get('/sc-community/patrol/point/getPointList', { id, id }).then(({ data, status, msg }) => {
                 this.patrolArr = data;
             });
@@ -290,6 +274,29 @@ export default {
                 });
                 this.ruleForm.timePeriod = TimeArr.join();
             }
+        },
+        optionUp(nub, item) {
+            let thisArr = this.ruleForm.routePointRelationDtos;
+            let okArr = this.$refs.transferTude.targetData;
+            let newArr = [];
+            let inx = null;
+            thisArr.map((list, index) => {
+                if (list == item.id) {
+                    inx = index;
+                }
+                return inx;
+            });
+            if (inx !== null && thisArr.length > 1) {
+                //向下
+                if (nub == 1 && inx < thisArr.length - 1) {
+                    thisArr.splice(inx + 1, 1, ...thisArr.splice(inx, 1, thisArr[inx + 1]));
+                    okArr.splice(inx + 1, 1, ...okArr.splice(inx, 1, okArr[inx + 1]));
+                } else if (nub != 1 && inx > 0) {
+                    thisArr.splice(inx, 1, ...thisArr.splice(inx - 1, 1, thisArr[inx]));
+                    okArr.splice(inx, 1, ...okArr.splice(inx - 1, 1, okArr[inx]));
+                }
+                this.targetData = okArr;
+            }
         }
     },
     created() {}
@@ -344,4 +351,26 @@ export default {
         display: inline-block;
     }
 }
+/deep/ .el-transfer-panel__item.el-checkbox {
+    margin-right: 0;
+}
+.transferTudeClass {
+    display: flex;
+    justify-content: space-between;
+    > div {
+        width: 60px;
+        display: flex;
+        justify-content: space-around;
+    }
+    .zoniot_font {
+        line-height: 30px;
+    }
+}
+/deep/ .el-transfer-panel:first-child {
+    .transferTudeClass {
+        > div {
+            display: none;
+        }
+    }
+}
 </style>

+ 7 - 5
operationSupport/src/views/patrolManagement/popups/addPoint.vue

@@ -109,12 +109,14 @@ export default {
                     width: '500px',
                     height: '500px',
                     props: {
-                        callback: resolve
+                        callback: resolve,
+                        location: this.initDot,
+                        data: this.formData
                     },
                     title: title
                 });
             }).then((e) => {
-                this.initDot = `${e.lat},${e.lng}`;
+                this.initDot = `${e.lng},${e.lat}`;
                 this.formData.latitude = e.lat;
                 this.formData.longitude = e.lng;
             });
@@ -192,8 +194,8 @@ export default {
         },
         initDotTggle() {
             let logPoint = this.initDot.split(',');
-            this.formData.latitude = logPoint[0];
-            this.formData.longitude = logPoint[1];
+            this.formData.latitude = logPoint[1];
+            this.formData.longitude = logPoint[0];
         }
     },
     created() {
@@ -204,7 +206,7 @@ export default {
             this.formData = newData;
             this.nestedLoop(this.communityTre, 'building', 'buildingArr', newData.communityId);
             this.nestedLoop(this.buildingArr, 'unit', 'unitArr', newData.buildingId);
-            this.initDot = `${newData.latitude},${newData.longitude}`;
+            this.initDot = `${newData.longitude},${newData.latitude}`;
         }
     }
 };

+ 79 - 34
operationSupport/src/views/patrolManagement/popups/mapValue.vue

@@ -1,24 +1,12 @@
 <template>
     <div>
-        <div id="mapValue" :style="`height:${height||300}px`"></div>
+        <div id="mapValue" :style="`height:${height || 300}px`"></div>
         <!--控制条-->
         <div class="map-control" v-if="isStart && !!point.length">
             <div class="clickIco">
-                <i
-                    class="zoniot_font zoniot-icon-kaishi"
-                    v-if="palyStayus==0"
-                    @click="navgControl('start')"
-                ></i>
-                <i
-                    class="zoniot_font zoniot-icon-tingzhi"
-                    v-else-if="palyStayus==2"
-                    @click="navgControl('pause')"
-                ></i>
-                <i
-                    class="zoniot_font zoniot-icon-kaishi"
-                    v-else-if="palyStayus==1"
-                    @click="navgControl('resume')"
-                ></i>
+                <i class="zoniot_font zoniot-icon-kaishi" v-if="palyStayus == 0" @click="navgControl('start')"></i>
+                <i class="zoniot_font zoniot-icon-tingzhi" v-else-if="palyStayus == 2" @click="navgControl('pause')"></i>
+                <i class="zoniot_font zoniot-icon-kaishi" v-else-if="palyStayus == 1" @click="navgControl('resume')"></i>
             </div>
             <el-slider
                 class="slider"
@@ -47,20 +35,39 @@ export default {
     data() {
         return {
             marker: '',
-            markerArr: []
+            markerArr: [],
+            polyline: null
         };
     },
     watch: {
-        point(e) {
-            this.point.map((item, index) => {
-                let tag = false;
-                if (index == this.point.length - 1) {
-                    tag = true;
-                }
+        point: {
+            handler() {
                 if (!!this.map) {
-                    this.addIcon(item, tag);
+                    this.lineArr = [];
+                    // 判断当前是否有绘制点位清除
+                    if (this.markerArr.length > 0) {
+                        this.map.remove(this.markerArr);
+                        this.markerArr = [];
+                    }
+                    // 判断当前是否有巡航路线清除
+                    if (!!this.pathSimplifierIns) {
+                        this.pathSimplifierIns.setData([]);
+                        this.pathSimplifierIns = null;
+                    }
+                    // 判断当前是否有轨迹清除
+                    if (!!this.polyline) {
+                        this.map.remove(this.polyline);
+                        this.polyline = null;
+                    }
+                    // 先初始化点位信息
+                    this.point.map((item, index) => {
+                        this.addIcon(item, index);
+                    });
+                    this.setMap();
                 }
-            });
+            },
+            deep: true,
+            immediate: true
         }
     },
     methods: {
@@ -70,26 +77,49 @@ export default {
                 zoom: 11 //初始化地图层级
             });
         },
-        addIcon(e, is) {
-            let _this = this;
+        //绘制点位信息
+        addIcon(e, index) {
             let lineArr = [e.longitude, e.latitude];
             this.marker = new AMap.Marker({
                 icon: this.icon,
                 position: lineArr
             });
+            this.marker.setLabel({
+                offset: new AMap.Pixel(-22, 40),
+                content: `巡更点:${index + 1}`
+            });
             this.markerArr.push(this.marker);
             this.lineArr.push(lineArr);
-            if (is) {
-                this.map.add(this.markerArr);
-                this.map.setFitView();
+        },
+        // 添加点位 添加路线到地图
+        setMap() {
+            this.map.add(this.markerArr);
+            this.map.setFitView();
+            // 大于一个点创建 巡航路线
+            if (this.point.length > 1) {
+                // 是否巡航开启
                 if (this.isStart) {
                     this.$nextTick(() => {
                         this.initPlayBox();
                         this.beforeInit = true;
-                        this.initLineArr();
+                        this.initLineArr(true);
                     });
+                } else {
+                    this.addPolyline();
                 }
             }
+        },
+        //轨迹路线
+        addPolyline() {
+            this.polyline = new AMap.Polyline({
+                map: this.map,
+                path: this.lineArr,
+                showDir: true,
+                strokeColor: '#28F', //线颜色
+                // strokeOpacity: 1,     //线透明度
+                strokeWeight: 6 //线宽
+                // strokeStyle: "solid"  //线样式
+            });
         }
     },
     created() {
@@ -100,11 +130,26 @@ export default {
 };
 </script>
 <style scoped  lang="scss">
-/* --------------------------------高德地图样式----------------------------- */
 #mapValue {
-    // margin-top: 20px;
     width: 100%;
-    // height: 300px;
+    /deep/ .amap-marker-label {
+        border: 0 none;
+        background-color: #fff;
+        white-space: nowrap;
+        box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.3);
+        border-radius: 5px;
+    }
+
+    /deep/ .amap-marker-label:before {
+        position: absolute;
+        border: 5px solid transparent;
+        border-bottom-color: #fff;
+        top: -10px;
+        left: 43%;
+        content: '';
+        width: 0;
+        height: 0;
+    }
 }
 .my-autocomplete {
     li {

+ 54 - 13
operationSupport/src/views/patrolManagement/popups/popMap.vue

@@ -26,7 +26,8 @@ export default {
             placeSearch: '',
             marker: '',
             addressName: '', //地址查询名称
-            poisArray: []
+            poisArray: [],
+            thisMapPot: {}
         };
     },
     methods: {
@@ -36,41 +37,59 @@ export default {
                 resizeEnable: true, //是否监控地图容器尺寸变化
                 zoom: 11 //初始化地图层级
             });
+            this.map.on('complete', () => {
+                if (!!_this.params.location) {
+                    let arr = this.params.location.split(',');
+                    this.addIcon({ lng: arr[0], lat: arr[1] });
+                }
+            });
 
             this.map.on('click', this.mapClick);
             this.placeSearch = new AMap.PlaceSearch({
                 map: _this.map
             });
+            AMap.event.addListener(this.placeSearch, 'markerClick', (e) => {
+                this.thisMapPot = e.event.lnglat;
+                this.$message.success('选择成功');
+            });
         },
         mapClick(e) {
             this.addIcon(e.lnglat);
-        },
-        mapSelect(e) {
-            this.addIcon(e.location);
+            this.$message.success('选择成功');
         },
         addIcon(e) {
-            // if (this.marker !== '') {
-            //     this.map.remove(this.marker);
-            // }
-            let loc = [e.lat, e.lng];
+            if (!!this.marker) {
+                this.map.remove(this.marker);
+                this.marker = '';
+            }
+            this.thisMapPot = e;
+            let loc = [e.lng, e.lat];
             this.marker = new AMap.Marker({
                 icon: 'https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png',
-                position: loc
+                position: loc,
+                map: this.map
             });
-            this.map.add(this.marker);
-            this.params.callback && this.params.callback(e);
+            this.marker.setLabel({
+                offset: new AMap.Pixel(-50, 35),
+                content: !!this.params.data.pointName ? `巡更名称:${this.params.data.pointName}` : `巡更经纬度:${e.lng},${e.lat}`
+            });
+            this.map.setFitView();
+        },
+        submit() {
+            this.params.callback && this.params.callback(this.thisMapPot);
             this.$emit('close');
         },
         togglePlaceSearch(val, resolve) {
             this.placeSearch.search(val, (status, result) => {
-                if (result.info == 'OK') {
+                if (result.info == 'OK' && status == 'complete') {
                     this.poisArray = result.poiList.pois;
                 }
                 resolve && resolve(true);
             });
         },
         handleSelect(item) {
-            this.mapSelect(item);
+            this.addressName = item.name;
+            this.placeSearch.search(item.name);
         },
         querySearch(queryString, cb) {
             new Promise((resolve) => {
@@ -82,6 +101,10 @@ export default {
             });
         }
     },
+    destroyed() {
+        this.map && this.map.destroy();
+        this.marker = '';
+    },
     created() {
         this.$nextTick(() => {
             this.init();
@@ -95,6 +118,24 @@ export default {
     margin-top: 20px;
     width: 100%;
     height: 400px;
+    /deep/ .amap-marker-label {
+        border: 0 none;
+        background-color: #fff;
+        white-space: nowrap;
+        box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.3);
+        border-radius: 5px;
+    }
+
+    // /deep/ .amap-marker-label:after {
+    //     position: absolute;
+    //     border: 5px solid transparent;
+    //     border-top-color: #fff;
+    //     top: 19px;
+    //     left: 43%;
+    //     content: '';
+    //     width: 0;
+    //     height: 0;
+    // }
 }
 .my-autocomplete {
     li {

+ 1 - 1
operationSupport/src/views/payService/billingRules/index.vue

@@ -218,7 +218,7 @@ export default {
                 this.$store.dispatch('addPopup', {
                     // url: '/payService/billingRules/stepPage/add.vue',
                     url: '/payService/billingRules/stepPage/newAdd.vue',
-                    width: '524px',
+                    width: '550px',
                     height: '600px',
                     props: {
                         data,

+ 3 - 0
operationSupport/src/views/payService/billingRules/stepPage/newAdd.vue

@@ -243,6 +243,9 @@ export default {
     }
     .input-number {
         width: 110px;
+        /deep/ .el-input__suffix {
+            height: 33px ;
+        }
         /deep/ .el-input--suffix .el-input__inner {
             padding-right: 50px;
         }

+ 17 - 0
operationSupport/src/views/payService/propertyFee/index.vue

@@ -40,6 +40,7 @@
                 :data="mixins_list"
                 :pageset="mixins_pageset"
                 @page-change="pageChange"
+                :selectable="selectable"
                 @selection-change="selectionChange"
             >
                 <template slot-scope="scope" slot="payBeginTime">
@@ -201,6 +202,19 @@ export default {
                         this.$message.error('您尚未选择要收款项,请选择后再操作批量');
                         return;
                     }
+                    let tag = false;
+                    this.selectRow.map((item) => {
+                        if (this.selectRow[0].assetsId == item.assetsId) {
+                            tag = true;
+                        } else {
+                            tag = false;
+                        }
+                    });
+                    if (!tag) {
+                        this.$message.error('选择同一房间后再操作批量');
+                        return;
+                    }
+
                     title = '批量收款';
                     hideStar = true;
                     height = '528px';
@@ -279,6 +293,9 @@ export default {
             }
 
             return text;
+        },
+        selectable(row, index) {
+            return true;
         }
     },
     watch: {

+ 41 - 5
operationSupport/src/views/payService/propertyFee/stepPage/details.vue

@@ -4,15 +4,25 @@
         <el-form ref="form" label-width="110px">
             <template v-for="(item, index) in formLook">
                 <el-col :span="12" :key="index">
-                    <el-form-item :label="item.label">
+                    <el-form-item :label="labelType(item.label, item.prop)">
                         <template v-if="item.slot">
-                            <template v-if="item.slot === 'chargeStatus'">
+                            <template v-if="item.slot == 'assetsArea' && thisItem['chargeType'] == 4">
+                                {{ !!thisItem['parkingDetail'] ? thisItem['parkingDetail'] : '--' }}
+                            </template>
+                            <template v-else-if="item.slot == 'chargeMode'">
+                                {{ !!chargeModeValue[thisItem[item.prop]] ? chargeModeValue[thisItem[item.prop]] : '--' }}
+                            </template>
+                            <template v-else-if="item.slot === 'chargeStatus'">
                                 <span v-if="thisItem['chargeStatus'] == 1" class="redText">未缴费</span>
                                 <span v-else class="greenText">已缴费</span>
                             </template>
-                            <template v-if="item.slot === 'payEndTime'">
+                            <template v-else-if="item.slot === 'payEndTime'">
                                 <div style="white-space: nowrap">{{ thisItem['payBeginTime'] }} - {{ thisItem['payEndTime'] }}</div>
                             </template>
+
+                            <template v-else>
+                                {{ thisItem[item.prop] || '--' }}
+                            </template>
                         </template>
                         <template v-else>
                             {{ thisItem[item.prop] || '--' }}
@@ -28,6 +38,11 @@ export default {
     props: ['params'],
     data() {
         return {
+            chargeModeValue: {
+                1: '固定收费',
+                2: '价格*面积收费',
+                4: '单价*用量'
+            },
             formLook: [
                 {
                     label: '费用名称:',
@@ -39,7 +54,8 @@ export default {
                 },
                 {
                     label: '面积(㎡):',
-                    prop: 'assetsArea'
+                    prop: 'assetsArea',
+                    slot: 'assetsArea'
                 },
                 {
                     label: '单价(元):',
@@ -54,7 +70,7 @@ export default {
                     prop: 'paymentDays'
                 },
                 {
-                    label: '账单费日期:',
+                    label: '账单费日期:',
                     prop: 'payEndTime',
                     slot: 'payEndTime'
                 },
@@ -106,6 +122,25 @@ export default {
                     }
                 })
                 .catch(() => {});
+        },
+        labelType(lab, val) {
+            let type = this.thisItem['chargeType'];
+            if (val == 'assetsArea') {
+                if (type == 2) {
+                    lab = '用量(吨):';
+                } else if (type == 3) {
+                    lab = '用量(度):';
+                } else if (type == 4) {
+                    lab = '车位:';
+                }
+            } else if (val == 'chargePrice') {
+                if (type == 2) {
+                    lab = '价格(元/吨):';
+                } else if (type == 3) {
+                    lab = '价格(元/度):';
+                }
+            }
+            return lab;
         }
     },
     created() {
@@ -119,6 +154,7 @@ export default {
     /deep/ .el-form-item__label,
     /deep/.el-form-item__content {
         font-size: 12px;
+        white-space: nowrap;
     }
 }
 </style>

+ 8 - 4
operationSupport/src/views/payService/propertyFee/stepPage/single.vue

@@ -6,18 +6,21 @@
                 <el-col :span="12" :key="index">
                     <el-form-item :label="labelType(item.label, item.prop)">
                         <template v-if="item.slot">
-                            <template v-if="item.slot === 'assetsArea' && thisItem['chargeType'] == 4">
+                            <template v-if="item.slot == 'assetsArea' && thisItem['chargeType'] == 4">
                                 {{ !!thisItem['parkingDetail'] ? thisItem['parkingDetail'] : '--' }}
                             </template>
-                            <template v-if="item.slot === 'chargeMode'">
+                            <template v-else-if="item.slot == 'chargeMode'">
                                 {{ !!chargeModeValue[thisItem[item.prop]] ? chargeModeValue[thisItem[item.prop]] : '--' }}
                             </template>
-                            <template v-if="item.slot === 'chargeStatus'">
+                            <template v-else-if="item.slot == 'chargeStatus'">
                                 <span class="redText">未缴费</span>
                             </template>
-                            <template v-if="item.slot === 'payEndTime'">
+                            <template v-else-if="item.slot === 'payEndTime'">
                                 <div style="white-space: nowrap">{{ typeTimeTransition(thisItem.payBeginTime, thisItem.payEndTime) }}</div>
                             </template>
+                            <template v-else>
+                                {{ thisItem[item.prop] || '--' }}
+                            </template>
                         </template>
                         <template v-else>
                             {{ thisItem[item.prop] || '--' }}
@@ -216,6 +219,7 @@ export default {
     /deep/ .el-form-item__label,
     /deep/.el-form-item__content {
         font-size: 12px;
+        white-space: nowrap;
     }
 }
 .inline {

+ 30 - 2
operationSupport/src/views/payService/statisticalReport/propertyFeeStatistics.vue

@@ -4,6 +4,13 @@
             <el-select v-model="mixins_query.communityId" placeholder="选择社区" @change="communityChange">
                 <el-option v-for="(item, index) in communityArr" :key="index" :label="item.communityName" :value="item.id"></el-option>
             </el-select>
+            <el-select v-model="mixins_query.chargeType" placeholder="选择费用类型" @change="chargeTypeChange">
+                <el-option label="物业费" :value="1"></el-option>
+                <el-option label="水费" :value="2"></el-option>
+                <el-option label="电费" :value="3"></el-option>
+                <el-option label="车位费" :value="4"></el-option>
+                <el-option label="卫生费" :value="6"></el-option>
+            </el-select>
             <el-button type="primary" class="search-btn" @click="mixins_search" icon="el-icon-search">查询 </el-button>
             <div class="search-icon">
                 <el-tooltip class="item" effect="light" placement="bottom" content="导出">
@@ -12,7 +19,7 @@
             </div>
         </div>
         <div class="table-top">
-            {{ `${new Date().getFullYear()}年${thisObjCommunit['communityName'] || ''}缴纳物业管理费情况表` }}
+            {{ `${new Date().getFullYear()}年${thisObjCommunit['communityName'] || ''}缴纳${nameType}费情况表` }}
         </div>
         <zz-table
             :cols="cols"
@@ -100,7 +107,8 @@ export default {
             mixins_post: 'get',
             summaryColData: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
             communityArr: [],
-            thisObjCommunit: {}
+            thisObjCommunit: {},
+            nameType: '物业管理'
         };
     },
     created() {
@@ -141,6 +149,26 @@ export default {
                 }
             });
         },
+        chargeTypeChange(e) {
+            switch (e) {
+                case 1:
+                    this.nameType = '物业管理';
+                    break;
+                case 2:
+                    this.nameType = '水费管理';
+                    break;
+                case 3:
+                    this.nameType = '电费管理';
+                    break;
+                case 4:
+                    this.nameType = '车位费管理';
+                    break;
+                case 6:
+                    this.nameType = '卫生费管理';
+                    break;
+            }
+            this.mixins_search();
+        },
         getList() {
             if (!this.mixins_dataUrl) {
                 this.mixins_onQuery = false;

+ 4 - 0
operationSupport/vue.config.js

@@ -58,7 +58,11 @@ module.exports = {
             //         resources: path.relative(__dirname, '../src/assets/css/punlic-style.scss')
             //     }
             // })
+<<<<<<< HEAD
         }
+=======
+        },
+>>>>>>> 2484e009369e1b84df1a31da8fc957968006b2e5
         // extract: { // 打包后css文件名称添加时间戳
         //     filename: `css/[name].${new Date().getTime()}.css`,
         //     chunkFilename: `css/chunk.[id].${new Date().getTime()}.css`,