Selaa lähdekoodia

Merge branch 'new_web' of http://39.108.172.131:3000/Shannon_mu/SmartCommunity into new_web

DESKTOP-4G80JF4\long 3 vuotta sitten
vanhempi
commit
f7b1869cf3

+ 12 - 8
operationSupport/src/utils/AmapSearch.js

@@ -1,16 +1,20 @@
 var url = 'https://webapi.amap.com/maps?v=1.4.15&key=c2df9f4026e98b41962148c1703d8f33&plugin=AMap.Autocomplete,AMap.PlaceSearch&callback=onLoad';
 var jsapi = document.createElement('script');
-jsapi.charset = 'utf-8';
+jsapi.type = "text/javascript";
 jsapi.src = url;
 document.head.appendChild(jsapi);
+
 let times = setInterval(() => {
-	if (!!AMap) {
-		const s = document.createElement('script');
-		s.charset = 'utf-8';
-		s.src = 'https://webapi.amap.com/ui/1.1/main.js';
-		document.head.appendChild(s);
-		clearInterval(times)
-	}
+	try {
+		if (!!AMap) {
+			const s = document.createElement('script');
+			s.type = "text/javascript";
+			s.src = 'https://webapi.amap.com/ui/1.1/main.js';
+			document.head.appendChild(s);
+			clearInterval(times)
+		}
+	} catch { }
+
 }, 1000)
 
 window.onLoad = function () {

+ 3 - 3
operationSupport/src/views/facilityInspections/inspectionsRecords.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="main">
         <div class="search">
-            <el-input placeholder="请输入巡检任务/人员" class="search-input" clearable v-model="mixins_query.inspectionName"></el-input>
+            <el-input placeholder="请输入巡检任务/人员" class="search-input" clearable v-model="mixins_query.currentUsers"></el-input>
             <el-select class="width90" placeholder="请选择巡检状态" v-model="mixins_query.inspectionStatus" clearable>
                 <el-option label="待执行" :value="1"></el-option>
                 <el-option label="执行中" :value="2"></el-option>
@@ -120,8 +120,8 @@ export default {
             if (!arr) {
                 arr = ['', ''];
             }
-            this.mixins_query.startDate = arr[0];
-            this.mixins_query.endDate = arr[1];
+            this.mixins_query.startTime = arr[0];
+            this.mixins_query.endTime = arr[1];
         },
         lookDetails(row) {
             new Promise((resolve) => {

+ 36 - 3
operationSupport/src/views/facilityInspections/popups/add.vue

@@ -26,7 +26,23 @@
                 :options="deviceArr"
                 @change="deviceArrToggle"
             ></el-cascader>
-            <div style="text-align: center; margin-top: 20px">
+            <!-- <div style="text-align: center; margin-top: 20px">
+                <el-transfer
+                    style="text-align: left; display: inline-block"
+                    v-model="formData.deviceIds"
+                    filterable
+                    :props="{
+                        key: 'id',
+                        label: 'deviceName'
+                    }"
+                    :titles="['待选列表', '已选列表']"
+                    :data="devicesArr"
+                ></el-transfer>
+            </div> -->
+        </template>
+
+        <template slot="deviceIds">
+            <div style="text-align: center">
                 <el-transfer
                     style="text-align: left; display: inline-block"
                     v-model="formData.deviceIds"
@@ -117,7 +133,18 @@ export default {
                         }
                     }
                 }),
-                typeValue: [this.$valid.selectRequired('设备/设施类型')]
+                typeValue: [this.$valid.selectRequired('设备/设施类型')],
+                deviceIds: this.$valid.custome({
+                    validator(rule, value, cb) {
+                        const rl = rule;
+                        if (!value.length) {
+                            rl.message = '已选列表不能为空';
+                            cb(new Error());
+                        } else {
+                            cb();
+                        }
+                    }
+                })
             },
             formCols: [
                 [
@@ -136,6 +163,12 @@ export default {
                         prop: 'typeValue',
                         slot: 'typeValue'
                     },
+                    {
+                        label: '',
+                        prop: 'deviceIds',
+                        slot: 'deviceIds'
+                    },
+
                     {
                         label: '巡检时间',
                         prop: 'startDate',
@@ -166,7 +199,7 @@ export default {
             defaultProps: {
                 value: 'id', // 唯一标识
                 label: 'label', // 标签显示
-                children: 'children',
+                children: 'children'
             },
             defaultProps1: {
                 value: 'id', // 唯一标识

+ 1 - 1
operationSupport/src/views/flow/index.vue

@@ -178,7 +178,7 @@ export default {
                     this.$message.success(msg);
                     this.mixins_search();
                 } else {
-                    this.$message.error(data);
+                    this.$message.error(msg);
                 }
             });
         },

+ 3 - 1
operationSupport/src/views/ownerManagement/index.vue

@@ -122,7 +122,9 @@
 
 <script>
 import list from '@/js/list.js';
-import addOwner from './stepPage/add.vue';
+// import addOwner from './stepPage/add.vue';
+import addOwner from './stepPage/newAdd.vue';
+
 import Index from '../../components/mapPopup/index.vue';
 export default {
     mixins: [list],

+ 1 - 1
operationSupport/src/views/ownerManagement/ownerReview/index.vue

@@ -42,7 +42,7 @@
 
 <script>
 import list from '@/js/list.js';
-import addOwner from '../stepPage/add.vue';
+import addOwner from './toExamine.vue';
 export default {
     mixins: [list],
     name: 'ownerManagementOwnerReview',

+ 413 - 0
operationSupport/src/views/ownerManagement/ownerReview/toExamine.vue

@@ -0,0 +1,413 @@
+<template>
+    <div class="main">
+        <div></div>
+        <div class="formContent">
+            <div class="formContent-item">
+                <div class="formContent-item_title">基础信息</div>
+                <div class="formContent-formList">
+                    <zz-form :cols="formCols" :data="formData" :rules="formRules" :errors="formErrors" labelWidth="70" ref="form">
+                        <!-- 查看审核 -->
+                        <template>
+                            <template slot="name">{{ formData.name }}</template>
+                            <template slot="phone">{{ formData.phone }}</template>
+                            <template slot="personnelNumber">{{ formData.personnelNumber }}</template>
+                            <template slot="sex" v-if="formData.sex === 0">未知</template>
+                            <template slot="sex" v-else>{{ formData.sex === 1 ? '男' : '女' }}</template>
+                            <template slot="remarks">{{ formData.remarks }}</template>
+                        </template>
+                    </zz-form>
+
+                    <template>
+                        <div class="clickUpload">
+                            <div class="clickUpText">
+                                <img class="dataImg" v-if="!!formData.facePictureUrl" :src="formData.facePictureUrl" />
+                                <template v-else>
+                                    <img class="bg-img" src="@/assets/img/ownerManagement/img_zhaopian2@2x.png" alt="" />
+                                    <div>无人脸图片</div>
+                                </template>
+                            </div>
+                        </div>
+                    </template>
+                </div>
+            </div>
+
+            <div class="formContent-item">
+                <div class="formContent-item_title">证件信息</div>
+                <zz-form :cols="formCols2" :data="formData" :errors="formErrors" labelWidth="70">
+                    <!-- 查看审核 -->
+                    <template>
+                        <template slot="idType">{{ formData.idType | matchingVal(idTypeArray) }}</template>
+                        <template slot="idNumber">{{ formData.idNumber }}</template>
+                        <template slot="permanentAddress">{{ formData.permanentAddress }}</template>
+                        <template slot="issuingAuthority">{{ formData.issuingAuthority }}</template>
+                        <template slot="effectiveDate">{{
+                            !!formData.effectiveDateStart ? formData.effectiveDateStart + '  ——  ' + formData.effectiveDateStart : ''
+                        }}</template>
+                        <template slot="nationality">{{ formData.nationality | matchingVal(nationalityArray) }}</template>
+                        <template slot="nativePlace">{{ formData.nativePlace | matchingVal(nativePlaceArray) }}</template>
+                        <template slot="nation">{{ formData.nation | matchingVal(nationArray) }}</template>
+                        <template slot="birthDate">{{ formData.birthDate }}</template>
+                    </template>
+                </zz-form>
+            </div>
+
+            <div class="formContent-item">
+                <div class="formContent-item_title"><span class="show-required-icon-star"></span> 绑定房产和车位</div>
+                <div class="formContent-formList house" v-for="(item, index) in formData.houseList" :key="index">
+                    <div class="block-title">
+                        <div class="floor list-title">
+                            {{
+                                `${item.buildingName} ${
+                                    item.unitName.indexOf('单元') !== -1 ? item.unitName : !!item.unitName ? item.unitName + '单元' : ''
+                                }${item.roomNumber}`
+                            }}
+                        </div>
+                        <img class="bg-img" src="@/assets/img/ownerManagement/bg_card@2x.png" alt="" />
+                        <img class="bg-imgIoc" src="@/assets/img/ownerManagement/icon_building@2x.png" alt="" />
+                    </div>
+
+                    <zz-form :cols="formCols3" :data="item" :rules="formRules" :errors="formErrors" labelWidth="70">
+                        <!-- 查看审核 -->
+                        <template>
+                            <template slot="householdType">{{ item.householdType | matchingVal(householdTypeArray) }}</template>
+                            <template slot="checkInDate">{{ item.checkInDate }}</template>
+                        </template>
+                    </zz-form>
+
+                    <div class="block-title car" v-for="(items, indexs) in item.parkingList" :key="indexs">
+                        <div class="floor list-title">{{ `${items.garageName}${items.partitionName}-${items.parkingNumber}` }}</div>
+                        <img class="bg-img" src="@/assets/img/ownerManagement/bg_card@2x.png" alt="" />
+                        <img class="bg-imgIoc" src="@/assets/img/ownerManagement/icon_car@2x.png" alt="" />
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="buttons">
+            <el-button @click="closes">取消</el-button>
+            <el-button type="primary" @click="passOK(2)">审核不通过</el-button>
+            <el-button type="primary" @click="passOK(1)">审核通过</el-button>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    name: 'toExamine',
+    props: {
+        params: {
+            type: Object
+        },
+        islook: {
+            type: Boolean,
+            default: false
+        },
+        isAdd: {
+            type: Boolean,
+            default: true
+        }
+    },
+    filters: {
+        matchingVal(val, arr) {
+            let v = '';
+            if (!!val) {
+                arr.forEach((item) => {
+                    if (!!item.status && item.status === val) {
+                        v = item.label;
+                    } else if (!!item.code && item.code === val) {
+                        v = item.name;
+                    }
+                });
+            }
+            return v;
+        }
+    },
+    data() {
+        return {
+            formData: {
+                name: '',
+                phone: '',
+                personnelNumber: '',
+                sex: 0,
+                remarks: '',
+                facePictureUrl: '',
+                id: 0,
+                idType: '',
+                idNumber: '',
+                permanentAddress: '',
+                issuingAuthority: '',
+                effectiveDateStart: '',
+                effectiveDateEnd: '',
+                nationality: 1,
+                nativePlace: '',
+                nation: '',
+                birthDate: '',
+                houseList: []
+            },
+            formCols: [
+                [
+                    {
+                        label: '姓名',
+                        prop: 'name',
+                        slot: 'name',
+                        input: true
+                    },
+                    {
+                        label: '手机号',
+                        prop: 'phone',
+                        slot: 'phone',
+                        input: true
+                    },
+                    {
+                        label: '人员编号',
+                        prop: 'personnelNumber',
+                        slot: 'personnelNumber',
+                        input: true
+                    },
+                    {
+                        label: '性别',
+                        prop: 'sex',
+                        slot: 'sex'
+                    },
+                    {
+                        label: '备注',
+                        prop: 'remarks',
+                        slot: 'remarks'
+                    }
+                ]
+            ],
+            formCols2: [
+                [
+                    {
+                        label: '证件类型',
+                        prop: 'idType',
+                        slot: 'idType'
+                    },
+                    {
+                        label: '证件号码',
+                        prop: 'idNumber',
+                        slot: 'idNumber',
+                        input: true
+                    },
+                    {
+                        label: '户籍地址',
+                        prop: 'permanentAddress',
+                        slot: 'permanentAddress',
+                        input: true
+                    },
+                    {
+                        label: '签发机关',
+                        prop: 'issuingAuthority',
+                        slot: 'issuingAuthority',
+                        input: true
+                    },
+                    {
+                        label: '有效期',
+                        prop: 'effectiveDate',
+                        slot: 'effectiveDate'
+                    },
+                    {
+                        label: '国籍',
+                        prop: 'nationality',
+                        slot: 'nationality'
+                    },
+                    {
+                        label: '籍贯',
+                        prop: 'nativePlace',
+                        slot: 'nativePlace'
+                    },
+                    {
+                        label: '民族',
+                        prop: 'nation',
+                        slot: 'nation'
+                    },
+                    {
+                        label: '出生日期',
+                        prop: 'birthDate',
+                        slot: 'birthDate'
+                    }
+                ]
+            ],
+            formCols3: [
+                [
+                    {
+                        label: '类型',
+                        prop: 'householdType',
+                        slot: 'householdType',
+                        showRequired: true
+                    },
+                    {
+                        label: '入住时间',
+                        prop: 'checkInDate',
+                        slot: 'checkInDate'
+                    }
+                ]
+            ],
+            nationalityArray: [
+                {
+                    status: 1,
+                    label: '中国'
+                },
+                {
+                    status: 2,
+                    label: '其他'
+                }
+            ],
+            idTypeArray: [
+                {
+                    status: 1,
+                    label: '居民身份证'
+                },
+                {
+                    status: 2,
+                    label: '居民户口簿'
+                },
+                {
+                    status: 3,
+                    label: '暂住证'
+                },
+                {
+                    status: 4,
+                    label: '其他'
+                }
+            ],
+            householdTypeArray: [
+                {
+                    status: 1,
+                    label: '业主'
+                },
+                {
+                    status: 2,
+                    label: '亲属'
+                },
+                {
+                    status: 3,
+                    label: '租客'
+                }
+            ],
+            formRules: {
+                name: [this.$valid.selectRequired('填写姓名')],
+                phone: [this.$valid.selectRequired('填写手机号')],
+                householdType: [this.$valid.selectRequired('填写类型')]
+            }
+        };
+    },
+    created() {
+        this.$store.dispatch('collapse', true);
+
+        if (!!this.params.id) {
+            this.getDetails(this.params.id);
+        } else {
+            if (this.$parent.thisLeftData.type == 'room') {
+                this.formData.houseList = [
+                    {
+                        checkInDate: '',
+                        householdType: 1,
+                        buildingName: this.$parent.thisLeftData.buildingName,
+                        unitName: this.$parent.thisLeftData.unitName,
+                        roomNumber: this.$parent.thisLeftData.houseName,
+                        houseId: this.$parent.thisLeftData.houseId,
+                        parkingList: []
+                    }
+                ];
+            }
+        }
+    },
+    beforeDestroy() {
+        this.$store.dispatch('collapse', false);
+    },
+    computed: {
+        nationArray() {
+            return this.$store.getters['getNationArray'];
+        },
+        nativePlaceArray() {
+            return this.$store.getters['getNativeArray'];
+        },
+        islooks() {
+            if (this.islook) {
+                this.lookFormCols('formCols');
+                this.lookFormCols('formCols2');
+                this.lookFormCols('formCols3');
+            }
+            return this.islook;
+        }
+    },
+    methods: {
+        getDetails(id) {
+            let url = '/sc-community/scResident/audit/find/' + id;
+            this.$http
+                .get(url)
+                .then(({ data, status, msg }) => {
+                    if (0 === status) {
+                        let { effectiveDateStart, effectiveDateEnd } = data;
+                        if (effectiveDateStart == null || effectiveDateEnd == null) {
+                            effectiveDateStart = '';
+                            effectiveDateEnd = '';
+                        }
+                        this.formData = data;
+                    } else {
+                        this.$message.error(msg);
+                    }
+                })
+                .catch(() => {});
+        },
+        lookFormCols(cols) {
+            this[cols][0].forEach((item, index) => {
+                if (!!item.input) {
+                    item.input = false;
+                }
+            });
+        },
+        closes() {
+            this.$emit('clerOwnerStatus');
+        },
+        passOK(status) {
+            this.$http
+                .get('/sc-community/scResident/audit', { id: this.params.id, auditStatus: status })
+                .then(({ status, msg }) => {
+                    if (0 === status) {
+                        this.$message.success(msg);
+                        this.closes();
+                    } else {
+                        this.$message.error(msg);
+                    }
+                })
+                .catch(() => {});
+        }
+    }
+};
+</script>
+<style lang='scss' scoped >
+@import '../style.scss';
+.addHouse {
+    cursor: pointer;
+    img.add {
+        margin-left: 20px;
+        width: 13px;
+    }
+}
+
+.formContent .formContent-item .block-title.car {
+    margin-bottom: 20px;
+}
+.formContent-formList.house {
+    flex-wrap: wrap;
+    &::after {
+        content: '';
+        width: 100%;
+        height: 1px;
+        background: #e0e1e3;
+        margin-bottom: 20px;
+    }
+    .el-form {
+        width: calc(100% - 220px);
+        /deep/ .el-date-editor.el-input {
+            width: 100%;
+        }
+    }
+}
+.removeHouseButton {
+    width: 80px;
+    height: 32px;
+    margin-bottom: 20px;
+}
+</style>

+ 660 - 0
operationSupport/src/views/ownerManagement/stepPage/newAdd.vue

@@ -0,0 +1,660 @@
+<template>
+    <div class="main">
+        <div></div>
+        <div class="formContent">
+            <div class="formContent-item">
+                <div class="formContent-item_title">基础信息</div>
+                <div class="formContent-formList">
+                    <zz-form :cols="formCols" :data="formData" :rules="formRules" :errors="formErrors" labelWidth="70" ref="form">
+                        <!-- 添加编辑 -->
+                        <template>
+                            <template slot="sex">
+                                <el-radio v-model="formData.sex" :label="0">未知</el-radio>
+                                <el-radio v-model="formData.sex" :label="1">男</el-radio>
+                                <el-radio v-model="formData.sex" :label="2">女</el-radio>
+                            </template>
+                            <template slot="remarks">
+                                <el-input type="textarea" v-model="formData.remark" maxlength="50" placeholder="请输入备注"> </el-input>
+                            </template>
+                        </template>
+                    </zz-form>
+
+                    <template>
+                        <div class="clickUpload">
+                            <div class="clickUpText">
+                                <img class="dataImg" v-if="!!formData.facePictureUrl" :src="formData.facePictureUrl" />
+                                <template v-else>
+                                    <img class="bg-img" src="@/assets/img/ownerManagement/img_zhaopian2@2x.png" alt="" />
+                                    <div>点击添加人脸照片</div>
+                                </template>
+                            </div>
+                            <el-upload
+                                :headers="token"
+                                ref="uploaduserlogo"
+                                class="mini-upload"
+                                limit="1"
+                                action="/sc-community/upload/uploadFile"
+                                :on-success="uploadsuccess"
+                                :before-upload="beforeAvatarUpload"
+                                :auto-upload="true"
+                                name="file"
+                            >
+                            </el-upload>
+                        </div>
+                    </template>
+                </div>
+            </div>
+
+            <div class="formContent-item">
+                <div class="formContent-item_title">证件信息</div>
+                <zz-form :cols="formCols2" :data="formData" :errors="formErrors" labelWidth="70">
+                    <!-- 添加编辑 -->
+                    <template>
+                        <template slot="idType">
+                            <el-select v-model="formData.idType" clearable class="width100">
+                                <el-option v-for="(item, index) in idTypeArray" :key="index" :label="item.label" :value="item.status">{{
+                                    item.label
+                                }}</el-option>
+                            </el-select>
+                        </template>
+                        <template slot="nationality">
+                            <el-select v-model="formData.nationality" clearable class="width100">
+                                <el-option
+                                    v-for="(item, index) in nationalityArray"
+                                    :key="index"
+                                    :label="item.label"
+                                    :value="item.status"
+                                    >{{ item.label }}</el-option
+                                >
+                            </el-select>
+                        </template>
+
+                        <template slot="nativePlace">
+                            <el-select v-model="formData.nativePlace" clearable class="width100">
+                                <el-option v-for="(item, index) in nativePlaceArray" :key="index" :label="item.name" :value="item.code">{{
+                                    item.name
+                                }}</el-option>
+                            </el-select>
+                        </template>
+                        <template slot="nation">
+                            <el-select v-model="formData.nation" clearable class="width100">
+                                <el-option v-for="(item, index) in nationArray" :key="index" :label="item.name" :value="item.code">{{
+                                    item.name
+                                }}</el-option>
+                            </el-select>
+                        </template>
+
+                        <template slot="birthDate">
+                            <el-date-picker
+                                class="width100"
+                                v-model="formData.birthDate"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                type="date"
+                                :picker-options="pickerOptions"
+                                placeholder="选择日期"
+                            >
+                            </el-date-picker>
+                        </template>
+                        <template slot="effectiveDate">
+                            <el-date-picker
+                                class="width100"
+                                v-model="effectiveDate"
+                                value-format="yyyy-MM-dd HH:mm:ss"
+                                type="daterange"
+                                range-separator="至"
+                                start-placeholder="选择开始日期"
+                                end-placeholder="选择结束日期"
+                                @change="effectiveDateToggle"
+                                :editable="false"
+                            ></el-date-picker>
+                        </template>
+                    </template>
+                </zz-form>
+            </div>
+
+            <div class="formContent-item">
+                <div class="formContent-item_title"><span class="show-required-icon-star"></span> 绑定房产和车位</div>
+                <div class="formContent-formList house" v-for="(item, index) in formData.houseList" :key="index">
+                    <div class="block-title">
+                        <div class="floor list-title">
+                            {{
+                                `${item.buildingName} ${
+                                    item.unitName.indexOf('单元') !== -1 ? item.unitName : !!item.unitName ? item.unitName + '单元' : ''
+                                }${item.roomNumber}`
+                            }}
+                        </div>
+                        <span class="remove list-title" @click="removeHouse(index)">移除</span>
+                        <img class="bg-img" src="@/assets/img/ownerManagement/bg_card@2x.png" alt="" />
+                        <img class="bg-imgIoc" src="@/assets/img/ownerManagement/icon_building@2x.png" alt="" />
+                    </div>
+
+                    <zz-form :cols="formCols3" :data="item" :rules="formRules" :errors="formErrors" labelWidth="70">
+                        <!-- 添加编辑 -->
+                        <template>
+                            <template slot="householdType">
+                                <el-select v-model="item.householdType" clearable>
+                                    <el-option
+                                        v-for="(item, index) in householdTypeArray"
+                                        :key="index"
+                                        :label="item.label"
+                                        :value="item.status"
+                                        >{{ item.label }}</el-option
+                                    >
+                                </el-select>
+                            </template>
+                            <template slot="checkInDate">
+                                <el-date-picker
+                                    v-model="item.checkInDate"
+                                    value-format="yyyy-MM-dd HH:mm:ss"
+                                    type="date"
+                                    placeholder="选择日期"
+                                >
+                                </el-date-picker> </template
+                        ></template>
+                    </zz-form>
+
+                    <div class="block-title car" v-for="(items, indexs) in item.parkingList" :key="indexs">
+                        <div class="floor list-title">{{ `${items.garageName}${items.partitionName}-${items.parkingNumber}` }}</div>
+                        <span class="remove list-title" @click="removeCard(indexs, item)">移除</span>
+                        <img class="bg-img" src="@/assets/img/ownerManagement/bg_card@2x.png" alt="" />
+                        <img class="bg-imgIoc" src="@/assets/img/ownerManagement/icon_car@2x.png" alt="" />
+                    </div>
+                    <div class="addHouse block-title" v-if="!!formData.houseList.length" @click="addCard(item)">
+                        <div class="floor list-title">绑定车位</div>
+                        <img class="bg-img" src="@/assets/img/ownerManagement/bg_card@2x.png" alt="" />
+                        <img class="bg-imgIoc" src="@/assets/img/ownerManagement/icon_car@2x.png" alt="" />
+                        <img class="add" src="@/assets/img/ownerManagement/btn_add@2x.png" />
+                    </div>
+                    <el-button class="removeHouseButton" type="primary" @click="removeHouse(index)" v-if="formData.houseList.length !== 0"
+                        >删除房产</el-button
+                    >
+                </div>
+                <div class="addHouse block-title" v-if="formData.houseList.length == 0" @click="addHouse()">
+                    <div class="floor list-title">绑定房产</div>
+                    <img class="bg-img" src="@/assets/img/ownerManagement/bg_card@2x.png" alt="" />
+                    <img class="bg-imgIoc" src="@/assets/img/ownerManagement/icon_building@2x.png" alt="" />
+                    <img class="add" src="@/assets/img/ownerManagement/btn_add@2x.png" />
+                </div>
+                <el-button class="addHouseButton" type="primary" @click="addHouse()" v-if="formData.houseList.length !== 0"
+                    >新增房产</el-button
+                >
+            </div>
+        </div>
+
+        <div class="buttons">
+            <el-button @click="closes">取消</el-button>
+            <el-button type="primary" @click="addEdit()">保存</el-button>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    name: 'ownerManagementAdd',
+    props: {
+        params: {
+            type: Object
+        },
+        islook: {
+            type: Boolean,
+            default: false
+        },
+        isAdd: {
+            type: Boolean,
+            default: true
+        }
+    },
+    filters: {
+        matchingVal(val, arr) {
+            let v = '';
+            if (!!val) {
+                arr.forEach((item) => {
+                    if (!!item.status && item.status === val) {
+                        v = item.label;
+                    } else if (!!item.code && item.code === val) {
+                        v = item.name;
+                    }
+                });
+            }
+            return v;
+        }
+    },
+    data() {
+        return {
+            token: {
+                [localStorage.getItem('SC_token') && 'Authorization']: 'Bearer ' + localStorage.getItem('SC_token')
+            },
+            pickerOptions: {
+                disabledDate(val) {
+                    // return val.getTime() < Date.now() - 8.64e7;
+                    return +new Date(val) > +new Date();
+                }
+            },
+            effectiveDate: [],
+            formData: {
+                name: '',
+                phone: '',
+                personnelNumber: '',
+                sex: 0,
+                remarks: '',
+                facePictureUrl: '',
+                id: 0,
+                idType: '',
+                idNumber: '',
+                permanentAddress: '',
+                issuingAuthority: '',
+                effectiveDateStart: '',
+                effectiveDateEnd: '',
+                nationality: 1,
+                nativePlace: '',
+                nation: '',
+                birthDate: '',
+                houseList: []
+            },
+            formCols: [
+                [
+                    {
+                        label: '姓名',
+                        prop: 'name',
+                        slot: 'name',
+                        input: true
+                    },
+                    {
+                        label: '手机号',
+                        prop: 'phone',
+                        slot: 'phone',
+                        input: true
+                    },
+                    {
+                        label: '人员编号',
+                        prop: 'personnelNumber',
+                        slot: 'personnelNumber',
+                        input: true
+                    },
+                    {
+                        label: '性别',
+                        prop: 'sex',
+                        slot: 'sex'
+                    },
+                    {
+                        label: '备注',
+                        prop: 'remarks',
+                        slot: 'remarks'
+                    }
+                ]
+            ],
+            formCols2: [
+                [
+                    {
+                        label: '证件类型',
+                        prop: 'idType',
+                        slot: 'idType'
+                    },
+                    {
+                        label: '证件号码',
+                        prop: 'idNumber',
+                        slot: 'idNumber',
+                        input: true
+                    },
+                    {
+                        label: '户籍地址',
+                        prop: 'permanentAddress',
+                        slot: 'permanentAddress',
+                        input: true
+                    },
+                    {
+                        label: '签发机关',
+                        prop: 'issuingAuthority',
+                        slot: 'issuingAuthority',
+                        input: true
+                    },
+                    {
+                        label: '有效期',
+                        prop: 'effectiveDate',
+                        slot: 'effectiveDate'
+                    },
+                    {
+                        label: '国籍',
+                        prop: 'nationality',
+                        slot: 'nationality'
+                    },
+                    {
+                        label: '籍贯',
+                        prop: 'nativePlace',
+                        slot: 'nativePlace'
+                    },
+                    {
+                        label: '民族',
+                        prop: 'nation',
+                        slot: 'nation'
+                    },
+                    {
+                        label: '出生日期',
+                        prop: 'birthDate',
+                        slot: 'birthDate'
+                    }
+                ]
+            ],
+            formCols3: [
+                [
+                    {
+                        label: '类型',
+                        prop: 'householdType',
+                        slot: 'householdType',
+                        showRequired: true
+                    },
+                    {
+                        label: '入住时间',
+                        prop: 'checkInDate',
+                        slot: 'checkInDate'
+                    }
+                ]
+            ],
+            nationalityArray: [
+                {
+                    status: 1,
+                    label: '中国'
+                },
+                {
+                    status: 2,
+                    label: '其他'
+                }
+            ],
+            idTypeArray: [
+                {
+                    status: 1,
+                    label: '居民身份证'
+                },
+                {
+                    status: 2,
+                    label: '居民户口簿'
+                },
+                {
+                    status: 3,
+                    label: '暂住证'
+                },
+                {
+                    status: 4,
+                    label: '其他'
+                }
+            ],
+            householdTypeArray: [
+                {
+                    status: 1,
+                    label: '业主'
+                },
+                {
+                    status: 2,
+                    label: '亲属'
+                },
+                {
+                    status: 3,
+                    label: '租客'
+                }
+            ],
+            formRules: {
+                name: [this.$valid.selectRequired('填写姓名')],
+                phone: [this.$valid.selectRequired('填写手机号')],
+                householdType: [this.$valid.selectRequired('填写类型')]
+            },
+            communityArr: [],
+            garageArr: []
+        };
+    },
+    created() {
+        this.$store.dispatch('collapse', true);
+
+        if (!!this.params.id) {
+            this.getDetails(this.params.id);
+        } else {
+            if (this.$parent.thisLeftData.type == 'room') {
+                this.formData.houseList = [
+                    {
+                        checkInDate: '',
+                        householdType: 1,
+                        buildingName: this.$parent.thisLeftData.buildingName,
+                        unitName: this.$parent.thisLeftData.unitName,
+                        roomNumber: this.$parent.thisLeftData.houseName,
+                        houseId: this.$parent.thisLeftData.houseId,
+                        parkingList: []
+                    }
+                ];
+            }
+        }
+
+        this.getTenantsTree();
+    },
+    beforeDestroy() {
+        this.$store.dispatch('collapse', false);
+    },
+    computed: {
+        nationArray() {
+            return this.$store.getters['getNationArray'];
+        },
+        nativePlaceArray() {
+            return this.$store.getters['getNativeArray'];
+        }
+    },
+    methods: {
+        getDetails(id) {
+            let url = '/sc-community/scResident/find/' + id;
+            this.$http
+                .get(url)
+                .then(({ data, status, msg }) => {
+                    if (0 === status) {
+                        let { effectiveDateStart, effectiveDateEnd } = data;
+                        if (effectiveDateStart == null || effectiveDateEnd == null) {
+                            effectiveDateStart = '';
+                            effectiveDateEnd = '';
+                        }
+                        this.effectiveDate = [effectiveDateStart, effectiveDateEnd];
+                        this.formData = data;
+                    } else {
+                        this.$message.error(msg);
+                    }
+                })
+                .catch(() => {});
+        },
+        lookFormCols(cols) {
+            this[cols][0].forEach((item, index) => {
+                if (!!item.input) {
+                    item.input = false;
+                }
+            });
+        },
+        uploadsuccess(response, file, fileList) {
+            this.$refs.uploaduserlogo.clearFiles();
+            if (0 === response.status) {
+                this.formData.facePictureUrl = response.data;
+            }
+        },
+        beforeAvatarUpload(file) {
+            const isJPG = file.type === 'image/jpeg';
+            const isLt2M = file.size / 1024 / 1024 < 2;
+
+            if (!isJPG) {
+                this.$message.error('上传头像图片只能是 JPG 格式!');
+            }
+            if (!isLt2M) {
+                this.$message.error('上传头像图片大小不能超过 2MB!');
+            }
+            return isJPG && isLt2M;
+        },
+        effectiveDateToggle(va) {
+            let arr = va;
+            if (!arr) {
+                arr = ['', ''];
+            }
+            this.formData.effectiveDateStart = arr[0];
+            this.formData.effectiveDateEnd = arr[1];
+        },
+        addHouse() {
+            new Promise((resolve) => {
+                this.$store.dispatch('addPopup', {
+                    url: '/ownerManagement/stepPage/poptreeSelect.vue',
+                    width: '500px',
+                    height: '400px',
+                    props: {
+                        num: 1,
+                        list: this.formData.houseList,
+                        tenantsTree: this.communityArr,
+                        callback: resolve
+                    },
+                    title: '选择房产',
+                    notip: true
+                });
+            }).then((res) => {
+                if (res.length > 0) {
+                    res.forEach((item, index) => {
+                        let newObj = {
+                            checkInDate: '',
+                            householdType: 1,
+                            buildingName: item.buildingName,
+                            unitName: item.unitName,
+                            roomNumber: item.roomNumber,
+                            houseId: item.houseId,
+                            parkingList: []
+                        };
+                        let isExit = this.formData['houseList'].some((is) => {
+                            return is.houseId == item.houseId;
+                        });
+                        if (!isExit) {
+                            this.formData['houseList'].push(newObj);
+                        }
+                    });
+                }
+            });
+        },
+        addCard(itemObj) {
+            new Promise((resolve) => {
+                this.$store.dispatch('addPopup', {
+                    url: '/ownerManagement/stepPage/poptreeSelect.vue',
+                    width: '500px',
+                    height: '400px',
+                    props: {
+                        num: 2,
+                        list: itemObj.parkingList,
+                        tenantsTree: this.garageArr,
+                        callback: resolve
+                    },
+                    title: '选择车位',
+                    notip: true
+                });
+            }).then((res) => {
+                if (res.length > 0) {
+                    res.forEach((item, index) => {
+                        let newObj = {
+                            parkingId: item.parkingId,
+                            parkingNumber: item.parkingNumber,
+                            partitionName: item.partitionName,
+                            garageName: item.garageName
+                        };
+                        let isExit = itemObj['parkingList'].some((is) => {
+                            return is.parkingId == item.parkingId;
+                        });
+                        if (!isExit) {
+                            itemObj['parkingList'].push(newObj);
+                        }
+                    });
+                }
+            });
+        },
+        removeHouse(index) {
+            this.formData['houseList'].splice(index, 1);
+        },
+        removeCard(index, itemObj) {
+            itemObj['parkingList'].splice(index, 1);
+        },
+        closes() {
+            this.$emit('clerOwnerStatus');
+        },
+        addEdit() {
+            let _this = this;
+            if (this.formData.houseList.length === 0) {
+                this.$message.error('房产必须绑定');
+                return;
+            }
+            new Promise((resolve) => {
+                this.$refs.form.validate(resolve);
+            })
+                .then(() => {
+                    let url = '/sc-community/scResident/add';
+                    let params = this.formData;
+                    if (!_this.isAdd) {
+                        url = '/sc-community/scResident/update';
+                    }
+                    this.$http
+                        .post(url, params)
+                        .then(({ status, msg }) => {
+                            if (status == 0) {
+                                this.$message.success(msg);
+                                this.closes();
+                            } else {
+                                this.$message.error(msg);
+                            }
+                        })
+                        .catch(() => {});
+                })
+                .catch(() => {});
+        },
+        getTenantsTree() {
+            this.$http.get('/sc-community/assets/tree/community/find', { buildingType: 1 }).then(({ status, data, msg }) => {
+                if (status === 0 && data) {
+                    this.dimension(data);
+                    this.communityArr = data;
+                }
+            });
+            this.$http.get('/sc-community/assets/tree/garage/find').then(({ status, data, msg }) => {
+                if (status === 0 && data) {
+                    this.garageArr = data;
+                }
+            });
+        },
+        dimension(arr) {
+            arr.map((item, index) => {
+                if (!!item.children & (item.type !== 'unit')) {
+                    this.dimension(item.children);
+                } else {
+                    if (item.name.indexOf('单元') === -1 && item.type === 'unit') {
+                        item.name = item.name + '单元';
+                    }
+                }
+            });
+        }
+    }
+};
+</script>
+<style lang='scss' scoped >
+@import '../style.scss';
+.addHouse {
+    cursor: pointer;
+    img.add {
+        margin-left: 20px;
+        width: 13px;
+    }
+}
+
+.formContent .formContent-item .block-title.car {
+    margin-bottom: 20px;
+}
+.formContent-formList.house {
+    flex-wrap: wrap;
+    &::after {
+        content: '';
+        width: 100%;
+        height: 1px;
+        background: #e0e1e3;
+        margin-bottom: 20px;
+    }
+    .el-form {
+        width: calc(100% - 220px);
+        /deep/ .el-date-editor.el-input {
+            width: 100%;
+        }
+    }
+}
+.removeHouseButton {
+    width: 80px;
+    height: 32px;
+    margin-bottom: 20px;
+}
+</style>

+ 34 - 1
operationSupport/src/views/ownerManagement/stepPage/poptreeSelect.vue

@@ -7,6 +7,7 @@
             :props="treedefaultProps"
             :default-checked-keys="defaultcheckedkeys"
             ref="tenantstree"
+            @check-change="checkChange"
         >
         </el-tree>
     </el-scrollbar>
@@ -48,7 +49,9 @@ export default {
                     } else if (thisValue.data.type === 'parking') {
                         objArray = {
                             parkingId: thisValue.data.value,
-                            parkingNumber: thisValue.data.name
+                            parkingNumber: thisValue.data.name,
+                            partitionName: newValueIds.length === 4 ? thisValue.parent.data.name : '',
+                            garageName: newValueIds.length === 4 ? thisValue.parent.parent.data.name : thisValue.parent.data.name
                         };
                     }
                     combination.push(objArray);
@@ -57,6 +60,34 @@ export default {
 
             this.params.callback && this.params.callback(combination);
             this.$emit('close');
+        },
+        checkChange(data,checked){
+            if(checked){
+
+            }
+        },
+        filterTreeData(trData) {
+            trData.map((item, index) => {
+                if (this.isNotEmpty(item.children)) {
+                    item.disabled = true;
+                    this.filterTreeData(item.children);
+                } else {
+                    item.disabled = false;
+                }
+            });
+
+            // return trData.filter((item) => {
+            //     if (this.isNotEmpty(item.children)) {
+            //         item.disabled = false;
+            //         item.children = this.filterTreeData(item.children);
+            //         console.log(item.children);
+            //     } else {
+            //         item.disabled = true;
+            //     }
+            // });
+        },
+        isNotEmpty(arr) {
+            return arr && Array.isArray(arr) && arr.length > 0;
         }
     },
     created() {
@@ -69,6 +100,8 @@ export default {
                 }
             });
         }
+
+        this.filterTreeData(this.params.tenantsTree);
         this.tenantsTree = this.params.tenantsTree;
     }
 };

+ 1 - 1
operationSupport/src/views/patrolManagement/popups/addPatrol.vue

@@ -191,7 +191,7 @@ export default {
             rules: {
                 communityId: [this.$valid.inputRequired('社区名称')],
                 routeName: [this.$valid.inputRequired('巡更路线名称')],
-                routePointRelationDtos: [this.$valid.inputRequired('巡更点')],
+                routePointRelationDtos: [this.$valid.selectRequired('巡更点')],
                 startDate: [this.$valid.selectRequired('巡更日期')],
                 timePeriod: [this.$valid.selectRequired('巡更时间')],
                 periodValue: [this.$valid.selectRequired('巡更周期')]

+ 2 - 14
operationSupport/src/views/payService/billingRules/index.vue

@@ -174,19 +174,6 @@ export default {
                 .catch(function () {});
         },
         deluserbyidFn(id) {
-            // let ids = [];
-            // if (!!id) {
-            //     ids = [id];
-            // } else {
-            //     if (!this.selectRow.length) {
-            //         this.$message.error('您尚未选择要删除的记录,请选择后再操作批量删除');
-            //         return;
-            //     }
-            //     this.selectRow.forEach((v) => {
-            //         ids.push(v.id);
-            //     });
-            // }
-
             const h = this.$createElement;
             this.$msgBox(`删除`, '删除后将无法恢复,请问是否继续?')
                 .then(() => {
@@ -226,7 +213,8 @@ export default {
                     title = '修改收费项目';
                 }
                 this.$store.dispatch('addPopup', {
-                    url: '/payService/billingRules/stepPage/add.vue',
+                    // url: '/payService/billingRules/stepPage/add.vue',
+                    url: '/payService/billingRules/stepPage/newAdd.vue', 
                     width: '524px',
                     height: '600px',
                     props: {

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

@@ -0,0 +1,295 @@
+<template>
+    <el-form :model="formData" :rules="formRules" label-width="100px" ref="formRu">
+        <el-form-item label="所属社区" prop="communityId">
+            <el-select v-model="formData.communityId" placeholder="请选择社区">
+                <el-option v-for="(item, index) in communityArr" :key="index" :label="item.communityName" :value="item.id"></el-option>
+            </el-select>
+        </el-form-item>
+        <el-form-item label="费用类型" prop="chargeType">
+            <el-select v-model="formData.chargeType" @change="chargeTypeToggle">
+                <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="5"></el-option>
+                <el-option label="其他" :value="6"></el-option>
+            </el-select>
+        </el-form-item>
+        <el-form-item label="费用名称" prop="chargeName">
+            <el-input v-model="formData.chargeName" placeholder="请输入费用名称"></el-input>
+        </el-form-item>
+        <el-form-item label="计费方式" prop="chargeMode">
+            <el-select v-model="formData.chargeMode">
+                <template v-if="formData.chargeType == 1">
+                    <el-option label="固定收费" :value="1"></el-option>
+                    <el-option label="价格*面积收费" :value="2"></el-option>
+                </template>
+                <template v-else-if="formData.chargeType == 2 || formData.chargeType == 3">
+                    <el-option label="单价*用量" :value="4"></el-option>
+                </template>
+                <template v-else>
+                    <el-option label="固定收费" :value="1"></el-option>
+                </template>
+            </el-select>
+        </el-form-item>
+        <el-form-item :label="labelActive" prop="chargePrice">
+            <el-input v-model="formData.chargePrice" placeholder="请输入费用名称"></el-input>
+        </el-form-item>
+        <!-- 计费周期除水电费 -->
+        <el-form-item label="计费周期" v-if="formData.chargeType !== 2 && formData.chargeType !== 3">
+            <div class="form-item-flex">
+                <el-select v-model="formData.chargeCycle" class="select">
+                    <el-option :label="item" v-for="item in 12" :value="item" :key="item"></el-option>
+                </el-select>
+                <div class="widthFlex">个月</div>
+            </div>
+        </el-form-item>
+        <!-- 物业费收取滞纳金 -->
+        <el-form-item label="收滞纳金" v-if="formData.chargeType === 1">
+            <div class="form-item-flex">
+                <el-input
+                    class="input-number"
+                    v-model="formData.lateFee"
+                    disabled
+                    controls-position="right"
+                    oninput="value=value.replace(/[^0-9.]/g,'')"
+                >
+                    <i slot="suffix" style="font-style: normal; margin-right: 70px"
+                        >‰
+                        <div class="input-button">
+                            <span class="button down" @click="lateAdd('-')"><i class="el-icon-arrow-down"></i></span>
+                            <span class="button up" @click="lateAdd('+')"><i class="el-icon-arrow-up"></i></span>
+                        </div>
+                    </i>
+                </el-input>
+                <el-tooltip class="item" effect="light" placement="right">
+                    <div slot="content" v-html="lateFeeMsg"></div>
+                    <img src="@/assets/img/menuicon/icon_tishi_zhengchang.png" alt="" />
+                </el-tooltip>
+                <div>欠费时间(>)</div>
+                <el-input
+                    class="input"
+                    oninput="value=value.replace(/[^0-9.]/g,'')"
+                    v-model="formData.arrearsDays"
+                    placeholder="请输入天数"
+                ></el-input>
+                天
+            </div>
+        </el-form-item>
+        <!-- 生成规则除水电费 -->
+        <el-form-item label="生成规则" v-if="formData.chargeType !== 2 && formData.chargeType !== 3">
+            <el-select v-model="formData.generationRules">
+                <el-option label="当月生成上月" :value="1"></el-option>
+                <el-option label="当月生成当月" :value="2"></el-option>
+            </el-select>
+        </el-form-item>
+
+        <el-form-item label="备注" prop="desc">
+            <el-input
+                type="textarea"
+                placeholder="请输入备注"
+                v-model="formData.remark"
+                :rows="3"
+                maxlength="100"
+                show-word-limit
+                resize="none"
+            ></el-input>
+        </el-form-item>
+    </el-form>
+</template>
+<script >
+export default {
+    props: ['params'],
+    data() {
+        return {
+            formData: {
+                communityId: '',
+                arrearsDays: '',
+                chargeType: 1,
+                chargeName: '',
+                chargeMode: '',
+                chargePrice: '',
+                chargeCycle: 1,
+                chargeCycleUnit: 1,
+                generationRules: '',
+                lateFee: 1,
+                remark: ''
+            },
+            lateFeeMsg: '滞纳金计算规则:</br>月费用*逾期天数*滞纳金标准',
+            formRules: {
+                chargeName: [this.$valid.inputRequired('费用名称')],
+                chargePrice: [this.$valid.inputRequired('价格')],
+                chargeMode: [this.$valid.selectRequired('计费方式')],
+                chargeType: [this.$valid.selectRequired('费用类型')],
+                communityId: [this.$valid.selectRequired('社区')]
+            }
+        };
+    },
+    computed: {
+        communityArr() {
+            return this.$store.getters['getAreaSelect'];
+        },
+        labelActive() {
+            let text = '价格(元/月)';
+            switch (this.formData.chargeType) {
+                case 2:
+                    text = '价格(元/吨)';
+                    break;
+                case 3:
+                    text = '价格(元/度)';
+                    break;
+            }
+            return text;
+        }
+    },
+    methods: {
+        lateAdd(fu) {
+            if (this.formData.lateFee == null || this.formData.lateFee == undefined) {
+                this.formData.lateFee = 1;
+            }
+            let newx = Number(this.formData.lateFee);
+            if (newx >= 1) {
+                if (fu === '-') {
+                    if (newx <= 1) {
+                        this.formData.lateFee = 1;
+                    } else {
+                        this.formData.lateFee = newx - 1;
+                    }
+                } else if (fu === '+' && this.formData.lateFee < 10) {
+                    this.formData.lateFee = newx + 1;
+                }
+            }
+        },
+        submit() {
+            this.$refs['formRu'].validate((valid) => {
+                if (valid) {
+                    let formData = this.installFromData();
+                    var loading = this.$loading();
+                    let url = '/sc-charge/scChargeStrategy/add';
+                    if (this.params.todo === 'edit') {
+                        formData.id = this.params.data.id;
+                        url = '/sc-charge/scChargeStrategy/update';
+                    }
+                    this.$http
+                        .post(url, formData)
+                        .then(({ status, msg }) => {
+                            if (status == 0) {
+                                this.$message.success(msg);
+                                this.params.callback();
+                                this.$emit('close');
+                            } else {
+                                this.$message.error(msg);
+                            }
+                            loading.close();
+                        })
+                        .catch(() => {
+                            loading.close();
+                        });
+                } else {
+                    return false;
+                }
+            });
+        },
+        installFromData() {
+            let installData = {
+                communityId: this.formData.communityId,
+                chargeType: this.formData.chargeType,
+                chargeName: this.formData.chargeName,
+                chargeMode: this.formData.chargeMode,
+                remark: this.formData.remark,
+                chargePrice: this.formData.chargePrice
+            };
+            if (this.formData.chargeType === 1) {
+                installData.lateFee = this.formData.lateFee;
+                installData.arrearsDays = this.formData.arrearsDays;
+            }
+            if (this.formData.chargeType !== 2 && this.formData.chargeType !== 3) {
+                installData.generationRules = this.formData.generationRules;
+                installData.chargeCycle = this.formData.chargeCycle;
+            }
+            return installData;
+        },
+        chargeTypeToggle() {
+            this.$refs['formRu'].clearValidate('chargeMode');
+            this.formData.chargeMode = '';
+        }
+    },
+    created() {
+        if (this.params.todo == 'edit') {
+            let paramsData = JSON.parse(JSON.stringify(this.params.data));
+            if (paramsData.chargeCycle == null) {
+                paramsData.chargeCycle = 1;
+            }
+            Object.assign(this.formData, paramsData);
+        }
+    }
+};
+</script>
+<style lang="scss" scoped>
+.just {
+    justify-content: space-between;
+}
+.form-item-flex {
+    display: flex;
+
+    .input {
+        width: 110px;
+        margin: 0 15px 0 12px;
+    }
+    .input-number {
+        width: 110px;
+        /deep/ .el-input--suffix .el-input__inner {
+            padding-right: 50px;
+        }
+        .input-button {
+            line-height: 15px;
+            .button {
+                cursor: pointer;
+            }
+            .up {
+                position: absolute;
+                top: 2px;
+                height: 16px;
+                width: 25px;
+                right: -4px;
+                border-radius: 0px 4px 0 0;
+                background: white;
+                border-bottom: 1px solid #dcdfe6;
+                border-left: 1px solid #dcdfe6;
+            }
+            .down {
+                position: absolute;
+                bottom: 1px;
+                height: 16px;
+                width: 25px;
+                right: -4px;
+                background: white;
+                border-radius: 0 0 4px 0;
+                border-top: 1px solid #dcdfe6;
+                border-left: 1px solid #dcdfe6;
+            }
+        }
+    }
+    .input100 {
+        width: 100px;
+    }
+    .select {
+        width: 360px !important;
+    }
+    .el-tooltip {
+        margin: 10px 10px 0 16px;
+        width: 16px;
+        height: 16px;
+    }
+    .widthFlex {
+        flex: 1;
+        text-align: right;
+        white-space: nowrap;
+    }
+    .sunm {
+        width: 15px;
+        text-align: center;
+        cursor: pointer;
+    }
+}
+</style>

+ 1 - 15
operationSupport/src/views/payService/propertyFee/index.vue

@@ -82,26 +82,12 @@ export default {
                     prop: 'assets'
                 },
                 {
-                    label: '住户',
+                    label: '业主',
                     prop: 'residentName'
                 },
                 {
                     label: '费用名称',
                     prop: 'chargeName'
-                    // prop: 'chargeType',
-                    // format(val) {
-                    //     if (val == '1') {
-                    //         return '物业费';
-                    //     } else if (val == '2') {
-                    //         return '水费';
-                    //     } else if (val == '3') {
-                    //         return '电费';
-                    //     } else if (val == '4') {
-                    //         return '车位费';
-                    //     } else if (val == '5') {
-                    //         return '二次供水费';
-                    //     }
-                    // }
                 },
                 {
                     label: '账期',

+ 47 - 54
operationSupport/src/views/payService/statisticalReport/chargeStatistics.vue

@@ -1,14 +1,14 @@
 <template>
     <div class="main">
         <div class="search">
+            <el-input class="search-input" v-model="mixins_query.name" placeholder="输入业主/房间号"></el-input>
             <el-select v-model="mixins_query.communityId" placeholder="选择社区" clearable>
                 <el-option v-for="(item, index) in communityArr" :key="index" :label="item.communityName" :value="item.id"></el-option>
             </el-select>
-
             <el-date-picker
                 v-model="times"
-                value-format="yyyy-MM-dd"
-                type="daterange"
+                value-format="yyyy-MM"
+                type="monthrange"
                 range-separator="至"
                 start-placeholder="选择开始日期"
                 end-placeholder="选择结束日期"
@@ -22,6 +22,16 @@
                 </el-tooltip>
             </div>
         </div>
+        <div class="table-top">
+            <div class="table-top_block">
+                <div>海逸一号收费统计</div>
+                <div>2021年1月-2021年3月</div>
+            </div>
+            <div class="table-top_block blockColor" v-for="item in blockArr" :key="item">
+                <div>{{ item.label }}</div>
+                <div>{{ item.val }}</div>
+            </div>
+        </div>
         <zz-table
             :cols="cols"
             :settings="{ showIndex: true, stripe: true }"
@@ -86,34 +96,43 @@ export default {
                     label: '电费(元)',
                     prop: 'remark'
                 },
-                   {
+                {
                     label: '车位管理费(元)',
                     prop: 'remark'
                 },
-                   {
+                {
                     label: '卫生费(元)',
                     prop: 'remark'
                 },
-                   {
+                {
                     label: '电梯维修费(元)',
                     prop: 'remark'
                 },
-                   {
+                {
                     label: '外墙砖维修费(元)',
                     prop: 'remark'
                 },
-                   {
+                {
                     label: '摩托租赁费(元)',
                     prop: 'remark'
                 },
-                   {
+                {
                     label: '合计',
                     prop: 'remark'
                 }
             ],
             mixins_post: 'post',
             times: [],
-            communityArr: []
+            communityArr: [],
+            blockArr: [
+                { label: '总收费', val: '11111' },
+                { label: '物业费', val: '11111' },
+                { label: '水费', val: '11111' },
+                { label: '电费', val: '11111' },
+                { label: '车位管理费', val: '11111' },
+                { label: '卫生费', val: '11111' },
+                { label: '其他费用', val: '11111' }
+            ]
         };
     },
     created() {
@@ -122,34 +141,11 @@ export default {
             accountType: 2,
             paymentType: 1
         };
-        this.getSun(1);
-        this.getSun(2);
         this.mixins_search();
         this.getorgTree();
     },
     mounted() {},
     methods: {
-        toggle(index) {
-            this.activeIndex = index;
-            this.mixins_query.paymentType = index;
-            this.mixins_search();
-        },
-        getSun(type) {
-            this.$http
-                .post('/sc-charge/payment/record/sum/amount', { accountType: 2, paymentType: type })
-                .then(({ data, status, msg }) => {
-                    if (status == 0) {
-                        if (type == 1) {
-                            this.tabs[0].value = data;
-                        } else if (type == 2) {
-                            this.tabs[1].value = data;
-                        }
-                    } else {
-                        this.$message.error(msg);
-                    }
-                })
-                .catch(() => {});
-        },
         exportExcel() {
             this.__exportExcel('/sc-charge/payment/record/export/excel', this.mixins_query);
         },
@@ -158,8 +154,8 @@ export default {
             if (!arr) {
                 arr = ['', ''];
             }
-            this.mixins_query.startTime = arr[0] + ' 00:00:00';
-            this.mixins_query.endTime = arr[1] + ' 23:59:59';
+            this.mixins_query.startTime = arr[0];
+            this.mixins_query.endTime = arr[1];
         },
         getorgTree() {
             this.$http
@@ -176,25 +172,22 @@ export default {
 </script>
 <style scoped lang='scss'>
 @import '@assets/css/public-style.scss';
-.search_bottom_tab {
-    height: 60px;
-    line-height: 60px;
-    background: #ffffff;
-    border-radius: 4px;
-    margin-bottom: 20px;
-    padding: 0 20px;
-    box-sizing: border-box;
-    .tab_list {
-        display: inline-block;
-        border-bottom: 1px solid transparent;
-        cursor: pointer;
-        color: #424656;
-        &:not(:last-child) {
-            margin-right: 40px;
-        }
-        &.active {
-            color: $mainTextColor;
-            border-color: $mainTextColor;
+.table-top {
+    display: flex;
+    // margin-bottom: 20px;
+    background: white;
+    padding: 10px 0;
+    .table-top_block {
+        height: 60px;
+        line-height: 30px;
+        text-align: center;
+
+        margin-left: 20px;
+        &.blockColor {
+            width: 150px;
+            background: $mainTextColor;
+            color: white;
+            border-radius: 5px;
         }
     }
 }

+ 17 - 71
operationSupport/src/views/payService/statisticalReport/propertyFeeStatistics.vue

@@ -13,8 +13,9 @@
         </div>
         <zz-table
             :cols="cols"
-            :settings="{ showIndex: false, stripe: true }"
+            :settings="{ showIndex: false, stripe: true, summaryCol: summaryColData }"
             :loading="mixins_onQuery"
+            :summaryData="{}"
             :data="mixins_list"
             :pageset="mixins_pageset"
             @page-change="pageChange"
@@ -36,36 +37,23 @@ export default {
                 },
                 {
                     label: '01月',
-                    prop: 'assets'
+                    prop: 'amount'
                 },
                 {
                     label: '02月',
-                    prop: 'createDate'
+                    prop: 'amount'
                 },
                 {
                     label: '03月',
-                    prop: 'paymentMethod',
-                    format(val) {
-                        if (val == '1') {
-                            return '微信';
-                        } else if (val == '2') {
-                            return '支付宝';
-                        } else if (val == '3') {
-                            return '现金';
-                        } else if (val == '4') {
-                            return '预存';
-                        } else if (val == '5') {
-                            return '其他';
-                        }
-                    }
+                    prop: 'amount'
                 },
                 {
                     label: '04月',
-                    prop: 'userName'
+                    prop: 'amount'
                 },
                 {
                     label: '05月',
-                    prop: 'phone'
+                    prop: 'amount'
                 },
                 {
                     label: '06月',
@@ -73,66 +61,49 @@ export default {
                 },
                 {
                     label: '07月',
-                    prop: 'remark'
+                    prop: 'amount'
                 },
                 {
                     label: '08月',
-                    prop: 'remark'
+                    prop: 'amount'
                 },
                 {
                     label: '09月',
-                    prop: 'remark'
+                    prop: 'amount'
                 },
                 {
                     label: '10月',
-                    prop: 'remark'
+                    prop: 'amount'
                 },
                 {
                     label: '11月',
-                    prop: 'remark'
+                    prop: 'amount'
                 },
                 {
                     label: '12月',
-                    prop: 'remark'
+                    prop: 'amount'
                 },
                 {
                     label: '合计',
-                    prop: 'remark'
+                    prop: 'total'
                 }
             ],
             mixins_post: 'post',
+            summaryColData: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
             communityArr: []
         };
     },
     created() {
         this.mixins_dataUrl = '/sc-charge/payment/record/page';
         this.mixins_query = {
-            accountType: 2,
+            accountType: 1,
             paymentType: 1
         };
-        this.getSun(1);
-        this.getSun(2);
         this.mixins_search();
         this.getorgTree();
     },
     mounted() {},
     methods: {
-        getSun(type) {
-            this.$http
-                .post('/sc-charge/payment/record/sum/amount', { accountType: 2, paymentType: type })
-                .then(({ data, status, msg }) => {
-                    if (status == 0) {
-                        if (type == 1) {
-                            this.tabs[0].value = data;
-                        } else if (type == 2) {
-                            this.tabs[1].value = data;
-                        }
-                    } else {
-                        this.$message.error(msg);
-                    }
-                })
-                .catch(() => {});
-        },
         exportExcel() {
             this.__exportExcel('/sc-charge/payment/record/export/excel', this.mixins_query);
         },
@@ -148,29 +119,4 @@ export default {
         }
     }
 };
-</script>
-<style scoped lang='scss'>
-@import '@assets/css/public-style.scss';
-.search_bottom_tab {
-    height: 60px;
-    line-height: 60px;
-    background: #ffffff;
-    border-radius: 4px;
-    margin-bottom: 20px;
-    padding: 0 20px;
-    box-sizing: border-box;
-    .tab_list {
-        display: inline-block;
-        border-bottom: 1px solid transparent;
-        cursor: pointer;
-        color: #424656;
-        &:not(:last-child) {
-            margin-right: 40px;
-        }
-        &.active {
-            color: $mainTextColor;
-            border-color: $mainTextColor;
-        }
-    }
-}
-</style>
+</script>

+ 84 - 0
operationSupport/src/views/payService/systemSetup/stepPage/paymentSetup.vue

@@ -47,6 +47,38 @@
                         <el-checkbox :label="2">微信</el-checkbox>
                     </el-checkbox-group>
                 </el-form-item>
+
+                <el-form-item>
+                    <div class="item-title">水费收费规则</div>
+                    <el-radio-group v-model="formData[4].enable">
+                        <el-radio :label="0">按账单收费</el-radio>
+                        <el-radio :label="1">预充值,按计费周期扣费</el-radio>
+                    </el-radio-group>
+                </el-form-item>
+                <el-form-item>
+                    <div class="item-title">电费收费规则</div>
+                    <el-radio-group v-model="formData[5].enable">
+                        <el-radio :label="0">按账单收费</el-radio>
+                        <el-radio :label="1">预充值,按计费周期扣费</el-radio>
+                    </el-radio-group>
+                </el-form-item>
+
+                <el-form-item>
+                    <div class="item-title">
+                        水费计费周期
+                        <el-select v-model="formData[6].amount">
+                            <el-option v-for="item in 12" :key="item" :label="item" :value="item"></el-option> </el-select
+                        >个月
+                    </div>
+                </el-form-item>
+                <el-form-item>
+                    <div class="item-title">
+                        电费计费周期
+                        <el-select v-model="formData[7].amount">
+                            <el-option v-for="item in 12" :key="item" :label="item" :value="item"></el-option> </el-select
+                        >个月
+                    </div>
+                </el-form-item>
                 <el-form-item style="text-align: right">
                     <el-button type="primary" @click="submit">保存</el-button>
                 </el-form-item>
@@ -87,6 +119,28 @@ export default {
                     category: 1,
                     enable: null,
                     amount: null
+                },
+                {
+                    type: 9,
+                    category: 1,
+                    enable: 0
+                },
+                {
+                    type: 10,
+                    category: 1,
+                    enable: 0
+                },
+                {
+                    type: 11,
+                    category: 1,
+                    enable: null,
+                    amount: 1
+                },
+                {
+                    type: 12,
+                    category: 1,
+                    enable: null,
+                    amount: 1
                 }
             ],
             initFormData: [
@@ -111,6 +165,28 @@ export default {
                     category: 1,
                     enable: null,
                     amount: null
+                },
+                {
+                    type: 9,
+                    category: 1,
+                    enable: 0
+                },
+                {
+                    type: 10,
+                    category: 1,
+                    enable: 0
+                },
+                {
+                    type: 11,
+                    category: 1,
+                    enable: null,
+                    amount: 1
+                },
+                {
+                    type: 12,
+                    category: 1,
+                    enable: null,
+                    amount: 1
                 }
             ]
         };
@@ -174,6 +250,14 @@ export default {
                             } else if (item.type == '4') {
                                 Object.assign(this.formData[3], item);
                                 this.getInstallData('listCheckElectric', item.enable);
+                            } else if (item.type == '9') {
+                                Object.assign(this.formData[4], item);
+                            } else if (item.type == '10') {
+                                Object.assign(this.formData[5], item);
+                            } else if (item.type == '11') {
+                                Object.assign(this.formData[6], item);
+                            } else if (item.type == '12') {
+                                Object.assign(this.formData[7], item);
                             }
                         });
                     }

+ 1 - 1
operationSupport/src/views/workOrders/index.vue

@@ -114,7 +114,7 @@ export default {
     },
     created() {
         this.getorgTree();
-        this.mixins_dataUrl = '/sc-community-web/workOrder/page';
+        this.mixins_dataUrl = '/sc-community-web/workOrder/pageByHandle';
         this.mixins_query = {};
         this.mixins_search();
         this.getUserList();

+ 1 - 1
operationSupport/src/views/workOrders/records.vue

@@ -5,7 +5,7 @@
             <el-select v-model="mixins_query.communityId" placeholder="请选择所属社区" clearable>
                 <el-option v-for="(item, index) in communityArr" :key="index" :label="item.communityName" :value="item.id"></el-option>
             </el-select>
-            <el-select class="width90" placeholder="请选择工单状态" v-model="mixins_query.orderType" clearable>
+            <el-select class="width90" placeholder="请选择工单状态" v-model="mixins_query.orderStatus" clearable>
                 <el-option label="处理中" :value="1"></el-option>
                 <el-option label="已完成" :value="2"></el-option>
                 <el-option label="已完成(超时)" :value="3"></el-option>